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

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

?? mac_support.c

?? zigbee location examples
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************************************
 *                                                                                                     *
 *        **********                                                                                   *
 *       ************                                                                                  *
 *      ***        ***                                                                                 *
 *      ***   +++   ***                                                                                *
 *      ***   + +   ***                                                                                *
 *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                 *
 *      ***   + +   ***                       Various Support/Utility Functions                        *
 *      ***   +++   ***                                                                                *
 *      ***        ***                                                                                 *
 *       ************                                                                                  *
 *        **********                                                                                   *
 *                                                                                                     *
 *******************************************************************************************************
 * CONFIDENTIAL                                                                                        *
 * The use of this file is restricted by the signed MAC software license agreement.                    *
 *                                                                                                     *
 * Copyright Chipcon AS, 2005                                                                          *
 *******************************************************************************************************
 * This module contains support/utility functions for the MAC sublayer.                                *
 *******************************************************************************************************/
#include <mac_headers.h>


UINT8 oldPhyTransmitPower = OUTPUT_POWER_0DBM;

/*******************************************************************************************************
 *******************************************************************************************************
 **************************                 GENERAL FUNCTIONS                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//-------------------------------------------------------------------------------------------------------
//  void msupWaitTask(MAC_TASK_INFO *pTask)
//
//  DESCRIPTION:
//      This task is meant to be placed behind another task to make sure that this task has finihed.
//      When the task is run, it will set an 8-bit boolean value, pointed to by the taskData, to FALSE.
//
//  TASK DATA:
//      A BOOL pointer to the flag to be changed to FALSE
//-------------------------------------------------------------------------------------------------------
void msupWaitTask(MAC_TASK_INFO   *pTask) NEAR {
    *((BOOL   *) pTask->taskData) = FALSE;
    mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
} // msupWaitTask




//-------------------------------------------------------------------------------------------------------
//  BOOL msupCompareAddress(ADDRESS *pA, ADDRESS *pB)
//
//  DESCRIPTION:
//      Support function for comparing two 64-bit ADDRESS, A and B
//
//  PARAMETERS:
//      ADDRESS *pA
//          pointer to ADDRESS A
//      ADDRESS *pB
//          pointer to ADDRESS B
//
//  RETURN VALUE:
//      BOOL
//          TRUE if A and B are equal, false otherwise
//-------------------------------------------------------------------------------------------------------
ROOT BOOL msupCompareExtendedAddress(ADDRESS   *pA, ADDRESS   *pB) {
    UINT8 n;
    n = sizeof(ADDRESS);
    do {
        if (*((BYTE  *) pA) != *((BYTE  *) pB)) return FALSE;
        pA = (ADDRESS  *) ((BYTE  *) pA + 1);
        pB = (ADDRESS  *) ((BYTE  *) pB + 1);
    } while (--n);
    return TRUE;
} // msupCompareAddress




//-------------------------------------------------------------------------------------------------------
//  void msupReverseCopy(BYTE *pDestination, BYTE *pSource, UINT8 length)
//
//  DESCRIPTION:
//      Copies an array of data in the reverse order, so that the first part of the destination can
//      overlap with the last part of the source:
//
//      Source      F---------------L        (last byte "L" is moved first -> avoids overwriting)
//      Destination        F---------------L
//-------------------------------------------------------------------------------------------------------
ROOT void msupReverseCopy(BYTE   *pDestination, BYTE   *pSource, UINT8 length) {
    pDestination += length;
    pSource += length;
    while (length--) {
        *(--pDestination) = *(--pSource);
    }
} // msupReverseCopy




//-------------------------------------------------------------------------------------------------------
// The random generator polynom
#define RANDOM_POLY 0x1021

// The 16-bit shift register which is used to generate random numbers
WORD random;
//-------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------
//  void msupSetTransmitPower(void)
//
//  DESCRIPTION:
//      Changes the Transiver transmit power.
//      The function checks the ppib.phyTransmitPower to see if it has changed.
//      if the parameter is changed the changes will be writen to the radio chip.
//      Alowed values of ppib.phyTransmitPower are: OUTPUT_POWER_0DBM, OUTPUT_POWER_N1DBM
//      OUTPUT_POWER_N3DBM, OUTPUT_POWER_N5DBM, OUTPUT_POWER_N7DBM, OUTPUT_POWER_N10DBM
//      OUTPUT_POWER_N15DBM and OUTPUT_POWER_N25DBM
//
//  PARAMETERS:
//------------------------------------------------------------------------------------------------------
ROOT void msupSetTransmitPower(void) {
// TBD: Not safe (should disable interrupts or something...)
/*    UINT16 txctrl;

    //If parameter is changed verify and write to chip.
    if (oldPhyTransmitPower != ppib.phyTransmitPower) {
        switch(ppib.phyTransmitPower) {
        case OUTPUT_POWER_0DBM:
            txctrl = CC2430_0DBM;
            break;
        case OUTPUT_POWER_N1DBM:
            txctrl = CC2430_N1DBM;
            break;
        case OUTPUT_POWER_N3DBM:
            txctrl = CC2430_N3DBM;
            break;
        case OUTPUT_POWER_N5DBM:
            txctrl = CC2430_N5DBM;
            break;
        case OUTPUT_POWER_N7DBM:
            txctrl = CC2430_N7DBM;
            break;
        case OUTPUT_POWER_N10DBM:
            txctrl = CC2430_N10DBM;
            break;
        case OUTPUT_POWER_N15DBM:
            txctrl = CC2430_N15DBM;
            break;
        case OUTPUT_POWER_N25DBM:
            txctrl = CC2430_N25DBM;
            break;
        //No valid value reset to old
        default:
            ppib.phyTransmitPower = oldPhyTransmitPower;
            txctrl = CC2430_0DBM;
            break;
        }
        oldPhyTransmitPower = ppib.phyTransmitPower;
        WRITE_RFR16(RFR_TXCTRL, txctrl);
    }
*/
}// msupSetTransmitPower


