forked from gatsby/df_datalink
update MPC
This commit is contained in:
@@ -66,37 +66,6 @@
|
|||||||
// -- -- Signal processor Bram voltage
|
// -- -- Signal processor Bram voltage
|
||||||
#define WD_SP_FPGA_TEMP 0x08
|
#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
|
// Config load
|
||||||
#define CMD_CONFIG 0xE3
|
#define CMD_CONFIG 0xE3
|
||||||
// -- Request
|
// -- Request
|
||||||
@@ -111,48 +80,6 @@
|
|||||||
// -- Response
|
// -- Response
|
||||||
// -- -- none 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
|
// Remote Test
|
||||||
#define RM_TEST_RESP_LEN 158
|
#define RM_TEST_RESP_LEN 158
|
||||||
// -- Request
|
// -- Request
|
||||||
@@ -216,6 +143,52 @@ inline bool Mpc_IsRxBusy(MPC *instPtr)
|
|||||||
return (!instPtr->isRxDone);
|
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
|
* @brief Apply system configuration
|
||||||
*/
|
*/
|
||||||
@@ -224,7 +197,6 @@ static int32_t Mpc_SystemConfig(MPC *instPtr, uint8_t *msg)
|
|||||||
PHY_INST *phyRef = linkInstPtr->config.phyInstPtr;
|
PHY_INST *phyRef = linkInstPtr->config.phyInstPtr;
|
||||||
TMC_INST *tmcRef = linkInstPtr->config.tmcInstPtr;
|
TMC_INST *tmcRef = linkInstPtr->config.tmcInstPtr;
|
||||||
bool reconfig = false;
|
bool reconfig = false;
|
||||||
bool start = false;
|
|
||||||
|
|
||||||
if (msg[WD_MODE_CMD] == MODE_CMD_HEAD)
|
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
|
// high power config
|
||||||
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_FULL);
|
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_FULL);
|
||||||
start = true;
|
instPtr->isEnable = true;
|
||||||
}
|
}
|
||||||
else if(msg[WD_EN_CMD] == EN_CMD_ON_LOW_POWER)
|
else if(msg[WD_EN_CMD] == EN_CMD_ON_LOW_POWER)
|
||||||
{
|
{
|
||||||
// low power config
|
// low power config
|
||||||
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_LOW);
|
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_LOW);
|
||||||
start = true;
|
instPtr->isEnable = true;
|
||||||
}
|
}
|
||||||
else if(msg[WD_EN_CMD] == EN_CMD_SILENT)
|
else if(msg[WD_EN_CMD] == EN_CMD_SILENT)
|
||||||
{
|
{
|
||||||
// silence config
|
// silence config
|
||||||
// TODO: better approach?
|
// TODO: better approach?
|
||||||
start = false;
|
instPtr->isEnable = false;
|
||||||
Linklayer_Halt(linkInstPtr);
|
Linklayer_Halt(linkInstPtr);
|
||||||
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_STANDBY);
|
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_STANDBY);
|
||||||
TIME_WORD pullTime = {0, 0};
|
TIME_WORD pullTime = {0, 0};
|
||||||
@@ -288,7 +260,7 @@ static int32_t Mpc_SystemConfig(MPC *instPtr, uint8_t *msg)
|
|||||||
{
|
{
|
||||||
Linklayer_Reconfig(linkInstPtr, &linkConfig);
|
Linklayer_Reconfig(linkInstPtr, &linkConfig);
|
||||||
}
|
}
|
||||||
if (start == true)
|
if (instPtr->isEnable == true)
|
||||||
{
|
{
|
||||||
Linklayer_Start(linkInstPtr);
|
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");
|
DBG_ERROR("Failed to allocate memory for LJ REMOTE TEST Response!\n");
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
mpcRsp = malloc(sizeof(MPC_HW_FRAME));
|
|
||||||
msg = mpcRsp->data + FRAME_PAYLOAD_POFFSET;
|
msg = mpcRsp->data + FRAME_PAYLOAD_POFFSET;
|
||||||
mpcRsp->len = RM_TEST_RESP_LEN;
|
mpcRsp->len = RM_TEST_RESP_LEN;
|
||||||
if (L2_GetNodeType(linkInstPtr) == L2_NODE_HEAD)
|
if (L2_GetNodeType(linkInstPtr) == L2_NODE_HEAD)
|
||||||
@@ -478,6 +449,10 @@ int32_t Mpc_HandleCmd(MPC *instPtr)
|
|||||||
case CMD_CONFIG:
|
case CMD_CONFIG:
|
||||||
{
|
{
|
||||||
Status = Mpc_SystemConfig(instPtr, reqMsg);
|
Status = Mpc_SystemConfig(instPtr, reqMsg);
|
||||||
|
if (Status == SUCCESS)
|
||||||
|
{
|
||||||
|
Status = Mpc_GenSelfTestRsp(instPtr);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user