diff --git a/df_datalink_sp/src/system_monitor.c b/df_datalink_sp/src/system_monitor.c index 633b97b..9ee449e 100644 --- a/df_datalink_sp/src/system_monitor.c +++ b/df_datalink_sp/src/system_monitor.c @@ -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; diff --git a/df_datalink_sp/src/system_monitor.h b/df_datalink_sp/src/system_monitor.h index a29a395..63dc0c4 100644 --- a/df_datalink_sp/src/system_monitor.h +++ b/df_datalink_sp/src/system_monitor.h @@ -4,8 +4,11 @@ #include #include -#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 diff --git a/df_datalink_sp/src/systembus/systembus.c b/df_datalink_sp/src/systembus/systembus.c index 4aee8c2..926dd62 100644 --- a/df_datalink_sp/src/systembus/systembus.c +++ b/df_datalink_sp/src/systembus/systembus.c @@ -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) {