*bugfix: correct FLJ and LJ data length

This commit is contained in:
Gatsby Van
2024-01-31 00:30:36 +08:00
parent 64c116dbe0
commit 49e962612e
3 changed files with 35 additions and 26 deletions
+8 -8
View File
@@ -209,7 +209,7 @@ void SysMonitor_UpdateSendPayloadFLJRaw(uint8_t *buff)
uint8_t buffIndx; uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->sendPLCtrl); buffIndx = GetWritable(sysMonitorInst->sendPLCtrl);
sysMonitorInst->sendPLCtrl.wBusy = buffIndx; sysMonitorInst->sendPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->sendPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ); memcpy(sysMonitorInst->sendPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ_TX);
sysMonitorInst->sendPL[buffIndx].dataId_flj++; sysMonitorInst->sendPL[buffIndx].dataId_flj++;
sysMonitorInst->sendPLCtrl.latest = buffIndx; sysMonitorInst->sendPLCtrl.latest = buffIndx;
sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE; sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE;
@@ -230,7 +230,7 @@ void SysMonitor_GetSendPayloadFLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->sendPLCtrl.rBusy = buffIndx; sysMonitorInst->sendPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->sendPL[buffIndx].dataId_flj != DATA_ID_NONE) if (sysMonitorInst->sendPL[buffIndx].dataId_flj != DATA_ID_NONE)
{ {
memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ); memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ_TX);
} }
*id = sysMonitorInst->sendPL[buffIndx].dataId_flj; *id = sysMonitorInst->sendPL[buffIndx].dataId_flj;
sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old; sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old;
@@ -245,7 +245,7 @@ void SysMonitor_UpdateSendPayloadLJRaw(uint8_t *buff)
uint8_t buffIndx; uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->sendPLCtrl); buffIndx = GetWritable(sysMonitorInst->sendPLCtrl);
sysMonitorInst->sendPLCtrl.wBusy = buffIndx; sysMonitorInst->sendPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->sendPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ); memcpy(sysMonitorInst->sendPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ_TX);
sysMonitorInst->sendPL[buffIndx].dataId_lj++; sysMonitorInst->sendPL[buffIndx].dataId_lj++;
sysMonitorInst->sendPLCtrl.latest = buffIndx; sysMonitorInst->sendPLCtrl.latest = buffIndx;
sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE; sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE;
@@ -266,7 +266,7 @@ void SysMonitor_GetSendPayloadLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->sendPLCtrl.rBusy = buffIndx; sysMonitorInst->sendPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->sendPL[buffIndx].dataId_lj != DATA_ID_NONE) if (sysMonitorInst->sendPL[buffIndx].dataId_lj != DATA_ID_NONE)
{ {
memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ); memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ_TX);
} }
*id = sysMonitorInst->sendPL[buffIndx].dataId_lj; *id = sysMonitorInst->sendPL[buffIndx].dataId_lj;
sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old; sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old;
@@ -282,7 +282,7 @@ void SysMonitor_UpdateRecvPayloadFLJRaw(uint8_t *buff)
uint8_t buffIndx; uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->recvPLCtrl); buffIndx = GetWritable(sysMonitorInst->recvPLCtrl);
sysMonitorInst->recvPLCtrl.wBusy = buffIndx; sysMonitorInst->recvPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->recvPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ); memcpy(sysMonitorInst->recvPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ_RX);
sysMonitorInst->recvPL[buffIndx].dataId_flj++; sysMonitorInst->recvPL[buffIndx].dataId_flj++;
sysMonitorInst->recvPLCtrl.latest = buffIndx; sysMonitorInst->recvPLCtrl.latest = buffIndx;
sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE; sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE;
@@ -303,7 +303,7 @@ void SysMonitor_GetRecvPayloadFLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->recvPLCtrl.rBusy = buffIndx; sysMonitorInst->recvPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->recvPL[buffIndx].dataId_flj != DATA_ID_NONE) if (sysMonitorInst->recvPL[buffIndx].dataId_flj != DATA_ID_NONE)
{ {
memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ); memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ_RX);
} }
*id = sysMonitorInst->recvPL[buffIndx].dataId_flj; *id = sysMonitorInst->recvPL[buffIndx].dataId_flj;
sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old; sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old;
@@ -318,7 +318,7 @@ void SysMonitor_UpdateRecvPayloadLJRaw(uint8_t *buff)
uint8_t buffIndx; uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->recvPLCtrl); buffIndx = GetWritable(sysMonitorInst->recvPLCtrl);
sysMonitorInst->recvPLCtrl.wBusy = buffIndx; sysMonitorInst->recvPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->recvPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ); memcpy(sysMonitorInst->recvPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ_RX);
sysMonitorInst->recvPL[buffIndx].dataId_lj++; sysMonitorInst->recvPL[buffIndx].dataId_lj++;
sysMonitorInst->recvPLCtrl.latest = buffIndx; sysMonitorInst->recvPLCtrl.latest = buffIndx;
sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE; sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE;
@@ -339,7 +339,7 @@ void SysMonitor_GetRecvPayloadLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->recvPLCtrl.rBusy = buffIndx; sysMonitorInst->recvPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->recvPL[buffIndx].dataId_lj != DATA_ID_NONE) if (sysMonitorInst->recvPL[buffIndx].dataId_lj != DATA_ID_NONE)
{ {
memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ); memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ_RX);
} }
*id = sysMonitorInst->recvPL[buffIndx].dataId_lj; *id = sysMonitorInst->recvPL[buffIndx].dataId_lj;
sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old; sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old;
+5 -2
View File
@@ -4,8 +4,11 @@
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#define PAYLOAD_FLJ 78 #define PAYLOAD_LEN 256
#define PAYLOAD_LJ 168 #define PAYLOAD_FLJ_RX 168
#define PAYLOAD_FLJ_TX 66
#define PAYLOAD_LJ_RX 66
#define PAYLOAD_LJ_TX 168
#define DATA_ID_NONE UINT32_MAX #define DATA_ID_NONE UINT32_MAX
+22 -16
View File
@@ -74,20 +74,20 @@
// Data Send Test Command // Data Send Test Command
#define CMD_DATA_TEST_A 0xE2 #define CMD_DATA_TEST_A 0xE2
// -- Request // -- Request
#define DATA_TEST_REQ_A_LEN 80 #define DATA_TEST_REQ_A_LEN 68
// -- -- 78 byte payload // -- -- 68 byte payload
// -- Response // -- Response
#define DATA_TEST_RSP_A_LEN 80 #define DATA_TEST_RSP_A_LEN 68
// -- -- 78 byte payload // -- -- 68 byte payload
// Data Send Test Command // Data Send Test Command
#define CMD_DATA_TEST_B 0xF2 #define CMD_DATA_TEST_B 0xF2
// -- Request // -- Request
#define DATA_TEST_REQ_B_LEN 152 #define DATA_TEST_REQ_B_LEN 170
// -- -- 150 byte payload // -- -- 170 byte payload
// -- Response // -- Response
#define DATA_TEST_RSP_B_LEN 152 #define DATA_TEST_RSP_B_LEN 170
// -- -- 150 byte payload // -- -- 170 byte payload
// Config load // Config load
#define CMD_CONFIG 0xE3 #define CMD_CONFIG 0xE3
@@ -132,8 +132,8 @@
#define WD_FLJ_POLL 0x02 #define WD_FLJ_POLL 0x02
#define FLJ_POLL_CODE 0x77 #define FLJ_POLL_CODE 0x77
// -- Response // -- Response
#define FLJ_POLL_RESP_LEN 78 #define FLJ_POLL_RESP_LEN 170
// -- -- received 78 byte payload // -- -- received 170 byte payload
// LJ Poll // LJ Poll
#define CMD_LJ_POLL 0xF5 #define CMD_LJ_POLL 0xF5
@@ -141,8 +141,8 @@
#define WD_LJ_POLL 0x02 #define WD_LJ_POLL 0x02
#define LJ_POLL_CODE 0x77 #define LJ_POLL_CODE 0x77
// -- Response // -- Response
#define LJ_POLL_RESP_LEN 168 #define LJ_POLL_RESP_LEN 68
// -- -- received 156 byte payload // -- -- received 68 byte payload
// Remote Test FLJ // Remote Test FLJ
#define CMD_FLJ_RM_TEST 0xE6 #define CMD_FLJ_RM_TEST 0xE6
@@ -437,13 +437,16 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
break; break;
} }
sysbusRsp->len = FLJ_POLL_RESP_LEN; sysbusRsp->len = FLJ_POLL_RESP_LEN;
sysbusRsp->data[WD_CMD] = WD_FLJ_POLL; sysbusRsp->data[WD_CMD] = CMD_FLJ_POLL;
sysbusRsp->data[WD_PRD] = MY_PRD_ID; sysbusRsp->data[WD_PRD] = MY_PRD_ID;
uint32_t dataId; uint32_t dataId;
SysMonitor_GetRecvPayloadFLJRaw(sysbusRsp->data + FLJ_DATA_OFFSET, &dataId); // omit control info SysMonitor_GetRecvPayloadFLJRaw(sysbusRsp->data + FLJ_DATA_OFFSET, &dataId); // omit control info
if (dataId == DATA_ID_NONE) if (dataId == DATA_ID_NONE)
{ {
memset(sysbusRsp->data + FLJ_DATA_OFFSET, 0xAA, PAYLOAD_FLJ); free(sysbusRsp);
DBG_WARNING("SystemBus::no RX data!\n");
Status = SUCCESS;
break;
} }
if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false) if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false)
{ {
@@ -470,13 +473,16 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
break; break;
} }
sysbusRsp->len = LJ_POLL_RESP_LEN; sysbusRsp->len = LJ_POLL_RESP_LEN;
sysbusRsp->data[WD_CMD] = WD_LJ_POLL; sysbusRsp->data[WD_CMD] = CMD_LJ_POLL;
sysbusRsp->data[WD_PRD] = MY_PRD_ID; sysbusRsp->data[WD_PRD] = MY_PRD_ID;
uint32_t dataId; uint32_t dataId;
SysMonitor_GetRecvPayloadLJRaw(sysbusRsp->data + LJ_DATA_OFFSET, &dataId); // omit control info SysMonitor_GetRecvPayloadLJRaw(sysbusRsp->data + LJ_DATA_OFFSET, &dataId); // omit control info
if (dataId == DATA_ID_NONE) if (dataId == DATA_ID_NONE)
{ {
memset(sysbusRsp->data + LJ_DATA_OFFSET, 0xAA, PAYLOAD_LJ); free(sysbusRsp);
DBG_WARNING("SystemBus::no RX data!\n");
Status = SUCCESS;
break;
} }
if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false) if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false)
{ {