feat: 调整节点ttl逻辑, 启用自动重入网; 根据物理层修改时间调整值

This commit is contained in:
2025-05-27 10:41:44 +08:00
parent 8dedb125ae
commit 65b3bf2f8e
3 changed files with 15 additions and 17 deletions
+8 -10
View File
@@ -1053,12 +1053,12 @@ static int32_t Linklayer_Routine(L2_INST *instPtr)
if (L2_GetMainState(instPtr) != L2_INIT_STATE)
{
L2_IterDeleteNode(instPtr->nodeList, IsNodeConnected);
if (L2_GetNodeListLen(instPtr->nodeList) < instPtr->config.netScale - 1)
if (L2_GetNodeType(instPtr) == L2_NODE_MEMBER && (L2_GetNodeById(instPtr->nodeList, instPtr->myInfo.headId) == NULL))
{
// reset scan process
L2_EVENT l2Event;
// Assert Net-Setup Done.
l2Event.event = (L2_GetNodeType(instPtr) == L2_NODE_HEAD) ? L2_EV_LOST_NODE : L2_EV_LOST_CXN;
l2Event.event = L2_EV_LOST_CXN;
l2Event.msg = NULL;
AssertL2Event(instPtr, &l2Event);
}
@@ -1323,15 +1323,13 @@ int32_t L2_SetupNextSlot(L2_INST *instPtr, L2_TOR_TYPE txrxMode, L2_FRAME_TYPE f
DBG_ERROR("Physical set listening timeout failed, with error code: %" PRId32 "\n", Status);
}
}
else
TIME_WORD pollTime = {0, 0};
pollTime.int_part = TimeCtrl_GetIntCnt(instPtr->config.tmcInstPtr) + 1;
Status = Phy_SetTimeWord(phyRef, &pollTime, PHY_TIME_WORD_POLL);
if (Status != SUCCESS)
{
TIME_WORD pollTime = {0, 0};
pollTime.int_part = TimeCtrl_GetIntCnt(instPtr->config.tmcInstPtr) + 1;
Status = Phy_SetTimeWord(phyRef, &pollTime, PHY_TIME_WORD_POLL);
if (Status != SUCCESS)
{
DBG_ERROR("Physical set poll time failed, with error code: %" PRId32 "\n", Status);
}
DBG_ERROR("Physical set poll time failed, with error code: %" PRId32 "\n", Status);
}
PHY_TOR_TYPE tor;
+1 -1
View File
@@ -138,7 +138,7 @@ static int32_t ScanMsg_Packing(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t dst
DBG_ERROR("Fail to generate CRC, error code: %" PRId32 ".\n", Status);
return Status;
}
message->crc = crcVal;
message->crc = (uint8_t)crcVal;
// Logging...
memcpy(instPtr->log.txLog.data, message, sizeof(L2_MSG_ADV));
+6 -6
View File
@@ -42,11 +42,11 @@
#define L1_FRAME_512KBPS_4MS_LEN (2584 / 8) // byte
#define L1_FRAME_2MBPS_4MS_LEN (10224 / 8) // byte
#define L1_FRAME_ADV_24MS_COMP 1841158 // FIXME: need update, *10ns(Timer_L)
#define L1_FRAME_ACK_8MS_COMP 1841158 // FIXME: need update, *10ns(Timer_L)
#define L1_FRAME_128KBPS_4MS_COMP 850950 // FIXME: need update, *10ns(Timer_L)
#define L1_FRAME_512KBPS_4MS_COMP 850950 // FIXME: need update, *10ns(Timer_L)
#define L1_FRAME_2MBPS_4MS_COMP 111485 // FIXME: need update, *10ns(Timer_L)
#define L1_FRAME_ADV_24MS_COMP 1399800 // *10ns(Timer_L)
#define L1_FRAME_ACK_8MS_COMP 598408 // *10ns(Timer_L)
#define L1_FRAME_128KBPS_4MS_COMP 9950 // *10ns(Timer_L)
#define L1_FRAME_512KBPS_4MS_COMP 9950 // *10ns(Timer_L)
#define L1_FRAME_2MBPS_4MS_COMP 9950 // *10ns(Timer_L)
#define L1_ANTCONFIG_MAX_LEN 8192
#define L1_TXRXDATA_MAX_LEN 16384
@@ -747,7 +747,7 @@ int32_t Phy_SetupNextSlot(PHY_INST *instPtr, PHY_TOR_TYPE txrxMode,
}
// Set frame configs
PhyWrite(instPtr, PHY_MODE_CTRL, phyModeCtrl);
PhyWrite(instPtr, PHY_MODE_CTRL, phyModeCtrl | PHY_MODE_CTRL_CRC_EN);
// TODO: Set antenna stand by, when suspend.
const uint8_t *dataSrcPtr = (uint8_t *)(&(instPtr->antConfig));