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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mac_support.c

?? zigbee location examples
?? C
?? 第 1 頁 / 共 2 頁
字號:
//      ADDRESS *pSrcAddr
//          Pointer to the source address (short or extended)
//      WORD destPanId,
//          Destination PAN identifier
//      ADDRESS *pDestAddr,
//          Pointer to the destination address (short or extended)
//      BYTE txOptions
//          (TX_OPT_SECURITY_ENABLE | TX_OPT_INDIRECT | TX_OPT_GTS | TX_OPT_ACK_REQ) or TX_OPT_NONE
//-------------------------------------------------------------------------------------------------------
ROOT __xdata_reentrant void msupPrepareHeader(MAC_TX_PACKET   *pPacket, BYTE type, BYTE addrModes, WORD srcPanId,
                       ADDRESS   *pSrcAddr, WORD destPanId, ADDRESS   *pDestAddr, BYTE txOptions)
{
    BYTE temp;
    UINT8 length = 0;

    // Packet type and options
    pPacket->type = type;
    pPacket->txOptions = txOptions;

    // Frame control field
    temp = (BYTE)(type & FRAME_TYPE_BM);
#if MAC_OPT_SECURITY
    pPacket->securitySetup.micLength = 0;

    if (txOptions & TX_OPT_SECURITY_ENABLE) {
        temp |= SECURITY_ENABLED_BM;
        // Set securitySuite or securityStatus (UNAVAILABLE_KEY)
        msecFindTxSecurityMaterial(pPacket, TRUE, ((addrModes & DEST_ADDR_BM) >> 2), destPanId, pDestAddr);

    } else {
        pPacket->securitySuite = MAC_SECURITY_NONE;
    }
#else
    pPacket->securitySuite = MAC_SECURITY_NONE;
#endif
    if (txOptions & TX_OPT_ACK_REQ) temp |= ACK_REQ_BM;
    if (((addrModes & BOTH_ADDR_USED) == BOTH_ADDR_USED) && (srcPanId == destPanId)) temp |= INTRA_PAN_BM;
    pPacket->pHeader[length++] = temp;
    pPacket->pHeader[length++] = addrModes;

    // Sequence number
    if (type == FT_BEACON) {
        pPacket->pHeader[length++] = mpib.macBSN++;
    } else {
        pPacket->pHeader[length++] = mpib.macDSN++;
    }

    // Destination PAN ID
    if (addrModes & DEST_ADDR_BM) {
        pPacket->pHeader[length++] = LOBYTE(destPanId);
        pPacket->pHeader[length++] = HIBYTE(destPanId);
        pPacket->toCoord = mpib.macPANId == destPanId;
    } else {
        pPacket->toCoord = FALSE;
    }

    // Destination address
    if ((addrModes & DEST_ADDR_BM) == DEST_ADDR_SHORT) {
        pPacket->pHeader[length++] = LOBYTE(pDestAddr->Short);
        pPacket->pHeader[length++] = HIBYTE(pDestAddr->Short);
        pPacket->toCoord &= (mpib.macCoordShortAddress == pDestAddr->Short);
    } else if ((addrModes & DEST_ADDR_BM) == DEST_ADDR_EXT) {
        memcpy(pPacket->pHeader + length, pDestAddr->pExtended, 8);
        length += 8;
        pPacket->toCoord &= msupCompareExtendedAddress((ADDRESS  *) mpib.pMacCoordExtendedAddress, pDestAddr);
    }

    // Source PAN ID
    if (!(temp & INTRA_PAN_BM) && (addrModes & SRC_ADDR_BM)) {
        pPacket->pHeader[length++] = LOBYTE(srcPanId);
        pPacket->pHeader[length++] = HIBYTE(srcPanId);
    }

    // Source address
    if ((addrModes & SRC_ADDR_BM) == SRC_ADDR_SHORT) {
        pPacket->pHeader[length++] = LOBYTE(pSrcAddr->Short);
        pPacket->pHeader[length++] = HIBYTE(pSrcAddr->Short);
    } else if ((addrModes & SRC_ADDR_BM) == SRC_ADDR_EXT) {
        memcpy(pPacket->pHeader + length, pSrcAddr->pExtended, 8);
        length += 8;
    }

    pPacket->headerLength = length;

#if MAC_OPT_SECURITY
    // By default, set cleartextLenght to header length
    // Include command frame identifier for MAC command frames
    // Note: clearTextLength must be incremented for beacon frames
    pPacket->securitySetup.clearTextLength = length + (type == FT_MAC_COMMAND);

    // Decode security suite and find setup information
    // Set clearTextLength to 0 for CBC-MAC
    msecDecodeSecuritySuite(&pPacket->securitySetup, pPacket->securitySuite);
#endif

} // msupPrepareHeader




