| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <inttypes.h>
- #include "driver/uart.h"
- /**
- * Function prototype for UART driver to ask for more data to send.
- * Returns -1 if no more data is available for TX.
- * Driver must call this with interrupts disabled.
- */
- typedef int (*hci_uart_tx_char)(void *arg);
- /**
- * Function prototype for UART driver to report that transmission is
- * complete. This should be called when transmission of last byte is
- * finished.
- * Driver must call this with interrupts disabled.
- */
- typedef void (*hci_uart_tx_done)(void *arg);
- /**
- * Function prototype for UART driver to report incoming byte of data.
- * Returns -1 if data was dropped.
- * Driver must call this with interrupts disabled.
- */
- typedef int (*hci_uart_rx_char)(void *arg, uint8_t byte);
- /**
- * Initializes given uart. Mapping of logical UART number to physical
- * UART/GPIO pins is in BSP.
- */
- int hci_uart_init_cbs(int uart, hci_uart_tx_char tx_func,
- hci_uart_tx_done tx_done, hci_uart_rx_char rx_func, void *arg);
- /**
- * Applies given configuration to UART.
- *
- * @param port_num The UART number to configure
- * @param speed The baudrate in bps to configure
- * @param databits The number of databits to send per byte
- * @param stopbits The number of stop bits to send
- * @param parity The UART parity
- * @param flow_ctl Flow control settings on the UART
- *
- * @return 0 on success, non-zero error code on failure
- */
- int hci_uart_config(int port_num, int32_t baud_rate, uint8_t data_bits, uint8_t stop_bits,
- uart_parity_t parity, uart_hw_flowcontrol_t flow_ctl);
- /**
- * Close UART port. Can call hal_uart_config() with different settings after
- * calling this.
- *
- * @param port_num The UART number to close
- */
- int hci_uart_close(int port_num);
- /**
- * More data queued for transmission. UART driver will start asking for that
- * data.
- *
- * @param port_num The UART number to start TX on
- */
- void hci_uart_start_tx(int port_num);
- /**
- * Upper layers have consumed some data, and are now ready to receive more.
- * This is meaningful after uart_rx_char callback has returned -1 telling
- * that no more data can be accepted.
- *
- * @param port_num The UART number to begin RX on
- */
- void hci_uart_start_rx(int port_num);
- #ifdef __cplusplus
- }
- #endif
|