亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mac.c

?? zigbee location examples
?? C
?? 第 1 頁 / 共 4 頁
字號:
    // Increment payload pointer when counters inserted
    pPayload += temp;

    // Include command payload length and optional MIC (integrity code) length
    temp += CMD_ASSOCIATION_REQUEST_PAYLOAD_LENGTH + pPacket->securitySetup.micLength;

#else
    // No security material included, set MAC payload length
    temp = CMD_ASSOCIATION_REQUEST_PAYLOAD_LENGTH;
#endif

    // Set the packet length (two bytes of payload)
    pPacket->length = (BYTE)(pPacket->headerLength + temp + MAC_FCS_LENGTH);

    // Generate the payload
    *(pPayload++) = capabilityInformation;

    // Calculate the packet duration
    pPacket->duration = msupCalcPacketDuration(pPacket->length, TRUE);

    // Reserve the transmission task
    do {
        taskNumber = mschReserveTask();
    } while (taskNumber == NO_TASK);

    // Initiate the transmission
    mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);

} // mlmeAssociateRequest





//-------------------------------------------------------------------------------------------------------
//  void mlmeAssociateResponse(ADDRESS *pDeviceAddress, WORD assocShortAddress, MAC_ENUM status, ...
//
//  DESCRIPTION:
//      Used by a ccordinator to respond to an association indication. The response is placed in the
//      indirect transmission queue.
//      Generates a mlmeCommStatusIndication callback upon completion
//
//  PARAMETERS:
//      ADDRESS *pDeviceAddress
//          Pointer to the extended address of the associated device
//      WORD assocShortAddress
//          The assigned short address
//      MAC_ENUM status
//          The association status
//      BOOL securityEnable
//          Security is enabled?
//-------------------------------------------------------------------------------------------------------
#if MAC_OPT_FFD
ROOT void mlmeAssociateResponse(ADDRESS *pDeviceAddress, WORD assocShortAddress, MAC_ENUM status,
                                BOOL securityEnable) {
    MAC_TX_PACKET   *pPacket;
    BYTE            txOptions;
    UINT8           temp;
    BYTE            *pPayload;
    MAC_ENUM        commStatusError;
    BYTE            taskNumber;

    securityEnable = FALSE;
    if (securityEnable == TRUE)
      securityEnable = FALSE;

    // Reserve an indirect packet to use with the TX engine
    pPacket = mtxpReservePacket();
    if (!pPacket) {
        commStatusError = TRANSACTION_OVERFLOW;
        mlmeCommStatusIndication(mpib.macPANId, AM_EXTENDED_64, (ADDRESS  *) &aExtendedAddress,
                                 AM_EXTENDED_64, pDeviceAddress, commStatusError);
        return;
    }

    // TX mode
    pPacket->txMode = MTX_MODE_USE_CSMACA_BM;
    pPacket->retriesLeft = aMaxFrameRetries;

    // Set TX options
    txOptions = TX_OPT_ACK_REQ | TX_OPT_INDIRECT;
#if MAC_OPT_SECURITY
    if (securityEnable) txOptions |= TX_OPT_SECURITY_ENABLE;
#endif

    // Generate the packet header
    msupPrepareHeader(pPacket, FT_MAC_COMMAND, DEST_ADDR_EXT | SRC_ADDR_EXT, mpib.macPANId,
                      (ADDRESS   *) &aExtendedAddress, mpib.macPANId, pDeviceAddress, txOptions);

    // Store the command type
    pPacket->commandType = CMD_ASSOCIATION_RESPONSE;

    // Command frame identifier
    pPayload = pPacket->pPayload;
    *(pPayload++) = CMD_ASSOCIATION_RESPONSE;

#if MAC_OPT_SECURITY
    // #bytes in frame counter + key sequence counter (0 or 5)
    temp = msecProcessSecurityCounters(pPacket, pPayload);

    // In case of frame counter overflow or missing key
    // Generate error with FAILED_SECURITY_CHECK or UNAVAILABLE_KEY
    if (pPacket->securitySuite >= 8) {
        commStatusError = pPacket->securitySuite;
        mtxpReleasePacket(pPacket);
        mlmeCommStatusIndication(mpib.macPANId, AM_EXTENDED_64, (ADDRESS  *) &aExtendedAddress,
                                 AM_EXTENDED_64, pDeviceAddress, commStatusError);
        return;
    }

    // Increment payload pointer when counters inserted
    pPayload += temp;

    // Include command payload length and optional MIC (integrity code) length
    temp += CMD_ASSOCIATION_RESPONSE_PAYLOAD_LENGTH + pPacket->securitySetup.micLength;

#else
    // No security material included, set MAC payload length
    temp = CMD_ASSOCIATION_RESPONSE_PAYLOAD_LENGTH;
#endif

    // Set the packet length (four bytes of payload)
    pPacket->length = pPacket->headerLength + temp + MAC_FCS_LENGTH;

    // Generate the payload
    *(pPayload++) = (BYTE) assocShortAddress;
    *(pPayload++) = (BYTE) ((assocShortAddress & 0xFF00) >> 8);
    *(pPayload++) = (BYTE) status;

    // Calculate the packet duration
    pPacket->duration = msupCalcPacketDuration(pPacket->length, TRUE);

    // Initiate the transmission
    do {
        taskNumber = mschReserveTask();
    } while (taskNumber == NO_TASK);
    mschAddTask(taskNumber, MAC_TASK_PRI_MEDIUM, miqAddIndirectPacket, (WORD) pPacket);

} // mlmeAssociateResponse
#endif // MAC_OPT_FFD