//-------------------------------------------------------------------------------------------------------
//  UINT8 msupCalcPacketDuration(UINT8 length, BOOL ackRequest)
//
//  DESCRIPTION:
//      Calculates the number of backoff slots required to transmit a packet, including (turnaround time,
//      acknowledgment and) inter-frame spacing.
//
//  PARAMETERS:
//      UINT8 length
//          The packet length in bytes (PHY frame length field)
//      BOOL ackRequest
//          Acknowledged packet?
//
//  RETURN VALUE:
//      UINT8
//          The number of backoff slots required to transmit the packet
//-------------------------------------------------------------------------------------------------------
ROOT UINT8 msupCalcPacketDuration(UINT8 length, BOOL ackRequest) {
    UINT8 totalByteCount, lastBosByteCount;

    // Calculate the number of bytes in the whole packet (not including the preamble, but including
    // SFD, length-byte and PSDU)
    totalByteCount = (BYTE)(1 + 1 + length);

    // Acknowledgment request
    if (ackRequest) {

        // The number of bytes in the last backoff slot
        lastBosByteCount = (BYTE)(totalByteCount % (aUnitBackoffPeriod / 2));

        // Round up the total count to N * (aUnitBackoffPeriod / 2), and add an extra slot if there isn't enough turnaround time before the ack (12-32 symbols)
        if (lastBosByteCount)
           totalByteCount = (BYTE)(totalByteCount + (aUnitBackoffPeriod / 2) - lastBosByteCount);

        // Add the bytes in the acknowledgment frame
        totalByteCount += (aUnitBackoffPeriod / 2) + (1 + 1 + 5);
    }

    // Add interframe spacing
    if (length > aMaxSIFSFrameSize) {
        totalByteCount += (aMinLIFSPeriod / 2);
    } else {
        totalByteCount += (aMinSIFSPeriod / 2);
    }

    // Round up
    return ((BYTE) (((totalByteCount + ((aUnitBackoffPeriod / 2) - 1))) / (aUnitBackoffPeriod / 2)));

} // msupCalcPacketDuration




/*******************************************************************************************************
 *******************************************************************************************************
 **************************               CC2430 RAM/FIFO ACCESS              **************************
 *******************************************************************************************************
 *******************************************************************************************************/

ROOT void msupWriteExtendedAddress(BYTE   *pExtendedAddress) {
    IEEE_ADDR0 = pExtendedAddress[0];
    IEEE_ADDR1 = pExtendedAddress[1];
    IEEE_ADDR2 = pExtendedAddress[2];
    IEEE_ADDR3 = pExtendedAddress[3];
    IEEE_ADDR4 = pExtendedAddress[4];
    IEEE_ADDR5 = pExtendedAddress[5];
    IEEE_ADDR6 = pExtendedAddress[6];
    IEEE_ADDR7 = pExtendedAddress[7];
}

/*******************************************************************************************************
 *******************************************************************************************************
 **************************                SIMPLE CALCULATIONS                **************************
 *******************************************************************************************************
 *******************************************************************************************************/




