first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / drivers / ao_btm.c
index c65a8548b0c9cccf927cffa287f4e8d22876f742..b82fb999fe8957536c42bab002ebeda57161486b 100644 (file)
 #define ao_serial_btm_drain    ao_serial1_drain
 #endif
 
-int8_t                 ao_btm_stdio;
-__xdata uint8_t                ao_btm_connected;
+uint8_t                ao_btm_stdio;
+uint8_t                ao_btm_connected;
 
 #define BT_DEBUG 0
 
 #if BT_DEBUG
-__xdata char           ao_btm_buffer[256];
+char           ao_btm_buffer[256];
 uint16_t               ao_btm_ptr;
 char                   ao_btm_dir;
 
@@ -76,6 +76,7 @@ ao_btm_dump(void)
 {
        int i;
        char c;
+       uint16_t r;
 
        for (i = 0; i < ao_btm_ptr; i++) {
                c = ao_btm_buffer[i];
@@ -85,8 +86,8 @@ ao_btm_dump(void)
                        putchar(ao_btm_buffer[i]);
        }
        putchar('\n');
-       ao_cmd_decimal();
-       if (ao_cmd_status == ao_cmd_success && ao_cmd_lex_i)
+       r = ao_cmd_decimal();
+       if (ao_cmd_status == ao_cmd_success && r)
                ao_btm_ptr = 0;
        ao_cmd_status = ao_cmd_success;
 }
@@ -94,13 +95,17 @@ ao_btm_dump(void)
 static void
 ao_btm_speed(void)
 {
-       ao_cmd_decimal();
-       if (ao_cmd_lex_u32 == 57600)
+       switch (ao_cmd_decimal()) {
+       case 57600:
                ao_serial_btm_set_speed(AO_SERIAL_SPEED_57600);
-       else if (ao_cmd_lex_u32 == 19200)
+               break;
+       case 19200:
                ao_serial_btm_set_speed(AO_SERIAL_SPEED_19200);
-       else
+               break;
+       default:
                ao_cmd_status = ao_cmd_syntax_error;
+               break;
+       }
 }
 
 static uint8_t ao_btm_enable;
@@ -137,7 +142,7 @@ ao_btm_send(void)
        ao_wakeup((void *) &ao_serial_btm_rx_fifo);
 }
 
-__code struct ao_cmds ao_btm_cmds[] = {
+const struct ao_cmds ao_btm_cmds[] = {
        { ao_btm_dump,          "d\0Dump btm buffer." },
        { ao_btm_speed,         "s <19200,57600>\0Set btm serial speed." },
        { ao_btm_send,          "S\0BTM interactive mode. ~ to exit." },
@@ -153,7 +158,7 @@ __code struct ao_cmds ao_btm_cmds[] = {
 #endif
 
 #define AO_BTM_MAX_REPLY       16
-__xdata char           ao_btm_reply[AO_BTM_MAX_REPLY];
+char           ao_btm_reply[AO_BTM_MAX_REPLY];
 
 /*
  * Read one bluetooth character.
@@ -182,7 +187,7 @@ ao_btm_getchar(void)
  * it after a few characters.
  */
 
-uint8_t
+static uint8_t
 ao_btm_get_line(void)
 {
        uint8_t ao_btm_reply_len = 0;
@@ -192,7 +197,7 @@ ao_btm_get_line(void)
        while ((c = ao_btm_getchar()) != AO_READ_AGAIN) {
                ao_btm_log_in_char(c);
                if (ao_btm_reply_len < sizeof (ao_btm_reply))
-                       ao_btm_reply[ao_btm_reply_len++] = c;
+                       ao_btm_reply[ao_btm_reply_len++] = (char) c;
                if (c == '\r' || c == '\n')
                        break;
        }
@@ -204,8 +209,8 @@ ao_btm_get_line(void)
 /*
  * Drain the serial port completely
  */
-void
-ao_btm_drain()
+static void
+ao_btm_drain(void)
 {
        while (ao_btm_get_line())
                ;
@@ -214,7 +219,7 @@ ao_btm_drain()
 /*
  * Set the stdio echo for the bluetooth link
  */
-void
+static void
 ao_btm_echo(uint8_t echo)
 {
        ao_stdios[ao_btm_stdio].echo = echo;
@@ -225,7 +230,7 @@ ao_btm_echo(uint8_t echo)
  * can't keep up with 57600 baud
  */
 
-void
+static void
 ao_btm_putchar(char c)
 {
        ao_btm_log_out_char(c);
@@ -237,7 +242,7 @@ ao_btm_putchar(char c)
  * Wait for the bluetooth device to return
  * status from the previously executed command
  */
-uint8_t
+static int
 ao_btm_wait_reply(void)
 {
        for (;;) {
@@ -251,8 +256,8 @@ ao_btm_wait_reply(void)
        }
 }
 
-void
-ao_btm_string(__code char *cmd)
+static void
+ao_btm_string(const char *cmd)
 {
        char    c;
 
@@ -260,8 +265,8 @@ ao_btm_string(__code char *cmd)
                ao_btm_putchar(c);
 }
 
-uint8_t
-ao_btm_cmd(__code char *cmd)
+static int
+ao_btm_cmd(const char *cmd)
 {
        ao_btm_drain();
 
@@ -277,7 +282,7 @@ ao_btm_cmd(__code char *cmd)
        return ao_btm_wait_reply();
 }
 
-uint8_t
+static int
 ao_btm_set_name(void)
 {
        char    sn[8];
@@ -289,14 +294,14 @@ ao_btm_set_name(void)
        *--s = '\r';
        n = ao_serial_number;
        do {
-               *--s = '0' + n % 10;
+               *--s = (uint8_t) ('0' + n % 10);
        } while (n /= 10);
        while ((c = *s++))
                ao_btm_putchar(c);
        return ao_btm_wait_reply();
 }
 
-uint8_t
+static uint8_t
 ao_btm_try_speed(uint8_t speed)
 {
        ao_serial_btm_set_speed(speed);
@@ -324,8 +329,8 @@ ao_btm_try_speed(uint8_t speed)
 #define BT_CC1111      1
 #endif
 
-void
-ao_btm_check_link()
+static void
+ao_btm_check_link(void)
 {
 #if BT_CC1111
        ao_arch_critical(
@@ -342,7 +347,7 @@ ao_btm_check_link()
                );
 #else
        ao_arch_block_interrupts();
-       if (ao_gpio_get(AO_BTM_INT_PORT, AO_BTM_INT_PIN, AO_BTM_INT) == 0) {
+       if (ao_gpio_get(AO_BTM_INT_PORT, AO_BTM_INT_PIN) == 0) {
                ao_btm_connected = 1;
        } else {
                ao_btm_connected = 0;
@@ -351,13 +356,13 @@ ao_btm_check_link()
 #endif
 }
 
-__xdata struct ao_task ao_btm_task;
+struct ao_task ao_btm_task;
 
 /*
  * A thread to initialize the bluetooth device and
  * hang around to blink the LED when connected
  */
-void
+static void
 ao_btm(void)
 {
 #ifdef AO_BTM_INT_PORT
@@ -450,7 +455,7 @@ ao_btm_init (void)
        ao_serial_btm_set_speed(AO_SERIAL_SPEED_19200);
 
 #ifdef AO_BTM_RESET_PORT
-       ao_enable_output(AO_BTM_RESET_PORT,AO_BTM_RESET_PIN,AO_BTM_RESET,0);
+       ao_enable_output(AO_BTM_RESET_PORT,AO_BTM_RESET_PIN,0);
 #endif
 
 #ifdef AO_BTM_INT_PORT