From 39842cc2707c7ceb890bd963d1d226cc7542bc91 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期五, 16 五月 2025 17:47:05 +0800 Subject: [PATCH] 对比PCA9555的修改 --- keil/include/components/app/inc/uwb_data_transfer.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 47 insertions(+), 13 deletions(-) diff --git a/keil/include/components/app/inc/uwb_data_transfer.h b/keil/include/components/app/inc/uwb_data_transfer.h index 948c532..a6e6721 100644 --- a/keil/include/components/app/inc/uwb_data_transfer.h +++ b/keil/include/components/app/inc/uwb_data_transfer.h @@ -86,30 +86,64 @@ */ void data_transfer_stop(void); +/** + * @brief Send data + * @param [in] data Data to be sent + * @param [in] length Data length + * @return status + */ +uint16_t data_transfer_send(uint8_t *data, uint16_t length); + #if UWB_SERIAL_DATA_TRANSFER_EN + +/* The string will be be sent over UWB when the + * last character received was a 'new line' '\n' (hex 0x0A) + * or if thestring has reached the maximum data length */ +#define SERIAL_DATA_TRANSFER_MODE_0 0 + +/* UART input data format: Length(2B) + Data */ +#define SERIAL_DATA_TRANSFER_MODE_1 1 + +#define UCI_DATA_TRANSFER_MODE 2 + +#define DATA_TRANSFER_TEST_MODE 3 + +#define UWB_DATA_TRANSFER_MODE UCI_DATA_TRANSFER_MODE #define SERIAL_MESSAGE_MAX_LEN (1024) #define UWB_SERIAL_DATA_POOL_SIZE 3 -struct UWB_TX_MSG_t -{ - bool flag; - uint16_t length; - uint8_t msg[MDSDU_MTU_MAX]; -}; +#if ((UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_0) || (UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_1)) -struct RING_BUFFER_T +typedef struct MemoryBlock { - struct UWB_TX_MSG_t buffer[UWB_SERIAL_DATA_POOL_SIZE]; - int head; - int tail; - int check; -}; + uint8_t *start; + uint16_t size; + int is_free; + struct MemoryBlock *prev; + struct MemoryBlock *next; + struct MemoryBlock *tail; +} MemoryBlock; +typedef struct +{ + uint8_t *memoryPool; + MemoryBlock *allocated; + MemoryBlock *free; +} MemoryPool; + +void uwb_cb_init(uint8_t *tx_cb, uint8_t *rx_cb); +struct MemoryBlock *uwb_transmit_cb_read(void); +struct MemoryBlock *uwb_receive_cb_read(void); +void uwb_transmit_cb_write(uint16_t length); +void uwb_receive_cb_write(const uint8_t *value, uint16_t length); void uwb_serial_tx_msg_check(void); void uwb_serial_rx_msg_check(void); -void uwb_serial_rx_msg_update(struct DM_MDSDU_T *rx); +void uwb_serial_data_transfer_tx_done(void); + +#endif //#if ((UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_0) || (UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_1)) + #else void uwb_data_transfer_send_test(void); -- Gitblit v1.9.3