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;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize linklayer layer interrupt. */
|
/* Initialize linklayer layer interrupt. */
|
||||||
Status = irq_trigger_level_set(descPtr, PERIODIC_5MS_INTR_ID, IRQ_EDGE_RISING);
|
Status = irq_trigger_level_set(descPtr, PERIODIC_5MS_INTR_ID, IRQ_EDGE_RISING);
|
||||||
if (Status != SUCCESS)
|
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->srcSpeedY = instPtr->sysInfo.vY;
|
||||||
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
||||||
|
|
||||||
// TODO: Packing extra payload
|
// Pack extra payload
|
||||||
if (type == L2_FRAME_SVC)
|
if (type == L2_FRAME_SVC)
|
||||||
{
|
{
|
||||||
SYSMON_SVC_PAYLOAD sendPayload;
|
// Packing extra payload
|
||||||
|
SYSMON_SVC_PAYLOAD *sendPayload;
|
||||||
SysMonitor_GetSendPayload(&sendPayload);
|
SysMonitor_GetSendPayload(&sendPayload);
|
||||||
message->common.dst = sendPayload.nodeId;
|
if(sendPayload == NULL)
|
||||||
message->dataId = sendPayload.dataId;
|
{
|
||||||
message->dataLen = sendPayload.dataLen;
|
message->common.dst = L2_NONE_ID;
|
||||||
memset(message->data, 0xAA, maxDataLen);
|
message->dataId = DATA_ID_NONE;
|
||||||
memcpy(message->data, sendPayload.data, sendPayload.dataLen);
|
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
|
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->srcSpeedY = instPtr->sysInfo.vY;
|
||||||
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
||||||
|
|
||||||
// TODO: Packing extra payload
|
// Pack extra payload
|
||||||
SYSMON_SVC_PAYLOAD sendPayload;
|
SYSMON_SVC_PAYLOAD *sendPayload;
|
||||||
SysMonitor_GetSendPayload(&sendPayload);
|
SysMonitor_GetSendPayload(&sendPayload);
|
||||||
message->common.dst = sendPayload.nodeId;
|
if(sendPayload == NULL)
|
||||||
message->dataId = sendPayload.dataId;
|
{
|
||||||
message->dataLen = sendPayload.dataLen;
|
message->common.dst = L2_NONE_ID;
|
||||||
memset(message->data, 0xAA, maxDataLen);
|
message->dataId = DATA_ID_NONE;
|
||||||
memcpy(message->data, sendPayload.data, sendPayload.dataLen);
|
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
|
// Append CRC
|
||||||
uint32_t crcVal;
|
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->srcSpeedY = instPtr->sysInfo.vY;
|
||||||
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
message->srcSpeedZ = instPtr->sysInfo.vZ;
|
||||||
|
|
||||||
// TODO: Packing extra payload
|
// Packing extra payload
|
||||||
SYSMON_SVC_PAYLOAD sendPayload;
|
SYSMON_SVC_PAYLOAD *sendPayload;
|
||||||
SysMonitor_GetSendPayload(&sendPayload);
|
SysMonitor_GetSendPayload(&sendPayload);
|
||||||
message->common.dst = sendPayload.nodeId;
|
if(sendPayload == NULL)
|
||||||
message->dataId = sendPayload.dataId;
|
{
|
||||||
message->dataLen = sendPayload.dataLen;
|
message->common.dst = L2_NONE_ID;
|
||||||
memset(message->data, 0xAA, maxDataLen);
|
message->dataId = DATA_ID_NONE;
|
||||||
memcpy(message->data, sendPayload.data, sendPayload.dataLen);
|
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
|
// Append CRC
|
||||||
uint32_t crcVal;
|
uint32_t crcVal;
|
||||||
|
|||||||
@@ -462,7 +462,7 @@ int32_t Phy_SetAntIndex(PHY_INST *instPtr, PHY_ANT_INDEX antIndex)
|
|||||||
{
|
{
|
||||||
ASSERT(instPtr != NULL);
|
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);
|
DBG_ERROR("Antenna index out of range: %" PRIu8 ". \n", antIndex);
|
||||||
return EPARAM;
|
return EPARAM;
|
||||||
|
|||||||
+12
-9
@@ -195,9 +195,17 @@ int32_t SysMonitor_UpdateSendPayload(SYSMON_SVC_PAYLOAD *payload)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// push message into send queue
|
// 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");
|
DBG_WARNING("SystemMonitor::SEND Queue overflowed!\n");
|
||||||
|
free(payloadCopy);
|
||||||
return EQUEUE;
|
return EQUEUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,19 +217,14 @@ int32_t SysMonitor_UpdateSendPayload(SYSMON_SVC_PAYLOAD *payload)
|
|||||||
*
|
*
|
||||||
* @param payload
|
* @param payload
|
||||||
*/
|
*/
|
||||||
void SysMonitor_GetSendPayload(SYSMON_SVC_PAYLOAD *payload)
|
void SysMonitor_GetSendPayload(SYSMON_SVC_PAYLOAD **payload)
|
||||||
{
|
{
|
||||||
ASSERT(sysMonitorInst != NULL);
|
ASSERT(sysMonitorInst != NULL);
|
||||||
ASSERT(payload != NULL);
|
ASSERT(payload != NULL);
|
||||||
|
|
||||||
if (CircQueuePop(sysMonitorInst->sendQueue, (void *)payload) == false)
|
if (CircQueuePop(sysMonitorInst->sendQueue, (void **)payload) == false)
|
||||||
{
|
{
|
||||||
payload->dataId = DATA_ID_NONE;
|
*payload = NULL;
|
||||||
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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ void SysMonitor_UpdateSysinfo(const SYSINFO *info);
|
|||||||
void SysMonitor_GetSysinfo(SYSINFO *info);
|
void SysMonitor_GetSysinfo(SYSINFO *info);
|
||||||
|
|
||||||
int32_t SysMonitor_UpdateSendPayload(SYSMON_SVC_PAYLOAD *payload);
|
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);
|
int32_t SysMonitor_GenRecvRsp(SYSMON_SVC_PAYLOAD *payload);
|
||||||
|
|
||||||
void SysMonitor_UpdateLinklayerLog(const LINKLOG *log);
|
void SysMonitor_UpdateLinklayerLog(const LINKLOG *log);
|
||||||
|
|||||||
Reference in New Issue
Block a user