//-------------------------------------------------------------------------------------------------------
//  UINT32 msupCalcCapDuration(void)
//
//  DESCRIPTION:
//      Calculates the number off backoff slots in the superframe, minus the CFP. Does not subtract the
//      beacon transmission time.
//
//  RETURN VALUE:
//      UINT32
//          See above
//-------------------------------------------------------------------------------------------------------
ROOT UINT32 msupCalcCapDuration(void) {
    return ((UINT32) (aBaseSlotDuration / aUnitBackoffPeriod) * (UINT32) (mbcnInfo.lastSfSpec.finalCap + (UINT32) 1)) << (UINT32) mpib.macSuperframeOrder;
} // msupCalcCapDuration




//-------------------------------------------------------------------------------------------------------
//  UINT32 msupCalcSuperframeDuration(void)
//
//  DESCRIPTION:
//      Calculates the number off backoff slots in the superframe. Does not subtract the beacon
//      transmission time.
//
//  RETURN VALUE:
//      UINT32
//          See above
//-------------------------------------------------------------------------------------------------------
ROOT UINT32 msupCalcSuperframeDuration(void) {
    return ((UINT32) (aBaseSlotDuration / aUnitBackoffPeriod) * (UINT32) 16) << (UINT32) mpib.macSuperframeOrder;
} // msupCalcCapDuration


//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
ROOT UINT32 msupGetBosCounter(void) {
    EUINT32 value;
    value.pB[0] = T2OF0;
    value.pB[1] = T2OF1;
    value.pB[2] = T2OF2;
    value.pB[3] = 0;
    return value.dw;
}



//-------------------------------------------------------------------------------------------------------
//  UINT32 msupCalcBeaconInterval(void)
//
//  DESCRIPTION:
//      Calculates the number off backoff slots in the beacon interval.
//
//  RETURN VALUE:
//      UINT32
//          See above
//-------------------------------------------------------------------------------------------------------
ROOT UINT32 msupCalcBeaconInterval(void) {
    return (UINT32) (aBaseSuperframeDuration / aUnitBackoffPeriod) << (UINT32) mpib.macBeaconOrder;
} // msupCalcBeaconInterval

