first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / drivers / ao_rn4678.c
index 98dc35b55eee33c8b7cd8ba069912423eaf23674..3c07e7216cc34b3c084bffeee28ce12eed5aa44d 100644 (file)
@@ -108,7 +108,7 @@ static const char *status_strings[] = {
 #define NUM_STATUS_STRING      (sizeof status_strings/sizeof status_strings[0])
 
 static char            ao_rn_buffer[64];
-static int             ao_rn_buf_cnt, ao_rn_buf_ptr;
+static size_t          ao_rn_buf_cnt, ao_rn_buf_ptr;
 static int             ao_rn_draining;
 static AO_TICK_TYPE    ao_rn_buf_time;
 
@@ -116,7 +116,7 @@ static AO_TICK_TYPE ao_rn_buf_time;
  * disabled due to a firmware bug. So, this code finds those in the
  * input and strips them out.
  */
-int
+static int
 _ao_wrap_rn_pollchar(void)
 {
        int             c = AO_READ_AGAIN;
@@ -146,9 +146,9 @@ _ao_wrap_rn_pollchar(void)
                                /* If we filled the buffer, just give up */
                                ao_rn_draining = 1;
                        } else {
-                               ao_rn_buffer[ao_rn_buf_cnt++] = c;
+                               ao_rn_buffer[ao_rn_buf_cnt++] = (char) c;
                                for (i = 0; i < NUM_STATUS_STRING; i++) {
-                                       int cmp = strlen(status_strings[i]);
+                                       size_t cmp = strlen(status_strings[i]);
                                        if (cmp >= ao_rn_buf_cnt)
                                                cmp = ao_rn_buf_cnt-1;
                                        if (memcmp(ao_rn_buffer+1, status_strings[i], cmp) == 0)
@@ -158,7 +158,7 @@ _ao_wrap_rn_pollchar(void)
                                        ao_rn_draining = 1;
                        }
                } else if (c == STATUS_CHAR) {
-                       ao_rn_buffer[0] = c;
+                       ao_rn_buffer[0] = (char) c;
                        ao_rn_buf_cnt = 1;
                        ao_rn_buf_ptr = 0;
                        ao_rn_buf_time = ao_time();
@@ -227,17 +227,17 @@ ao_rn_wait_char(AO_TICK_TYPE giveup_time)
                        ao_arch_release_interrupts();
                        return AO_READ_AGAIN;
                }
-               _ao_serial_rn_sleep_for(delay);
+               _ao_serial_rn_sleep_for((AO_TICK_TYPE) delay);
        }
        ao_arch_release_interrupts();
        return c;
 }
 
 static int
