zhangbo
2025-04-21 57b984b8395bb30b2d170369c75f19722502b104
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);