altos: Hook APRS up to the radio
[fw/altos] / src / core / ao.h
index 87e69e192e7e99a551136184ef1af9549223c101..d6e27707d7137e7d9077ee6c887bdcad2af48648 100644 (file)
@@ -170,6 +170,10 @@ ao_cmd_hex(void);
 void
 ao_cmd_decimal(void);
 
+/* Read a single hex nibble off stdin. */
+uint8_t
+ao_getnibble(void);
+
 uint8_t
 ao_match_word(__code char *word);
 
@@ -525,6 +529,11 @@ ao_radio_recv_abort(void);
 void
 ao_radio_test(uint8_t on);
 
+typedef int16_t (*ao_radio_fill_func)(uint8_t *buffer, int16_t len);
+
+void
+ao_radio_send_lots(ao_radio_fill_func fill);
+
 /*
  * Compute the packet length as follows:
  *
@@ -558,8 +567,10 @@ extern const char const * const ao_state_names[];
 union ao_monitor {
        struct ao_telemetry_raw_recv    raw;
        struct ao_telemetry_all_recv    all;
+#if LEGACY_MONITOR
        struct ao_telemetry_orig_recv   orig;
        struct ao_telemetry_tiny_recv   tiny;
+#endif
 };
 
 extern __xdata union ao_monitor ao_monitor_ring[AO_MONITOR_RING];
@@ -593,10 +604,10 @@ ao_monitor_init(void) __reentrant;
  * ao_stdio.c
  */
 
-#define AO_READ_AGAIN  ((char) -1)
+#define AO_READ_AGAIN  (-1)
 
 struct ao_stdio {
-       char    (*pollchar)(void);
+       int     (*pollchar)(void);
        void    (*putchar)(char c) __reentrant;
        void    (*flush)(void);
        uint8_t echo;
@@ -615,7 +626,7 @@ uint8_t
 ao_echo(void);
 
 int8_t
-ao_add_stdio(char (*pollchar)(void),
+ao_add_stdio(int (*pollchar)(void),
             void (*putchar)(char) __reentrant,
             void (*flush)(void)) __reentrant;