- 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 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 */