update MPC
This commit is contained in:
@@ -66,37 +66,6 @@
|
||||
// -- -- Signal processor Bram voltage
|
||||
#define WD_SP_FPGA_TEMP 0x08
|
||||
|
||||
// -- -- Signal processor antenna voltage status
|
||||
#define WD_ANT_VOLT 0x09
|
||||
|
||||
// -- -- Signal processor antenna RF temperature
|
||||
#define WD_ANT_RF_TEMP 0x0A
|
||||
// -- -- Signal processor antenna PLL lock status
|
||||
#define WD_ANT_RF_PLL 0x0B
|
||||
// -- -- Signal processor antenna MGC
|
||||
#define WD_ANT_MGC_0 0x0C
|
||||
#define WD_ANT_MGC_1 0x0D
|
||||
// -- -- Reserved
|
||||
#define WD_ANT_RESERVE 0x0E
|
||||
|
||||
// Data Send Test Command
|
||||
#define CMD_DATA_TEST_A 0xE2
|
||||
// -- Request
|
||||
#define DATA_TEST_REQ_A_LEN 68
|
||||
// -- -- 68 byte payload
|
||||
// -- Response
|
||||
#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 170
|
||||
// -- -- 170 byte payload
|
||||
// -- Response
|
||||
#define DATA_TEST_RSP_B_LEN 170
|
||||
// -- -- 170 byte payload
|
||||
|
||||
// Config load
|
||||
#define CMD_CONFIG 0xE3
|
||||
// -- Request
|
||||
@@ -111,48 +80,6 @@
|
||||
// -- Response
|
||||
// -- -- none response
|
||||
|
||||
// System info update
|
||||
#define CMD_SYS_INFO 0x33
|
||||
#define SYS_INFO_OFFSET 2
|
||||
// -- Request
|
||||
// -- -- 54 byte system info
|
||||
// -- Response
|
||||
// -- -- none response
|
||||
|
||||
// Data Send Test Command
|
||||
#define CMD_FLJ_SEND 0xE4
|
||||
#define FLJ_DATA_OFFSET 2
|
||||
// -- Request
|
||||
// -- -- 78 byte payload
|
||||
// -- Response
|
||||
// -- -- none response
|
||||
|
||||
// Data Send Test Command
|
||||
#define CMD_LJ_SEND 0xF4
|
||||
#define LJ_DATA_OFFSET 2
|
||||
// -- Request
|
||||
// -- -- 156 byte payload
|
||||
// -- Response
|
||||
// -- -- none response
|
||||
|
||||
// FLJ Poll
|
||||
#define CMD_FLJ_POLL 0xE5
|
||||
// -- Request
|
||||
#define WD_FLJ_POLL 0x02
|
||||
#define FLJ_POLL_CODE 0x77
|
||||
// -- Response
|
||||
#define FLJ_POLL_RESP_LEN 170
|
||||
// -- -- received 170 byte payload
|
||||
|
||||
// LJ Poll
|
||||
#define CMD_LJ_POLL 0xF5
|
||||
// -- Request
|
||||
#define WD_LJ_POLL 0x02
|
||||
#define LJ_POLL_CODE 0x77
|
||||
// -- Response
|
||||
#define LJ_POLL_RESP_LEN 68
|
||||
// -- -- received 68 byte payload
|
||||
|
||||
// Remote Test
|
||||
#define RM_TEST_RESP_LEN 158
|
||||
// -- Request
|
||||
@@ -216,6 +143,52 @@ inline bool Mpc_IsRxBusy(MPC *instPtr)
|
||||
return (!instPtr->isRxDone);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Generate System Bus SelfTest response.
|
||||
*/
|
||||
static int32_t Mpc_GenSelfTestRsp(MPC *instPtr)
|
||||
{
|
||||
ASSERT(instPtr != NULL);
|
||||
MPC_HW_FRAME *mpcRsp;
|
||||
uint8_t *msg;
|
||||
if (instPtr->isEnable == false)
|
||||
{
|
||||
DBG_ERROR("System is not enabled!\n");
|
||||
return EIGNORE;
|
||||
}
|
||||
mpcRsp = malloc(sizeof(MPC_HW_FRAME));
|
||||
if (mpcRsp == NULL) {
|
||||
DBG_ERROR("Failed to allocate memory for LJ REMOTE TEST Response!\n");
|
||||
return ENOMEM;
|
||||
}
|
||||
mpcRsp->len = ST_RSP_LEN;
|
||||
msg = mpcRsp->data + FRAME_PAYLOAD_POFFSET;
|
||||
|
||||
HWSTATE *hwStatsPtr = &(instPtr->hwState);
|
||||
|
||||
msg[WD_CMD] = CMD_SELF_TEST;
|
||||
msg[WD_PRD] = MY_PRD_ID;
|
||||
SysMonitor_GetHardwareStatus(hwStatsPtr);
|
||||
if (linkInstPtr->isEnable == false)
|
||||
{
|
||||
msg[WD_ST_RET] = (hwStatsPtr->isSpOk) ? ST_RET_OK : ST_RET_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
msg[WD_ST_RET] = (hwStatsPtr->isSpOk && hwStatsPtr->isAntOk) ? ST_RET_OK : ST_RET_ERROR;
|
||||
}
|
||||
// apply status and omit 2 bytes of overhead.
|
||||
memcpy(msg + WD_SP_FPGA_VOLT, &(hwStatsPtr->spFpgaVolt), ST_RET_INFO_LEN);
|
||||
|
||||
if (CircQueuePush(instPtr->txQueue, (void *)mpcRsp) == false)
|
||||
{
|
||||
free(mpcRsp);
|
||||
DBG_ERROR("SystemBus::TX Queue overflowed!\n");
|
||||
return EQUEUE;
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Apply system configuration
|
||||
*/
|
||||
@@ -224,7 +197,6 @@ static int32_t Mpc_SystemConfig(MPC *instPtr, uint8_t *msg)
|
||||
PHY_INST *phyRef = linkInstPtr->config.phyInstPtr;
|
||||
TMC_INST *tmcRef = linkInstPtr->config.tmcInstPtr;
|
||||
bool reconfig = false;
|
||||
bool start = false;
|
||||
|
||||
if (msg[WD_MODE_CMD] == MODE_CMD_HEAD)
|
||||
{
|
||||
@@ -261,19 +233,19 @@ static int32_t Mpc_SystemConfig(MPC *instPtr, uint8_t *msg)
|
||||
{
|
||||
// high power config
|
||||
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_FULL);
|
||||
start = true;
|
||||
instPtr->isEnable = true;
|
||||
}
|
||||
else if(msg[WD_EN_CMD] == EN_CMD_ON_LOW_POWER)
|
||||
{
|
||||
// low power config
|
||||
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_LOW);
|
||||
start = true;
|
||||
instPtr->isEnable = true;
|
||||
}
|
||||
else if(msg[WD_EN_CMD] == EN_CMD_SILENT)
|
||||
{
|
||||
// silence config
|
||||
// TODO: better approach?
|
||||
start = false;
|
||||
instPtr->isEnable = false;
|
||||
Linklayer_Halt(linkInstPtr);
|
||||
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_STANDBY);
|
||||
TIME_WORD pullTime = {0, 0};
|
||||
@@ -288,7 +260,7 @@ static int32_t Mpc_SystemConfig(MPC *instPtr, uint8_t *msg)
|
||||
{
|
||||
Linklayer_Reconfig(linkInstPtr, &linkConfig);
|
||||
}
|
||||
if (start == true)
|
||||
if (instPtr->isEnable == true)
|
||||
{
|
||||
Linklayer_Start(linkInstPtr);
|
||||
}
|
||||
@@ -409,7 +381,6 @@ int32_t Mpc_PendRemoteTest(MPC *instPtr)
|
||||
DBG_ERROR("Failed to allocate memory for LJ REMOTE TEST Response!\n");
|
||||
return ENOMEM;
|
||||
}
|
||||
mpcRsp = malloc(sizeof(MPC_HW_FRAME));
|
||||
msg = mpcRsp->data + FRAME_PAYLOAD_POFFSET;
|
||||
mpcRsp->len = RM_TEST_RESP_LEN;
|
||||
if (L2_GetNodeType(linkInstPtr) == L2_NODE_HEAD)
|
||||
@@ -478,6 +449,10 @@ int32_t Mpc_HandleCmd(MPC *instPtr)
|
||||
case CMD_CONFIG:
|
||||
{
|
||||
Status = Mpc_SystemConfig(instPtr, reqMsg);
|
||||
if (Status == SUCCESS)
|
||||
{
|
||||
Status = Mpc_GenSelfTestRsp(instPtr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user