From cc432b761c884a0bd8e9d83db0a4e26109fc08b1 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期五, 08 十一月 2024 15:35:38 +0800
Subject: [PATCH] 安邦手环GPS删除部分无用数据和修改4G波特率9600出厂测试固件

---
 keil/include/components/se/src/uart_in_spi.c |  165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 165 insertions(+), 0 deletions(-)

diff --git a/keil/include/components/se/src/uart_in_spi.c b/keil/include/components/se/src/uart_in_spi.c
new file mode 100644
index 0000000..85f75e0
--- /dev/null
+++ b/keil/include/components/se/src/uart_in_spi.c
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
+ * its subsidiaries and affiliates (collectly called MKSEMI).
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into an MKSEMI
+ *    integrated circuit in a product or a software update for such product,
+ *    must reproduce the above copyright notice, this list of conditions and
+ *    the following disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * 3. Neither the name of MKSEMI nor the names of its contributors may be used
+ *    to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ *    MKSEMI integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be
+ *    reverse engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdint.h>
+#include "mk_common.h"
+#include "mk_uart.h"
+#include "uart_in_spi.h"
+
+// come from uart_example
+#define TEST_UART_POLL_MODE 0
+#define TEST_UART_INTERUPT_MODE 1
+#define TEST_UART_DMA_MODE 2
+#define TEST_UART_MODE TEST_UART_POLL_MODE
+
+#define TEST_PORT_UART UART_ID0
+
+/*******************************************************************************
+ * @Function         uart_in_spi_init
+ * @Parameters       None.
+ * @Returns          void.
+ ******************************************************************************/
+void uart_in_spi_init(void)
+{
+    struct UART_CFG_T test_uart_cfg =
+    {
+        .parity = UART_PARITY_NONE,
+        .stop = UART_STOP_BITS_1,
+        .data = UART_DATA_BITS_8,
+        .flow = UART_FLOW_CONTROL_NONE,
+        .rx_level = UART_RXFIFO_CHAR_1,
+        .tx_level = UART_TXFIFO_EMPTY,
+        .baud = BAUD_921600,
+#if (TEST_UART_MODE == TEST_UART_POLL_MODE)
+        .dma_en = false,
+        .int_rx = false,
+        .int_tx = false,
+#elif (TEST_UART_MODE == TEST_UART_INTERUPT_MODE)
+        .dma_en = false,
+        .int_rx = true,
+        .int_tx = true,
+#elif (TEST_UART_MODE == TEST_UART_DMA_MODE)
+        .dma_en = true,
+        .int_rx = false,
+        .int_tx = false,
+#endif
+    };
+
+    uart_open(TEST_PORT_UART, &test_uart_cfg);
+    return;
+}
+
+#define TAG_UART_CMD_START_HIGH ((uint8_t)0xf1)
+#define TAG_UART_CMS_START_LOW ((uint8_t)0xbc)
+
+/*******************************************************************************
+ *
+ * @Function         uart_receive_in_spi
+ * @Parameters       rx_buf - the buffer for receiving the data from UART.
+ *                   buf_size - the buffer size
+ *                   callback - call back function
+ * @Returns          the data length.
+ ******************************************************************************/
+int uart_receive_in_spi(uint8_t *rx_buf, uint16_t buf_size, drv_callback_t callback)
+{
+    int ret;
+    uint16_t len;
+    uint8_t tmp_buf[8];
+
+    do
+    {
+        ret = uart_receive(TEST_PORT_UART, tmp_buf, 1, callback);
+        if ((ret != DRV_OK) || (tmp_buf[0] != TAG_UART_CMD_START_HIGH))
+        {
+            continue;
+        }
+        ret = uart_receive(TEST_PORT_UART, tmp_buf + 1, 1, callback);
+        if ((ret != DRV_OK) || (tmp_buf[1] != TAG_UART_CMS_START_LOW))
+        {
+            continue;
+        }
+        ret = uart_receive(TEST_PORT_UART, tmp_buf + 2, 2, callback);
+        if (ret != DRV_OK)
+        {
+            // sofCnt++;
+            continue;
+        }
+        len = (uint16_t)(((uint16_t)tmp_buf[2] << 8) + tmp_buf[3]);
+        if ((len < 5) || (len > (255 + 5)))
+        {
+            continue;
+        }
+        else
+        {
+            break;
+        }
+    } while (1); // (sofCnt < sofMaxCnt);
+
+    ret = uart_receive(TEST_PORT_UART, rx_buf, len, callback);
+    if (ret != DRV_OK)
+    {
+        return ret;
+    }
+    else
+    {
+        return len;
+    }
+}
+
+/*******************************************************************************
+ *
+ * @Function         uart_send_in_spi
+ * @Parameters       tx_buf - the buffer for sending the data from UART.
+ *                   len - the data size
+ *                   callback - call back function
+ * @Returns          tx status.
+ ******************************************************************************/
+int uart_send_in_spi(uint8_t *tx_buf, uint16_t len, drv_callback_t callback)
+{
+    return uart_send(TEST_PORT_UART, tx_buf, len, callback);
+}

--
Gitblit v1.9.3