//-------------------------------------------------------------------------------------------------------
//  MAC_ENUM msupTransmitPanConflict(BYTE coordAddrMode, WORD coordPANId, ADDRESS *pCoordAddress, BOOL ...)
//
//  DESCRIPTION:
//      Transmits a PAN ID conflict notification message.
//
//  ARGUMENTS:
//      BYTE coordAddrMode
//          The address mode used by the coordinator
//      WORD coordPANId
//          The PAN ID used by the coordinator
//      ADDRESS *pCoordAddress
//          A pointer to the coordinator address (taken from the MAC PIB, short or extended)
//      BOOL securityEnable
//          TBD...
//
//  RETURN VALUE:
//      MAC_ENUM
//          SUCCESS                 No error (the transmission was initiated)
//          RESOURCE_SHORTAGE       TX packet or task not available
//          UNAVAILABLE_KEY         No key
//          FAILED_SECURITY_CHECK   Failed security check
//-------------------------------------------------------------------------------------------------------
MAC_ENUM msupTransmitPanConflict(BYTE coordAddrMode, WORD coordPANId, ADDRESS *pCoordAddress, BOOL securityEnable) {
    MAC_TX_PACKET *pPacket;
    UINT8 taskNumber;
    BYTE txOptions = 0;
    UINT8 temp;
    BYTE *pPayload;

    // Try to reserve a packet
    pPacket = mtxpReservePacket();
    if (!pPacket) return RESOURCE_SHORTAGE;

    // Try to reserve a transmission task
    taskNumber = mschReserveTask();
    if (taskNumber == NO_TASK) {
        mtxpReleasePacket(pPacket);
        return RESOURCE_SHORTAGE;
    }


#if MAC_OPT_SECURITY
    if (securityEnable) {
        txOptions |= TX_OPT_SECURITY_ENABLE;
    }
#endif

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

    // Generate the packet header (and find security material, if enabled)
    if (mpib.macShortAddress >= 0xFFFE) {
        msupPrepareHeader(pPacket, FT_MAC_COMMAND, (coordAddrMode << 2) | SRC_ADDR_EXT, mpib.macPANId, (ADDRESS*) &aExtendedAddress, coordPANId, pCoordAddress, txOptions);
    } else {
        msupPrepareHeader(pPacket, FT_MAC_COMMAND, (coordAddrMode << 2) | SRC_ADDR_SHORT, mpib.macPANId, (ADDRESS*) &mpib.macShortAddress, coordPANId, pCoordAddress, txOptions);
    }

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

    // Command frame identifier
    pPayload = pPacket->pPayload;
    *(pPayload++) = CMD_PAN_ID_CONFLICT_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);
        mschReleaseTask(taskNumber);
        return pPacket->securitySuite;
    }

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

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

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

    // Set the packet length
    pPacket->length = pPacket->headerLength + temp + MAC_FCS_LENGTH;

    // No further packet payload


    // Calculate the packet duration (including  FCS)
    pPacket->duration = msupCalcPacketDuration(pPacket->length, pPacket->txOptions);

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

    return SUCCESS;

} // msupTransmitPanConflict

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美综合在线| 亚洲欧美日韩成人高清在线一区| 成人美女视频在线观看18| 亚洲第一久久影院| 国产精品久久久久一区 | 国产成人免费高清| 亚洲一卡二卡三卡四卡无卡久久| 2023国产精品| 欧美日韩国产一二三| 99久久精品免费观看| 国产精品自拍网站| 免费观看久久久4p| 亚洲风情在线资源站| 亚洲视频一区在线| 欧美激情一区二区三区| 欧美电影免费观看高清完整版在线观看| 色综合天天综合网国产成人综合天 | 激情文学综合网| 亚洲欧美自拍偷拍色图| 亚洲精品一区二区三区福利| 91精品国产色综合久久不卡蜜臀| 日本高清免费不卡视频| 成人综合在线观看| 国产电影精品久久禁18| 国产一区二区在线免费观看| 色哦色哦哦色天天综合| 国产成人精品一区二| 久久99这里只有精品| 五月婷婷激情综合| 婷婷久久综合九色综合伊人色| 一区二区三区四区亚洲| 亚洲精品你懂的| 国产精品不卡在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 粉嫩一区二区三区在线看| 秋霞国产午夜精品免费视频| 亚洲444eee在线观看| 亚洲国产婷婷综合在线精品| 亚洲网友自拍偷拍| 天天色图综合网| 日韩黄色片在线观看| 日日摸夜夜添夜夜添国产精品| 一区二区三区欧美激情| 亚洲主播在线观看| 日韩中文字幕不卡| 视频一区视频二区在线观看| 日本va欧美va欧美va精品| 久久精品国产在热久久| 国产一区亚洲一区| 国产大陆精品国产| 91一区二区三区在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 久久九九99视频| 1区2区3区欧美| 亚洲自拍偷拍麻豆| 免费观看成人av| 国产精品羞羞答答xxdd| 不卡av电影在线播放| 91久久精品一区二区| 欧美日韩不卡一区二区| 26uuuu精品一区二区| 国产精品久99| 五月天国产精品| 狠狠色综合日日| 成人av网站免费观看| 在线一区二区三区四区| 欧美成人官网二区| 久久精品一区二区三区不卡牛牛 | 欧美在线一区二区三区| 日韩一区二区在线免费观看| 久久免费电影网| 亚洲男人天堂av网| 男男成人高潮片免费网站| 成人午夜短视频| 精品视频在线看| 久久久一区二区三区捆绑**| 国产精品久久久久久久久快鸭| 亚洲国产精品自拍| 国产精品996| 欧洲av一区二区嗯嗯嗯啊| 精品国产一区二区三区忘忧草| 成人欧美一区二区三区小说| 日韩影院在线观看| www.日本不卡| 日韩午夜中文字幕| 一区二区欧美国产| 国产精品一区在线观看乱码| 色爱区综合激月婷婷| 久久综合成人精品亚洲另类欧美| 亚洲欧美日韩在线不卡| 韩国精品免费视频| 欧美日韩一区二区三区四区| 国产精品视频线看| 久久91精品久久久久久秒播| 91激情五月电影| 国产亚洲制服色| 爽好久久久欧美精品| 91麻豆自制传媒国产之光| 欧美电影免费观看高清完整版在 | 一区二区高清在线| 国产精品一区二区黑丝| 欧美精选午夜久久久乱码6080| 国产精品国产成人国产三级| 精品亚洲国产成人av制服丝袜| 欧美性猛交xxxxxx富婆| 国产精品传媒视频| 国产一区二区三区久久悠悠色av| 欧美日韩aaaaaa| 亚洲一区二区三区在线看| www.一区二区| 国产日产欧美一区| 国内精品久久久久影院一蜜桃| 欧美精选一区二区| 亚洲不卡在线观看| 91污片在线观看| 亚洲天堂久久久久久久| 国产白丝网站精品污在线入口| 欧美精品一区男女天堂| 蜜臀a∨国产成人精品| 欧美日韩一区二区三区高清| 亚洲精品乱码久久久久久黑人| 国产白丝精品91爽爽久久| 亚洲精品一区二区三区四区高清| 蜜臀99久久精品久久久久久软件| 91精品免费观看| 亚洲国产日韩a在线播放性色| 在线亚洲高清视频| 亚洲精品高清在线观看| 91视频.com| 亚洲精品免费视频| 欧美主播一区二区三区| 亚洲1区2区3区4区| 欧美区一区二区三区| 日韩高清一级片| 日韩午夜av一区| 免播放器亚洲一区| 欧美sm美女调教| 国产主播一区二区| 亚洲国产高清在线| 99久久综合色| 一区二区三区免费在线观看| 欧美羞羞免费网站| 日本中文字幕一区二区有限公司| 欧美一二三区在线| 国产一区二区三区免费| 中文字幕乱码一区二区免费| 成人小视频免费在线观看| 中文字幕亚洲精品在线观看 | 91久久精品一区二区| 亚洲成av人片在线观看| 日韩精品一区二区三区swag| 国产精品一区二区久久不卡 | 无吗不卡中文字幕| 欧美一二三四区在线| 国产精品一区二区果冻传媒| 国产精品国产a级| 在线观看91精品国产入口| 爽好多水快深点欧美视频| 欧美电影免费观看高清完整版在 | 成人免费av在线| 伊人婷婷欧美激情| 91精品国产免费久久综合| 国产一区二区三区在线观看免费视频 | 制服丝袜亚洲色图| 国产在线精品一区二区夜色| 国产精品伦理在线| 欧美日韩精品专区| 国产成人综合视频| 亚洲高清久久久| 国产欧美综合在线| 在线亚洲欧美专区二区| 国产在线一区观看| 亚洲自拍偷拍图区| 国产丝袜美腿一区二区三区| 在线看日本不卡| 国产一区二区伦理| 亚洲大片在线观看| 中文字幕精品综合| 91精品国产全国免费观看| 成人毛片视频在线观看| 蜜臀久久99精品久久久画质超高清| 中文子幕无线码一区tr| 91精品国产欧美一区二区成人| 不卡视频在线观看| 麻豆成人综合网| 亚洲美腿欧美偷拍| 久久青草欧美一区二区三区| 欧美性色黄大片| 成人av网站在线观看| 久久99国产精品免费网站| 亚洲精品国产一区二区精华液 | 国产精品欧美精品| 日韩欧美久久一区| 欧美在线你懂得| 粉嫩一区二区三区性色av| 久久国产尿小便嘘嘘尿| 亚洲一区二区三区视频在线| 欧美国产一区视频在线观看| 欧美成人猛片aaaaaaa| 欧美日韩午夜精品|