X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdrivers%2Fao_rn4678.c;h=4d13decc46ec271bb9fff384ad937c6db8b79bd6;hb=refs%2Fheads%2Fmaster;hp=98dc35b55eee33c8b7cd8ba069912423eaf23674;hpb=c8dbcaf69cd538a31ab6e2b568237ae7c8656a9a;p=fw%2Faltos diff --git a/src/drivers/ao_rn4678.c b/src/drivers/ao_rn4678.c index 98dc35b5..3c07e721 100644 --- a/src/drivers/ao_rn4678.c +++ b/src/drivers/ao_rn4678.c @@ -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,