forked from gatsby/df_datalink
update scan FSM.
This commit is contained in:
@@ -190,7 +190,7 @@ typedef struct
|
|||||||
{
|
{
|
||||||
bool isLocked; // init acq done.
|
bool isLocked; // init acq done.
|
||||||
bool isAdvRecvd; // bm received.
|
bool isAdvRecvd; // bm received.
|
||||||
bool isAcked; // 2way acq done.
|
bool isAckPending; // 2way acq done.
|
||||||
uint8_t scanCnt;
|
uint8_t scanCnt;
|
||||||
uint8_t beamNo;
|
uint8_t beamNo;
|
||||||
uint32_t advTimeout;
|
uint32_t advTimeout;
|
||||||
|
|||||||
@@ -35,9 +35,9 @@
|
|||||||
|
|
||||||
/************************** Function Prototypes ******************************/
|
/************************** Function Prototypes ******************************/
|
||||||
static void LockStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state);
|
static void LockStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state);
|
||||||
static void AdvrecvStateUpdate(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 StageUpdate(L2_SCAN_FSM *scanFsmPtr, SCAN_STAGE newStage);
|
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_InitScanHandler(L2_INST *instPtr);
|
||||||
static int32_t Scan_AdvHandler(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.
|
* @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);
|
ASSERT(scanFsmPtr != NULL);
|
||||||
DBG_INFO("Update AdvRecvState from [%d] to [%d].\n",
|
DBG_INFO("Update AdvRecvState from [%d] to [%d].\n",
|
||||||
scanFsmPtr->isBmRecvd, state);
|
scanFsmPtr->isAdvRecvd, state);
|
||||||
scanFsmPtr->isAdvRecvd = state;
|
scanFsmPtr->isAdvRecvd = state;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -72,12 +72,11 @@ static void AdvrecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state)
|
|||||||
/**
|
/**
|
||||||
* @brief Update 2-Way Acquisition ack 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);
|
ASSERT(scanFsmPtr != NULL);
|
||||||
DBG_INFO("Update CfmAckState from [%d] to [%d].\n",
|
DBG_INFO("Pending Cfm-Ack...\n");
|
||||||
scanFsmPtr->isAcked, state);
|
scanFsmPtr->isAckPending = true;
|
||||||
scanFsmPtr->isAcked = state;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,7 +142,7 @@ static int32_t Scan_InitScanHandler(L2_INST *instPtr)
|
|||||||
static int32_t Scan_AdvHandler(L2_INST *instPtr)
|
static int32_t Scan_AdvHandler(L2_INST *instPtr)
|
||||||
{
|
{
|
||||||
L2_SCAN_FSM *scanFsmPtr = instPtr->scanFSM;
|
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 received a valid bm frame.
|
||||||
if (scanFsmPtr->isAdvRecvd == true)
|
if (scanFsmPtr->isAdvRecvd == true)
|
||||||
@@ -330,7 +329,7 @@ void L2_Scan_Reset(L2_SCAN_FSM *scanFSMPtr)
|
|||||||
ASSERT(scanFSMPtr != NULL);
|
ASSERT(scanFSMPtr != NULL);
|
||||||
scanFSMPtr->isLocked = false;
|
scanFSMPtr->isLocked = false;
|
||||||
scanFSMPtr->isAdvRecvd = false;
|
scanFSMPtr->isAdvRecvd = false;
|
||||||
scanFSMPtr->isAcked = false;
|
scanFSMPtr->isAckPending = false;
|
||||||
scanFSMPtr->scanCnt = 0;
|
scanFSMPtr->scanCnt = 0;
|
||||||
scanFSMPtr->beamNo = 0;
|
scanFSMPtr->beamNo = 0;
|
||||||
scanFSMPtr->advTimeout = 0;
|
scanFSMPtr->advTimeout = 0;
|
||||||
@@ -622,11 +621,14 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry)
|
|||||||
case L2_SLOT_CONFIRM:
|
case L2_SLOT_CONFIRM:
|
||||||
if (torState == L2_TOR_TX)
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
memset(instPtr->sendPktData, 0xAA, L2_PACK_LEN_MAX);
|
memset(instPtr->sendPktData, 0xAA, L2_PACK_LEN_MAX);
|
||||||
if (ScanMsg_Packing(instPtr, L2_CFM_FRAME, rtneEntry->dst) != SUCCESS)
|
if (ScanMsg_Packing(instPtr, L2_CFM_FRAME, rtneEntry->dst) != SUCCESS)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user