Пример #1
0
msg_t bridge_thread (void *arg)
{
t_hydra_console *con;
con = arg;
chRegSetThreadName("UART bridge");
chThdSleepMilliseconds(10);
uint8_t rx_data;
uint8_t tx_data;
mode_config_proto_t* proto = &con->mode->proto;

    while (!USER_BUTTON) {
        if(bsp_uart_rxne(proto->dev_num)) {
            bsp_uart_read_u8(proto->dev_num, &rx_data ,1);
            chSequentialStreamWrite(con->sdu, &rx_data, 1);
        }
        if(chnReadTimeout(con->sdu, &tx_data, 1, 1)) {
            bsp_uart_write_u8(proto->dev_num, &tx_data, 1);
            //chSequentialStreamWrite(con->sdu, &tx_data, 1);
        }
    }
    return (msg_t)1;
}
Пример #2
0
static THD_FUNCTION(bridge_thread, arg)
{
	t_hydra_console *con;
	con = arg;
	chRegSetThreadName("UART reader");
	chThdSleepMilliseconds(10);
	uint8_t rx_data[UART_BRIDGE_BUFF_SIZE];
	uint8_t bytes_read;
	mode_config_proto_t* proto = &con->mode->proto;

	while (!USER_BUTTON) {
		if(bsp_uart_rxne(proto->dev_num)) {
			bytes_read = bsp_uart_read_u8_timeout(proto->dev_num,
							      rx_data,
							      UART_BRIDGE_BUFF_SIZE,
							      US2ST(100));
			if(bytes_read > 0) {
				cprint(con, (char *)rx_data, bytes_read);
			}
		} else {
			chThdYield();
		}
	}
}