Lines Matching refs:uart_num
80 #define UART_CONTEX_INIT_DEF(uart_num) {\ argument
81 .hal.dev = UART_LL_GET_HW(uart_num),\
103 uart_port_t uart_num; /*!< UART port number*/ member
170 static void uart_module_enable(uart_port_t uart_num) in uart_module_enable() argument
172 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_module_enable()
173 if (uart_context[uart_num].hw_enabled != true) { in uart_module_enable()
174 periph_module_enable(uart_periph_signal[uart_num].module); in uart_module_enable()
175 if (uart_num != CONFIG_ESP_CONSOLE_UART_NUM) { in uart_module_enable()
179 uart_hal_set_reset_core(&(uart_context[uart_num].hal), true); in uart_module_enable()
180 periph_module_reset(uart_periph_signal[uart_num].module); in uart_module_enable()
181 uart_hal_set_reset_core(&(uart_context[uart_num].hal), false); in uart_module_enable()
183 periph_module_reset(uart_periph_signal[uart_num].module); in uart_module_enable()
186 uart_context[uart_num].hw_enabled = true; in uart_module_enable()
188 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_module_enable()
191 static void uart_module_disable(uart_port_t uart_num) in uart_module_disable() argument
193 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_module_disable()
194 if (uart_context[uart_num].hw_enabled != false) { in uart_module_disable()
195 if (uart_num != CONFIG_ESP_CONSOLE_UART_NUM ) { in uart_module_disable()
196 periph_module_disable(uart_periph_signal[uart_num].module); in uart_module_disable()
198 uart_context[uart_num].hw_enabled = false; in uart_module_disable()
200 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_module_disable()
208 esp_err_t uart_set_word_length(uart_port_t uart_num, uart_word_length_t data_bit) in uart_set_word_length() argument
210 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_word_length()
212 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_word_length()
213 uart_hal_set_data_bit_num(&(uart_context[uart_num].hal), data_bit); in uart_set_word_length()
214 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_word_length()
218 esp_err_t uart_get_word_length(uart_port_t uart_num, uart_word_length_t *data_bit) in uart_get_word_length() argument
220 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_get_word_length()
221 uart_hal_get_data_bit_num(&(uart_context[uart_num].hal), data_bit); in uart_get_word_length()
225 esp_err_t uart_set_stop_bits(uart_port_t uart_num, uart_stop_bits_t stop_bit) in uart_set_stop_bits() argument
227 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_stop_bits()
229 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_stop_bits()
230 uart_hal_set_stop_bits(&(uart_context[uart_num].hal), stop_bit); in uart_set_stop_bits()
231 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_stop_bits()
235 esp_err_t uart_get_stop_bits(uart_port_t uart_num, uart_stop_bits_t *stop_bit) in uart_get_stop_bits() argument
237 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_get_stop_bits()
238 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_stop_bits()
239 uart_hal_get_stop_bits(&(uart_context[uart_num].hal), stop_bit); in uart_get_stop_bits()
240 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_stop_bits()
244 esp_err_t uart_set_parity(uart_port_t uart_num, uart_parity_t parity_mode) in uart_set_parity() argument
246 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_parity()
247 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_parity()
248 uart_hal_set_parity(&(uart_context[uart_num].hal), parity_mode); in uart_set_parity()
249 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_parity()
253 esp_err_t uart_get_parity(uart_port_t uart_num, uart_parity_t *parity_mode) in uart_get_parity() argument
255 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_get_parity()
256 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_parity()
257 uart_hal_get_parity(&(uart_context[uart_num].hal), parity_mode); in uart_get_parity()
258 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_parity()
262 esp_err_t uart_set_baudrate(uart_port_t uart_num, uint32_t baud_rate) in uart_set_baudrate() argument
264 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_baudrate()
269 uart_hal_get_sclk(&(uart_context[uart_num].hal), &src_clk); in uart_set_baudrate()
272 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_baudrate()
273 uart_hal_set_baudrate(&(uart_context[uart_num].hal), baud_rate, sclk_freq); in uart_set_baudrate()
274 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_baudrate()
278 esp_err_t uart_get_baudrate(uart_port_t uart_num, uint32_t *baudrate) in uart_get_baudrate() argument
280 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_get_baudrate()
285 uart_hal_get_sclk(&(uart_context[uart_num].hal), &src_clk); in uart_get_baudrate()
288 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_baudrate()
289 uart_hal_get_baudrate(&(uart_context[uart_num].hal), baudrate, sclk_freq); in uart_get_baudrate()
290 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_baudrate()
294 esp_err_t uart_set_line_inverse(uart_port_t uart_num, uint32_t inverse_mask) in uart_set_line_inverse() argument
296 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_line_inverse()
297 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_line_inverse()
298 uart_hal_inverse_signal(&(uart_context[uart_num].hal), inverse_mask); in uart_set_line_inverse()
299 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_line_inverse()
303 esp_err_t uart_set_sw_flow_ctrl(uart_port_t uart_num, bool enable, uint8_t rx_thresh_xon, uint8_t… in uart_set_sw_flow_ctrl() argument
305 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_sw_flow_ctrl()
314 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_sw_flow_ctrl()
315 uart_hal_set_sw_flow_ctrl(&(uart_context[uart_num].hal), &sw_flow_ctl, enable); in uart_set_sw_flow_ctrl()
316 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_sw_flow_ctrl()
320 esp_err_t uart_set_hw_flow_ctrl(uart_port_t uart_num, uart_hw_flowcontrol_t flow_ctrl, uint8_t rx_t… in uart_set_hw_flow_ctrl() argument
322 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_hw_flow_ctrl()
325 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_hw_flow_ctrl()
326 uart_hal_set_hw_flow_ctrl(&(uart_context[uart_num].hal), flow_ctrl, rx_thresh); in uart_set_hw_flow_ctrl()
327 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_hw_flow_ctrl()
331 esp_err_t uart_get_hw_flow_ctrl(uart_port_t uart_num, uart_hw_flowcontrol_t *flow_ctrl) in uart_get_hw_flow_ctrl() argument
333 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_get_hw_flow_ctrl()
334 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_hw_flow_ctrl()
335 uart_hal_get_hw_flow_ctrl(&(uart_context[uart_num].hal), flow_ctrl); in uart_get_hw_flow_ctrl()
336 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_hw_flow_ctrl()
340 esp_err_t UART_ISR_ATTR uart_clear_intr_status(uart_port_t uart_num, uint32_t clr_mask) in uart_clear_intr_status() argument
342 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_clear_intr_status()
343 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), clr_mask); in uart_clear_intr_status()
347 esp_err_t uart_enable_intr_mask(uart_port_t uart_num, uint32_t enable_mask) in uart_enable_intr_mask() argument
349 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_enable_intr_mask()
350 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_enable_intr_mask()
356 p_uart_obj[uart_num]->rx_int_usr_mask |= enable_mask; in uart_enable_intr_mask()
357 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), enable_mask); in uart_enable_intr_mask()
358 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), enable_mask); in uart_enable_intr_mask()
359 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_enable_intr_mask()
372 static esp_err_t uart_reenable_intr_mask(uart_port_t uart_num, uint32_t enable_mask) in uart_reenable_intr_mask() argument
374 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_reenable_intr_mask()
375 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_reenable_intr_mask()
378 uint32_t mask = p_uart_obj[uart_num]->rx_int_usr_mask & enable_mask; in uart_reenable_intr_mask()
379 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), mask); in uart_reenable_intr_mask()
380 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), mask); in uart_reenable_intr_mask()
381 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_reenable_intr_mask()
385 esp_err_t uart_disable_intr_mask(uart_port_t uart_num, uint32_t disable_mask) in uart_disable_intr_mask() argument
387 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_disable_intr_mask()
388 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_disable_intr_mask()
389 p_uart_obj[uart_num]->rx_int_usr_mask &= ~disable_mask; in uart_disable_intr_mask()
390 uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), disable_mask); in uart_disable_intr_mask()
391 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_disable_intr_mask()
395 static esp_err_t uart_pattern_link_free(uart_port_t uart_num) in uart_pattern_link_free() argument
398 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_link_free()
399 if (p_uart_obj[uart_num]->rx_pattern_pos.data != NULL) { in uart_pattern_link_free()
400 pdata = p_uart_obj[uart_num]->rx_pattern_pos.data; in uart_pattern_link_free()
401 p_uart_obj[uart_num]->rx_pattern_pos.data = NULL; in uart_pattern_link_free()
402 p_uart_obj[uart_num]->rx_pattern_pos.wr = 0; in uart_pattern_link_free()
403 p_uart_obj[uart_num]->rx_pattern_pos.rd = 0; in uart_pattern_link_free()
405 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_link_free()
410 static esp_err_t UART_ISR_ATTR uart_pattern_enqueue(uart_port_t uart_num, int pos) in uart_pattern_enqueue() argument
413 uart_pat_rb_t *p_pos = &p_uart_obj[uart_num]->rx_pattern_pos; in uart_pattern_enqueue()
431 static esp_err_t uart_pattern_dequeue(uart_port_t uart_num) in uart_pattern_dequeue() argument
433 if (p_uart_obj[uart_num]->rx_pattern_pos.data == NULL) { in uart_pattern_dequeue()
437 uart_pat_rb_t *p_pos = &p_uart_obj[uart_num]->rx_pattern_pos; in uart_pattern_dequeue()
450 static esp_err_t uart_pattern_queue_update(uart_port_t uart_num, int diff_len) in uart_pattern_queue_update() argument
452 uart_pat_rb_t *p_pos = &p_uart_obj[uart_num]->rx_pattern_pos; in uart_pattern_queue_update()
468 int uart_pattern_pop_pos(uart_port_t uart_num) in uart_pattern_pop_pos() argument
470 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), (-1), UART_TAG, "uart driver error"); in uart_pattern_pop_pos()
471 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_pop_pos()
472 uart_pat_rb_t *pat_pos = &p_uart_obj[uart_num]->rx_pattern_pos; in uart_pattern_pop_pos()
476 uart_pattern_dequeue(uart_num); in uart_pattern_pop_pos()
478 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_pop_pos()
482 int uart_pattern_get_pos(uart_port_t uart_num) in uart_pattern_get_pos() argument
484 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), (-1), UART_TAG, "uart driver error"); in uart_pattern_get_pos()
485 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_get_pos()
486 uart_pat_rb_t *pat_pos = &p_uart_obj[uart_num]->rx_pattern_pos; in uart_pattern_get_pos()
491 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_get_pos()
495 esp_err_t uart_pattern_queue_reset(uart_port_t uart_num, int queue_length) in uart_pattern_queue_reset() argument
497 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_pattern_queue_reset()
498 … ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_ERR_INVALID_STATE, UART_TAG, "uart driver error"); in uart_pattern_queue_reset()
504 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_queue_reset()
505 int *ptmp = p_uart_obj[uart_num]->rx_pattern_pos.data; in uart_pattern_queue_reset()
506 p_uart_obj[uart_num]->rx_pattern_pos.data = pdata; in uart_pattern_queue_reset()
507 p_uart_obj[uart_num]->rx_pattern_pos.len = queue_length; in uart_pattern_queue_reset()
508 p_uart_obj[uart_num]->rx_pattern_pos.rd = 0; in uart_pattern_queue_reset()
509 p_uart_obj[uart_num]->rx_pattern_pos.wr = 0; in uart_pattern_queue_reset()
510 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_pattern_queue_reset()
515 esp_err_t uart_enable_pattern_det_baud_intr(uart_port_t uart_num, char pattern_chr, uint8_t chr_num… in uart_enable_pattern_det_baud_intr() argument
517 ESP_RETURN_ON_FALSE(uart_num < UART_NUM_MAX, ESP_FAIL, UART_TAG, "uart_num error"); in uart_enable_pattern_det_baud_intr()
529 uart_get_baudrate(uart_num, &uart_baud); in uart_enable_pattern_det_baud_intr()
541 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_CMD_CHAR_DET); in uart_enable_pattern_det_baud_intr()
542 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_enable_pattern_det_baud_intr()
543 uart_hal_set_at_cmd_char(&(uart_context[uart_num].hal), &at_cmd); in uart_enable_pattern_det_baud_intr()
544 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_CMD_CHAR_DET); in uart_enable_pattern_det_baud_intr()
545 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_enable_pattern_det_baud_intr()
550 esp_err_t uart_disable_pattern_det_intr(uart_port_t uart_num) in uart_disable_pattern_det_intr() argument
552 return uart_disable_intr_mask(uart_num, UART_INTR_CMD_CHAR_DET); in uart_disable_pattern_det_intr()
555 esp_err_t uart_enable_rx_intr(uart_port_t uart_num) in uart_enable_rx_intr() argument
557 return uart_enable_intr_mask(uart_num, UART_INTR_RXFIFO_FULL | UART_INTR_RXFIFO_TOUT); in uart_enable_rx_intr()
560 esp_err_t uart_disable_rx_intr(uart_port_t uart_num) in uart_disable_rx_intr() argument
562 return uart_disable_intr_mask(uart_num, UART_INTR_RXFIFO_FULL | UART_INTR_RXFIFO_TOUT); in uart_disable_rx_intr()
565 esp_err_t uart_disable_tx_intr(uart_port_t uart_num) in uart_disable_tx_intr() argument
567 return uart_disable_intr_mask(uart_num, UART_INTR_TXFIFO_EMPTY); in uart_disable_tx_intr()
570 esp_err_t uart_enable_tx_intr(uart_port_t uart_num, int enable, int thresh) in uart_enable_tx_intr() argument
572 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_enable_tx_intr()
574 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_enable_tx_intr()
575 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_enable_tx_intr()
576 uart_hal_set_txfifo_empty_thr(&(uart_context[uart_num].hal), thresh); in uart_enable_tx_intr()
577 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_enable_tx_intr()
578 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_enable_tx_intr()
582 static bool uart_try_set_iomux_pin(uart_port_t uart_num, int io_num, uint32_t idx) in uart_try_set_iomux_pin() argument
585 const uart_periph_sig_t *upin = &uart_periph_signal[uart_num].pins[idx]; in uart_try_set_iomux_pin()
608 esp_err_t uart_set_pin(uart_port_t uart_num, int tx_io_num, int rx_io_num, int rts_io_num, int cts_… in uart_set_pin() argument
610 ESP_RETURN_ON_FALSE((uart_num >= 0), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_pin()
611 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_pin()
618 if (tx_io_num >= 0 && !uart_try_set_iomux_pin(uart_num, tx_io_num, SOC_UART_TX_PIN_IDX)) { in uart_set_pin()
621 …esp_rom_gpio_connect_out_signal(tx_io_num, UART_PERIPH_SIGNAL(uart_num, SOC_UART_TX_PIN_IDX), 0, 0… in uart_set_pin()
624 if (rx_io_num >= 0 && !uart_try_set_iomux_pin(uart_num, rx_io_num, SOC_UART_RX_PIN_IDX)) { in uart_set_pin()
628 … esp_rom_gpio_connect_in_signal(rx_io_num, UART_PERIPH_SIGNAL(uart_num, SOC_UART_RX_PIN_IDX), 0); in uart_set_pin()
631 if (rts_io_num >= 0 && !uart_try_set_iomux_pin(uart_num, rts_io_num, SOC_UART_RTS_PIN_IDX)) { in uart_set_pin()
634 …esp_rom_gpio_connect_out_signal(rts_io_num, UART_PERIPH_SIGNAL(uart_num, SOC_UART_RTS_PIN_IDX), 0,… in uart_set_pin()
637 if (cts_io_num >= 0 && !uart_try_set_iomux_pin(uart_num, cts_io_num, SOC_UART_CTS_PIN_IDX)) { in uart_set_pin()
641 … esp_rom_gpio_connect_in_signal(cts_io_num, UART_PERIPH_SIGNAL(uart_num, SOC_UART_CTS_PIN_IDX), 0); in uart_set_pin()
647 esp_err_t uart_set_rts(uart_port_t uart_num, int level) in uart_set_rts() argument
649 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_rts()
650 …ESP_RETURN_ON_FALSE((!uart_hal_is_hw_rts_en(&(uart_context[uart_num].hal))), ESP_FAIL, UART_TAG, "… in uart_set_rts()
651 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_rts()
652 uart_hal_set_rts(&(uart_context[uart_num].hal), level); in uart_set_rts()
653 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_rts()
657 esp_err_t uart_set_dtr(uart_port_t uart_num, int level) in uart_set_dtr() argument
659 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_dtr()
660 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_dtr()
661 uart_hal_set_dtr(&(uart_context[uart_num].hal), level); in uart_set_dtr()
662 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_dtr()
666 esp_err_t uart_set_tx_idle_num(uart_port_t uart_num, uint16_t idle_num) in uart_set_tx_idle_num() argument
668 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_set_tx_idle_num()
670 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_tx_idle_num()
671 uart_hal_set_tx_idle_num(&(uart_context[uart_num].hal), idle_num); in uart_set_tx_idle_num()
672 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_tx_idle_num()
676 esp_err_t uart_param_config(uart_port_t uart_num, const uart_config_t *uart_config) in uart_param_config() argument
678 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_param_config()
683 uart_module_enable(uart_num); in uart_param_config()
693 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_param_config()
694 uart_hal_init(&(uart_context[uart_num].hal), uart_num); in uart_param_config()
695 uart_hal_set_sclk(&(uart_context[uart_num].hal), clk_src); in uart_param_config()
696 uart_hal_set_baudrate(&(uart_context[uart_num].hal), uart_config->baud_rate, sclk_freq); in uart_param_config()
697 uart_hal_set_parity(&(uart_context[uart_num].hal), uart_config->parity); in uart_param_config()
698 uart_hal_set_data_bit_num(&(uart_context[uart_num].hal), uart_config->data_bits); in uart_param_config()
699 uart_hal_set_stop_bits(&(uart_context[uart_num].hal), uart_config->stop_bits); in uart_param_config()
700 uart_hal_set_tx_idle_num(&(uart_context[uart_num].hal), UART_TX_IDLE_NUM_DEFAULT); in uart_param_config()
701 …uart_hal_set_hw_flow_ctrl(&(uart_context[uart_num].hal), uart_config->flow_ctrl, uart_config->rx_f… in uart_param_config()
702 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_param_config()
703 uart_hal_rxfifo_rst(&(uart_context[uart_num].hal)); in uart_param_config()
704 uart_hal_txfifo_rst(&(uart_context[uart_num].hal)); in uart_param_config()
708 esp_err_t uart_intr_config(uart_port_t uart_num, const uart_intr_config_t *intr_conf) in uart_intr_config() argument
710 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_intr_config()
712 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_LL_INTR_MASK); in uart_intr_config()
713 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_intr_config()
715 uart_hal_set_rx_timeout(&(uart_context[uart_num].hal), intr_conf->rx_timeout_thresh); in uart_intr_config()
718 uart_hal_set_rx_timeout(&(uart_context[uart_num].hal), 0); in uart_intr_config()
721 uart_hal_set_rxfifo_full_thr(&(uart_context[uart_num].hal), intr_conf->rxfifo_full_thresh); in uart_intr_config()
724 … uart_hal_set_txfifo_empty_thr(&(uart_context[uart_num].hal), intr_conf->txfifo_empty_intr_thresh); in uart_intr_config()
726 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), intr_conf->intr_enable_mask); in uart_intr_config()
727 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_intr_config()
749 static uint32_t UART_ISR_ATTR uart_enable_tx_write_fifo(uart_port_t uart_num, const uint8_t *pbuf, … in uart_enable_tx_write_fifo() argument
752 UART_ENTER_CRITICAL_SAFE(&(uart_context[uart_num].spinlock)); in uart_enable_tx_write_fifo()
753 if (UART_IS_MODE_SET(uart_num, UART_MODE_RS485_HALF_DUPLEX)) { in uart_enable_tx_write_fifo()
754 uart_hal_set_rts(&(uart_context[uart_num].hal), 0); in uart_enable_tx_write_fifo()
757 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_DONE); in uart_enable_tx_write_fifo()
758 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_DONE); in uart_enable_tx_write_fifo()
760 uart_hal_write_txfifo(&(uart_context[uart_num].hal), pbuf, len, &sent_len); in uart_enable_tx_write_fifo()
761 UART_EXIT_CRITICAL_SAFE(&(uart_context[uart_num].spinlock)); in uart_enable_tx_write_fifo()
769 uint8_t uart_num = p_uart->uart_num; in uart_rx_intr_handler_default() local
778 uart_intr_status = uart_hal_get_intsts_mask(&(uart_context[uart_num].hal)); in uart_rx_intr_handler_default()
785 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
786 uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_rx_intr_handler_default()
787 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
788 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_rx_intr_handler_default()
802 uint32_t tx_fifo_rem = uart_hal_get_txfifo_len(&(uart_context[uart_num].hal)); in uart_rx_intr_handler_default()
835 … uint32_t send_len = uart_enable_tx_write_fifo(uart_num, (const uint8_t *) p_uart->tx_ptr, in uart_rx_intr_handler_default()
849 … uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_DONE); in uart_rx_intr_handler_default()
850 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
851 … uart_hal_tx_break(&(uart_context[uart_num].hal), p_uart->tx_brk_len); in uart_rx_intr_handler_default()
852 … uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_DONE); in uart_rx_intr_handler_default()
853 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
868 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_rx_intr_handler_default()
869 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
870 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_rx_intr_handler_default()
871 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
883 rx_fifo_len = uart_hal_get_rxfifo_len(&(uart_context[uart_num].hal)); in uart_rx_intr_handler_default()
884 …if ((p_uart_obj[uart_num]->rx_always_timeout_flg) && !(uart_intr_status & UART_INTR_RXFIFO_TOUT)) { in uart_rx_intr_handler_default()
887 … uart_hal_read_rxfifo(&(uart_context[uart_num].hal), p_uart->rx_data_buf, &rx_fifo_len); in uart_rx_intr_handler_default()
891 uart_hal_get_at_cmd_char(&(uart_context[uart_num].hal), &pat_chr, &pat_num); in uart_rx_intr_handler_default()
895 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_CMD_CHAR_DET); in uart_rx_intr_handler_default()
901 …uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_TOUT | UART_INTR_RXFIFO_F… in uart_rx_intr_handler_default()
907 … p_uart->uart_select_notif_callback(uart_num, UART_SELECT_READ_NOTIF, &HPTaskAwoken); in uart_rx_intr_handler_default()
916 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
917 …uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_TOUT | UART_INTR_RXFIFO… in uart_rx_intr_handler_default()
918 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
920 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
923 … uart_pattern_enqueue(uart_num, p_uart->rx_buffered_len - (pat_num - rx_fifo_len)); in uart_rx_intr_handler_default()
925 uart_pattern_enqueue(uart_num, in uart_rx_intr_handler_default()
932 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
941 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
945 … uart_pattern_enqueue(uart_num, p_uart->rx_buffered_len - (pat_num - rx_fifo_len)); in uart_rx_intr_handler_default()
948 uart_pattern_enqueue(uart_num, p_uart->rx_buffered_len + pat_idx); in uart_rx_intr_handler_default()
952 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
955 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
956 …uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_FULL | UART_INTR_RXFIFO… in uart_rx_intr_handler_default()
957 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
958 …uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_FULL | UART_INTR_RXFIFO_T… in uart_rx_intr_handler_default()
960 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_CMD_CHAR_DET); in uart_rx_intr_handler_default()
968 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
969 uart_hal_rxfifo_rst(&(uart_context[uart_num].hal)); in uart_rx_intr_handler_default()
970 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
973 … p_uart->uart_select_notif_callback(uart_num, UART_SELECT_ERROR_NOTIF, &HPTaskAwoken); in uart_rx_intr_handler_default()
976 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_OVF); in uart_rx_intr_handler_default()
979 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_BRK_DET); in uart_rx_intr_handler_default()
984 … p_uart->uart_select_notif_callback(uart_num, UART_SELECT_ERROR_NOTIF, &HPTaskAwoken); in uart_rx_intr_handler_default()
987 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_FRAM_ERR); in uart_rx_intr_handler_default()
992 … p_uart->uart_select_notif_callback(uart_num, UART_SELECT_ERROR_NOTIF, &HPTaskAwoken); in uart_rx_intr_handler_default()
995 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_PARITY_ERR); in uart_rx_intr_handler_default()
998 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
999 uart_hal_tx_break(&(uart_context[uart_num].hal), 0); in uart_rx_intr_handler_default()
1000 uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_DONE); in uart_rx_intr_handler_default()
1002 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TXFIFO_EMPTY); in uart_rx_intr_handler_default()
1004 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1005 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_DONE); in uart_rx_intr_handler_default()
1013 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1014 uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_IDLE); in uart_rx_intr_handler_default()
1015 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1016 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_IDLE); in uart_rx_intr_handler_default()
1018 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_CMD_CHAR_DET); in uart_rx_intr_handler_default()
1024 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1025 uart_hal_rxfifo_rst(&(uart_context[uart_num].hal)); in uart_rx_intr_handler_default()
1027 p_uart_obj[uart_num]->coll_det_flg = true; in uart_rx_intr_handler_default()
1028 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1029 …uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_RS485_CLASH | UART_INTR_RS485_FR… in uart_rx_intr_handler_default()
1032 …if (UART_IS_MODE_SET(uart_num, UART_MODE_RS485_HALF_DUPLEX) && uart_hal_is_tx_idle(&(uart_context[… in uart_rx_intr_handler_default()
1040 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_DONE); in uart_rx_intr_handler_default()
1041 UART_ENTER_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1042 uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_DONE); in uart_rx_intr_handler_default()
1043 if (UART_IS_MODE_SET(uart_num, UART_MODE_RS485_HALF_DUPLEX)) { in uart_rx_intr_handler_default()
1044 uart_hal_rxfifo_rst(&(uart_context[uart_num].hal)); in uart_rx_intr_handler_default()
1045 uart_hal_set_rts(&(uart_context[uart_num].hal), 1); in uart_rx_intr_handler_default()
1047 UART_EXIT_CRITICAL_ISR(&(uart_context[uart_num].spinlock)); in uart_rx_intr_handler_default()
1048 xSemaphoreGiveFromISR(p_uart_obj[uart_num]->tx_done_sem, &HPTaskAwoken); in uart_rx_intr_handler_default()
1053 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_WAKEUP); in uart_rx_intr_handler_default()
1058 …uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), uart_intr_status); /*simply clear all othe… in uart_rx_intr_handler_default()
1076 esp_err_t uart_wait_tx_done(uart_port_t uart_num, TickType_t ticks_to_wait) in uart_wait_tx_done() argument
1078 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_wait_tx_done()
1079 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_FAIL, UART_TAG, "uart driver error"); in uart_wait_tx_done()
1083 res = xSemaphoreTake(p_uart_obj[uart_num]->tx_mux, (TickType_t)ticks_to_wait); in uart_wait_tx_done()
1090 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_wait_tx_done()
1091 bool is_rs485_mode = UART_IS_MODE_SET(uart_num, UART_MODE_RS485_HALF_DUPLEX); in uart_wait_tx_done()
1092 …bool disabled = !(uart_hal_get_intr_ena_status(&(uart_context[uart_num].hal)) & UART_INTR_TX_DONE); in uart_wait_tx_done()
1097 uart_hal_get_intraw_mask(&(uart_context[uart_num].hal)) & UART_INTR_TX_DONE)); in uart_wait_tx_done()
1101 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_DONE); in uart_wait_tx_done()
1103 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_wait_tx_done()
1104 xSemaphoreTake(p_uart_obj[uart_num]->tx_done_sem, 0); in uart_wait_tx_done()
1110 if (uart_hal_is_tx_idle(&(uart_context[uart_num].hal))) { in uart_wait_tx_done()
1111 xSemaphoreGive(p_uart_obj[uart_num]->tx_mux); in uart_wait_tx_done()
1114 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_wait_tx_done()
1115 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_DONE); in uart_wait_tx_done()
1116 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_wait_tx_done()
1125 res = xSemaphoreTake(p_uart_obj[uart_num]->tx_done_sem, (TickType_t)ticks_to_wait); in uart_wait_tx_done()
1128 xSemaphoreGive(p_uart_obj[uart_num]->tx_mux); in uart_wait_tx_done()
1131 xSemaphoreGive(p_uart_obj[uart_num]->tx_mux); in uart_wait_tx_done()
1135 int uart_tx_chars(uart_port_t uart_num, const char *buffer, uint32_t len) in uart_tx_chars() argument
1137 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), (-1), UART_TAG, "uart_num error"); in uart_tx_chars()
1138 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), (-1), UART_TAG, "uart driver error"); in uart_tx_chars()
1144 xSemaphoreTake(p_uart_obj[uart_num]->tx_mux, (TickType_t)portMAX_DELAY); in uart_tx_chars()
1145 tx_len = (int)uart_enable_tx_write_fifo(uart_num, (const uint8_t *) buffer, len); in uart_tx_chars()
1146 xSemaphoreGive(p_uart_obj[uart_num]->tx_mux); in uart_tx_chars()
1150 static int uart_tx_all(uart_port_t uart_num, const char *src, size_t size, bool brk_en, int brk_len) in uart_tx_all() argument
1158 xSemaphoreTake(p_uart_obj[uart_num]->tx_mux, (TickType_t)portMAX_DELAY); in uart_tx_all()
1159 p_uart_obj[uart_num]->coll_det_flg = false; in uart_tx_all()
1160 if (p_uart_obj[uart_num]->tx_buf_size > 0) { in uart_tx_all()
1161 size_t max_size = xRingbufferGetMaxItemSize(p_uart_obj[uart_num]->tx_ring_buf); in uart_tx_all()
1171 …xRingbufferSend(p_uart_obj[uart_num]->tx_ring_buf, (void *) &evt, sizeof(uart_tx_data_t), portMAX_… in uart_tx_all()
1174 …xRingbufferSend(p_uart_obj[uart_num]->tx_ring_buf, (void *) (src + offset), send_size, portMAX_DEL… in uart_tx_all()
1177 uart_enable_tx_intr(uart_num, 1, UART_EMPTY_THRESH_DEFAULT); in uart_tx_all()
1182 … if (pdTRUE == xSemaphoreTake(p_uart_obj[uart_num]->tx_fifo_sem, (TickType_t)portMAX_DELAY)) { in uart_tx_all()
1183 uint32_t sent = uart_enable_tx_write_fifo(uart_num, (const uint8_t *) src, size); in uart_tx_all()
1185 p_uart_obj[uart_num]->tx_waiting_fifo = true; in uart_tx_all()
1186 uart_enable_tx_intr(uart_num, 1, UART_EMPTY_THRESH_DEFAULT); in uart_tx_all()
1193 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_DONE); in uart_tx_all()
1194 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_tx_all()
1195 uart_hal_tx_break(&(uart_context[uart_num].hal), brk_len); in uart_tx_all()
1196 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_TX_BRK_DONE); in uart_tx_all()
1197 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_tx_all()
1198 xSemaphoreTake(p_uart_obj[uart_num]->tx_brk_sem, (TickType_t)portMAX_DELAY); in uart_tx_all()
1200 xSemaphoreGive(p_uart_obj[uart_num]->tx_fifo_sem); in uart_tx_all()
1202 xSemaphoreGive(p_uart_obj[uart_num]->tx_mux); in uart_tx_all()
1206 int uart_write_bytes(uart_port_t uart_num, const void *src, size_t size) in uart_write_bytes() argument
1208 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), (-1), UART_TAG, "uart_num error"); in uart_write_bytes()
1209 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num] != NULL), (-1), UART_TAG, "uart driver error"); in uart_write_bytes()
1211 return uart_tx_all(uart_num, src, size, 0, 0); in uart_write_bytes()
1214 int uart_write_bytes_with_break(uart_port_t uart_num, const void *src, size_t size, int brk_len) in uart_write_bytes_with_break() argument
1216 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), (-1), UART_TAG, "uart_num error"); in uart_write_bytes_with_break()
1217 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), (-1), UART_TAG, "uart driver error"); in uart_write_bytes_with_break()
1221 return uart_tx_all(uart_num, src, size, 1, brk_len); in uart_write_bytes_with_break()
1224 static bool uart_check_buf_full(uart_port_t uart_num) in uart_check_buf_full() argument
1226 if (p_uart_obj[uart_num]->rx_buffer_full_flg) { in uart_check_buf_full()
1227 …e_t res = xRingbufferSend(p_uart_obj[uart_num]->rx_ring_buf, p_uart_obj[uart_num]->rx_data_buf, p_… in uart_check_buf_full()
1229 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_check_buf_full()
1230 p_uart_obj[uart_num]->rx_buffered_len += p_uart_obj[uart_num]->rx_stash_len; in uart_check_buf_full()
1231 p_uart_obj[uart_num]->rx_buffer_full_flg = false; in uart_check_buf_full()
1232 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_check_buf_full()
1235 …uart_reenable_intr_mask(p_uart_obj[uart_num]->uart_num, UART_INTR_RXFIFO_TOUT | UART_INTR_RXFIFO_F… in uart_check_buf_full()
1242 int uart_read_bytes(uart_port_t uart_num, void *buf, uint32_t length, TickType_t ticks_to_wait) in uart_read_bytes() argument
1244 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), (-1), UART_TAG, "uart_num error"); in uart_read_bytes()
1246 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), (-1), UART_TAG, "uart driver error"); in uart_read_bytes()
1251 if (xSemaphoreTake(p_uart_obj[uart_num]->rx_mux, (TickType_t)ticks_to_wait) != pdTRUE) { in uart_read_bytes()
1255 if (p_uart_obj[uart_num]->rx_cur_remain == 0) { in uart_read_bytes()
1256 …data = (uint8_t *) xRingbufferReceive(p_uart_obj[uart_num]->rx_ring_buf, &size, (TickType_t) ticks… in uart_read_bytes()
1258 p_uart_obj[uart_num]->rx_head_ptr = data; in uart_read_bytes()
1259 p_uart_obj[uart_num]->rx_ptr = data; in uart_read_bytes()
1260 p_uart_obj[uart_num]->rx_cur_remain = size; in uart_read_bytes()
1265 if (uart_check_buf_full(uart_num)) { in uart_read_bytes()
1270 xSemaphoreGive(p_uart_obj[uart_num]->rx_mux); in uart_read_bytes()
1275 if (p_uart_obj[uart_num]->rx_cur_remain > length) { in uart_read_bytes()
1278 len_tmp = p_uart_obj[uart_num]->rx_cur_remain; in uart_read_bytes()
1280 memcpy((uint8_t *)buf + copy_len, p_uart_obj[uart_num]->rx_ptr, len_tmp); in uart_read_bytes()
1281 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_read_bytes()
1282 p_uart_obj[uart_num]->rx_buffered_len -= len_tmp; in uart_read_bytes()
1283 uart_pattern_queue_update(uart_num, len_tmp); in uart_read_bytes()
1284 p_uart_obj[uart_num]->rx_ptr += len_tmp; in uart_read_bytes()
1285 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_read_bytes()
1286 p_uart_obj[uart_num]->rx_cur_remain -= len_tmp; in uart_read_bytes()
1289 if (p_uart_obj[uart_num]->rx_cur_remain == 0) { in uart_read_bytes()
1290 … vRingbufferReturnItem(p_uart_obj[uart_num]->rx_ring_buf, p_uart_obj[uart_num]->rx_head_ptr); in uart_read_bytes()
1291 p_uart_obj[uart_num]->rx_head_ptr = NULL; in uart_read_bytes()
1292 p_uart_obj[uart_num]->rx_ptr = NULL; in uart_read_bytes()
1293 uart_check_buf_full(uart_num); in uart_read_bytes()
1297 xSemaphoreGive(p_uart_obj[uart_num]->rx_mux); in uart_read_bytes()
1301 esp_err_t uart_get_buffered_data_len(uart_port_t uart_num, size_t *size) in uart_get_buffered_data_len() argument
1303 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_get_buffered_data_len()
1304 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_FAIL, UART_TAG, "uart driver error"); in uart_get_buffered_data_len()
1305 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_buffered_data_len()
1306 *size = p_uart_obj[uart_num]->rx_buffered_len; in uart_get_buffered_data_len()
1307 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_get_buffered_data_len()
1311 esp_err_t uart_get_tx_buffer_free_size(uart_port_t uart_num, size_t *size) in uart_get_tx_buffer_free_size() argument
1313 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_get_tx_buffer_free_size()
1314 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_ERR_INVALID_ARG, UART_TAG, "uart driver error"); in uart_get_tx_buffer_free_size()
1316 *size = p_uart_obj[uart_num]->tx_buf_size - p_uart_obj[uart_num]->tx_len_tot; in uart_get_tx_buffer_free_size()
1320 esp_err_t uart_flush(uart_port_t uart_num) __attribute__((alias("uart_flush_input")));
1322 esp_err_t uart_flush_input(uart_port_t uart_num) in uart_flush_input() argument
1324 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_flush_input()
1325 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_FAIL, UART_TAG, "uart driver error"); in uart_flush_input()
1326 uart_obj_t *p_uart = p_uart_obj[uart_num]; in uart_flush_input()
1332 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1333 …uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_FULL | UART_INTR_RXFIFO… in uart_flush_input()
1334 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1338 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1339 p_uart_obj[uart_num]->rx_buffered_len -= p_uart->rx_cur_remain; in uart_flush_input()
1340 uart_pattern_queue_update(uart_num, p_uart->rx_cur_remain); in uart_flush_input()
1341 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1349 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1350 if( p_uart_obj[uart_num]->rx_buffered_len != 0 ) { in uart_flush_input()
1351 p_uart_obj[uart_num]->rx_buffered_len = 0; in uart_flush_input()
1355 p_uart_obj[uart_num]->rx_buffer_full_flg = false; in uart_flush_input()
1356 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1363 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1364 p_uart_obj[uart_num]->rx_buffered_len -= size; in uart_flush_input()
1365 uart_pattern_queue_update(uart_num, size); in uart_flush_input()
1366 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1368 if (p_uart_obj[uart_num]->rx_buffer_full_flg) { in uart_flush_input()
1369 …e_t res = xRingbufferSend(p_uart_obj[uart_num]->rx_ring_buf, p_uart_obj[uart_num]->rx_data_buf, p_… in uart_flush_input()
1371 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1372 p_uart_obj[uart_num]->rx_buffered_len += p_uart_obj[uart_num]->rx_stash_len; in uart_flush_input()
1373 p_uart_obj[uart_num]->rx_buffer_full_flg = false; in uart_flush_input()
1374 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_flush_input()
1381 uart_hal_rxfifo_rst(&(uart_context[uart_num].hal)); in uart_flush_input()
1384 uart_reenable_intr_mask(uart_num, UART_INTR_RXFIFO_TOUT | UART_INTR_RXFIFO_FULL); in uart_flush_input()
1520 esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int eve… in uart_driver_install() argument
1524 …ESP_RETURN_ON_FALSE((uart_num != CONFIG_ESP_CONSOLE_UART_NUM), ESP_FAIL, UART_TAG, "UART used by G… in uart_driver_install()
1526 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_driver_install()
1541 if (p_uart_obj[uart_num] == NULL) { in uart_driver_install()
1542 … p_uart_obj[uart_num] = uart_alloc_driver_obj(event_queue_size, tx_buffer_size, rx_buffer_size); in uart_driver_install()
1543 if (p_uart_obj[uart_num] == NULL) { in uart_driver_install()
1547 p_uart_obj[uart_num]->uart_num = uart_num; in uart_driver_install()
1548 p_uart_obj[uart_num]->uart_mode = UART_MODE_UART; in uart_driver_install()
1549 p_uart_obj[uart_num]->coll_det_flg = false; in uart_driver_install()
1550 p_uart_obj[uart_num]->rx_always_timeout_flg = false; in uart_driver_install()
1551 p_uart_obj[uart_num]->event_queue_size = event_queue_size; in uart_driver_install()
1552 p_uart_obj[uart_num]->tx_ptr = NULL; in uart_driver_install()
1553 p_uart_obj[uart_num]->tx_head = NULL; in uart_driver_install()
1554 p_uart_obj[uart_num]->tx_len_tot = 0; in uart_driver_install()
1555 p_uart_obj[uart_num]->tx_brk_flg = 0; in uart_driver_install()
1556 p_uart_obj[uart_num]->tx_brk_len = 0; in uart_driver_install()
1557 p_uart_obj[uart_num]->tx_waiting_brk = 0; in uart_driver_install()
1558 p_uart_obj[uart_num]->rx_buffered_len = 0; in uart_driver_install()
1559 p_uart_obj[uart_num]->rx_buffer_full_flg = false; in uart_driver_install()
1560 p_uart_obj[uart_num]->tx_waiting_fifo = false; in uart_driver_install()
1561 p_uart_obj[uart_num]->rx_ptr = NULL; in uart_driver_install()
1562 p_uart_obj[uart_num]->rx_cur_remain = 0; in uart_driver_install()
1563 p_uart_obj[uart_num]->rx_int_usr_mask = UART_INTR_RXFIFO_FULL | UART_INTR_RXFIFO_TOUT; in uart_driver_install()
1564 p_uart_obj[uart_num]->rx_head_ptr = NULL; in uart_driver_install()
1565 p_uart_obj[uart_num]->tx_buf_size = tx_buffer_size; in uart_driver_install()
1566 p_uart_obj[uart_num]->uart_select_notif_callback = NULL; in uart_driver_install()
1567 xSemaphoreGive(p_uart_obj[uart_num]->tx_fifo_sem); in uart_driver_install()
1568 uart_pattern_queue_reset(uart_num, UART_PATTERN_DET_QLEN_DEFAULT); in uart_driver_install()
1570 *uart_queue = p_uart_obj[uart_num]->event_queue; in uart_driver_install()
1571 …ESP_LOGI(UART_TAG, "queue free spaces: %d", uxQueueSpacesAvailable(p_uart_obj[uart_num]->event_que… in uart_driver_install()
1584 uart_module_enable(uart_num); in uart_driver_install()
1585 uart_hal_disable_intr_mask(&(uart_context[uart_num].hal), UART_LL_INTR_MASK); in uart_driver_install()
1586 uart_hal_clr_intsts_mask(&(uart_context[uart_num].hal), UART_LL_INTR_MASK); in uart_driver_install()
1588 ret = esp_intr_alloc(uart_periph_signal[uart_num].irq, intr_alloc_flags, in uart_driver_install()
1589 uart_rx_intr_handler_default, p_uart_obj[uart_num], in uart_driver_install()
1590 &p_uart_obj[uart_num]->intr_handle); in uart_driver_install()
1593 ret = uart_intr_config(uart_num, &uart_intr); in uart_driver_install()
1599 uart_driver_delete(uart_num); in uart_driver_install()
1604 esp_err_t uart_driver_delete(uart_port_t uart_num) in uart_driver_delete() argument
1606 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_FAIL, UART_TAG, "uart_num error"); in uart_driver_delete()
1607 if (p_uart_obj[uart_num] == NULL) { in uart_driver_delete()
1611 esp_intr_free(p_uart_obj[uart_num]->intr_handle); in uart_driver_delete()
1612 uart_disable_rx_intr(uart_num); in uart_driver_delete()
1613 uart_disable_tx_intr(uart_num); in uart_driver_delete()
1614 uart_pattern_link_free(uart_num); in uart_driver_delete()
1615 uart_free_driver_obj(p_uart_obj[uart_num]); in uart_driver_delete()
1616 p_uart_obj[uart_num] = NULL; in uart_driver_delete()
1620 uart_hal_get_sclk(&(uart_context[uart_num].hal), &sclk); in uart_driver_delete()
1625 uart_module_disable(uart_num); in uart_driver_delete()
1629 bool uart_is_driver_installed(uart_port_t uart_num) in uart_is_driver_installed() argument
1631 return uart_num < UART_NUM_MAX && (p_uart_obj[uart_num] != NULL); in uart_is_driver_installed()
1634 void uart_set_select_notif_callback(uart_port_t uart_num, uart_select_notif_callback_t uart_select_… in uart_set_select_notif_callback() argument
1636 if (uart_num < UART_NUM_MAX && p_uart_obj[uart_num]) { in uart_set_select_notif_callback()
1637 …p_uart_obj[uart_num]->uart_select_notif_callback = (uart_select_notif_callback_t) uart_select_noti… in uart_set_select_notif_callback()
1647 esp_err_t uart_set_mode(uart_port_t uart_num, uart_mode_t mode) in uart_set_mode() argument
1649 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_set_mode()
1650 … ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_ERR_INVALID_STATE, UART_TAG, "uart driver error"); in uart_set_mode()
1653 …ESP_RETURN_ON_FALSE((!uart_hal_is_hw_rts_en(&(uart_context[uart_num].hal))), ESP_ERR_INVALID_ARG, … in uart_set_mode()
1656 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_mode()
1657 uart_hal_set_mode(&(uart_context[uart_num].hal), mode); in uart_set_mode()
1660 p_uart_obj[uart_num]->coll_det_flg = false; in uart_set_mode()
1662 uart_hal_ena_intr_mask(&(uart_context[uart_num].hal), UART_INTR_RXFIFO_TOUT in uart_set_mode()
1668 p_uart_obj[uart_num]->uart_mode = mode; in uart_set_mode()
1669 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_mode()
1673 esp_err_t uart_set_rx_full_threshold(uart_port_t uart_num, int threshold) in uart_set_rx_full_threshold() argument
1675 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_set_rx_full_threshold()
1678 if (p_uart_obj[uart_num] == NULL) { in uart_set_rx_full_threshold()
1682 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_rx_full_threshold()
1683 if (uart_hal_get_intr_ena_status(&(uart_context[uart_num].hal)) & UART_INTR_RXFIFO_FULL) { in uart_set_rx_full_threshold()
1684 uart_hal_set_rxfifo_full_thr(&(uart_context[uart_num].hal), threshold); in uart_set_rx_full_threshold()
1686 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_rx_full_threshold()
1690 esp_err_t uart_set_tx_empty_threshold(uart_port_t uart_num, int threshold) in uart_set_tx_empty_threshold() argument
1692 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_set_tx_empty_threshold()
1695 if (p_uart_obj[uart_num] == NULL) { in uart_set_tx_empty_threshold()
1699 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_tx_empty_threshold()
1700 if (uart_hal_get_intr_ena_status(&(uart_context[uart_num].hal)) & UART_INTR_TXFIFO_EMPTY) { in uart_set_tx_empty_threshold()
1701 uart_hal_set_txfifo_empty_thr(&(uart_context[uart_num].hal), threshold); in uart_set_tx_empty_threshold()
1703 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_tx_empty_threshold()
1707 esp_err_t uart_set_rx_timeout(uart_port_t uart_num, const uint8_t tout_thresh) in uart_set_rx_timeout() argument
1709 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_set_rx_timeout()
1711 uint16_t tout_max_thresh = uart_hal_get_max_rx_timeout_thrd(&(uart_context[uart_num].hal)); in uart_set_rx_timeout()
1716 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_rx_timeout()
1717 uart_hal_set_rx_timeout(&(uart_context[uart_num].hal), tout_thresh); in uart_set_rx_timeout()
1718 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_rx_timeout()
1722 esp_err_t uart_get_collision_flag(uart_port_t uart_num, bool *collision_flag) in uart_get_collision_flag() argument
1724 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_get_collision_flag()
1725 ESP_RETURN_ON_FALSE((p_uart_obj[uart_num]), ESP_FAIL, UART_TAG, "uart driver error"); in uart_get_collision_flag()
1727 …ESP_RETURN_ON_FALSE((UART_IS_MODE_SET(uart_num, UART_MODE_RS485_HALF_DUPLEX) || UART_IS_MODE_SET(u… in uart_get_collision_flag()
1729 *collision_flag = p_uart_obj[uart_num]->coll_det_flg; in uart_get_collision_flag()
1733 esp_err_t uart_set_wakeup_threshold(uart_port_t uart_num, int wakeup_threshold) in uart_set_wakeup_threshold() argument
1735 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_set_wakeup_threshold()
1738 UART_ENTER_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_wakeup_threshold()
1739 uart_hal_set_wakeup_thrd(&(uart_context[uart_num].hal), wakeup_threshold); in uart_set_wakeup_threshold()
1740 UART_EXIT_CRITICAL(&(uart_context[uart_num].spinlock)); in uart_set_wakeup_threshold()
1744 esp_err_t uart_get_wakeup_threshold(uart_port_t uart_num, int *out_wakeup_threshold) in uart_get_wakeup_threshold() argument
1746 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_get_wakeup_threshold()
1748 uart_hal_get_wakeup_thrd(&(uart_context[uart_num].hal), (uint32_t *)out_wakeup_threshold); in uart_get_wakeup_threshold()
1752 esp_err_t uart_wait_tx_idle_polling(uart_port_t uart_num) in uart_wait_tx_idle_polling() argument
1754 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_wait_tx_idle_polling()
1755 while (!uart_hal_is_tx_idle(&(uart_context[uart_num].hal))); in uart_wait_tx_idle_polling()
1759 esp_err_t uart_set_loop_back(uart_port_t uart_num, bool loop_back_en) in uart_set_loop_back() argument
1761 ESP_RETURN_ON_FALSE((uart_num < UART_NUM_MAX), ESP_ERR_INVALID_ARG, UART_TAG, "uart_num error"); in uart_set_loop_back()
1762 uart_hal_set_loop_back(&(uart_context[uart_num].hal), loop_back_en); in uart_set_loop_back()
1766 void uart_set_always_rx_timeout(uart_port_t uart_num, bool always_rx_timeout) in uart_set_always_rx_timeout() argument
1768 uint16_t rx_tout = uart_hal_get_rx_tout_thr(&(uart_context[uart_num].hal)); in uart_set_always_rx_timeout()
1770 p_uart_obj[uart_num]->rx_always_timeout_flg = always_rx_timeout; in uart_set_always_rx_timeout()
1772 p_uart_obj[uart_num]->rx_always_timeout_flg = false; in uart_set_always_rx_timeout()