struct ao_fifo {
uint8_t insert;
uint8_t remove;
- uint8_t fifo[SERIAL_FIFO];
+ char fifo[SERIAL_FIFO];
};
volatile __xdata struct ao_fifo ao_usart1_rx_fifo;
ao_wakeup(&ao_usart1_tx_fifo);
}
-uint8_t
+char
ao_serial_getchar(void) __critical
{
- uint8_t c;
+ char c;
while (ao_fifo_empty(ao_usart1_rx_fifo))
ao_sleep(&ao_usart1_rx_fifo);
ao_fifo_remove(ao_usart1_rx_fifo, c);
}
void
-ao_serial_putchar(uint8_t c) __critical
+ao_serial_putchar(char c) __critical
{
while (ao_fifo_full(ao_usart1_tx_fifo))
ao_sleep(&ao_usart1_tx_fifo);
ao_serial_tx1_start();
}
+static void
+send_serial(void)
+{
+ ao_cmd_white();
+ while (ao_cmd_lex_c != '\n') {
+ ao_serial_putchar(ao_cmd_lex_c);
+ ao_cmd_lex();
+ }
+}
+
+__code struct ao_cmds ao_serial_cmds[] = {
+ { 'S', send_serial, "S <data> Send data to serial line" },
+ { 0, send_serial, NULL },
+};
+
void
ao_serial_init(void)
{
IEN0 |= IEN0_URX1IE;
IEN2 |= IEN2_UTX1IE;
+
+ ao_cmd_register(&ao_serial_cmds[0]);
}