*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;
buffIndx = GetWritable(sysMonitorInst->sendPLCtrl);
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->sendPLCtrl.latest = buffIndx;
sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE;
@@ -230,7 +230,7 @@ void SysMonitor_GetSendPayloadFLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->sendPLCtrl.rBusy = buffIndx;
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;
sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old;
@@ -245,7 +245,7 @@ void SysMonitor_UpdateSendPayloadLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->sendPLCtrl);
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->sendPLCtrl.latest = buffIndx;
sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE;
@@ -266,7 +266,7 @@ void SysMonitor_GetSendPayloadLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->sendPLCtrl.rBusy = buffIndx;
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;
sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old;
@@ -282,7 +282,7 @@ void SysMonitor_UpdateRecvPayloadFLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->recvPLCtrl);
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->recvPLCtrl.latest = buffIndx;
sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE;
@@ -303,7 +303,7 @@ void SysMonitor_GetRecvPayloadFLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->recvPLCtrl.rBusy = buffIndx;
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;
sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old;
@@ -318,7 +318,7 @@ void SysMonitor_UpdateRecvPayloadLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->recvPLCtrl);
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->recvPLCtrl.latest = buffIndx;
sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE;
@@ -339,7 +339,7 @@ void SysMonitor_GetRecvPayloadLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->recvPLCtrl.rBusy = buffIndx;
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;
sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old;
+5 -2
View File
@@ -4,8 +4,11 @@
#include <stdint.h>
#include <stdbool.h>
#define PAYLOAD_FLJ 78
#define PAYLOAD_LJ 168
#define PAYLOAD_LEN 256
#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
+22 -16
View File
@@ -74,20 +74,20 @@
// Data Send Test Command
#define CMD_DATA_TEST_A 0xE2
// -- Request
#define DATA_TEST_REQ_A_LEN 80
// -- -- 78 byte payload
#define DATA_TEST_REQ_A_LEN 68
// -- -- 68 byte payload
// -- Response
#define DATA_TEST_RSP_A_LEN 80
// -- -- 78 byte payload
#define DATA_TEST_RSP_A_LEN 68
// -- -- 68 byte payload
// Data Send Test Command
#define CMD_DATA_TEST_B 0xF2
// -- Request
#define DATA_TEST_REQ_B_LEN 152
// -- -- 150 byte payload
#define DATA_TEST_REQ_B_LEN 170
// -- -- 170 byte payload
// -- Response
#define DATA_TEST_RSP_B_LEN 152
// -- -- 150 byte payload
#define DATA_TEST_RSP_B_LEN 170
// -- -- 170 byte payload
// Config load
#define CMD_CONFIG 0xE3
@@ -132,8 +132,8 @@
#define WD_FLJ_POLL 0x02
#define FLJ_POLL_CODE 0x77
// -- Response
#define FLJ_POLL_RESP_LEN 78
// -- -- received 78 byte payload
#define FLJ_POLL_RESP_LEN 170
// -- -- received 170 byte payload
// LJ Poll
#define CMD_LJ_POLL 0xF5
@@ -141,8 +141,8 @@
#define WD_LJ_POLL 0x02
#define LJ_POLL_CODE 0x77
// -- Response
#define LJ_POLL_RESP_LEN 168
// -- -- received 156 byte payload
#define LJ_POLL_RESP_LEN 68
// -- -- received 68 byte payload
// Remote Test FLJ
#define CMD_FLJ_RM_TEST 0xE6
@@ -437,13 +437,16 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
break;
}
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;
uint32_t dataId;
SysMonitor_GetRecvPayloadFLJRaw(sysbusRsp->data + FLJ_DATA_OFFSET, &dataId); // omit control info
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)
{
@@ -470,13 +473,16 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
break;
}
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;
uint32_t dataId;
SysMonitor_GetRecvPayloadLJRaw(sysbusRsp->data + LJ_DATA_OFFSET, &dataId); // omit control info
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)
{