//-------------------------------------------------------------------------------------------------------
//  void mlmeDisassociateRequest(ADDRESS *pDeviceAddress, BYTE disassociateReason, BOOL securityEnable)
//
//  DESCRIPTION:
//      Used by an associated device to notify the coordinator of its intent to leave the PAN or
//      used by the coordinator to instruct an associated device to leave the PAN. pDeviceAddress is a
//      pointer to the extended address of the device to which to send the disassociation notification
//      command.
//
//  PARAMETERS:
//      ADDRESS *pDeviceAddress
//          For coordinators: A pointer to the extended address of the device to disassociate
//          For devices: A pointer to the extended address of coordinator
//      BYTE disassociateReason
//          The disassociate reason (COORD_WISHES_DEVICE_TO_LEAVE | DEVICE_WISHES_TO_LEAVE)
//      BOOL securityEnable
//          Security is enabled?
//-------------------------------------------------------------------------------------------------------
ROOT void mlmeDisassociateRequest(ADDRESS *pDeviceAddress, BYTE disassociateReason, BOOL securityEnable) {
    MAC_TX_PACKET   *pPacket;
    BYTE txOptions;
    UINT8 temp;
    BYTE   *pPayload;
    BYTE   taskNumber;

    // Set TX options
    txOptions = TX_OPT_ACK_REQ;
#if MAC_OPT_SECURITY
    if (securityEnable) {
        txOptions |= TX_OPT_SECURITY_ENABLE;
    }
#else
    // Only added to avoid compiler warnings
    if (securityEnable == TRUE)
      temp = securityEnable;
#endif

    // Device -> Coordinator: Use direct transmission
    if (msupCompareExtendedAddress((ADDRESS  *) mpib.pMacCoordExtendedAddress, pDeviceAddress)) {

        // Reserve the packet to be used
        do {
            pPacket = mtxpReservePacket();
        } while (pPacket == NULL);

    } else {
#if MAC_OPT_FFD
        // Coordinator -> Device: Use indirect transmission
        if (GET_MF(MF_COORDINATOR)) {

            // Start by trying to reserve a TX packet
            pPacket = mtxpReservePacket();
            if (!pPacket) {
                mlmeDisassociateConfirm(TRANSACTION_OVERFLOW);
                return;
            }

            // Set the indirect transmission flag
            txOptions |= TX_OPT_INDIRECT;

        // Device -> Device: Error
        } else {
            mlmeDisassociateConfirm(INVALID_PARAMETER);
            return;
        }

#else // RFD
        mlmeDisassociateConfirm(INVALID_PARAMETER);
        return;
#endif
    }

    // Set transmission mode
    pPacket->txMode = MTX_MODE_USE_CSMACA_BM;
    pPacket->retriesLeft = aMaxFrameRetries;

    // Generate the packet header
    msupPrepareHeader(pPacket, FT_MAC_COMMAND, (DEST_ADDR_EXT | SRC_ADDR_EXT),
                      mpib.macPANId, (ADDRESS   *) &aExtendedAddress, mpib.macPANId,
                      (ADDRESS   *) pDeviceAddress, txOptions);

    // Store the command type
    pPacket->commandType = CMD_DISASSOCIATION_NOTIFICATION;

    // Command frame identifier
    pPayload = pPacket->pPayload;
    *(pPayload++) = CMD_DISASSOCIATION_NOTIFICATION;

#if MAC_OPT_SECURITY
    // #bytes in frame counter + key sequence counter (0 or 5)
    temp = msecProcessSecurityCounters(pPacket, pPayload);

    // In case of frame counter overflow or missing key
    // Generate error with FAILED_SECURITY_CHECK or UNAVAILABLE_KEY
    if (pPacket->securitySuite >= 8) {
        mtxpReleasePacket(pPacket);
        mlmeDisassociateConfirm(pPacket->securitySuite);
        return;
    }

    // Increment payload pointer when counters inserted
    pPayload += temp;

    // Include command payload length and optional MIC (integrity code) length
    temp += CMD_DISASSOCIATION_NOTIFICATION_PAYLOAD_LENGTH + pPacket->securitySetup.micLength;

#else
    // No security material included, set MAC payload length
    temp = CMD_DISASSOCIATION_NOTIFICATION_PAYLOAD_LENGTH;
#endif

    // Set the packet length (two bytes of payload)
    pPacket->length = pPacket->headerLength + temp + MAC_FCS_LENGTH;

    // Generate the payload
    *(pPayload++) = (BYTE) disassociateReason;

    // Calculate the packet duration
    pPacket->duration = msupCalcPacketDuration(pPacket->length, TRUE);

    // Initiate the transmission
    do {
        taskNumber = mschReserveTask();
    } while (taskNumber == NO_TASK);


#if MAC_OPT_FFD
    if (txOptions & TX_OPT_INDIRECT) {
        mschAddTask(taskNumber, MAC_TASK_PRI_MEDIUM, miqAddIndirectPacket, (WORD) pPacket);
    } else {
        mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
    }
#else
    mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
#endif // MAC_OPT_FFD

} // mlmeDisassociateRequest




