static void uart_rx_cb(uint8_t data)
{
    if( echo ) {
      console_print_byte(data);
      if( data == '\r' ) { console_print_byte('\n'); }
    }
    error_t err;
    err = fifo_put(&cmd_fifo, &data, 1); assert(err == SUCCESS);
    if(!sched_is_scheduled(&process_cmd_fifo))
        sched_post_task(&process_cmd_fifo);
}
static void uart_rx_cb(uint8_t data) {
    error_t err;
    err = fifo_put(&uart_rx_fifo, &data, 1); assert(err == SUCCESS);
    console_print_byte(data); // echo
    // fifo will be parsed periodically by process_uart_rx_fifo() task
}