⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac_802_15_4.h

📁 csma协议
💻 H
📖 第 1 页 / 共 5 页
字号:
// /**// 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 + -