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