diff --git a/platform/posix/btstack_uart_posix.c b/platform/posix/btstack_uart_posix.c index 9aa79c19e..efb1d71b8 100644 --- a/platform/posix/btstack_uart_posix.c +++ b/platform/posix/btstack_uart_posix.c @@ -90,7 +90,7 @@ static int btstack_uart_posix_init(const btstack_uart_config_t * config){ static void hci_uart_posix_process(btstack_data_source_t *ds, btstack_data_source_callback_type_t callback_type); static void btstack_uart_block_posix_process_write(btstack_data_source_t *ds) { - + if (btstack_uart_block_write_bytes_len == 0) return; uint32_t start = btstack_run_loop_get_time_ms(); @@ -135,7 +135,7 @@ static void btstack_uart_block_posix_process_read(btstack_data_source_t *ds) { } uint32_t start = btstack_run_loop_get_time_ms(); - + // read up to bytes_to_read data in ssize_t bytes_read = read(ds->source.fd, btstack_uart_block_read_bytes_data, btstack_uart_block_read_bytes_len); // log_info("read need %u bytes, got %d", btstack_uart_block_read_bytes_len, (int) bytes_read); @@ -145,17 +145,17 @@ static void btstack_uart_block_posix_process_read(btstack_data_source_t *ds) { } if (bytes_read == 0){ log_error("read zero bytes\n"); - return; + exit(EXIT_FAILURE); } if (bytes_read < 0) { log_error("read returned error\n"); - return; + exit(EXIT_FAILURE); } btstack_uart_block_read_bytes_len -= bytes_read; btstack_uart_block_read_bytes_data += bytes_read; if (btstack_uart_block_read_bytes_len > 0) return; - + btstack_run_loop_disable_data_source_callbacks(ds, DATA_SOURCE_CALLBACK_READ); if (block_received){ @@ -176,13 +176,13 @@ static int btstack_uart_posix_set_baudrate(uint32_t baudrate){ case 9600: brate=B9600; break; case 19200: brate=B19200; break; case 38400: brate=B38400; break; - case 57600: brate=B57600; break; - case 115200: brate=B115200; break; + case 57600: brate=B57600; break; + case 115200: brate=B115200; break; #ifdef B230400 - case 230400: brate=B230400; break; + case 230400: brate=B230400; break; #endif #ifdef B460800 - case 460800: brate=B460800; break; + case 460800: brate=B460800; break; #endif #ifdef B500000 case 500000: brate=B500000; break; @@ -191,7 +191,7 @@ static int btstack_uart_posix_set_baudrate(uint32_t baudrate){ case 576000: brate=B576000; break; #endif #ifdef B921600 - case 921600: brate=B921600; break; + case 921600: brate=B921600; break; #endif #ifdef B1000000 case 1000000: brate=B1000000; break; @@ -311,12 +311,12 @@ static int btstack_uart_posix_open(void){ int fd = open(device_name, flags); if (fd == -1) { log_error("Unable to open port %s", device_name); - return -1; + exit(EXIT_FAILURE); } - + if (tcgetattr(fd, &btstack_uart_block_termios) < 0) { log_error("Couldn't get term attributes"); - return -1; + exit(EXIT_FAILURE); } cfmakeraw(&btstack_uart_block_termios); // make raw @@ -326,11 +326,11 @@ static int btstack_uart_posix_open(void){ btstack_uart_block_termios.c_cflag |= CREAD | CLOCAL; // turn on READ & ignore ctrl lines btstack_uart_block_termios.c_iflag &= ~(IXON | IXOFF | IXANY); // turn off s/w flow ctrl - + // see: http://unixwiz.net/techtips/termios-vmin-vtime.html btstack_uart_block_termios.c_cc[VMIN] = 1; btstack_uart_block_termios.c_cc[VTIME] = 0; - + // no parity btstack_uart_posix_set_parity_option(&btstack_uart_block_termios, parity); @@ -339,15 +339,15 @@ static int btstack_uart_posix_open(void){ if(tcsetattr(fd, TCSANOW, &btstack_uart_block_termios) < 0) { log_error("Couldn't set term attributes"); - return -1; + exit(EXIT_FAILURE); } // store fd in data source transport_data_source.source.fd = fd; - + // also set baudrate if (btstack_uart_posix_set_baudrate(baudrate) < 0){ - return -1; + exit(EXIT_FAILURE); } // set up data_source @@ -360,13 +360,13 @@ static int btstack_uart_posix_open(void){ log_info("Open tty %s", device_name); return 0; -} +} static int btstack_uart_posix_close_new(void){ // first remove run loop handler btstack_run_loop_remove_data_source(&transport_data_source); - + // then close device close(transport_data_source.source.fd); transport_data_source.source.fd = -1; @@ -434,7 +434,7 @@ static void (*frame_received)(uint16_t frame_size); static void btstack_uart_slip_posix_block_sent(void); static void btstack_uart_slip_posix_process_write(btstack_data_source_t *ds) { - + if (btstack_uart_slip_write_bytes_len == 0) return; uint32_t start = btstack_run_loop_get_time_ms(); @@ -507,7 +507,7 @@ static void btstack_uart_slip_posix_process_read(btstack_data_source_t *ds) { btstack_uart_slip_receive_track_start = 0; btstack_uart_slip_receive_start_time = start; } - + // read up to bytes_to_read data in ssize_t bytes_read = read(ds->source.fd, btstack_uart_slip_receive_buffer, SLIP_RECEIVE_BUFFER_SIZE); @@ -517,7 +517,7 @@ static void btstack_uart_slip_posix_process_read(btstack_data_source_t *ds) { log_info("read took %u ms", end - start); } if (bytes_read < 0) return; - + btstack_uart_slip_receive_pos = 0; btstack_uart_slip_receive_len = (uint16_t ) bytes_read;