ROOT BOOL msupIsSfdActive(void) {
    UINT8 rfrFsmstate = FSMSTATE;
    return (((rfrFsmstate >= 7)  && (rfrFsmstate <= 13)) || // RX
            ((rfrFsmstate >= 51) && (rfrFsmstate <= 54)) || // TX ack
            ((rfrFsmstate >= 36) && (rfrFsmstate <= 39)));  // TX
}

ROOT BOOL msupIsTxActive(void) {
    if (FSMSTATE & 0x30) {
        return TRUE;
    } else {
        return FALSE;
    }
}

ROOT BOOL msupIsCspInCriticalSection(void) {
    switch (RFST) {
    case CSP_INSTR_SNOP:
    case CSP_INSTR_WAITX:
        return FALSE;
    default:
        return TRUE;
    }
}



//-------------------------------------------------------------------------------------------------------
//  void msupInitRandomGenerator(void)
//
//  DESCRIPTION:
//      Uses the IEEE extended address to seed the hardware random generator
//-------------------------------------------------------------------------------------------------------
ROOT void msupInitRandomGenerator(BYTE   *pExtendedAddr) {
    UINT8 n;

    // Initialize the LFSR
    RNDL = 0xFF;
    RNDL = 0xFF;

    // Make it "random"
    for (n = 0; n < sizeof(ADDRESS); n++) {
        RNDH = pExtendedAddr[n];
    }

} // msupInitRandomGenerator



//-------------------------------------------------------------------------------------------------------
//  BYTE msupGetRandomByte(void)
//
//  DESCRIPTION:
//      Generates a single pseudo-random byte from the LFSR in the hardware random generator
//      Use msupInitRandomGenerator() to seed the LFSR
//
//  RETURN VALUE:
//      BYTE
//          Random value
//-------------------------------------------------------------------------------------------------------
ROOT BYTE msupGetRandomByte(void) {
    ADCCON1 &= ~0x0C;
    ADCCON1 |= 0x04;
    return RNDH;
} // msupGetRandomByte




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                RF CHANNEL SETTINGS                **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
//  BOOL msupChannelValid(UINT8 logicalChannel)
//
//  DESCRIPTION:
//      Support function for verifying that the logicalChannel is within the valid range for the 2.4 GHz
//      channels supported by CC2430, which are channels 11 (2405 MHz) through 26 (2480 MHz).
//
//  PARAMETERS:
//      UINT8 logicalChannel
//          The channel number
//
//  RETURN VALUE:
//      BOOL
//          TRUE for channels >= 11 and <= 26, otherwise FALSE
//-------------------------------------------------------------------------------------------------------
ROOT BOOL msupChannelValid(UINT8 logicalChannel) {
    return ((BOOL)((logicalChannel >= 11) && (logicalChannel <= 26)));
} // msupChannelValid




