forked from gatsby/df_datalink
*update self test response (add full hardware status info)
This commit is contained in:
@@ -51,25 +51,33 @@
|
||||
#define WD_ST_RET 0x02
|
||||
#define ST_RET_OK 0xAA
|
||||
#define ST_RET_ERROR 0x55
|
||||
// -- -- Signal processor voltage
|
||||
#define WD_SP_VOLT 0x03
|
||||
|
||||
// -- -- Signal processor PS voltage
|
||||
#define WD_SP_PS_VOLT 0x03
|
||||
// -- -- Signal processor PS AUX voltage
|
||||
#define WD_SP_PSAUX_VOLT 0x04
|
||||
// -- -- Signal processor DDR voltage
|
||||
#define WD_SP_DDR_VOLT 0x05
|
||||
// -- -- Signal processor PL voltage
|
||||
#define WD_SP_PL_VOLT 0x06
|
||||
// -- -- Signal processor PL AUX voltage
|
||||
#define WD_SP_PLAUX_VOLT 0x07
|
||||
// -- -- Signal processor Bram voltage
|
||||
#define WD_SP_BRAM_VOLT 0x08
|
||||
// -- -- Signal processor temperature
|
||||
#define WD_SP_TEMP 0x04
|
||||
// -- -- Signal processor chip status
|
||||
#define WD_SP_CS 0x05
|
||||
// -- -- Signal processor antenna voltage
|
||||
#define WD_ANT_VOLT 0x06
|
||||
// -- -- Signal processor antenna temperature
|
||||
#define WD_ANT_TEMP 0x07
|
||||
#define WD_SP_TEMP 0x09
|
||||
|
||||
// -- -- Signal processor antenna voltage status
|
||||
#define WD_ANT_VOLT 0x0A
|
||||
// -- -- Signal processor antenna RF temperature
|
||||
#define WD_ANT_RF_TEMP 0x0B
|
||||
// -- -- Signal processor antenna PLL lock status
|
||||
#define WD_ANT_PLL 0x08
|
||||
#define WD_ANT_RF_PLL 0x0C
|
||||
// -- -- Signal processor antenna MGC
|
||||
#define WD_ANT_MGC_L 0x09
|
||||
#define WD_ANT_MGC_H 0x0A
|
||||
// -- -- Signal processor antenna status
|
||||
#define WD_ANT_ST 0x0B
|
||||
#define WD_ANT_MGC_0 0x0D
|
||||
#define WD_ANT_MGC_1 0x0E
|
||||
// -- -- Dummy must be 0x00
|
||||
#define WD_ST_DUMMY 0x0C
|
||||
#define WD_ST_DUMMY 0x0F
|
||||
|
||||
// Data Send Test Command
|
||||
#define CMD_DATA_TEST_A 0xE2
|
||||
@@ -281,6 +289,7 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
|
||||
{
|
||||
case CMD_SELF_TEST:
|
||||
{
|
||||
const HWSTATE *hwStatsPtr;
|
||||
sysbusRsp = malloc(sizeof(SYSBUS_UART_FRAME));
|
||||
if (sysbusRsp == NULL) {
|
||||
DBG_ERROR("Failed to allocate memory for SELF TEST Response!\n");
|
||||
@@ -291,9 +300,29 @@ 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);
|
||||
if (linkInstPtr->isEnable == false)
|
||||
{
|
||||
sysbusRsp->data[WD_ST_RET] = (hwStatsPtr->isSpOk) ? ST_RET_OK : ST_RET_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
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
|
||||
|
||||
// FIXME: run self-test and insert result
|
||||
sysbusRsp->data[WD_ST_RET] = ST_RET_OK;
|
||||
if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false)
|
||||
{
|
||||
free(sysbusRsp);
|
||||
|
||||
Reference in New Issue
Block a user