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

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

?? mac.c

?? zigbee location examples
?? C
?? 第 1 頁 / 共 4 頁
字號:
            } while (taskNumber == NO_TASK);
            waiting = TRUE;
            mschAddTask(taskNumber, MAC_TASK_PRI_LOW, msupWaitTask, (WORD) &waiting);
            while (waiting);
        }

        // Set beacon and superframe order
        firstBeaconNow = (BOOL)!GET_MF(MF_TRANSMIT_BEACON);
        mlmeSetRequest(MAC_BEACON_ORDER, &beaconOrder);

        if (beaconOrder == 15) {
            mpib.macSuperframeOrder = 15;
            CLEAR_MF(MF_TRANSMIT_BEACON);
            firstBeaconNow = FALSE;

            // Release task number and TX packet, if reserved
            if (mbcnInfo.txTaskNumber != NO_TASK) {
                mschReleaseTask(mbcnInfo.txTaskNumber);
                mbcnInfo.txTaskNumber = NO_TASK;
            }
            if (mbcnInfo.pTxPacket != NULL) {
                mtxpReleasePacket(mbcnInfo.pTxPacket);
                mbcnInfo.pTxPacket = NULL;
            }
        } else {
            mpib.macSuperframeOrder = superframeOrder;
        }

        // Prepare to modify the CC2430 PAN coordinator bit
        mdmctrl0 = MDMCTRL0_NO_PAN_COORDINATOR;

        // PAN coordinator?
        if (panCoordinator) {
            // Set the PAN ID
            mlmeSetRequest(MAC_PAN_ID, &panId);

            // Change the RF channel
            msupSetChannel(logicalChannel, TRUE);

            // Set PAN coordinator flags
            SET_MF(MF_PAN_COORDINATOR);
            mdmctrl0 |= PAN_COORDINATOR_BM;

        } else {

            // Just clear the flag
            CLEAR_MF(MF_PAN_COORDINATOR);
        }

        // Set the coordinator flag (used in addition to the PAN coordinator flag)
        SET_MF(MF_COORDINATOR);

        // Set the MDMCTRL0.PAN_COORDINATOR bit (affects address regocnition)
        WRITE_RFR16(MDMCTRL0, mdmctrl0);

        // Other parameters
        if (securityEnable) {
            SET_MF(MF_BEACON_SECURITY);
        } else {
            CLEAR_MF(MF_BEACON_SECURITY);
        }

        // Set battery life extension
        mlmeSetRequest(MAC_BATT_LIFE_EXT, &batteryLifeExtension);

        // Beacon now?
        if (beaconOrder == 15) {
            mtimCancelCallback(mbcnExpirePacketsNonBeacon);
            mtimSetCallback(mbcnExpirePacketsNonBeacon, (UINT32)(aBaseSuperframeDuration / aUnitBackoffPeriod));
        } else if (firstBeaconNow) {
            SET_MF(MF_TRANSMIT_BEACON);

            // Reserve a task number and a TX packet
            if (mbcnInfo.txTaskNumber == NO_TASK) mbcnInfo.txTaskNumber = mschReserveTask();
            if (mbcnInfo.pTxPacket == NULL) mbcnInfo.pTxPacket = mtxpReservePacket();

            // Start transmitting periodical beacons
            T2_SET_OVERFLOW_COUNTER(msupCalcBeaconInterval() - MBCN_TX_STARTUP_OVERHEAD - MBCN_INITIAL_STARTUP_OVERHEAD);
            mbcnTxPeriodicalBeacon ();
        }

        return SUCCESS;
    }

} // mlmeStartRequest
#endif //MAC_OPT_FFD

//-------------------------------------------------------------------------------------------------------
//  void mlmeSyncRequest(UINT8 logicalChannel, BOOL trackBeacon)
//
//  DESCRIPTION:
//      Switch to the selected channel, locate a single beacon, and start or stop tracking beacons
//      (optional).
//
//  PARAMETERS:
//      UINT8 logicalChannel
//          The channel to switch to.
//      BOOL trackBeacon
//          Track beacons if >0.
//-------------------------------------------------------------------------------------------------------
ROOT void mlmeSyncRequest(UINT8 logicalChannel, BOOL trackBeacon) {
    BYTE taskNumber;

    // Reserve a task if we are using beacon network.
    if (mpib.macBeaconOrder != 15) {
        do {
             taskNumber = mschReserveTask();
        } while (taskNumber == NO_TASK);

        // Create the task that will start the synchronization process
        mschAddTask(taskNumber, MAC_TASK_PRI_HIGH, mbcnSyncToBeacons, (((WORD) logicalChannel) << 8) | ((BYTE) trackBeacon));
    }
} // mlmeSyncRequest




