From adfc7e798b9cbdd022bf8df971843436912a0fe5 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期日, 20 七月 2025 16:58:30 +0800 Subject: [PATCH] 成功移植g_com_map表逻辑,初步测试能读能写,并且TDOA效果和官方一致 --- keil/include/components/app/inc/uwb_data_transfer.h | 84 ++++++++++++++++++++++++++++++++---------- 1 files changed, 64 insertions(+), 20 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..2e21e3d 100644 --- a/keil/include/components/app/inc/uwb_data_transfer.h +++ b/keil/include/components/app/inc/uwb_data_transfer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and + * Copyright (c) 2019-2025 Beijing Hanwei Innovation Technology Ltd. Co. and * its subsidiaries and affiliates (collectly called MKSEMI). * * All rights reserved. @@ -47,6 +47,51 @@ #define DM_PRINT_PAYLOAD_EN 0 +#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 + +#ifndef UWB_DATA_TRANSFER_MODE +#define UWB_DATA_TRANSFER_MODE SERIAL_DATA_TRANSFER_MODE_0 +#endif + +#define SERIAL_MESSAGE_MAX_LEN (1024) + +#define UWB_SERIAL_DATA_POOL_SIZE 3 + +#if ((UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_0) || (UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_1)) + +typedef struct MemoryBlock +{ + 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; + +#endif //#if ((UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_0) || (UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_1)) + +#endif + /* Main control block of the data transfer task */ struct DATA_TRANSFER_CB_T { @@ -86,30 +131,29 @@ */ 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 -#define SERIAL_MESSAGE_MAX_LEN (1024) +#if ((UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_0) || (UWB_DATA_TRANSFER_MODE == SERIAL_DATA_TRANSFER_MODE_1)) -#define UWB_SERIAL_DATA_POOL_SIZE 3 - -struct UWB_TX_MSG_t -{ - bool flag; - uint16_t length; - uint8_t msg[MDSDU_MTU_MAX]; -}; - -struct RING_BUFFER_T -{ - struct UWB_TX_MSG_t buffer[UWB_SERIAL_DATA_POOL_SIZE]; - int head; - int tail; - int check; -}; - +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