forked from gatsby/df_datalink
fix: 修复数据读取逻辑,增加入队拷贝拷贝
This commit is contained in:
+1
-1
@@ -220,7 +220,7 @@ int32_t SetupInterruptSystem(struct irq_ctrl_desc *descPtr)
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Initialize linklayer layer interrupt. */
|
||||
/* Initialize linklayer layer interrupt. */
|
||||
Status = irq_trigger_level_set(descPtr, PERIODIC_5MS_INTR_ID, IRQ_EDGE_RISING);
|
||||
if (Status != SUCCESS)
|
||||
{
|
||||
|
||||
@@ -196,16 +196,29 @@ static int32_t Service_Packing128K(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t
|
||||
message->srcSpeedY = instPtr->sysInfo.vY;
|
||||
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
||||
|
||||
// TODO: Packing extra payload
|
||||
// Pack extra payload
|
||||
if (type == L2_FRAME_SVC)
|
||||
{
|
||||
SYSMON_SVC_PAYLOAD sendPayload;
|
||||
// Packing extra payload
|
||||
SYSMON_SVC_PAYLOAD *sendPayload;
|
||||
SysMonitor_GetSendPayload(&sendPayload);
|
||||
message->common.dst = sendPayload.nodeId;
|
||||
message->dataId = sendPayload.dataId;
|
||||
message->dataLen = sendPayload.dataLen;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
memcpy(message->data, sendPayload.data, sendPayload.dataLen);
|
||||
if(sendPayload == NULL)
|
||||
{
|
||||
message->common.dst = L2_NONE_ID;
|
||||
message->dataId = DATA_ID_NONE;
|
||||
message->dataLen = 0;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
}
|
||||
else
|
||||
{
|
||||
message->common.dst = sendPayload->nodeId;
|
||||
message->dataId = sendPayload->dataId;
|
||||
message->dataLen = sendPayload->dataLen;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
memcpy(message->data, sendPayload->data, (sendPayload->dataLen > maxDataLen) ?
|
||||
maxDataLen : sendPayload->dataLen);
|
||||
free(sendPayload);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -264,14 +277,26 @@ static int32_t Service_Packing512K(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t
|
||||
message->srcSpeedY = instPtr->sysInfo.vY;
|
||||
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
||||
|
||||
// TODO: Packing extra payload
|
||||
SYSMON_SVC_PAYLOAD sendPayload;
|
||||
// Pack extra payload
|
||||
SYSMON_SVC_PAYLOAD *sendPayload;
|
||||
SysMonitor_GetSendPayload(&sendPayload);
|
||||
message->common.dst = sendPayload.nodeId;
|
||||
message->dataId = sendPayload.dataId;
|
||||
message->dataLen = sendPayload.dataLen;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
memcpy(message->data, sendPayload.data, sendPayload.dataLen);
|
||||
if(sendPayload == NULL)
|
||||
{
|
||||
message->common.dst = L2_NONE_ID;
|
||||
message->dataId = DATA_ID_NONE;
|
||||
message->dataLen = 0;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
}
|
||||
else
|
||||
{
|
||||
message->common.dst = sendPayload->nodeId;
|
||||
message->dataId = sendPayload->dataId;
|
||||
message->dataLen = sendPayload->dataLen;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
memcpy(message->data, sendPayload->data, (sendPayload->dataLen > maxDataLen) ?
|
||||
maxDataLen : sendPayload->dataLen);
|
||||
free(sendPayload);
|
||||
}
|
||||
|
||||
// Append CRC
|
||||
uint32_t crcVal;
|
||||
@@ -322,14 +347,26 @@ static int32_t Service_Packing2M(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t d
|
||||
message->srcSpeedY = instPtr->sysInfo.vY;
|
||||
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
||||
|
||||
// TODO: Packing extra payload
|
||||
SYSMON_SVC_PAYLOAD sendPayload;
|
||||
// Packing extra payload
|
||||
SYSMON_SVC_PAYLOAD *sendPayload;
|
||||
SysMonitor_GetSendPayload(&sendPayload);
|
||||
message->common.dst = sendPayload.nodeId;
|
||||
message->dataId = sendPayload.dataId;
|
||||
message->dataLen = sendPayload.dataLen;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
memcpy(message->data, sendPayload.data, sendPayload.dataLen);
|
||||
if(sendPayload == NULL)
|
||||
{
|
||||
message->common.dst = L2_NONE_ID;
|
||||
message->dataId = DATA_ID_NONE;
|
||||
message->dataLen = 0;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
}
|
||||
else
|
||||
{
|
||||
message->common.dst = sendPayload->nodeId;
|
||||
message->dataId = sendPayload->dataId;
|
||||
message->dataLen = sendPayload->dataLen;
|
||||
memset(message->data, 0xAA, maxDataLen);
|
||||
memcpy(message->data, sendPayload->data, (sendPayload->dataLen > maxDataLen) ?
|
||||
maxDataLen : sendPayload->dataLen);
|
||||
free(sendPayload);
|
||||
}
|
||||
|
||||
// Append CRC
|
||||
uint32_t crcVal;
|
||||
|
||||
@@ -462,7 +462,7 @@ int32_t Phy_SetAntIndex(PHY_INST *instPtr, PHY_ANT_INDEX antIndex)
|
||||
{
|
||||
ASSERT(instPtr != NULL);
|
||||
|
||||
if (antIndex < 0 || antIndex >= L1_ANT_NUM)
|
||||
if (antIndex < PHY_ANT_INDEX_NONE || antIndex > PHY_ANT_INDEX_3)
|
||||
{
|
||||
DBG_ERROR("Antenna index out of range: %" PRIu8 ". \n", antIndex);
|
||||
return EPARAM;
|
||||
|
||||
+12
-9
@@ -195,9 +195,17 @@ int32_t SysMonitor_UpdateSendPayload(SYSMON_SVC_PAYLOAD *payload)
|
||||
}
|
||||
|
||||
// push message into send queue
|
||||
if (CircQueuePush(sysMonitorInst->sendQueue, (void *)payload) == false)
|
||||
SYSMON_SVC_PAYLOAD *payloadCopy = malloc(sizeof(SYSMON_SVC_PAYLOAD));
|
||||
if (payloadCopy == NULL)
|
||||
{
|
||||
DBG_ERROR("Allocate memory for send payload failed.\n");
|
||||
return ENOMEM;
|
||||
}
|
||||
memcpy(payloadCopy, payload, sizeof(SYSMON_SVC_PAYLOAD));
|
||||
if (CircQueuePush(sysMonitorInst->sendQueue, (void *)payloadCopy) == false)
|
||||
{
|
||||
DBG_WARNING("SystemMonitor::SEND Queue overflowed!\n");
|
||||
free(payloadCopy);
|
||||
return EQUEUE;
|
||||
}
|
||||
|
||||
@@ -209,19 +217,14 @@ int32_t SysMonitor_UpdateSendPayload(SYSMON_SVC_PAYLOAD *payload)
|
||||
*
|
||||
* @param payload
|
||||
*/
|
||||
void SysMonitor_GetSendPayload(SYSMON_SVC_PAYLOAD *payload)
|
||||
void SysMonitor_GetSendPayload(SYSMON_SVC_PAYLOAD **payload)
|
||||
{
|
||||
ASSERT(sysMonitorInst != NULL);
|
||||
ASSERT(payload != NULL);
|
||||
|
||||
if (CircQueuePop(sysMonitorInst->sendQueue, (void *)payload) == false)
|
||||
if (CircQueuePop(sysMonitorInst->sendQueue, (void **)payload) == false)
|
||||
{
|
||||
payload->dataId = DATA_ID_NONE;
|
||||
payload->nodeId = 0;
|
||||
payload->dataLen = 0;
|
||||
// set payload to be 0xAA to balanced average signal power
|
||||
memset(payload->data, 0xAA, PAYLOAD_LEN_MAX);
|
||||
DBG_WARNING("SystemMonitor::Nothing to be sent.\n");
|
||||
*payload = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@ void SysMonitor_UpdateSysinfo(const SYSINFO *info);
|
||||
void SysMonitor_GetSysinfo(SYSINFO *info);
|
||||
|
||||
int32_t SysMonitor_UpdateSendPayload(SYSMON_SVC_PAYLOAD *payload);
|
||||
void SysMonitor_GetSendPayload(SYSMON_SVC_PAYLOAD *payload);
|
||||
void SysMonitor_GetSendPayload(SYSMON_SVC_PAYLOAD **payload);
|
||||
int32_t SysMonitor_GenRecvRsp(SYSMON_SVC_PAYLOAD *payload);
|
||||
|
||||
void SysMonitor_UpdateLinklayerLog(const LINKLOG *log);
|
||||
|
||||
Reference in New Issue
Block a user