update scan FSM.

This commit is contained in:
Gatsby Van
2024-01-24 10:57:58 +08:00
parent a289c84c8f
commit 80f92305e3
2 changed files with 15 additions and 13 deletions
@@ -190,7 +190,7 @@ typedef struct
{
bool isLocked; // init acq done.
bool isAdvRecvd; // bm received.
bool isAcked; // 2way acq done.
bool isAckPending; // 2way acq done.
uint8_t scanCnt;
uint8_t beamNo;
uint32_t advTimeout;
+14 -12
View File
@@ -35,9 +35,9 @@
/************************** Function Prototypes ******************************/
static void LockStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state);
static void AdvrecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state);
static void CfmStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state);
static void AdvRecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state);
static void StageUpdate(L2_SCAN_FSM *scanFsmPtr, SCAN_STAGE newStage);
static void PendCfmAck(L2_SCAN_FSM *scanFsmPtr);
static int32_t Scan_InitScanHandler(L2_INST *instPtr);
static int32_t Scan_AdvHandler(L2_INST *instPtr);
@@ -60,11 +60,11 @@ static inline void LockStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state)
/**
* @brief Update Base-info Advertisement state.
*/
static void AdvrecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state)
static void AdvRecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state)
{
ASSERT(scanFsmPtr != NULL);
DBG_INFO("Update AdvRecvState from [%d] to [%d].\n",
scanFsmPtr->isBmRecvd, state);
scanFsmPtr->isAdvRecvd, state);
scanFsmPtr->isAdvRecvd = state;
return;
}
@@ -72,12 +72,11 @@ static void AdvrecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state)
/**
* @brief Update 2-Way Acquisition ack state.
*/
static void CfmStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state)
static void PendCfmAck(L2_SCAN_FSM *scanFsmPtr)
{
ASSERT(scanFsmPtr != NULL);
DBG_INFO("Update CfmAckState from [%d] to [%d].\n",
scanFsmPtr->isAcked, state);
scanFsmPtr->isAcked = state;
DBG_INFO("Pending Cfm-Ack...\n");
scanFsmPtr->isAckPending = true;
return;
}
@@ -143,7 +142,7 @@ static int32_t Scan_InitScanHandler(L2_INST *instPtr)
static int32_t Scan_AdvHandler(L2_INST *instPtr)
{
L2_SCAN_FSM *scanFsmPtr = instPtr->scanFSM;
DBG_INFO("** Netsetup - Advertisement Procedure (Timeout: %u) **\n", scanFsmPtr->advTimeout);
DBG_INFO("** Net-Setup - Advertisement Procedure (Timeout: %u) **\n", scanFsmPtr->advTimeout);
// if received a valid bm frame.
if (scanFsmPtr->isAdvRecvd == true)
@@ -330,7 +329,7 @@ void L2_Scan_Reset(L2_SCAN_FSM *scanFSMPtr)
ASSERT(scanFSMPtr != NULL);
scanFSMPtr->isLocked = false;
scanFSMPtr->isAdvRecvd = false;
scanFSMPtr->isAcked = false;
scanFSMPtr->isAckPending = false;
scanFSMPtr->scanCnt = 0;
scanFSMPtr->beamNo = 0;
scanFSMPtr->advTimeout = 0;
@@ -622,10 +621,13 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry)
case L2_SLOT_CONFIRM:
if (torState == L2_TOR_TX)
{
if (L2_GetNodeType(instPtr) != L2_NODE_HEAD && L2_isDataAvail(instPtr) == false)
if (L2_GetNodeType(instPtr) != L2_NODE_HEAD)
{
DBG_INFO("Member node is not ready to send CFM frame.\n");
if (instPtr->scanFSM->isAckPending == false)
{
DBG_INFO("Member node has no pending CFM-Ack frame.\n");
break;
}
}
memset(instPtr->sendPktData, 0xAA, L2_PACK_LEN_MAX);
if (ScanMsg_Packing(instPtr, L2_CFM_FRAME, rtneEntry->dst) != SUCCESS)