-ao_rn_wait_for(int timeout, char *match)
+ao_rn_wait_for(AO_TICK_TYPE timeout, char *match)
 {
        char            reply[AO_RN_MAX_REPLY_LEN + 1];
-       int             match_len = strlen(match);
+       size_t          match_len = strlen(match);
        AO_TICK_TYPE    giveup_time = ao_time() + timeout;
        int             c;
 
@@ -318,7 +318,7 @@ ao_rn_set_name(void)
        *--s = '\0';
        n = ao_serial_number;
        do {
-               *--s = '0' + n % 10;
+               *--s = (uint8_t) ('0' + n % 10);
        } while (n /= 10);
        ao_rn_send_cmd(AO_RN_SET_NAME_CMD "TeleBT-", s);
        return ao_rn_wait_status();
@@ -335,7 +335,7 @@ ao_rn_get_name(char *name, int len)
 static void
 ao_rn_check_link(void)
 {
-       ao_rn_connected = 1 - ao_gpio_get(AO_RN_CONNECTED_PORT, AO_RN_CONNECTED_PIN, foo);
+       ao_rn_connected = 1 - ao_gpio_get(AO_RN_CONNECTED_PORT, AO_RN_CONNECTED_PIN);
 }
 
 static void
@@ -350,11 +350,10 @@ ao_bt_panic(int where)
 {
        int i;
        for (;;) {
-               for (i = 0; i < 50; i++) {
-                       ao_led_toggle(AO_BT_LED);
+               for (i = 0; i < 25; i++) {
+                       ao_led_for(AO_BT_LED, AO_MS_TO_TICKS(10));
                        ao_delay(AO_MS_TO_TICKS(10));
                }
-               ao_led_off(AO_BT_LED);
                ao_delay(AO_MS_TO_TICKS(500));
                for (i = 0; i < where; i++) {
                        ao_led_for(AO_BT_LED, AO_MS_TO_TICKS(200));
@@ -368,7 +367,7 @@ static uint8_t      ao_rn_stdio;
 /*
  * Set the stdio echo for the bluetooth link
  */
-void
+static void
 ao_rn_echo(uint8_t echo)
 {
        ao_stdios[ao_rn_stdio].echo = echo;
@@ -384,17 +383,17 @@ ao_rn(void)
        ao_rn_dbg("ao_rn top\n");
 
        /* Select CMD mode after the device gets out of reset */
-       ao_gpio_set(AO_RN_CMD_PORT, AO_RN_CMD_PIN, foo, AO_RN_CMD_CMD);
+       ao_gpio_set(AO_RN_CMD_PORT, AO_RN_CMD_PIN, AO_RN_CMD_CMD);
 
        for (i = 0; i < 3; i++) {
                ao_rn_dbg("reset device\n");
 
-               ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, foo, 0);
+               ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, 0);
                ao_delay(AO_MS_TO_TICKS(100));
 
                /* Reboot the RN4678 and wait for it to start talking */
                ao_rn_drain();
-               ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, foo, 1);
+               ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, 1);
                status = ao_rn_wait_for(AO_RN_REBOOT_TIMEOUT, AO_RN_REBOOT_MSG);
                if (status != AO_RN_OK) {
                        ao_rn_dbg("reboot failed\n");
@@ -468,7 +467,7 @@ ao_rn(void)
        if (status != AO_RN_OK)
                ao_bt_panic(4);
 
-       ao_gpio_set(AO_RN_CMD_PORT, AO_RN_CMD_PIN, foo, AO_RN_CMD_DATA);
+       ao_gpio_set(AO_RN_CMD_PORT, AO_RN_CMD_PIN, AO_RN_CMD_DATA);
 
        /* Wait for the hardware to finish sending messages, then clear the queue */
        ao_delay(AO_MS_TO_TICKS(200));
@@ -522,7 +521,7 @@ static void
 ao_rn_factory(void)
 {
        int     i;
-       int     v = 0;
+       uint8_t v = 0;
 
        /*
         * Factory reset. Flip pin P3_1 5 times within the first five
@@ -530,16 +529,16 @@ ao_rn_factory(void)
         */
 
        /* Select our target output pin */
-       ao_enable_output(AO_RN_P3_1_PORT, AO_RN_P3_1_PIN, foo, v);
+       ao_enable_output(AO_RN_P3_1_PORT, AO_RN_P3_1_PIN, v);
 
        /* Turn off the BT device using the SW_BTN pin */
        printf("Power down BT\n"); flush();
-       ao_gpio_set(AO_RN_SW_BTN_PORT, AO_RN_SW_BTN_PIN, foo, 0);
+       ao_gpio_set(AO_RN_SW_BTN_PORT, AO_RN_SW_BTN_PIN, 0);
        ao_delay(AO_MS_TO_TICKS(1000));
 
        /* And turn it back on */
        printf("Power up BT\n"); flush();
-       ao_gpio_set(AO_RN_SW_BTN_PORT, AO_RN_SW_BTN_PIN, foo, 1);
+       ao_gpio_set(AO_RN_SW_BTN_PORT, AO_RN_SW_BTN_PIN, 1);
 
        /* Right after power on, poke P3_1 five times to force a
         * factory reset
@@ -547,8 +546,11 @@ ao_rn_factory(void)
        for (i = 0; i < 20; i++) {
                v = 1-v;
                ao_delay(AO_MS_TO_TICKS(50));
-               ao_gpio_set(AO_RN_P3_1_PORT, AO_RN_P3_1_PIN, foo, v);
-               ao_led_toggle(AO_BT_LED);
+               ao_gpio_set(AO_RN_P3_1_PORT, AO_RN_P3_1_PIN, v);
+               if (v)
+                       ao_led_on(AO_BT_LED);
+               else
+                       ao_led_off(AO_BT_LED);
        }
 
        /* And let P3_1 float again */
@@ -556,9 +558,9 @@ ao_rn_factory(void)
 
        printf("Reboot BT\n"); flush();
        ao_delay(AO_MS_TO_TICKS(100));
-       ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, foo, 0);
+       ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, 0);
        ao_delay(AO_MS_TO_TICKS(100));
-       ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, foo, 1);
+       ao_gpio_set(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, 1);
 }
 
 #if AO_RN_DEBUG
@@ -588,13 +590,13 @@ ao_rn4678_init(void)
        ao_serial_rn_set_speed(AO_SERIAL_SPEED_115200);
 
        /* Reset line */
-       ao_enable_output(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, foo, 0);
+       ao_enable_output(AO_RN_RST_N_PORT, AO_RN_RST_N_PIN, 0);
 
        /* SW_BTN */
-       ao_enable_output(AO_RN_SW_BTN_PORT, AO_RN_SW_BTN_PIN, foo, 1);
+       ao_enable_output(AO_RN_SW_BTN_PORT, AO_RN_SW_BTN_PIN, 1);
 
        /* P3_7 command/data selector */
-       ao_enable_output(AO_RN_CMD_PORT, AO_RN_CMD_PIN, foo, AO_RN_CMD_CMD);
+       ao_enable_output(AO_RN_CMD_PORT, AO_RN_CMD_PIN, AO_RN_CMD_CMD);
 
        ao_enable_input(AO_RN_CONNECTED_PORT, AO_RN_CONNECTED_PIN, AO_EXTI_MODE_PULL_NONE);
        ao_exti_setup(AO_RN_CONNECTED_PORT, AO_RN_CONNECTED_PIN,