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/wsf/sources/platform/pal_uart.c | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 211 insertions(+), 0 deletions(-) diff --git a/keil/include/components/wsf/sources/platform/pal_uart.c b/keil/include/components/wsf/sources/platform/pal_uart.c new file mode 100644 index 0000000..ca63f08 --- /dev/null +++ b/keil/include/components/wsf/sources/platform/pal_uart.c @@ -0,0 +1,211 @@ +/*************************************************************************************************/ +/*! + * \file + * + * \brief UART driver definition. + * + * Copyright (c) 2019-2020 Packetcraft, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*************************************************************************************************/ + +#include "pal_uart.h" + +/************************************************************************************************** + Type definitions +**************************************************************************************************/ + +/*! \brief Control block. */ +typedef struct +{ + PalUartState_t state; /*!< UART state. */ + PalUartConfig_t config; /*!< UART configuration. */ +} palUartCtrlBlk_t; + +/************************************************************************************************** + Local Variables +**************************************************************************************************/ + +#define PAL_UART_INVALID_INSTANCE_NUM 0xFF + +#ifdef DEBUG + +/*! \brief Parameter check. */ +#define PAL_UART_PARAM_CHECK(p, expr) \ + { \ + if (!(expr)) \ + { \ + p->state = PAL_UART_STATE_ERROR; \ + return; \ + } \ + } + +#else + +/*! \brief Parameter check (disabled). */ +#define PAL_UART_PARAM_CHECK(p, expr) + +#endif + +/*! \brief Control block. */ +static palUartCtrlBlk_t palUartCb[2]; + +/************************************************************************************************** + Local Functions +**************************************************************************************************/ + +/*************************************************************************************************/ +/*! + * \brief Get UART instance number from UART ID. + * + * \param id UART ID. + * + * \return UART instance number. + */ +/*************************************************************************************************/ +static palUartCtrlBlk_t *palUartGetContext(PalUartId_t id) +{ + switch ((uint8_t)id) + { + case PAL_UART_ID_UCI: + case PAL_UART_ID_TERMINAL: + return &palUartCb[0]; + + case PAL_UART_ID_USER: + return &palUartCb[1]; + + default: + break; + } + + return NULL; +} + +/*************************************************************************************************/ +/*! + * \brief UART event handler. + * + * \param pEvent UART event. + * \param pContext Instance context. + */ +/*************************************************************************************************/ + +/*************************************************************************************************/ +/*! + * \brief Initialize UART. + * + * \param id UART ID. + * \param pCfg Peripheral configuration. + */ +/*************************************************************************************************/ +void PalUartInit(PalUartId_t id, const PalUartConfig_t *pCfg) +{ + palUartCtrlBlk_t *pCtx = palUartGetContext(id); + PAL_UART_PARAM_CHECK(pCtx, pCtx != NULL); + PAL_UART_PARAM_CHECK(pCtx, pCfg != NULL); + + pCtx->config = *pCfg; + + /* Resolve instance. */ + switch (pCtx - palUartCb) + { + case 0: + break; + default: + break; + } + + pCtx->state = PAL_UART_STATE_READY; +} + +/*************************************************************************************************/ +/*! + * \brief De-Initialize UART. + * + * \param id UART ID. + */ +/*************************************************************************************************/ +void PalUartDeInit(PalUartId_t id) +{ + palUartCtrlBlk_t *pCtx = palUartGetContext(id); + PAL_UART_PARAM_CHECK(pCtx, pCtx != NULL); + PAL_UART_PARAM_CHECK(pCtx, pCtx->state == PAL_UART_STATE_READY); + + pCtx->state = PAL_UART_STATE_UNINIT; +} + +/*************************************************************************************************/ +/*! + * \brief Get the current state. + * + * \param id UART id. + * + * \return Current state. + */ +/*************************************************************************************************/ +PalUartState_t PalUartGetState(PalUartId_t id) +{ + palUartCtrlBlk_t *pCtx = palUartGetContext(id); + + if (pCtx == NULL) + { + return PAL_UART_STATE_ERROR; + } + + return pCtx->state; +} + +/*************************************************************************************************/ +/*! + * \brief Read data from Rx FIFO. + * + * \param id UART ID. + * \param pData Read buffer. + * \param len Number of bytes to read. + */ +/*************************************************************************************************/ +void PalUartReadData(PalUartId_t id, uint8_t *pData, uint16_t len) +{ + palUartCtrlBlk_t *pCtx = palUartGetContext(id); + PAL_UART_PARAM_CHECK(pCtx, pCtx != NULL); + PAL_UART_PARAM_CHECK(pCtx, pCtx->state != PAL_UART_STATE_UNINIT); + PAL_UART_PARAM_CHECK(pCtx, pData != NULL); + PAL_UART_PARAM_CHECK(pCtx, len > 0); + + pCtx->state = PAL_UART_STATE_BUSY; + + PAL_UART_PARAM_CHECK(pCtx, err == NRFX_SUCCESS); +} + +/*************************************************************************************************/ +/*! + * \brief Write data to Tx FIFO. + * + * \param id UART ID. + * \param pData Write buffer. + * \param len Number of bytes to write. + */ +/*************************************************************************************************/ +void PalUartWriteData(PalUartId_t id, const uint8_t *pData, uint16_t len) +{ + palUartCtrlBlk_t *pCtx = palUartGetContext(id); + PAL_UART_PARAM_CHECK(pCtx, pCtx != NULL); + PAL_UART_PARAM_CHECK(pCtx, pCtx->state != PAL_UART_STATE_UNINIT); + PAL_UART_PARAM_CHECK(pCtx, pData != NULL); + PAL_UART_PARAM_CHECK(pCtx, len > 0); + + pCtx->state = PAL_UART_STATE_BUSY; + + PAL_UART_PARAM_CHECK(pCtx, err == NRFX_SUCCESS); +} -- Gitblit v1.9.3