//-------------------------------------------------------------------------------------------------------
//  void mlmeRxEnableRequest(BOOL deferPermit, UINT32 rxOnTime, UINT32 rxOnDuration)
//
//  DESCRIPTION:
//      Enable the receiver for after a given timeout (in symbols), and turn it off after the given
//      duration (also in symbols). An rxOnDuration = 0 will immediately shut down the receiver.
//      Note: Do NOT use on beacon networks, set RX_ON_WHEN_IDLE to TRUE in stead
//
//  PARAMETERS:
//      BOOL deferPermit
//          Reception can be deferred until the next superframe
//      UINT32 rxOnTime
//          The number of symbols to elapse before the receiver should be turned on
//      UINT32 rxOnDuration
//          The number of symbols to listen before turning the receiver off
//-------------------------------------------------------------------------------------------------------
ROOT void mlmeRxEnableRequest(BOOL deferPermit, UINT32 rxOnTime, UINT32 rxOnDuration) {
    BYTE taskNumber;

    // Store the time values for use by the task
    mrxInfo.rxEnableOnDuration = (rxOnDuration + (aUnitBackoffPeriod - 1)) / aUnitBackoffPeriod;

    do {
        taskNumber = mschReserveTask();
    } while (taskNumber == NO_TASK);

    while (!mschAddTask(taskNumber, MAC_TASK_PRI_MEDIUM, mrxRxEnableRequestTask, NULL));

} // mlmeRxEnableRequest