//-------------------------------------------------------------------------------------------------------
//  void msupSetChannel(UINT8 logicalChannel, BOOL changePib)
//
//  DESCRIPTION:
//      Changes the radio channel if necessary. The function calculates the new value for the FSCTRL
//      register, and compares it to the current value. When different, the frequency will be changed.
//      The function will clean up the RX engine if we're interrupting a reception. When finished, it
//      will restore the previous RX state.
//
//  PARAMETERS:
//      UINT8 logicalChannel
//          The channel number, 11 - 26
//      BOOL changePib
//          Set ppib.phyCurrentChannel = logicalChannel?
//-------------------------------------------------------------------------------------------------------
ROOT void msupSetChannel(UINT8 logicalChannel, BOOL changePib) {
    UINT16 newFreq, oldFreq;

    // Derive frequency programming from the given channel number
    newFreq = (UINT16) (logicalChannel - 11);      // Subtract the base channel
    newFreq = (UINT16) (newFreq + (newFreq << 2)); // Multiply with 5, which is the channel spacing
    newFreq = (UINT16) (newFreq + 357 + 0x4000);   // 357 is 2405-2048, 0x4000 is LOCK_THR = 1

    // Do we need to change the frequency at all?
    #pragma diag_suppress=PA082
    oldFreq = READ_RFR16(FSCTRL);
    #pragma diag_default=PA082

    if ((newFreq ^ oldFreq) & 0x03FF) {

        // Force RX off
        DISABLE_GLOBAL_INT();
        ISRFOFF;

        // Clean up if we interrupted the receiver
        DisableRfInterrupts();
        ENABLE_GLOBAL_INT();
        mrxResetRxEngine();
        EnableRfInterrupts();

        // Change the PIB attribute (?) and update the frequency register
        DISABLE_GLOBAL_INT();
        if (changePib) ppib.phyCurrentChannel = logicalChannel;
        WRITE_RFR16(FSCTRL, newFreq);

        // Return to the previous RX state
        if (mrxInfo.onCounter) {
            ISRXON;
        }
        ENABLE_GLOBAL_INT();
    }

} // msupSetChannel




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                TX PACKET GENERATION               **************************
 *******************************************************************************************************
 *******************************************************************************************************/




