| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /*
- * Change Logs:
- * Date Author Notes
- * 2024-05-24 Slyant the first version
- */
- #ifndef _UART_FRAMEWORK_H_
- #define _UART_FRAMEWORK_H_
- struct uart_framework_cfg
- {
- char *uart_name;
- rt_size_t max_frame_size;
- rt_uint32_t frame_interval_ms;
- rt_uint32_t send_interval_ms;
- rt_err_t (*rx_ind)(rt_device_t dev, rt_size_t size);
- void (*rs485_txd)(void);
- void (*rs485_rxd)(void);
- };
- struct uart_framework
- {
- rt_device_t uart_device;
- rt_uint8_t *rx_buf;
- rt_uint8_t rx_ch;
- rt_size_t rx_size;
- rt_sem_t rx_sem;
- rt_mutex_t dev_lock;
- rt_tick_t last_tick;
- rt_tick_t cur_tick;
- rt_tick_t send_tick;
- rt_bool_t is_waiting_response;
- struct uart_framework_cfg cfg;
- };
- typedef struct uart_framework *uart_framework_t;
- uart_framework_t uart_framework_create(struct uart_framework_cfg *cfg);
- rt_size_t uart_framework_send(uart_framework_t uf, rt_uint8_t *data, rt_size_t size);
- rt_size_t uart_framework_send_take(uart_framework_t uf, rt_uint8_t *data, rt_size_t size);
- rt_size_t uart_framework_send_take_release(uart_framework_t uf, rt_uint8_t *data, rt_size_t size);
- rt_err_t uart_framework_receive(uart_framework_t uf, rt_uint32_t timeout_ms, rt_uint8_t *out, rt_size_t *out_size,
- rt_size_t out_max_size);
- rt_err_t uart_framework_receive_release(uart_framework_t uf, rt_uint32_t timeout_ms, rt_uint8_t *out,
- rt_size_t *out_size, rt_size_t out_max_size);
- rt_err_t uart_framework_receive_take_release(uart_framework_t uf, rt_uint32_t timeout_ms, rt_uint8_t *out,
- rt_size_t *out_size, rt_size_t out_max_size);
- rt_err_t uart_framework_receive_without_waiting_response(uart_framework_t uf,
- void (*frame_handler_callback)(rt_uint8_t *data, rt_size_t size), rt_uint8_t *out, rt_size_t *out_size,
- rt_size_t out_max_size);
- #endif /* _UART_FRAMEWORK_H_ */
|