📄 mac_802_15_4.h
字号:
// /**// FUNCTION :: Mac802_15_4FrameCtrlSetFrmType// LAYER :: Mac// PURPOSE :: This function is called for setting Frame Type.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + frmType : UInt8 : Frame type// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetFrmType( M802_15_4FrameCtrl* frameCtrl, UInt8 frmType){ frameCtrl->frmType = frmType; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0x1fff) + (frmType << 13);}// /**// FUNCTION :: Mac802_15_4FrameCtrlSetSecu// LAYER :: Mac// PURPOSE :: TThis function is called for setting security.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + sc : BOOL : Security enabled or disabled// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetSecu(M802_15_4FrameCtrl* frameCtrl, BOOL sc){ frameCtrl->secu = sc; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0xefff); if (sc == TRUE) { frameCtrl->FrmCtrl += 0x1000; }}// /**// FUNCTION :: Mac802_15_4FrameCtrlSetFrmPending// LAYER :: Mac// PURPOSE :: This function is called for setting Pending flag.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + pending : BOOL : Pending true or not// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetFrmPending( M802_15_4FrameCtrl* frameCtrl, BOOL pending){ frameCtrl->frmPending = pending; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0xf7ff); if (pending == TRUE) { frameCtrl->FrmCtrl += 0x0800; }}// /**// FUNCTION :: Mac802_15_4FrameCtrlSetAckReq// LAYER :: Mac// PURPOSE :: This function is called for setting ACK flag.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + ack : BOOL : ACK true or not// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetAckReq(M802_15_4FrameCtrl* frameCtrl, BOOL ack){ frameCtrl->ackReq = ack; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0xfbff); if (ack == TRUE) { frameCtrl->FrmCtrl += 0x0400; }}// /**// FUNCTION :: Mac802_15_4FrameCtrlSetIntraPan// LAYER :: Mac// PURPOSE :: This function is called for setting IntraPAN flag.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + intrapan : BOOL : Intra-PAN true or not// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetIntraPan( M802_15_4FrameCtrl* frameCtrl, BOOL intrapan){ frameCtrl->intraPan = intrapan; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0xfdff); if (intrapan) { frameCtrl->FrmCtrl += 0x0200; }}// /**// FUNCTION :: Mac802_15_4FrameCtrlSetDstAddrMode// LAYER :: Mac// PURPOSE :: This function is called for setting destination addr mode.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + dstmode : UInt8 : Destination mode// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetDstAddrMode( M802_15_4FrameCtrl* frameCtrl, UInt8 dstmode){ frameCtrl->dstAddrMode = dstmode; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0xffcf) + (dstmode << 4);}// /**// FUNCTION :: Mac802_15_4FrameCtrlSetSrcAddrMode// LAYER :: Mac// PURPOSE :: This function is called for setting source address mode.// PARAMETERS ::// + frameCtrl : M802_15_4FrameCtrl* : Pointer to Frame Control// + srcmode : UInt8 : Source mode// RETURN :: None.// **/staticvoid Mac802_15_4FrameCtrlSetSrcAddrMode( M802_15_4FrameCtrl* frameCtrl, UInt8 srcmode){ frameCtrl->srcAddrMode = srcmode; frameCtrl->FrmCtrl = (frameCtrl->FrmCtrl & 0xfffc) + srcmode;}// /**// FUNCTION :: Mac802_15_4SuperFrameParse// LAYER :: Mac// PURPOSE :: This function is called for parsing Super Frame fields.// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameParse(M802_15_4SuperframeSpec* superSpec){ superSpec->BO = (UInt8)((superSpec->SuperSpec & 0xf000) >> 12); superSpec->BI = aBaseSuperframeDuration * (1 << superSpec->BO); superSpec->SO = (UInt8)((superSpec->SuperSpec & 0x0f00) >> 8); superSpec->SD = aBaseSuperframeDuration * (1 << superSpec->SO);//duration superSpec->sd = aBaseSlotDuration * (1 << superSpec->SO); superSpec->FinCAP = (UInt8)((superSpec->SuperSpec & 0x00f0) >> 4); superSpec->BLE = ((superSpec->SuperSpec & 0x0008) == 0)?FALSE:TRUE; superSpec->PANCoor = ((superSpec->SuperSpec & 0x0002) == 0)?FALSE:TRUE; superSpec->AssoPmt = ((superSpec->SuperSpec & 0x0001) == 0)?FALSE:TRUE;}// /**// FUNCTION :: Mac802_15_4SuperFrameSetBO// LAYER :: Mac// PURPOSE :: This function is called for setting BO.// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// + bo : UInt8 : BO value// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameSetBO( M802_15_4SuperframeSpec* superSpec, UInt8 bo){ superSpec->BO = bo; superSpec->BI = aBaseSuperframeDuration * (1 << superSpec->BO); superSpec->SuperSpec = (superSpec->SuperSpec & 0x0fff) + (bo << 12);}// /**// FUNCTION :: Mac802_15_4SuperFrameSetSO// LAYER :: Mac// PURPOSE :: This function is called for setting SO.// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// + so : UInt8 : SO value// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameSetSO( M802_15_4SuperframeSpec* superSpec, UInt8 so){ superSpec->SO = so; superSpec->SD = aBaseSuperframeDuration * (1 << superSpec->SO); superSpec->sd = aBaseSlotDuration * (1 << superSpec->SO); superSpec->SuperSpec = (superSpec->SuperSpec & 0xf0ff) + (so << 8);}// /**// FUNCTION :: Mac802_15_4SuperFrameSetFinCAP// LAYER :: Mac// PURPOSE :: This function is called for setting CAP.// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// + fincap : UInt8 : fincap value// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameSetFinCAP( M802_15_4SuperframeSpec* superSpec, UInt8 fincap){ superSpec->FinCAP = fincap; superSpec->SuperSpec = (superSpec->SuperSpec & 0xff0f) + (fincap << 4);}// /**// FUNCTION :: Mac802_15_4SuperFrameSetBLE// LAYER :: Mac// PURPOSE :: This function is called for setting BLE.// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// + ble : BOOL : BLE value// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameSetBLE( M802_15_4SuperframeSpec* superSpec, BOOL ble){ superSpec->BLE = ble; superSpec->SuperSpec = (superSpec->SuperSpec & 0xfff7); if (ble == TRUE) { superSpec->SuperSpec += 8; }}// /**// FUNCTION :: Mac802_15_4SuperFrameSetPANCoor// LAYER :: Mac// PURPOSE :: This function is called for setting whether PAN coordinator.// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// + pancoor : BOOL : PAN Coordinator// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameSetPANCoor( M802_15_4SuperframeSpec* superSpec, BOOL pancoor){ superSpec->PANCoor = pancoor; superSpec->SuperSpec = (superSpec->SuperSpec & 0xfffd); if (pancoor == TRUE) { superSpec->SuperSpec += 2; }}// /**// FUNCTION :: Mac802_15_4SuperFrameSetAssoPmt// LAYER :: Mac// PURPOSE :: This function is called for setting whether Association is// permitted// PARAMETERS ::// + frameCtrl : M802_15_4SuperframeSpec* : Pointer to Super Frame Spec// + assopmt : BOOL : Association permitted// RETURN :: None.// **/staticvoid Mac802_15_4SuperFrameSetAssoPmt( M802_15_4SuperframeSpec* superSpec, BOOL assopmt){ superSpec->AssoPmt = assopmt; superSpec->SuperSpec = (superSpec->SuperSpec & 0xfffe); if (assopmt == TRUE) { superSpec->SuperSpec += 1; }}// /**// FUNCTION :: Mac802_15_4GTSSpecParse// LAYER :: Mac// PURPOSE :: This function is called for parsing GTS specification// PARAMETERS ::// + gtsSpec : M802_15_4GTSSpec* : Pointer to GTS Spec// RETURN :: None.// **/staticvoid Mac802_15_4GTSSpecParse(M802_15_4GTSSpec* gtsSpec){ int i; gtsSpec->count = (gtsSpec->fields.spec & 0xe0) >> 5; gtsSpec->permit = ((gtsSpec->fields.spec & 0x01) != 0)?TRUE:FALSE; for (i=0; i < gtsSpec->count; i++) { gtsSpec->recvOnly[i] = ((gtsSpec->fields.dir & (1<<(7-i))) != 0); gtsSpec->slotStart[i] = (gtsSpec->fields.list[i].slotSpec & 0xf0) >> 4; gtsSpec->length[i] = (gtsSpec->fields.list[i].slotSpec & 0x0f); }}#if 0// /**// FUNCTION :: Mac802_15_4GTSSpecSetCount// LAYER :: Mac// PURPOSE :: This function is called for setting GTS descriptor count// PARAMETERS ::// + gtsSpec : M802_15_4GTSSpec* : Pointer to GTS Spec// + cnt : UInt8 : Count// RETURN :: None.// **/staticvoid Mac802_15_4GTSSpecSetCount( M802_15_4GTSSpec* gtsSpec, UInt8 cnt){ gtsSpec->count = cnt; gtsSpec->fields.spec = (gtsSpec->fields.spec & 0x1f) + (cnt << 5);}#endif// /**// FUNCTION :: Mac802_15_4GTSSpecSetPermit// LAYER :: Mac// PURPOSE :: This function is called for setting GTS permit// PARAMETERS ::// + gtsSpec : M802_15_4GTSSpec* : Pointer to GTS Spec// + pmt : BOOL : Permit// RETURN :: None.// **/staticvoid Mac802_15_4GTSSpecSetPermit( M802_15_4GTSSpec* gtsSpec, BOOL pmt){ gtsSpec->permit = pmt; gtsSpec->fields.spec = (gtsSpec->fields.spec & 0xfe); if (pmt == TRUE) { gtsSpec->fields.spec += 1; }}#if 0// /**// FUNCTION :: Mac802_15_4GTSSpecSetRecvOnly// LAYER :: Mac// PURPOSE :: This function is called for setting receive only on ith slot// PARAMETERS ::// + gtsSpec : M802_15_4GTSSpec* : Pointer to GTS Spec// + ith : UInt8 : ith slot// + rvonly : BOOL : Receive only?// RETURN :: None.// **/staticvoid Mac802_15_4GTSSpecSetRecvOnly( M802_15_4GTSSpec* gtsSpec, UInt8 ith, BOOL rvonly){ gtsSpec->recvOnly[ith] = rvonly; gtsSpec->fields.dir = gtsSpec->fields.dir & ((1<<(7-ith))^0xff); if (rvonly == TRUE) { gtsSpec->fields.dir += (1<<(7-ith)); }}// /**// FUNCTION :: Mac802_15_4GTSSpecSetSlotStart// LAYER :: Mac// PURPOSE :: This function is called for setting slot start on ith slot// PARAMETERS ::// + gtsSpec : M802_15_4GTSSpec* : Pointer to GTS Spec// + ith : UInt8 : ith slot// + st : UInt8 : Start// RETURN :: None.// **/staticvoid Mac802_15_4GTSSpecSetSlotStart( M802_15_4GTSSpec* gtsSpec, UInt8 ith,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -