forked from 0xha0/datalink_repo
miscellaneous update (enhance coherence and readability).
This commit is contained in:
@@ -64,17 +64,25 @@ static int32_t MgmtPkt_Packing(L2_INST* instPtr, MGMTPKT_TYPE pktType);
|
|||||||
static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE msgType) {
|
static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE msgType) {
|
||||||
ASSERT(instPtr != NULL);
|
ASSERT(instPtr != NULL);
|
||||||
ASSERT(bitarr != NULL);
|
ASSERT(bitarr != NULL);
|
||||||
if (bitarr->num_of_bits < MGMT_MSG_LEN || msgType < L2_MSG_TK_INIT
|
uint64_t dataChunk;
|
||||||
|| msgType > L2_MSG_BCU_INIT) {
|
L2_RTT_FSM* rttFsmPtr = L2_GetRttFsm(instPtr);
|
||||||
|
if (msgType < L2_MSG_TK_INIT || msgType > L2_MSG_BCU_INIT) {
|
||||||
return EPARAM;
|
return EPARAM;
|
||||||
}
|
}
|
||||||
uint64_t dataChunk = 0;
|
if(msgType >= L2_MSG_TK_INIT && msgType <= L2_MSG_MADJ_EXTD) {
|
||||||
memset(bitarr->words, 0x99, (size_t) (MGMT_MSG_LEN / 8));
|
|
||||||
switch (msgType) {
|
|
||||||
case L2_MSG_TK_INIT:
|
|
||||||
if (bitarr->num_of_bits < MGMT_MSG_LEN) {
|
if (bitarr->num_of_bits < MGMT_MSG_LEN) {
|
||||||
return EPARAM;
|
return EPARAM;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(msgType >= L2_MSG_RTT_REQ_INIT && msgType <= L2_MSG_RTT_RSP_CONT) {
|
||||||
|
if (bitarr->num_of_bits < RTT_MSG_LEN) {
|
||||||
|
return EPARAM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(bitarr->words, 0x99, (size_t) (MGMT_MSG_LEN / 8));
|
||||||
|
switch (msgType) {
|
||||||
|
case L2_MSG_TK_INIT:
|
||||||
// Series tag
|
// Series tag
|
||||||
dataChunk = 0;
|
dataChunk = 0;
|
||||||
FrameInsertChunk(bitarr, TK_MSG_INI_SER_TAG_OFFSET, TK_MSG_INI_SER_TAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_INI_SER_TAG_OFFSET, TK_MSG_INI_SER_TAG_LEN, dataChunk);
|
||||||
@@ -96,7 +104,7 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, TK_MSG_INI_OFFSET, TK_MSG_INI_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_INI_OFFSET, TK_MSG_INI_LEN, dataChunk);
|
||||||
|
|
||||||
// Next net stage
|
// Next net stage
|
||||||
if (instPtr->myInfo.nodeType == HEAD_NODE) {
|
if (L2_GetNodeType(instPtr) == HEAD_NODE) {
|
||||||
switch (instPtr->nextState) {
|
switch (instPtr->nextState) {
|
||||||
case INIT_STATE:
|
case INIT_STATE:
|
||||||
dataChunk = NET_INI_STAGE;
|
dataChunk = NET_INI_STAGE;
|
||||||
@@ -120,10 +128,8 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, TK_MSG_INI_NET_STATE_OFFSET, TK_MSG_INI_NET_STATE_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_INI_NET_STATE_OFFSET, TK_MSG_INI_NET_STATE_LEN, dataChunk);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_TK_EXTD:
|
case L2_MSG_TK_EXTD:
|
||||||
if (bitarr->num_of_bits < MGMT_MSG_LEN) {
|
|
||||||
return EPARAM;
|
|
||||||
}
|
|
||||||
// Word tag
|
// Word tag
|
||||||
dataChunk = 1;
|
dataChunk = 1;
|
||||||
FrameInsertChunk(bitarr, TK_MSG_EXTEND_WTAG_OFFSET, TK_MSG_EXTEND_WTAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_EXTEND_WTAG_OFFSET, TK_MSG_EXTEND_WTAG_LEN, dataChunk);
|
||||||
@@ -136,6 +142,7 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
dataChunk = 0xBBBB;
|
dataChunk = 0xBBBB;
|
||||||
FrameInsertChunk(bitarr, TK_MSG_EXTEND_EAST_SPEED_OFFSET, TK_MSG_EXTEND_EAST_SPEED_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_EXTEND_EAST_SPEED_OFFSET, TK_MSG_EXTEND_EAST_SPEED_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_TK_CONT_1:
|
case L2_MSG_TK_CONT_1:
|
||||||
// Word tag
|
// Word tag
|
||||||
dataChunk = 2;
|
dataChunk = 2;
|
||||||
@@ -176,6 +183,7 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
dataChunk = 0xBBBBBBBB;
|
dataChunk = 0xBBBBBBBB;
|
||||||
FrameInsertChunk(bitarr, TK_MSG_CONT_2_LATITUDE_OFFSET, TK_MSG_CONT_2_LATITUDE_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_CONT_2_LATITUDE_OFFSET, TK_MSG_CONT_2_LATITUDE_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_TK_CONT_3:
|
case L2_MSG_TK_CONT_3:
|
||||||
|
|
||||||
// Word tag
|
// Word tag
|
||||||
@@ -187,8 +195,7 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, TK_MSG_CONT_3_CONTID_OFFSET, TK_MSG_CONT_3_CONTID_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_CONT_3_CONTID_OFFSET, TK_MSG_CONT_3_CONTID_LEN, dataChunk);
|
||||||
|
|
||||||
// source node id
|
// source node id
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F) | (((uint16_t)(L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
| (((uint16_t) (instPtr->myInfo.clustId & 0x1F)) << 5);
|
|
||||||
FrameInsertChunk(bitarr, TK_MSG_CONT_3_MEMBER_ADDR_OFFSET, TK_MSG_CONT_3_MEMBER_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_CONT_3_MEMBER_ADDR_OFFSET, TK_MSG_CONT_3_MEMBER_ADDR_LEN, dataChunk);
|
||||||
|
|
||||||
// East speed
|
// East speed
|
||||||
@@ -202,7 +209,6 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
// Upper speed
|
// Upper speed
|
||||||
dataChunk = 0xDDDD;
|
dataChunk = 0xDDDD;
|
||||||
FrameInsertChunk(bitarr, TK_MSG_CONT_3_UPPER_ACC_OFFSET, TK_MSG_CONT_3_UPPER_ACC_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TK_MSG_CONT_3_UPPER_ACC_OFFSET, TK_MSG_CONT_3_UPPER_ACC_LEN, dataChunk);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_TA_INIT:
|
case L2_MSG_TA_INIT:
|
||||||
@@ -220,15 +226,14 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, TA_MSG_MSG_STAG_OFFSET, TA_MSG_MSG_STAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TA_MSG_MSG_STAG_OFFSET, TA_MSG_MSG_STAG_LEN, dataChunk);
|
||||||
|
|
||||||
// Source node id
|
// Source node id
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F) | (((uint16_t) (L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
| (((uint16_t) (instPtr->myInfo.clustId & 0x1F)) << 5);
|
|
||||||
FrameInsertChunk(bitarr, TA_MSG_SRC_ADDR_OFFSET, TA_MSG_SRC_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TA_MSG_SRC_ADDR_OFFSET, TA_MSG_SRC_ADDR_LEN, dataChunk);
|
||||||
|
|
||||||
// Height
|
// Height
|
||||||
dataChunk = 0xEEEEEE;
|
dataChunk = 0xEEEEEE;
|
||||||
FrameInsertChunk(bitarr, TA_MSG_HEIGHT_OFFSET, TA_MSG_HEIGHT_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TA_MSG_HEIGHT_OFFSET, TA_MSG_HEIGHT_LEN, dataChunk);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_TA_EXTD:
|
case L2_MSG_TA_EXTD:
|
||||||
|
|
||||||
// Longitude
|
// Longitude
|
||||||
@@ -260,12 +265,14 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
// Upper speed
|
// Upper speed
|
||||||
dataChunk = 0xDDDD;
|
dataChunk = 0xDDDD;
|
||||||
FrameInsertChunk(bitarr, TA_MSG_CONT_2_UPPER_OFFSET, TA_MSG_CONT_2_UPPER_LEN, dataChunk);
|
FrameInsertChunk(bitarr, TA_MSG_CONT_2_UPPER_OFFSET, TA_MSG_CONT_2_UPPER_LEN, dataChunk);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_MADJ_INIT:
|
case L2_MSG_MADJ_INIT:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_MADJ_EXTD:
|
case L2_MSG_MADJ_EXTD:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_RTT_REQ_INIT:
|
case L2_MSG_RTT_REQ_INIT:
|
||||||
// Series tag
|
// Series tag
|
||||||
dataChunk = 0;
|
dataChunk = 0;
|
||||||
@@ -280,20 +287,19 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, RTT_REQ_MSG_TAG_OFFSET, RTT_REQ_MSG_TAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_MSG_TAG_OFFSET, RTT_REQ_MSG_TAG_LEN, dataChunk);
|
||||||
|
|
||||||
// message identification.
|
// message identification.
|
||||||
dataChunk = 1;
|
dataChunk = 1; // request
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_MSG_STAG_OFFSET, RTT_REQ_MSG_STAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_MSG_STAG_OFFSET, RTT_REQ_MSG_STAG_LEN, dataChunk);
|
||||||
|
|
||||||
// message length.
|
// message length.
|
||||||
dataChunk = 2; //request
|
dataChunk = 2;
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_MSG_OFFSET, RTT_REQ_MSG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_MSG_OFFSET, RTT_REQ_MSG_LEN, dataChunk);
|
||||||
|
|
||||||
// source node address length.
|
// source node address length.
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F) | (((uint16_t)(L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
| (((uint16_t) (instPtr->myInfo.clustId & 0x1F)) << 5);
|
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_SRC_ADDR_OFFSET, RTT_REQ_SRC_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_SRC_ADDR_OFFSET, RTT_REQ_SRC_ADDR_LEN, dataChunk);
|
||||||
|
|
||||||
// destination node address length.
|
// destination node address length.
|
||||||
dataChunk = (0x02) | (((uint16_t) (instPtr->myInfo.clustId & 0x1F)) << 5);
|
dataChunk = (0x02) | (((uint16_t) (L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_DST_ADDR_OFFSET, RTT_REQ_DST_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_DST_ADDR_OFFSET, RTT_REQ_DST_ADDR_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -303,20 +309,20 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, RTT_REQ_EX_WTAG_OFFSET, RTT_REQ_EX_WTAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_EX_WTAG_OFFSET, RTT_REQ_EX_WTAG_LEN, dataChunk);
|
||||||
|
|
||||||
// Time tag Low.
|
// Time tag Low.
|
||||||
dataChunk = instPtr->mgmtNetFSM->rttData.rttTime.timeL;
|
dataChunk = rttFsmPtr->timeStamp.frac_part;
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_EX_TTAGL_OFFSET, RTT_REQ_EX_TTAGL_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_EX_TTAGL_OFFSET, RTT_REQ_EX_TTAGL_LEN, dataChunk);
|
||||||
|
|
||||||
// Time tag High.
|
// Time tag High.
|
||||||
dataChunk = instPtr->mgmtNetFSM->rttData.rttTime.timeH;
|
dataChunk = rttFsmPtr->timeStamp.int_part;
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_EX_TTAGH_OFFSET, RTT_REQ_EX_TTAGH_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_EX_TTAGH_OFFSET, RTT_REQ_EX_TTAGH_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_RTT_REQ_CONT:
|
case L2_MSG_RTT_REQ_CONT:
|
||||||
// Doppler
|
// Doppler
|
||||||
dataChunk = instPtr->mgmtNetFSM->rttData.rttDoppler;
|
dataChunk = rttFsmPtr->doppler;
|
||||||
FrameInsertChunk(bitarr, RTT_REQ_CONT_DOP_OFFSET, RTT_REQ_CONT_DOP_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_REQ_CONT_DOP_OFFSET, RTT_REQ_CONT_DOP_LEN, dataChunk);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_RTT_RSP_INIT:
|
case L2_MSG_RTT_RSP_INIT:
|
||||||
// Series tag
|
// Series tag
|
||||||
dataChunk = 0;
|
dataChunk = 0;
|
||||||
@@ -340,83 +346,84 @@ static int32_t MgmtMsg_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_MSG_TYPE
|
|||||||
FrameInsertChunk(bitarr, RTT_RSP_MSG_OFFSET, RTT_RSP_MSG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_MSG_OFFSET, RTT_RSP_MSG_LEN, dataChunk);
|
||||||
|
|
||||||
// source node address length.
|
// source node address length.
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F) | (((uint16_t)(L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
| (((uint16_t) (instPtr->myInfo.clustId & 0x1F)) << 5);
|
|
||||||
FrameInsertChunk(bitarr, RTT_RSP_SRC_ADDR_OFFSET, RTT_RSP_SRC_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_SRC_ADDR_OFFSET, RTT_RSP_SRC_ADDR_LEN, dataChunk);
|
||||||
|
|
||||||
// destination node address length.
|
// destination node address length.
|
||||||
dataChunk = (0x01) | (((uint16_t) (instPtr->myInfo.clustId & 0x1F)) << 5);
|
dataChunk = (0x01) | (((uint16_t) (L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
FrameInsertChunk(bitarr, RTT_RSP_DST_ADDR_OFFSET, RTT_RSP_DST_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_DST_ADDR_OFFSET, RTT_RSP_DST_ADDR_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
case L2_MSG_RTT_RSP_EXTD:
|
|
||||||
|
|
||||||
|
case L2_MSG_RTT_RSP_EXTD:
|
||||||
// Word tag
|
// Word tag
|
||||||
dataChunk = 1;
|
dataChunk = 1;
|
||||||
FrameInsertChunk(bitarr, RTT_RSP_EX_WTAG_OFFSET, RTT_RSP_EX_WTAG_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_EX_WTAG_OFFSET, RTT_RSP_EX_WTAG_LEN, dataChunk);
|
||||||
|
|
||||||
// Time tag Low.
|
// Time tag Low.
|
||||||
dataChunk = instPtr->mgmtNetFSM->rttData.rttTime.timeL;
|
dataChunk = rttFsmPtr->timeStamp.frac_part;
|
||||||
FrameInsertChunk(bitarr, RTT_RSP_EX_TTAGL_OFFSET, RTT_RSP_EX_TTAGL_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_EX_TTAGL_OFFSET, RTT_RSP_EX_TTAGL_LEN, dataChunk);
|
||||||
|
|
||||||
// Time tag High.
|
// Time tag High.
|
||||||
dataChunk = instPtr->mgmtNetFSM->rttData.rttTime.timeH;
|
dataChunk = rttFsmPtr->timeStamp.int_part;
|
||||||
FrameInsertChunk(bitarr, RTT_RSP_EX_TTAGH_OFFSET, RTT_RSP_EX_TTAGH_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_EX_TTAGH_OFFSET, RTT_RSP_EX_TTAGH_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_RTT_RSP_CONT:
|
case L2_MSG_RTT_RSP_CONT:
|
||||||
// Doppler
|
// Doppler
|
||||||
dataChunk = instPtr->mgmtNetFSM->rttData.rttDoppler;
|
dataChunk = rttFsmPtr->doppler;
|
||||||
FrameInsertChunk(bitarr, RTT_RSP_CONT_DOP_OFFSET, RTT_RSP_CONT_DOP_LEN, dataChunk);
|
FrameInsertChunk(bitarr, RTT_RSP_CONT_DOP_OFFSET, RTT_RSP_CONT_DOP_LEN, dataChunk);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_NQT_INIT:
|
case L2_MSG_NQT_INIT:
|
||||||
// if (priorInfo.myType == MEMBER_NODE && ( L2_GetCurrentFrameNo() == ( myInfo->netScanTime + TIME2QUIT ) )) {
|
|
||||||
// // word tag
|
// // word tag
|
||||||
// dataChunk = 3;
|
// dataChunk = 3;
|
||||||
// FrameInsertChunk(bitarr, NQT_MSG_WTAG_OFFSET,
|
// FrameInsertChunk(bitarr, NQT_MSG_WTAG_OFFSET,
|
||||||
// NQT_MSG_WTAG_LEN, dataChunk);
|
// NQT_MSG_WTAG_LEN, dataChunk);
|
||||||
//
|
|
||||||
// // msg tag
|
// // msg tag
|
||||||
// dataChunk = 30;
|
// dataChunk = 30;
|
||||||
// FrameInsertChunk(bitarr, NQT_MSG_MSG_TAG_OFFSET,
|
// FrameInsertChunk(bitarr, NQT_MSG_MSG_TAG_OFFSET,
|
||||||
// NQT_MSG_MSG_TAG_LEN, dataChunk);
|
// NQT_MSG_MSG_TAG_LEN, dataChunk);
|
||||||
//
|
|
||||||
// // msg sub tag
|
// // msg sub tag
|
||||||
// dataChunk = 1;
|
// dataChunk = 1;
|
||||||
// FrameInsertChunk(bitarr, NQT_MSG_MSG_STAG_OFFSET,
|
// FrameInsertChunk(bitarr, NQT_MSG_MSG_STAG_OFFSET,
|
||||||
// NQT_MSG_MSG_STAG_LEN, dataChunk);
|
// NQT_MSG_MSG_STAG_LEN, dataChunk);
|
||||||
//
|
|
||||||
// // msg length
|
// // msg length
|
||||||
// dataChunk = 0;
|
// dataChunk = 0;
|
||||||
// FrameInsertChunk(bitarr, NQT_MSG_MSG_OFFSET,
|
// FrameInsertChunk(bitarr, NQT_MSG_MSG_OFFSET,
|
||||||
// NQT_MSG_MSG_LEN, dataChunk);
|
// NQT_MSG_MSG_LEN, dataChunk);
|
||||||
//
|
|
||||||
// // Ctrol Word
|
// // Ctrol Word
|
||||||
// dataChunk = 1;
|
// dataChunk = 1;
|
||||||
// FrameInsertChunk(bitarr, NQT_MSG_CTRL_MUTE_OFFSET,
|
// FrameInsertChunk(bitarr, NQT_MSG_CTRL_MUTE_OFFSET,
|
||||||
// NQT_MSG_CTRL_MUTE_LEN, dataChunk);
|
// NQT_MSG_CTRL_MUTE_LEN, dataChunk);
|
||||||
//
|
|
||||||
// // Quit object
|
// // Quit object
|
||||||
// dataChunk = (priorInfo.myId & 0x1F)
|
// dataChunk = (L2_GetNodeId(instPtr) & 0x1F) | (((uint16_t)(L2_GetClusterId(instPtr) & 0x1F)) << 5);
|
||||||
// | (((uint16_t) (priorInfo.clustId & 0x1F)) << 5);
|
// FrameInsertChunk(bitarr, NQT_MSG_OBJ_OFFSET, NQT_MSG_OBJ_LEN, dataChunk);
|
||||||
// FrameInsertChunk(bitarr, NQT_MSG_OBJ_OFFSET,
|
|
||||||
// NQT_MSG_OBJ_LEN, dataChunk);
|
|
||||||
// L2_NODE_STATE newState = INIT_STATE;
|
// L2_NODE_STATE newState = INIT_STATE;
|
||||||
// L2_EVENT stateEvent = {
|
// L2_EVENT stateEvent = {
|
||||||
// .event = L2_EV_MAIN_STATE_UPDATE,
|
// .event = L2_EV_MAIN_STATE_UPDATE,
|
||||||
// .msg = &newState
|
// .msg = &newState
|
||||||
// };
|
// };
|
||||||
// AssertL2Event(&stateEvent);
|
// AssertL2Event(instPtr, &stateEvent);
|
||||||
// L2_EVENT lostCxnEvent = {
|
// L2_EVENT lostCxnEvent = {
|
||||||
// .event = L2_EV_LOST_CXN,
|
// .event = L2_EV_LOST_CXN,
|
||||||
// .msg = NULL
|
// .msg = NULL
|
||||||
// };
|
// };
|
||||||
// AssertL2Event(&lostCxnEvent);
|
// AssertL2Event(instPtr, &lostCxnEvent);
|
||||||
// }
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_CMG_INIT:
|
case L2_MSG_CMG_INIT:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2_MSG_BCU_INIT:
|
case L2_MSG_BCU_INIT:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
DBG_ERROR("Unsupported message type: %d", msgType);
|
||||||
return EPARAM;
|
return EPARAM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -603,7 +610,7 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) {
|
|||||||
free(mgmtMsg);
|
free(mgmtMsg);
|
||||||
return EALLOC;
|
return EALLOC;
|
||||||
}
|
}
|
||||||
switch (L2_GetLastRcvFrameType(instPtr)) {
|
switch (L2_GetLastFrameType(instPtr)) {
|
||||||
case L2_INTER_MGMT_FRAME:
|
case L2_INTER_MGMT_FRAME:
|
||||||
case L2_INTRA_MGMT_FRAME: {
|
case L2_INTRA_MGMT_FRAME: {
|
||||||
for (int i = 0; i < ARRAY_SIZE(intraMgmtFrameMsgs); i++) {
|
for (int i = 0; i < ARRAY_SIZE(intraMgmtFrameMsgs); i++) {
|
||||||
@@ -669,7 +676,7 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) {
|
|||||||
case L2_MSG_NQT_INIT:
|
case L2_MSG_NQT_INIT:
|
||||||
FrameGetChunk(mgmtMsg, NQT_MSG_OBJ_OFFSET, NQT_MSG_OBJ_LEN, &dataChunk);
|
FrameGetChunk(mgmtMsg, NQT_MSG_OBJ_OFFSET, NQT_MSG_OBJ_LEN, &dataChunk);
|
||||||
mgmtMsgLog->quitNodeId = (uint8_t) (dataChunk & 0x1F);
|
mgmtMsgLog->quitNodeId = (uint8_t) (dataChunk & 0x1F);
|
||||||
if (mgmtMsgLog->quitNodeId != instPtr->myInfo.nodeId) {
|
if (mgmtMsgLog->quitNodeId != L2_GetNodeId(instPtr)) {
|
||||||
FrameGetChunk(mgmtMsg, NQT_MSG_CTRL_MUTE_OFFSET, NQT_MSG_CTRL_MUTE_LEN, &dataChunk);
|
FrameGetChunk(mgmtMsg, NQT_MSG_CTRL_MUTE_OFFSET, NQT_MSG_CTRL_MUTE_LEN, &dataChunk);
|
||||||
mgmtMsgLog->quitCtrlWord = (uint8_t)(dataChunk & 0x7F);
|
mgmtMsgLog->quitCtrlWord = (uint8_t)(dataChunk & 0x7F);
|
||||||
if (mgmtMsgLog->quitCtrlWord == 0x01) {
|
if (mgmtMsgLog->quitCtrlWord == 0x01) {
|
||||||
@@ -693,7 +700,7 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Member Node update state with received message
|
// Member Node update state with received message
|
||||||
if(instPtr->myInfo.nodeId != HEAD_NODE && mgmtMsgLog->isValid == true ){
|
if(L2_GetNodeId(instPtr) != HEAD_NODE && mgmtMsgLog->isValid == true ){
|
||||||
L2_NODE_STATE newState = NONE_STATE;
|
L2_NODE_STATE newState = NONE_STATE;
|
||||||
// FIXME :
|
// FIXME :
|
||||||
switch (mgmtMsgLog->nextNetState) {
|
switch (mgmtMsgLog->nextNetState) {
|
||||||
@@ -723,18 +730,17 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) {
|
|||||||
};
|
};
|
||||||
AssertL2Event(instPtr, &stateUpEvent);
|
AssertL2Event(instPtr, &stateUpEvent);
|
||||||
}
|
}
|
||||||
// TODO: Reset of tracking message src
|
|
||||||
RstNodeTTL(instPtr->nodeList, mgmtMsgLog->srcNodeId);
|
|
||||||
|
|
||||||
if(mgmtMsgLog->srcNodeId == instPtr->config.headId){
|
RstNodeTTL(instPtr->nodeList, mgmtMsgLog->srcNodeId);
|
||||||
|
// TODO: Check
|
||||||
|
if(mgmtMsgLog->srcNodeId == L2_GetHeadId(instPtr)){
|
||||||
L2_TimeAlign(instPtr, L2_GetCurrentFrameNum(instPtr), L2_GetCurrentSlotNum(instPtr));
|
L2_TimeAlign(instPtr, L2_GetCurrentFrameNum(instPtr), L2_GetCurrentSlotNum(instPtr));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case L2_INTER_TSYNC_FRAME:
|
case L2_INTER_TSYNC_FRAME:
|
||||||
case L2_INTRA_TSYNC_FRAME: {
|
case L2_INTRA_TSYNC_FRAME: {
|
||||||
L2_RTT_FSM* rttFsmPtr = L2_GetRttDesc(instPtr);
|
L2_RTT_SATGE rttStage = L2_GetRttFsm(instPtr)->rttStatge;
|
||||||
L2_RTT_SATGE rttStage = RTT_GetCurrentStage(rttFsmPtr);
|
|
||||||
if(rttStage == RTT_REQ1 || rttStage == RTT_REQ2){
|
if(rttStage == RTT_REQ1 || rttStage == RTT_REQ2){
|
||||||
for (int i = 0; i < ARRAY_SIZE(rttReqFrameMsgs); i++) {
|
for (int i = 0; i < ARRAY_SIZE(rttReqFrameMsgs); i++) {
|
||||||
memcpy(mgmtMsg->words,
|
memcpy(mgmtMsg->words,
|
||||||
@@ -840,15 +846,16 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: Reset of tracking message src
|
|
||||||
RstNodeTTL(instPtr->nodeList, rttMsgRspLog->srcAddr & 0x001F);
|
RstNodeTTL(instPtr->nodeList, rttMsgRspLog->srcAddr & 0x001F);
|
||||||
if((rttMsgRspLog->srcAddr&0x001F) == instPtr->config.headId){
|
// TODO: Check
|
||||||
|
if((rttMsgRspLog->srcAddr&0x001F) == L2_GetHeadId(instPtr)){
|
||||||
L2_TimeAlign(instPtr, L2_GetCurrentFrameNum(instPtr), L2_GetCurrentSlotNum(instPtr));
|
L2_TimeAlign(instPtr, L2_GetCurrentFrameNum(instPtr), L2_GetCurrentSlotNum(instPtr));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
DBG_ERROR("Cannot handle frame type [%d] properly.\n", L2_GetLastRcvFrameType(instPtr));
|
DBG_ERROR("Cannot handle frame type [%d] properly.\n", L2_GetLastFrameType(instPtr));
|
||||||
Status = EPARAM;
|
Status = EPARAM;
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
@@ -884,8 +891,6 @@ static bool IsTTLValid(NODE_ENTRY* entry) {
|
|||||||
int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
||||||
ASSERT(instPtr != NULL);
|
ASSERT(instPtr != NULL);
|
||||||
int32_t Status;
|
int32_t Status;
|
||||||
RTT_DATA *rttData = &(instPtr->mgmtNetFSM->rttData);
|
|
||||||
RTT_RECORD *rttRecord = &(L2_GetRttDesc(instPtr)->rttRecord);
|
|
||||||
DBG_INFO("-------- MgmtNet Routine --------\n");
|
DBG_INFO("-------- MgmtNet Routine --------\n");
|
||||||
|
|
||||||
if(rtneEntry->slotSeq != 0){
|
if(rtneEntry->slotSeq != 0){
|
||||||
@@ -897,12 +902,12 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
|||||||
|
|
||||||
// Determine next slot TOR state.
|
// Determine next slot TOR state.
|
||||||
L2_TOR_TYPE torState = L2_TOR_SUSPEND;
|
L2_TOR_TYPE torState = L2_TOR_SUSPEND;
|
||||||
if ((rtneEntry->src0 == instPtr->myInfo.nodeId)
|
if ((rtneEntry->src0 == L2_GetNodeId(instPtr))
|
||||||
|| (rtneEntry->src1 == instPtr->myInfo.nodeId)) {
|
|| (rtneEntry->src1 == L2_GetNodeId(instPtr))) {
|
||||||
torState = L2_TOR_TX;
|
torState = L2_TOR_TX;
|
||||||
}
|
}
|
||||||
else if ((rtneEntry->dst0 == instPtr->myInfo.nodeId)
|
else if ((rtneEntry->dst0 == L2_GetNodeId(instPtr))
|
||||||
|| (rtneEntry->dst1 == instPtr->myInfo.nodeId)) {
|
|| (rtneEntry->dst1 == L2_GetNodeId(instPtr))) {
|
||||||
torState = L2_TOR_RX;
|
torState = L2_TOR_RX;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -962,7 +967,7 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
|||||||
|
|
||||||
/*************************************************/
|
/*************************************************/
|
||||||
// Update link layer state...
|
// Update link layer state...
|
||||||
if (instPtr->myInfo.nodeType == HEAD_NODE) {
|
if (L2_GetNodeType(instPtr) == HEAD_NODE) {
|
||||||
L2_NODE_STATE newState = NONE_STATE;
|
L2_NODE_STATE newState = NONE_STATE;
|
||||||
L2_EVENT stateEvent = {
|
L2_EVENT stateEvent = {
|
||||||
.event = L2_EV_MAIN_STATE_UPDATE,
|
.event = L2_EV_MAIN_STATE_UPDATE,
|
||||||
@@ -980,7 +985,7 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{ // MEMBER_NODE or BACKUP_HEAD
|
else{ // MEMBER_NODE or BACKUP_HEAD
|
||||||
if(IsNodeInList(instPtr->nodeList, instPtr->config.headId) == false){
|
if(IsNodeInList(instPtr->nodeList, L2_GetHeadId(instPtr)) == false){
|
||||||
L2_NODE_STATE newState = INIT_STATE;
|
L2_NODE_STATE newState = INIT_STATE;
|
||||||
L2_EVENT stateEvent = {
|
L2_EVENT stateEvent = {
|
||||||
.event = L2_EV_MAIN_STATE_UPDATE,
|
.event = L2_EV_MAIN_STATE_UPDATE,
|
||||||
@@ -992,7 +997,7 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
|||||||
.msg = NULL
|
.msg = NULL
|
||||||
};
|
};
|
||||||
AssertL2Event(instPtr, &lostCxnEvent);
|
AssertL2Event(instPtr, &lostCxnEvent);
|
||||||
DBG_WARNING("Lost connection with head node [%d].\n", instPtr->config.headId);
|
DBG_WARNING("Lost connection with head node [%d].\n", L2_GetHeadId(instPtr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
|||||||
@@ -76,10 +76,10 @@ static int UduHeader_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, uint8_t dst, u
|
|||||||
dataChunk = dataLen;
|
dataChunk = dataLen;
|
||||||
FrameInsertChunk(bitarr, UDUH_LENGTH_OFFSET, UDUH_LENGTH_LEN, dataChunk);
|
FrameInsertChunk(bitarr, UDUH_LENGTH_OFFSET, UDUH_LENGTH_LEN, dataChunk);
|
||||||
// source node id
|
// source node id
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)|((instPtr->myInfo.clustId & 0x1F) << 5);
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F)|((L2_GetClusterId(instPtr) & 0x1F) << 5);
|
||||||
FrameInsertChunk(bitarr, UDUH_SRC_ADDR_OFFSET, UDUH_SRC_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, UDUH_SRC_ADDR_OFFSET, UDUH_SRC_ADDR_LEN, dataChunk);
|
||||||
// destination node id
|
// destination node id
|
||||||
dataChunk = (dst & 0x1F)|((instPtr->myInfo.clustId & 0x1F) << 5);
|
dataChunk = (dst & 0x1F)|((L2_GetClusterId(instPtr) & 0x1F) << 5);
|
||||||
FrameInsertChunk(bitarr, UDUH_DST_ADDR_OFFSET, UDUH_DST_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, UDUH_DST_ADDR_OFFSET, UDUH_DST_ADDR_LEN, dataChunk);
|
||||||
// UDU Sequence number
|
// UDU Sequence number
|
||||||
dataChunk = 0;
|
dataChunk = 0;
|
||||||
@@ -126,10 +126,10 @@ static int PduHeader_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_PDU_HEADER_
|
|||||||
dataChunk = INTRA_SVC_FRAME_LENGTH_MAX;
|
dataChunk = INTRA_SVC_FRAME_LENGTH_MAX;
|
||||||
FrameInsertChunk(bitarr, PDUH0_LENGTH_OFFSET, PDUH0_LENGTH_LEN, dataChunk);
|
FrameInsertChunk(bitarr, PDUH0_LENGTH_OFFSET, PDUH0_LENGTH_LEN, dataChunk);
|
||||||
// source node id
|
// source node id
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)|((instPtr->myInfo.clustId & 0x1F) << 5);
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F)|((L2_GetClusterId(instPtr) & 0x1F) << 5);
|
||||||
FrameInsertChunk(bitarr, PDUH0_SRC_ADDR_OFFSET, PDUH0_SRC_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, PDUH0_SRC_ADDR_OFFSET, PDUH0_SRC_ADDR_LEN, dataChunk);
|
||||||
// destination node id
|
// destination node id
|
||||||
dataChunk = (dst & 0x1F)|((instPtr->myInfo.clustId & 0x1F) << 5);
|
dataChunk = (dst & 0x1F)|((L2_GetClusterId(instPtr) & 0x1F) << 5);
|
||||||
FrameInsertChunk(bitarr, PDUH0_DST_ADDR_OFFSET, PDUH0_DST_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, PDUH0_DST_ADDR_OFFSET, PDUH0_DST_ADDR_LEN, dataChunk);
|
||||||
// Sequence number
|
// Sequence number
|
||||||
dataChunk = 0;
|
dataChunk = 0;
|
||||||
@@ -149,10 +149,10 @@ static int PduHeader_Packing(L2_INST* instPtr, BIT_ARRAY* bitarr, L2_PDU_HEADER_
|
|||||||
dataChunk = INTRA_SVC_FRAME_LENGTH_MAX;
|
dataChunk = INTRA_SVC_FRAME_LENGTH_MAX;
|
||||||
FrameInsertChunk(bitarr, PDUH1_LENGTH_OFFSET, PDUH1_LENGTH_LEN, dataChunk);
|
FrameInsertChunk(bitarr, PDUH1_LENGTH_OFFSET, PDUH1_LENGTH_LEN, dataChunk);
|
||||||
// source node id
|
// source node id
|
||||||
dataChunk = (instPtr->myInfo.nodeId & 0x1F)|((instPtr->myInfo.clustId & 0x1F) << 5);
|
dataChunk = (L2_GetNodeId(instPtr) & 0x1F)|((L2_GetClusterId(instPtr) & 0x1F) << 5);
|
||||||
FrameInsertChunk(bitarr, PDUH1_SRC_ADDR_OFFSET, PDUH1_SRC_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, PDUH1_SRC_ADDR_OFFSET, PDUH1_SRC_ADDR_LEN, dataChunk);
|
||||||
// destination node id
|
// destination node id
|
||||||
dataChunk = (dst & 0x1F)|((instPtr->myInfo.clustId & 0x1F) << 5);
|
dataChunk = (dst & 0x1F)|((L2_GetClusterId(instPtr) & 0x1F) << 5);
|
||||||
FrameInsertChunk(bitarr, PDUH1_DST_ADDR_OFFSET, PDUH1_DST_ADDR_LEN, dataChunk);
|
FrameInsertChunk(bitarr, PDUH1_DST_ADDR_OFFSET, PDUH1_DST_ADDR_LEN, dataChunk);
|
||||||
// Slice tage...
|
// Slice tage...
|
||||||
// Append CRC
|
// Append CRC
|
||||||
@@ -229,10 +229,10 @@ int32_t ServiceNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Determine TOR State.
|
// Determine TOR State.
|
||||||
if(rtneEntry->src0 == instPtr->myInfo.nodeId){
|
if(rtneEntry->src0 == L2_GetNodeId(instPtr)){
|
||||||
torState = L2_TOR_TX;
|
torState = L2_TOR_TX;
|
||||||
}
|
}
|
||||||
else if(rtneEntry->dst0 == instPtr->myInfo.nodeId){
|
else if(rtneEntry->dst0 == L2_GetNodeId(instPtr)){
|
||||||
torState = L2_TOR_RX;
|
torState = L2_TOR_RX;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ int MPC_StateUpload(MPC_INST* instPtr , uint8_t* mgmtBuffer , uint32_t mgmtMsgC
|
|||||||
|
|
||||||
// TODO : Currently DJ is node 1 , only Byte 1 is activate , others is useless
|
// TODO : Currently DJ is node 1 , only Byte 1 is activate , others is useless
|
||||||
// Topo node 1
|
// Topo node 1
|
||||||
dataChunk = BIT(linkInstPtr->myInfo.nodeId - 1);
|
dataChunk = BIT(L2_GetNodeId(linkInstPtr) - 1);
|
||||||
if (GetNodeNum(linkInstPtr->nodeList) > 1 ) {
|
if (GetNodeNum(linkInstPtr->nodeList) > 1 ) {
|
||||||
for(int i = 1; i <= linkInstPtr->config.netScale; i++){
|
for(int i = 1; i <= linkInstPtr->config.netScale; i++){
|
||||||
if (IsNodeInList(linkInstPtr->nodeList, i)) {
|
if (IsNodeInList(linkInstPtr->nodeList, i)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user