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