//-------------------------------------------------------------------------------------------------------
//  MAC_ENUM mcpsPurgeRequest(BYTE msduHandle)
//
//  DESCRIPTION:
//      Purge data frames from the indirect data transmission queue
//
//  PARAMETERS:
//      BYTE msduHandle
//          The packet handle (from mcpsDataRequest(...))
//
//  RETURN VALUE:
//      MAC_ENUM
//          SUCCESS: OK
//          INVALID_HANDLE: The packet could not be found (already transmitted?)
//-------------------------------------------------------------------------------------------------------
#if MAC_OPT_FFD
ROOT MAC_ENUM mcpsPurgeRequest(BYTE msduHandle) {
    UINT8 packetIndex;
    MAC_TX_PACKET   *pIndirectPacket;

    // For each packet in the queue ...
restart:
    packetIndex = miqInfo.firstIndirectPacket;
    while (packetIndex != NO_PACKET) {
        pIndirectPacket = &pMtxPacketPool[packetIndex];

        // If there's a match on the MSDU handle
        if ((pIndirectPacket->msduHandle == msduHandle) && (pIndirectPacket->type == FT_DATA)) {

            // Just wait if the packet has been requested (we shouldn't interfere with the transmission)
            if (pIndirectPacket->requested) {
                goto restart;
            } else {
                pIndirectPacket->purgeRequest = TRUE;
                pIndirectPacket->timeToLive = MIQ_PACKET_PURGED;
                mschAddTask(mschReserveTask(), MAC_TASK_PRI_MEDIUM, miqExpireIndirectPacketsTask, (WORD) pIndirectPacket);
                return SUCCESS;
            }
        }

        // Move to the next packet in the queue
        packetIndex = pIndirectPacket->nextPacket;
    }

    return INVALID_HANDLE;

} // mcpsPurgeRequest
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91久久久久久一区二区| 免费在线观看一区| 99热99精品| 亚洲一区二区三区免费视频| 欧美美女激情18p| 欧美一二三区在线| 亚洲一本大道在线| 亚洲欧美成人一区二区三区| 91.xcao| 正在播放一区二区| 在线影视一区二区三区| 欧美日韩视频在线第一区| 欧美日韩一区视频| 欧美一区二区免费| 欧美精品一区二区在线播放| 国产欧美视频一区二区三区| 亚洲国产经典视频| 一区二区三区不卡视频在线观看| 亚洲6080在线| 精品在线播放免费| 99在线精品免费| 欧美日韩精品久久久| 欧美大片在线观看一区| 国产精品成人一区二区艾草 | 91在线观看美女| 91亚洲永久精品| 精品视频一区二区不卡| 欧美mv和日韩mv的网站| 中文字幕日本乱码精品影院| 亚洲h在线观看| 风间由美一区二区三区在线观看| 91污在线观看| 久久久综合激的五月天| 亚洲精品日韩综合观看成人91| 五月激情综合婷婷| 成人天堂资源www在线| 欧美日韩久久一区二区| 国产视频一区二区在线观看| 一区二区三区自拍| 精品一区二区在线看| 91色porny在线视频| 精品黑人一区二区三区久久| 亚洲丝袜另类动漫二区| 美女任你摸久久| 欧美午夜影院一区| 中文字幕免费一区| 卡一卡二国产精品 | 亚洲丝袜制服诱惑| 久久疯狂做爰流白浆xx| 欧美性猛交xxxx乱大交退制版 | 一级精品视频在线观看宜春院 | 美女在线视频一区| 欧洲精品一区二区| 国产精品传媒入口麻豆| 国模一区二区三区白浆 | 在线观看区一区二| 国产三区在线成人av| 奇米影视在线99精品| 欧美优质美女网站| 中文字幕一区三区| 国产成人综合精品三级| 欧美丰满一区二区免费视频| 亚洲欧美区自拍先锋| kk眼镜猥琐国模调教系列一区二区| 日韩欧美区一区二| 青青草精品视频| 这里只有精品免费| 丝袜美腿亚洲色图| 欧美三级电影在线看| 亚洲精品久久久久久国产精华液| 国产成人免费视频网站高清观看视频| 日韩视频一区二区三区 | 亚洲第一成人在线| 在线视频观看一区| 最新不卡av在线| www.日韩精品| 亚洲色图在线看| 91麻豆自制传媒国产之光| 国产精品久久福利| av成人免费在线观看| 国产精品污www在线观看| 国产.欧美.日韩| 国产精品第四页| 日本电影亚洲天堂一区| 自拍偷拍国产精品| 欧美亚洲一区二区在线| 亚洲va天堂va国产va久| 欧美日韩成人一区| 日韩电影在线免费| 日韩视频免费观看高清完整版 | 色婷婷av一区二区| 亚洲已满18点击进入久久| 在线看日韩精品电影| 亚洲国产精品尤物yw在线观看| 欧美日韩欧美一区二区| 日本少妇一区二区| 久久久综合精品| 91美女片黄在线观看91美女| 亚洲午夜电影在线| 欧美一区二区三区免费大片| 激情丁香综合五月| 中文字幕在线免费不卡| 色爱区综合激月婷婷| 日韩精品乱码av一区二区| www国产成人免费观看视频 深夜成人网| 国产一区二区三区四区在线观看 | 91老师国产黑色丝袜在线| 一区二区三区欧美日韩| 欧美高清激情brazzers| 国精产品一区一区三区mba视频 | 国产裸体歌舞团一区二区| 中文无字幕一区二区三区| 91福利小视频| 久久99深爱久久99精品| 18涩涩午夜精品.www| 欧美一区二区三区四区视频 | 国产精品久久久久久久久久久免费看 | 久久99精品国产麻豆婷婷| 国产精品你懂的在线欣赏| 欧美精品第一页| 成人黄色小视频| 日产精品久久久久久久性色 | 久久伊人中文字幕| 色88888久久久久久影院野外| 蜜臀精品久久久久久蜜臀| 国产精品污网站| 日韩女优av电影| 色欧美88888久久久久久影院| 国模冰冰炮一区二区| 亚洲一区二区视频在线| 国产亚洲综合色| 555夜色666亚洲国产免| 91丝袜美腿高跟国产极品老师 | 亚洲女同ⅹxx女同tv| 精品剧情在线观看| 欧美在线|欧美| 不卡的av在线| 国产一区二区三区日韩| 亚洲成人动漫在线观看| 亚洲丝袜另类动漫二区| 国产三级一区二区| 欧美大白屁股肥臀xxxxxx| 欧美久久久久久蜜桃| 91久久免费观看| aaa国产一区| 高清shemale亚洲人妖| 蜜桃视频在线一区| 午夜精品久久久久久久| 亚洲精品第1页| 中文字幕视频一区| 亚洲国产高清在线| 久久久久久久久久久久久女国产乱| 欧美一区二区在线免费播放| 日本国产一区二区| 色哟哟在线观看一区二区三区| www.色精品| a在线欧美一区| 成人精品在线视频观看| 国产精品一区2区| 国产精一区二区三区| 国产一区二区三区免费看| 九九**精品视频免费播放| 乱中年女人伦av一区二区| 日韩成人精品在线观看| 蜜桃精品在线观看| 久久国产精品99久久久久久老狼| 裸体健美xxxx欧美裸体表演| 麻豆91精品视频| 国产伦精品一区二区三区视频青涩| 狠狠久久亚洲欧美| 国产精品亚洲一区二区三区在线| 国产曰批免费观看久久久| 国产毛片精品视频| 成人午夜视频在线观看| 91麻豆国产自产在线观看| 91在线视频观看| 欧美日韩精品欧美日韩精品一综合| 欧美美女直播网站| 欧美成人伊人久久综合网| 久久久91精品国产一区二区精品| 国产三级一区二区| 自拍偷拍欧美激情| 天天做天天摸天天爽国产一区| 久久se这里有精品| 国产91精品入口| 欧美色精品天天在线观看视频| 91精品国产麻豆国产自产在线| 精品国产91乱码一区二区三区| 中文字幕 久热精品 视频在线| 亚洲婷婷综合色高清在线| 图片区日韩欧美亚洲| 国产一区二区三区在线观看精品 | 国内久久婷婷综合| 成人av在线观| 欧美久久高跟鞋激| 久久精品亚洲麻豆av一区二区| 亚洲毛片av在线| 久久99精品久久久| 日本乱人伦一区| 久久综合久久99|