//-------------------------------------------------------------------------------------------------------
//  msupPrepareHeader(MAC_TX_PACKET *pPacket, BYTE type, BYTE addrModes, WORD srcPanId, ADDRESS ...)
//
//  DESCRIPTION:
//      Packet header assembly function, used for beacon, data and command frames.
//
//  PARAMETERS:
//      MAC_TX_PACKET *pPacket
//          The packet structure to update (this function affects the header part)
//      BYTE type
//          FT_BEACON, FT_DATA or FT_COMMAND
//      BYTE addrModes
//          Address mode for source and destination
//          (SRC_ADDR_SHORT, SRC_ADDR_EXT or 0) | (DEST_ADDR_SHORT, DEST_ADDR_EXT or 0)
//      WORD srcPanId
//          Source PAN identifier

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成网站影音先锋播放| 国产乱码精品一区二区三区五月婷| 亚洲成av人综合在线观看| 麻豆91小视频| 欧美性感一类影片在线播放| 国产欧美精品在线观看| 日本大胆欧美人术艺术动态| 91黄色免费网站| 久久精品免费在线观看| 免费看欧美女人艹b| 欧美亚洲一区三区| 中文字幕佐山爱一区二区免费| 精品一区二区影视| 制服丝袜激情欧洲亚洲| 一区二区三区鲁丝不卡| 99视频热这里只有精品免费| 亚洲精品在线一区二区| 美日韩一区二区| 欧美二区三区91| 亚洲国产毛片aaaaa无费看| 99精品视频一区二区三区| 久久品道一品道久久精品| 久久国产精品无码网站| 欧美一区日韩一区| 日本欧美在线看| 911精品国产一区二区在线| 亚洲午夜免费福利视频| 欧美体内she精高潮| 洋洋成人永久网站入口| 在线欧美日韩精品| 亚洲一区二区美女| 欧美日韩精品欧美日韩精品一| 亚洲国产精品久久久男人的天堂 | 国产精品人妖ts系列视频| 国产在线精品视频| 久久精品视频一区| 成人免费看视频| 综合久久久久久久| 91行情网站电视在线观看高清版| 亚洲精品成人少妇| 欧美美女喷水视频| 精东粉嫩av免费一区二区三区| 久久久久一区二区三区四区| 成人永久看片免费视频天堂| 亚洲图片另类小说| 欧美日本在线看| 激情综合网最新| 国产精品成人网| 欧美在线影院一区二区| 欧美aⅴ一区二区三区视频| 精品奇米国产一区二区三区| 国产精品自拍在线| 亚洲黄色录像片| 91精品国产入口在线| 国产成人在线看| 午夜精品视频一区| 久久久亚洲精品一区二区三区| av一本久道久久综合久久鬼色| 亚洲一区视频在线观看视频| 日韩亚洲欧美成人一区| 国产成人亚洲综合色影视| 伊人一区二区三区| 欧美不卡一区二区三区四区| 波多野结衣亚洲一区| 婷婷久久综合九色综合伊人色| 久久久久久久久99精品| 色成人在线视频| 国产电影一区二区三区| 一区二区三区四区国产精品| 26uuuu精品一区二区| 色综合久久久久综合体桃花网| 男人的天堂久久精品| 亚洲欧美综合在线精品| 日韩亚洲欧美一区| 色综合咪咪久久| 国内精品国产成人国产三级粉色| 一卡二卡欧美日韩| 中文av一区二区| 欧美一区二区视频网站| 91蜜桃免费观看视频| 国内精品写真在线观看| 午夜不卡av在线| 亚洲免费av在线| 欧美激情中文字幕一区二区| 日韩欧美久久一区| 精品视频999| 99re视频精品| 岛国一区二区在线观看| 美腿丝袜亚洲三区| 日本亚洲欧美天堂免费| 亚洲一区二区中文在线| **网站欧美大片在线观看| 久久久午夜精品理论片中文字幕| 欧美一区二区三区啪啪| 欧美人狂配大交3d怪物一区| 色成人在线视频| 91丝袜高跟美女视频| 国产91色综合久久免费分享| 久久不见久久见免费视频1| 亚洲国产精品一区二区www在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 精品中文字幕一区二区| 亚洲国产中文字幕在线视频综合 | 国产精品久久久久久久第一福利| 精品久久久影院| 日韩午夜激情免费电影| 欧美一区二区观看视频| 678五月天丁香亚洲综合网| 欧美日韩激情一区二区三区| 91精品1区2区| 欧美日韩精品免费| 欧美精品123区| 日韩午夜电影av| 欧美一级一级性生活免费录像| 欧美一二三在线| 日韩视频在线永久播放| 欧美不卡一区二区三区| 久久久久久久久免费| 国产精品美女久久久久久久| 天天色综合天天| 久久se精品一区二区| 国产综合久久久久影院| 国产精品一区一区| 91色九色蝌蚪| 欧美日韩免费电影| 日韩欧美一级二级三级| 久久精品免费在线观看| 中文字幕一区在线观看| 亚洲乱码一区二区三区在线观看| 亚洲影院理伦片| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品一区二区三区在线观看国产| 国产精品18久久久久| 97久久人人超碰| 69成人精品免费视频| 久久网站热最新地址| 日韩毛片一二三区| 五月婷婷欧美视频| 成人午夜伦理影院| 欧美少妇bbb| 久久久精品2019中文字幕之3| 日韩理论电影院| 毛片av一区二区| 一本色道亚洲精品aⅴ| 在线播放一区二区三区| 久久精品亚洲精品国产欧美| 亚洲综合久久av| 国产精品一区二区三区99| 色综合中文字幕国产| 欧美日韩在线播放三区四区| 久久久久国产精品免费免费搜索| 亚洲综合无码一区二区| 国产乱码精品一品二品| 在线免费精品视频| 久久夜色精品一区| 三级影片在线观看欧美日韩一区二区| 国产一区日韩二区欧美三区| 欧美亚日韩国产aⅴ精品中极品| 久久亚洲欧美国产精品乐播| 一区二区国产视频| 国产乱码精品一区二区三| 欧美高清www午色夜在线视频| 一区在线中文字幕| 国内外精品视频| 日韩视频免费观看高清在线视频| 亚洲少妇最新在线视频| 国产一区二区三区不卡在线观看| 欧美日韩亚洲高清一区二区| 国产精品美女视频| 国产精品一区二区久久不卡| 4hu四虎永久在线影院成人| 亚洲欧美日韩在线| 国产成人免费av在线| 欧美一区二区精品久久911| 亚洲综合图片区| 色婷婷久久久久swag精品| 日本一区二区综合亚洲| 九色综合狠狠综合久久| 欧美精品久久久久久久久老牛影院| 亚洲色图第一区| 成人av网站大全| 中文字幕成人av| 成人a区在线观看| 欧美国产精品专区| 懂色av一区二区三区免费看| 久久综合久久久久88| 极品少妇一区二区三区精品视频 | 制服丝袜亚洲精品中文字幕| 一区二区三区四区乱视频| 91丨九色丨蝌蚪丨老版| 中文字幕在线观看不卡| 成人黄页毛片网站| 国产精品蜜臀av| 99riav久久精品riav| 亚洲欧洲日韩女同| 成av人片一区二区| 亚洲三级在线免费| 91久久精品一区二区| 亚洲午夜免费福利视频| 欧美福利一区二区|