gateway_mcu/CH32V303-FreeRTOS/App/application/Host/Src/hostSensorDataParse.c

362 lines
9.8 KiB
C
Raw Normal View History

#include "hostSensorDataParse.h"
#include "hostQueueUart.h"
#include "mcu_common.h"
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J0<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*/
void J0_SensorDataAnalysis(void)
{
static uint32_t tick;
if (J0_485RxBufferIndex == 0) {
tick = xTaskGetTickCount();
}
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint32_t nowTick = xTaskGetTickCount();
while ((getTickDiff(nowTick) < 3)
&& (uart_dev_char_present(g_J0_handle) == 1)
&& (maxdataLen > J0_485RxBufferIndex)) {
J0_485RxBuffer[J0_485RxBufferIndex++] = uart_dev_in_char(g_J0_handle);
}
/* <20><>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
if ((J0_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
uint32_t tempLen = 6 + J0_485RxBufferIndex + hostQueueUartSendInfoSize;
if (xPortGetFreeHeapSize() < tempLen + 1024) {
J0_485RxBufferIndex = 0;
return;
}
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
hostQueueUartSendInfo *sendBuff = (hostQueueUartSendInfo *)Buff;
sendBuff->length = 6 + J0_485RxBufferIndex;
sendBuff->data = Buff + sizeof(hostQueueUartSendInfo);
uint8_t *send = sendBuff->data;
/* <20><>ʼ<EFBFBD><CABC>־ */
*send = 'S';
*(send + 1) = 'L';
/* <20>˿ں<CBBF> */
send += 2;
*send = J0;
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
send += 1;
*send = (uint8_t)(J0_485RxBufferIndex >> 8);
*(send + 1) = (uint8_t)(J0_485RxBufferIndex);
/* <20><><EFBFBD>ݰ<EFBFBD> */
send += 2;
memcpy((char *)send, (char *)J0_485RxBuffer, J0_485RxBufferIndex);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
send += J0_485RxBufferIndex;
*send = 0x17;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D5BC>򽫷<EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (uxQueueSpacesAvailable(su806_uart_Queue)) {
xQueueSend(su806_uart_Queue, &Buff, 10);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>޿ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
else {
vPortFree(Buff);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>buff<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
J0_485RxBufferIndex = 0;
}
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J2<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*/
void J2_SensorDataAnalysis(void)
{
static uint32_t tick;
if (J2_485RxBufferIndex == 0) {
tick = xTaskGetTickCount();
}
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint32_t nowTick = xTaskGetTickCount();
while ((getTickDiff(nowTick) < 3)
&& (uart_dev_char_present(g_J2_handle) == 1)
&& (maxdataLen > J2_485RxBufferIndex)) {
J2_485RxBuffer[J2_485RxBufferIndex++] = uart_dev_in_char(g_J2_handle);
}
/* <20><>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
if ((J2_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
uint32_t tempLen = 6 + J2_485RxBufferIndex + hostQueueUartSendInfoSize;
if (xPortGetFreeHeapSize() < tempLen + 1024) {
J2_485RxBufferIndex = 0;
return;
}
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
hostQueueUartSendInfo *sendBuff = (hostQueueUartSendInfo *)Buff;
sendBuff->length = 6 + J2_485RxBufferIndex;
sendBuff->data = Buff + sizeof(hostQueueUartSendInfo);
uint8_t *send = sendBuff->data;
/* <20><>ʼ<EFBFBD><CABC>־ */
*send = 'S';
*(send + 1) = 'L';
/* <20>˿ں<CBBF> */
send += 2;
*send = J2;
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
send += 1;
*send = (uint8_t)(J2_485RxBufferIndex >> 8);
*(send + 1) = (uint8_t)(J2_485RxBufferIndex);
/* <20><><EFBFBD>ݰ<EFBFBD> */
send += 2;
memcpy((char *)send, (char *)J2_485RxBuffer, J2_485RxBufferIndex);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
send += J2_485RxBufferIndex;
*send = 0x17;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D5BC>򽫷<EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (uxQueueSpacesAvailable(su806_uart_Queue)) {
xQueueSend(su806_uart_Queue, &Buff, 10);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>޿ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
else {
vPortFree(Buff);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>buff<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
J2_485RxBufferIndex = 0;
}
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J4<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*/
void J4_SensorDataAnalysis(void)
{
static uint32_t tick;
if (J4_485RxBufferIndex == 0) {
tick = xTaskGetTickCount();
}
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint32_t nowTick = xTaskGetTickCount();
while ((getTickDiff(nowTick) < 3)
&& (uart_dev_char_present(g_J4_handle) == 1)
&& (maxdataLen > J4_485RxBufferIndex)) {
J4_485RxBuffer[J4_485RxBufferIndex++] = uart_dev_in_char(g_J4_handle);
}
/* <20><>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
if ((J4_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
uint32_t tempLen = 6 + J4_485RxBufferIndex + hostQueueUartSendInfoSize;
if (xPortGetFreeHeapSize() < tempLen + 1024) {
J4_485RxBufferIndex = 0;
return;
}
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
hostQueueUartSendInfo *sendBuff = (hostQueueUartSendInfo *)Buff;
sendBuff->length = 6 + J4_485RxBufferIndex;
sendBuff->data = Buff + sizeof(hostQueueUartSendInfo);
uint8_t *send = sendBuff->data;
/* <20><>ʼ<EFBFBD><CABC>־ */
*send = 'S';
*(send + 1) = 'L';
/* <20>˿ں<CBBF> */
send += 2;
*send = J4;
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
send += 1;
*send = (uint8_t)(J4_485RxBufferIndex >> 8);
*(send + 1) = (uint8_t)(J4_485RxBufferIndex);
/* <20><><EFBFBD>ݰ<EFBFBD> */
send += 2;
memcpy((char *)send, (char *)J4_485RxBuffer, J4_485RxBufferIndex);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
send += J4_485RxBufferIndex;
*send = 0x17;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D5BC>򽫷<EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (uxQueueSpacesAvailable(su806_uart_Queue)) {
xQueueSend(su806_uart_Queue, &Buff, 10);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>޿ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
else {
vPortFree(Buff);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>buff<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
J4_485RxBufferIndex = 0;
}
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J6<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*/
void J6_SensorDataAnalysis(void)
{
static uint32_t tick;
if (J6_485RxBufferIndex == 0) {
tick = xTaskGetTickCount();
}
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint32_t nowTick = xTaskGetTickCount();
while ((getTickDiff(nowTick) < 3)
&& (uart_dev_char_present(g_J6_handle) == 1)
&& (maxdataLen > J6_485RxBufferIndex)) {
J6_485RxBuffer[J6_485RxBufferIndex++] = uart_dev_in_char(g_J6_handle);
}
/* <20><>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
if ((J6_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
uint32_t tempLen = 6 + J6_485RxBufferIndex + hostQueueUartSendInfoSize;
if (xPortGetFreeHeapSize() < tempLen + 1024) {
J6_485RxBufferIndex = 0;
return;
}
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
hostQueueUartSendInfo *sendBuff = (hostQueueUartSendInfo *)Buff;
sendBuff->length = 6 + J6_485RxBufferIndex;
sendBuff->data = Buff + sizeof(hostQueueUartSendInfo);
uint8_t *send = sendBuff->data;
/* <20><>ʼ<EFBFBD><CABC>־ */
*send = 'S';
*(send + 1) = 'L';
/* <20>˿ں<CBBF> */
send += 2;
*send = J6;
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
send += 1;
*send = (uint8_t)(J6_485RxBufferIndex >> 8);
*(send + 1) = (uint8_t)(J6_485RxBufferIndex);
/* <20><><EFBFBD>ݰ<EFBFBD> */
send += 2;
memcpy((char *)send, (char *)J6_485RxBuffer, J6_485RxBufferIndex);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
send += J6_485RxBufferIndex;
*send = 0x17;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D5BC>򽫷<EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (uxQueueSpacesAvailable(su806_uart_Queue)) {
xQueueSend(su806_uart_Queue, &Buff, 10);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>޿ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
else {
vPortFree(Buff);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>buff<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
J6_485RxBufferIndex = 0;
}
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Lora<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*/
void Lora_SensorDataAnalysis(void)
{
static uint32_t tick;
if (loraRxBufferIndex == 0) {
tick = xTaskGetTickCount();
}
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint32_t nowTick = xTaskGetTickCount();
while ((getTickDiff(nowTick) < 3)
&& (uart_dev_char_present(g_Lora_handle) == 1)
&& (maxdataLen > loraRxBufferIndex)) {
loraRxBuffer[loraRxBufferIndex++] = uart_dev_in_char(g_Lora_handle);
}
/* <20><>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
if ((loraRxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
uint32_t tempLen = 6 + loraRxBufferIndex + hostQueueUartSendInfoSize;
if (xPortGetFreeHeapSize() < tempLen + 1024) {
loraRxBufferIndex = 0;
return;
}
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
hostQueueUartSendInfo *sendBuff = (hostQueueUartSendInfo *)Buff;
sendBuff->length = 6 + loraRxBufferIndex;
sendBuff->data = Buff + sizeof(hostQueueUartSendInfo);
uint8_t *send = sendBuff->data;
/* <20><>ʼ<EFBFBD><CABC>־ */
*send = 'S';
*(send + 1) = 'L';
/* <20>˿ں<CBBF> */
send += 2;
*send = Lora;
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
send += 1;
*send = (uint8_t)(loraRxBufferIndex >> 8);
*(send + 1) = (uint8_t)(loraRxBufferIndex);
/* <20><><EFBFBD>ݰ<EFBFBD> */
send += 2;
memcpy((char *)send, (char *)loraRxBuffer, loraRxBufferIndex);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
send += loraRxBufferIndex;
*send = 0x17;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D5BC>򽫷<EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (uxQueueSpacesAvailable(su806_uart_Queue)) {
xQueueSend(su806_uart_Queue, &Buff, 10);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>޿ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
else {
vPortFree(Buff);
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>buff<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
loraRxBufferIndex = 0;
}
}