//-------------------------------------------------------------------------------------------------------
//  void mlmePollRequest(BYTE coordAddrMode, WORD coordPANId, ADDRESS *pCoordAddress, BOOL ...)
//
//  DESCRIPTION:
//      Poll indirect data from the coordinator
//
//  PARAMETERS:
//      BYTE coordAddrMode
//          The coordinator address mode (AM_SHORT_16 | AM_EXTENDED_64)
//      WORD coordPANId
//          The PAN identifier of the coordinator
//      ADDRESS *pCoordAddress
//          A pointer to the coordinator address (short or extended)
//      BOOL securityEnable
//          Enable security for data-request command frame?
//-------------------------------------------------------------------------------------------------------
ROOT void mlmePollRequest(BYTE coordAddrMode, WORD coordPANId, ADDRESS *pCoordAddress, BOOL securityEnable) {
    MAC_ENUM result;

    // Force switch to manual polling mode
    while (!macSetState(MAC_STATE_TX_MANUAL_DATA_REQUEST));

    // Transmit the data request
    do {
        result = mipTransmitDataRequest(coordAddrMode, coordPANId, pCoordAddress, securityEnable);
    } while (result == RESOURCE_SHORTAGE);

    // Clean up if it failed
    if (result != SUCCESS) macSetState(MAC_STATE_DEFAULT);

} // mlmePollRequest




//-------------------------------------------------------------------------------------------------------
//  MAC_ENUM mlmeScanRequest(BYTE scanType, DWORD scanChannels, UINT8 scanDuration)
//
//  DESCRIPTION:
//      Scan through the selected channels (energy, active, passive and orphan scanning supported).
//      Important:
//          - The maximum number of results returned for active and passive scans is
//            defined by the MAC_OPT_MAX_PAN_DESCRIPTORS (>= 1) mac option
//          - This function will not exit before the scan is completed.
//
//  PARAMETERS:
//      BYTE scanType
//          ENERGY_SCAN, ACTIVE_SCAN, PASSIVE_SCAN or ORPHAN_SCAN
//      DWORD scanChannels
//          The channel index mask (0x07FFF800 are the legal values for 2.4 GHz channels)
//      UINT8 scanDuration
//          The scan duration defines the time spent scanning each channel, defined as:
//              (aBaseSuperframeDuration * (2 ^^ scanDuration + 1)) symbol periods
//              = (60 * 16 * (2^^scanDuration+1)) symbol periods
//          E.g., scanning all 16 channels with Scanduration 5 takes 8.11 seconds
//      MAC_SCAN_RESULT *pScanResult
//          The pointer to the MAC_SCAN_RESULT struct (defined by the higher layer) where
//          the MAC sublayer shall store the scan result.
//
//  RETURN VALUE:
//      MAC_ENUM
//          INVALID_PARAMETER, SUCCESS or NO_BEACON
//-------------------------------------------------------------------------------------------------------
ROOT MAC_ENUM mlmeScanRequest(BYTE               scanType,
                              DWORD              scanChannels,
                              UINT8              scanDuration,
                              MAC_SCAN_RESULT    *pScanResult)
{
    BYTE scanTaskNumber;

    // Set the scan type
    pScanResult->scanType = scanType;

    // Invalid parameters?
    if ((scanType & 0xFC) || ((scanType != ORPHAN_SCAN) && (scanDuration > 14))) {
        return INVALID_PARAMETER;
    }

    // Reserve the scanning task
    do {
        scanTaskNumber = mschReserveTask();
    } while (scanTaskNumber == NO_TASK);

    // Copy the scan parameters
    mscInfo.scanType = scanType;
    mscInfo.scanChannels = scanChannels;
    mscInfo.scanDuration = scanDuration;
    mscInfo.pScanResult = pScanResult;

    // Clear the complete flag
    mscInfo.scanStatus = MSC_STATUS_ACTIVE;

    // Create the task that will perform the actual scanning
    mschAddTask(scanTaskNumber, MAC_TASK_PRI_LOW, mscScanProcedure, NULL);

    // Wait for the scan to complete
    while (mscInfo.scanStatus == MSC_STATUS_ACTIVE);

    // Return the result
    if ((mscInfo.pScanResult->resultListSize != 0) || (scanType == ENERGY_SCAN) || ((scanType == ORPHAN_SCAN) && (mscInfo.scanStatus == MSC_STATUS_ORPHAN_REALIGNED))) {
        return SUCCESS;
    } else {
        return NO_BEACON;
    }

} // mlmeScanRequest




