- ao_serial_set_speed(AO_SERIAL_SPEED_19200);
- ao_add_stdio(ao_btm_pollchar,
- ao_serial_putchar,
- NULL);
- ao_btm_stdio = ao_num_stdios - 1;
- ao_cur_stdio = ao_btm_stdio;
- ao_btm_echo(0);
- ao_btm_drain();
- ao_delay(AO_SEC_TO_TICKS(1));
- printf("+++");
- ao_btm_drain();
- ao_delay(AO_SEC_TO_TICKS(1));
- printf("\r");
- ao_btm_drain();
- ao_btm_cmd("ATQ0\r");
+ /*
+ * Wait for the bluetooth device to boot
+ */
+ ao_delay(AO_SEC_TO_TICKS(3));
+
+#if BT_LINK_ON_P1
+ if ((P1DIR & (1 << 6)) == 0)
+ ao_panic(AO_PANIC_BT);
+ if ((P1DIR & (1 << 7)) != 0)
+ ao_panic(AO_PANIC_BT);
+ if ((P0SEL & ((1 << 5) | (1 << 4) | (1 << 3) | (1 << 2))) !=
+ ((1 << 5) | (1 << 4) | (1 << 3) | (1 << 2)))
+ ao_panic(AO_PANIC_BT);
+#endif
+#if HAS_BEEP
+ ao_beep_for(AO_BEEP_MID, AO_MS_TO_TICKS(200));
+#endif
+
+ /*
+ * The first time we connect, the BTM-180 comes up at 19200 baud.
+ * After that, it will remember and come up at 57600 baud. So, see
+ * if it is already running at 57600 baud, and if that doesn't work
+ * then tell it to switch to 57600 from 19200 baud.
+ */
+ while (!ao_btm_try_speed(AO_SERIAL_SPEED_57600)) {
+ ao_delay(AO_SEC_TO_TICKS(1));
+ if (ao_btm_try_speed(AO_SERIAL_SPEED_19200))
+ ao_btm_cmd("ATL4\r");
+ ao_delay(AO_SEC_TO_TICKS(1));
+ }
+
+ /* Disable echo */