diff --git a/df_datalink_sp/src/systembus/systembus.c b/df_datalink_sp/src/systembus/systembus.c index ef17eb0..8a03864 100644 --- a/df_datalink_sp/src/systembus/systembus.c +++ b/df_datalink_sp/src/systembus/systembus.c @@ -229,6 +229,7 @@ int32_t SystemBus_Init(SYSBUS **instPtr, SYSBUS_CONFIG *config) (*instPtr)->txQueue = NULL; (*instPtr)->uartInst = NULL; memcpy(&((*instPtr)->config), config, sizeof(SYSBUS_CONFIG)); + memset(&((*instPtr)->sysLog), 0x00, sizeof(SYSLOG)); uartConfig.baseAddr = config->baseAddr; Status = SysbusUart_Init(&((*instPtr)->uartInst), &uartConfig); if (Status != SUCCESS) @@ -289,7 +290,7 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) { case CMD_SELF_TEST: { - const HWSTATE *hwStatsPtr; + HWSTATE *hwStatsPtr = &(instPtr->sysLog.hwState); sysbusRsp = malloc(sizeof(SYSBUS_UART_FRAME)); if (sysbusRsp == NULL) { DBG_ERROR("Failed to allocate memory for SELF TEST Response!\n"); @@ -300,7 +301,7 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) memset(sysbusRsp->data, 0x00, ST_RSP_LEN); sysbusRsp->data[WD_CMD] = CMD_SELF_TEST; sysbusRsp->data[WD_PRD] = MY_PRD_ID; - hwStatsPtr = Phy_RefreshHwSate(linkInstPtr->config.phyInstPtr); + SysMonitor_GetHardwareStatus(hwStatsPtr); if (linkInstPtr->isEnable == false) { sysbusRsp->data[WD_ST_RET] = (hwStatsPtr->isSpOk) ? ST_RET_OK : ST_RET_ERROR; @@ -309,19 +310,8 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) { sysbusRsp->data[WD_ST_RET] = (hwStatsPtr->isSpOk && hwStatsPtr->isAntOk) ? ST_RET_OK : ST_RET_ERROR; } - sysbusRsp->data[WD_SP_PS_VOLT] = hwStatsPtr->spPsVolt; - sysbusRsp->data[WD_SP_PSAUX_VOLT] = hwStatsPtr->spPsAuxVolt; - sysbusRsp->data[WD_SP_DDR_VOLT] = hwStatsPtr->spDdrVolt; - sysbusRsp->data[WD_SP_PL_VOLT] = hwStatsPtr->spPlVolt; - sysbusRsp->data[WD_SP_PLAUX_VOLT] = hwStatsPtr->spPlAuxVolt; - sysbusRsp->data[WD_SP_BRAM_VOLT] = hwStatsPtr->spBramVolt; - sysbusRsp->data[WD_SP_TEMP] = hwStatsPtr->spTemp; - sysbusRsp->data[WD_ANT_VOLT] = hwStatsPtr->antVolt; - sysbusRsp->data[WD_ANT_RF_TEMP] = hwStatsPtr->antTemp; - sysbusRsp->data[WD_ANT_RF_PLL] = hwStatsPtr->antPll; - sysbusRsp->data[WD_ANT_MGC_0] = hwStatsPtr->antMgc0; - sysbusRsp->data[WD_ANT_MGC_1] = hwStatsPtr->antMgc1; - sysbusRsp->data[WD_ST_DUMMY] = 0; // dummy byte should always be 0 + // apply status and omit 2 bytes of overhead. + memcpy(sysbusRsp->data + WD_SP_PS_VOLT, &(hwStatsPtr->spPlAuxVolt), ST_RET_INFO_LEN); if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false) { @@ -446,19 +436,19 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) } case CMD_SYS_INFO: { - SysMonitor_UpdateSysinfoRaw(data + SYS_INFO_OFFSET); + SysMonitor_UpdateSysinfo((SYSINFO *)(data + SYS_INFO_OFFSET)); Status = SUCCESS; break; } // TODO case CMD_FLJ_SEND: { - SysMonitor_UpdateSendPayloadRaw(data + FLJ_DATA_OFFSET, PAYLOAD_LEN_FLJ_TX); // omit control info + SysMonitor_UpdateSendPayload(data + FLJ_DATA_OFFSET, PAYLOAD_LEN_FLJ_TX); // omit control info break; } case CMD_LJ_SEND: { - SysMonitor_UpdateSendPayloadRaw(data + LJ_DATA_OFFSET, PAYLOAD_LEN_LJ_TX); // omit control info + SysMonitor_UpdateSendPayload(data + LJ_DATA_OFFSET, PAYLOAD_LEN_LJ_TX); // omit control info break; } case CMD_FLJ_POLL: @@ -479,7 +469,7 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) sysbusRsp->data[WD_CMD] = CMD_FLJ_POLL; sysbusRsp->data[WD_PRD] = MY_PRD_ID; uint32_t dataId; - SysMonitor_GetRecvPayloadRaw(sysbusRsp->data + FLJ_DATA_OFFSET, &dataId, PAYLOAD_LEN_FLJ_RX); // omit control info + SysMonitor_GetRecvPayload(sysbusRsp->data + FLJ_DATA_OFFSET, &dataId, PAYLOAD_LEN_FLJ_RX); // omit control info if (dataId == DATA_ID_NONE) { free(sysbusRsp); @@ -515,7 +505,7 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) sysbusRsp->data[WD_CMD] = CMD_LJ_POLL; sysbusRsp->data[WD_PRD] = MY_PRD_ID; uint32_t dataId; - SysMonitor_GetRecvPayloadRaw(sysbusRsp->data + LJ_DATA_OFFSET, &dataId, PAYLOAD_LEN_LJ_RX); // omit control info + SysMonitor_GetRecvPayload(sysbusRsp->data + LJ_DATA_OFFSET, &dataId, PAYLOAD_LEN_LJ_RX); // omit control info if (dataId == DATA_ID_NONE) { free(sysbusRsp); @@ -535,6 +525,7 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr) } case CMD_FLJ_RM_TEST: { + SYSLOG *sysLogPtr = &(instPtr->sysLog); if (data[WD_FLJ_RM_TEST] != FLJ_RM_TEST_CODE) { DBG_WARNING("SystemBus::Invalid remote test code!\n"); diff --git a/df_datalink_sp/src/systembus/systembus.h b/df_datalink_sp/src/systembus/systembus.h index 9c00c8c..6d1675a 100644 --- a/df_datalink_sp/src/systembus/systembus.h +++ b/df_datalink_sp/src/systembus/systembus.h @@ -17,10 +17,11 @@ #define __SYSTEMBUS_H_ /***************************** Include Files *********************************/ -#include "systembus_uart.h" // SystemBus UART driver -#include "circ_queue.h" #include #include +#include "systembus_uart.h" // SystemBus UART driver +#include "circ_queue.h" +#include "../system_monitor.h" /************************** Constant Definitions *****************************/ /************************** Data Type Definitions ****************************/ @@ -35,6 +36,7 @@ typedef struct typedef struct { SYSBUS_CONFIG config; + SYSLOG sysLog; SYSBUS_UART *uartInst; CIRC_QUEUE *txQueue; CIRC_QUEUE *rxQueue;