//-------------------------------------------------------------------------------------------------------
//  void mlmeOrphanResponse(ADDRESS orphanAddress, WORD shortAddress, BOOL associatedMember, BOOL ...)
//
//  DESCRIPTION:
//      Respond to an orphan notification by transmitting a coordinator realignment frame.
//
//  PARAMETERS:
//      ADDRESS orphanAddress
//          Extended address of the orphaned device
//      WORD shortAddress
//          The short address of the coordinator
//      BOOL associatedMember
//          This node is associated on this PAN
//          Note: mlmeOrphanResponse is ignored if set to FALSE
//      BOOL securityEnable
//          Security is enabled for the coordinator realignment command frame?
//-------------------------------------------------------------------------------------------------------
#if MAC_OPT_FFD
ROOT void mlmeOrphanResponse(ADDRESS orphanAddress, WORD shortAddress, BOOL associatedMember, BOOL securityEnable) {
    MAC_TX_PACKET   *pPacket;
    BYTE            taskNumber;

    // Ignore this response if the associatedMember field is FALSE
    if (associatedMember) {

        // Reserve a packet to use with the TX engine
        do {
            pPacket = mtxpReservePacket();
        } while (!pPacket);

        // Prepare the packet data
        mbcnPrepareCoordinatorRealignment(pPacket, &orphanAddress, shortAddress, securityEnable, mpib.macPANId, ppib.phyCurrentChannel);

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

} // mlmeOrphanResponse
#endif // MAC_OPT_FFD




//-------------------------------------------------------------------------------------------------------
//  MAC_ENUM mlmeSetRequest(MAC_PIB_ATTR pibAttribute, void *pPibAttributeValue)
//
//  DESCRIPTION:
//      Set MAC PIB attribute.
//
//  PARAMETERS:
//      MAC_PIB_ATTR pibAttribute
//          The attribute to be changed
//      void *pPibAttributeValue
//          A pointer to the PIB attribute. Note that this data is _copied_ into the PIB.
//
//  RETURN VALUE:
//      MAC_ENUM
//          INVALID_PARAMETER, SUCCESS or UNSUPPORTED_ATTRIBUTE
//-------------------------------------------------------------------------------------------------------
ROOT MAC_ENUM mlmeSetRequest(MAC_PIB_ATTR pibAttribute, void *pPibAttributeValue) {
    BOOL isBeaconEnabledPan;

    // Store attribute as WORD
    WORD pibAttributeValueW;
    pibAttributeValueW = *((WORD  *) pPibAttributeValue);

    isBeaconEnabledPan = mpib.macBeaconOrder < 15;

    switch (pibAttribute) {

    case PHY_TRANSMIT_POWER:
        ppib.phyTransmitPower = (UINT8)pibAttributeValueW;
        break;

    // Category 1 attributes (read-only)
    case MAC_ACK_WAIT_DURATION:
        if ((UINT8)pibAttributeValueW == 54) break;
        return INVALID_PARAMETER;
    case MAC_BATT_LIFE_EXT_PERIODS:
        if ((UINT8)pibAttributeValueW == 6) break;
        return INVALID_PARAMETER;
    case MAC_GTS_PERMIT:
    case MAC_PROMISCUOUS_MODE:
        if ((BOOL)pibAttributeValueW == FALSE) break;
        return INVALID_PARAMETER;

    // Category 2 attributes (direct write)
    case MAC_ASSOCIATION_PERMIT:
        mpib.macAssociationPermit = (BOOL)pibAttributeValueW;
        break;
    case MAC_AUTO_REQUEST:
        mpib.macAutoRequest = (BOOL)pibAttributeValueW;
        break;
    case MAC_BEACON_PAYLOAD_LENGTH:
        if ((UINT8)pibAttributeValueW > aMaxBeaconPayloadLength) {
            return INVALID_PARAMETER;
        } else {
            mpib.macBeaconPayloadLength = (UINT8)pibAttributeValueW;
        }
        break;
    case MAC_BSN:
        mpib.macBSN = (UINT8)pibAttributeValueW;
        break;
    case MAC_DSN:
        mpib.macDSN = (UINT8)pibAttributeValueW;
        break;
    case MAC_MAX_CSMA_BACKOFFS:
        if ((UINT8)pibAttributeValueW > 5) {
            return INVALID_PARAMETER;
        } else {
            mpib.macMaxCsmaBackoffs = (UINT8)pibAttributeValueW;
        }
        break;
    case MAC_MIN_BE:
        if ((UINT8)pibAttributeValueW > 3) {
            return INVALID_PARAMETER;
        } else {
            mpib.macMinBE = (UINT8)pibAttributeValueW;
        }
        break;
    case MAC_ASSOCIATED_PAN_CORDINATOR:
        mpib.macAssociatedPanCordinator = (BOOL)pibAttributeValueW;
        break;

    // Category 3 attributes (disable interrupts)
    case MAC_BEACON_PAYLOAD:
        DISABLE_GLOBAL_INT();
        mpib.pMacBeaconPayload = (BYTE   *) pPibAttributeValue;
        ENABLE_GLOBAL_INT();
        break;
    case MAC_BEACON_TX_TIME:
        DISABLE_GLOBAL_INT();
        memcpy(&mpib.macBeaconTxTime, (BYTE  *) pPibAttributeValue, sizeof(mpib.macBeaconTxTime));
        ENABLE_GLOBAL_INT();
        break;
    case MAC_COORD_EXTENDED_ADDRESS:
        DISABLE_GLOBAL_INT();
        memcpy(&mpib.pMacCoordExtendedAddress, (BYTE  *) pPibAttributeValue, sizeof(mpib.pMacCoordExtendedAddress));
        ENABLE_GLOBAL_INT();
        break;
    case MAC_COORD_SHORT_ADDRESS:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品中文字幕一区二区三区| av亚洲精华国产精华精| 国产精品一区二区久久不卡| 色菇凉天天综合网| 日韩精品专区在线影院观看| 一卡二卡欧美日韩| 高清在线观看日韩| 亚洲精品一线二线三线| 午夜国产精品影院在线观看| 99精品视频在线观看| 精品国产亚洲在线| 午夜av区久久| 欧美性三三影院| 亚洲精品v日韩精品| 丁香一区二区三区| 久久网站热最新地址| 美女视频网站久久| 91精品国产色综合久久久蜜香臀| 一区二区三区欧美视频| av在线不卡观看免费观看| 久久午夜老司机| 激情五月播播久久久精品| 日韩一区二区三区在线| 日韩vs国产vs欧美| 欧美酷刑日本凌虐凌虐| 亚洲超碰精品一区二区| 欧美艳星brazzers| 亚洲国产日日夜夜| 欧美在线观看一区二区| 亚洲一区二区三区精品在线| 在线观看国产91| 亚洲国产一区二区三区| 欧美精品久久天天躁| 日韩影视精彩在线| 日韩亚洲国产中文字幕欧美| 麻豆精品国产91久久久久久| 日韩欧美中文字幕一区| 久久99国产精品成人| 久久久无码精品亚洲日韩按摩| 久久激五月天综合精品| 久久久久久久久一| 91在线观看成人| 一区二区三区四区在线播放| 欧美日韩亚洲综合| 美女视频一区在线观看| 久久久久9999亚洲精品| va亚洲va日韩不卡在线观看| 亚洲天天做日日做天天谢日日欢 | 久久久久久黄色| 国产乱色国产精品免费视频| 亚洲欧美自拍偷拍色图| 91久久一区二区| 日日摸夜夜添夜夜添亚洲女人| 欧美一区二区三区啪啪| 国产精品中文字幕欧美| 一区二区在线观看视频在线观看| 欧美精品 国产精品| 极品少妇xxxx偷拍精品少妇| 国产精品青草久久| 欧美高清视频一二三区 | 国产丶欧美丶日本不卡视频| 亚洲品质自拍视频| 欧美xxxx老人做受| 99久久伊人久久99| 美女视频黄久久| 亚洲色图欧洲色图| 2020国产精品| 欧美在线观看视频在线| 国产精品一品二品| 亚洲国产精品麻豆| 国产精品色噜噜| 日韩午夜精品电影| 欧美中文字幕不卡| 国产成人av电影在线观看| 亚洲一区二区美女| 日韩一区欧美一区| 精品久久久三级丝袜| 欧美视频中文字幕| 成人av网站在线| 精品影视av免费| 亚洲国产欧美日韩另类综合| 久久女同性恋中文字幕| 91精品国产一区二区三区蜜臀| 成人精品小蝌蚪| 狠狠狠色丁香婷婷综合激情| 午夜私人影院久久久久| 亚洲人成精品久久久久| 久久久综合视频| 日韩免费观看高清完整版| 91麻豆精东视频| 国产成人高清在线| 久久成人精品无人区| 日韩不卡手机在线v区| 一区二区三区日韩精品| 国产精品乱码妇女bbbb| 久久蜜桃香蕉精品一区二区三区| 在线观看91av| 欧美人牲a欧美精品| 欧美日免费三级在线| 91一区二区在线| 91蝌蚪porny九色| www.欧美色图| 91丨porny丨蝌蚪视频| 成人免费看黄yyy456| 国产成人丝袜美腿| 久久99国产精品久久99| 蜜臀av在线播放一区二区三区| 亚洲成人动漫在线观看| 亚洲电影第三页| 日韩不卡一区二区三区| 免费日韩伦理电影| 久久99国产精品久久99| 国产一区二区三区av电影 | 26uuu国产在线精品一区二区| 欧美日本在线看| 欧美欧美欧美欧美| 欧美放荡的少妇| 日韩丝袜美女视频| 精品美女在线观看| 久久久久88色偷偷免费 | 久久综合久久综合久久| 久久一区二区视频| 久久久久久久久久久久久久久99| 久久精品亚洲乱码伦伦中文| 国产日韩成人精品| 综合激情成人伊人| 亚洲一区二区三区美女| 婷婷丁香久久五月婷婷| 日韩黄色在线观看| 国产一区视频网站| 不卡av电影在线播放| 在线精品视频免费播放| 91精品视频网| 久久久久久9999| 亚洲老妇xxxxxx| 蜜臀av亚洲一区中文字幕| 国产裸体歌舞团一区二区| www.日韩精品| 91精品国产综合久久福利| 久久精品视频网| 亚洲一区二区三区四区在线| 老鸭窝一区二区久久精品| 成人午夜伦理影院| 欧美日韩国产综合久久| 久久综合中文字幕| 亚洲欧美国产三级| 看电影不卡的网站| 99麻豆久久久国产精品免费 | 91精彩视频在线观看| 日韩欧美国产系列| 综合av第一页| 久久99久久99精品免视看婷婷 | 亚洲欧美电影一区二区| 日韩成人伦理电影在线观看| 成人丝袜18视频在线观看| 欧美人妇做爰xxxⅹ性高电影 | 亚洲精品欧美激情| 狠狠色狠狠色综合| 欧美天天综合网| 国产欧美日韩在线| 丝袜诱惑亚洲看片| 91小视频在线观看| 久久午夜国产精品| 日韩黄色在线观看| 91成人在线精品| 国产蜜臀97一区二区三区| 午夜视频在线观看一区二区| 成年人午夜久久久| 精品福利在线导航| 亚洲自拍欧美精品| 99久久夜色精品国产网站| 久久午夜老司机| 免费成人av在线播放| 在线视频亚洲一区| 中文字幕日韩欧美一区二区三区| 久久草av在线| 欧美精品丝袜中出| 亚洲综合免费观看高清在线观看| 国产福利一区二区三区视频| 欧美一区二区日韩| 亚洲成人午夜电影| 欧美影院午夜播放| 一区二区免费视频| 一本一道综合狠狠老| 国产精品天干天干在线综合| 狠狠久久亚洲欧美| 欧美精品一区二区三区在线播放 | 91精品在线麻豆| 亚洲国产精品麻豆| 欧美午夜精品理论片a级按摩| 17c精品麻豆一区二区免费| 成人免费三级在线| 欧美激情一二三区| 粗大黑人巨茎大战欧美成人| 精品久久久久99| 国产又粗又猛又爽又黄91精品| 日韩美女一区二区三区四区| 免费国产亚洲视频| 精品处破学生在线二十三| 国产在线国偷精品产拍免费yy|