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

📄 mac-common.c

📁 zigbee location examples
💻 C
字号:
/*******************************************************************************************************
 *                                                                                                     *
 *        **********                                                                                   *
 *       ************                                                                                  *
 *      ***        ***                                                                                 *
 *      ***   +++   ***                                                                                *
 *      ***   + +   ***                                                                                *
 *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                 *
 *      ***   + +   ***                                   MAC-COMMON.C                                 *
 *      ***   +++   ***                                                                                *
 *      ***        ***                                                                                 *
 *       ************                                                                                  *
 *        **********                                                                                   *
 *                                                                                                     *
 *******************************************************************************************************
 * CONFIDENTIAL                                                                                        *
 * The use of this file is restricted by the signed MAC software license agreement.                    *
 *                                                                                                     *
 * Copyright Chipcon AS, 2005                                                                          *
 *******************************************************************************************************/
#include "mac_headers.h"
#include <string.h>

BOOL    currentAesFinished;
BYTE    currentAesTransferCount;
BYTE    currentTimer2InterruptMask;
FRAME   currentTxFrame;


//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
ROOT void InitializeCommonStorage (void)
{
    currentAesFinished = FALSE;
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
ROOT void DmaMemcpy(void   *destination, void   *source, BYTE noOfBytes) {
    DMA_CHANNEL_CONFIGURATION   *dmaChannelConfiguration;

    if (noOfBytes < USE_DMA_FOR_MEMCPY_THRESHOLD) {
        memcpy(destination,
               source,
               noOfBytes);
    }
    else
    {
        DISABLE_GLOBAL_INT();
        while (DMAARM & DMA_CHANNEL_NO_3);

        FetchDmaChannelConfiguration (DMA_CHANNEL_NO_3,
                                      &dmaChannelConfiguration);
        dmaChannelConfiguration->srcMsb = HIBYTE(source);
        dmaChannelConfiguration->srcLsb = LOBYTE(source);
        dmaChannelConfiguration->destMsb = HIBYTE(destination);
        dmaChannelConfiguration->destLsb = LOBYTE(destination);
        dmaChannelConfiguration->lenMsb = USE_LEN;
        dmaChannelConfiguration->lenLsb = noOfBytes;
        dmaChannelConfiguration->wsizeTmodeTrigger = BYTE_TRANSFER + TRANSFER_MODE_BLOCK;
        dmaChannelConfiguration->incIrqM8Pri = SRC_INC_ONE_BYTE +
                                                DST_INC_ONE_BYTE +
                                                DMA_IRQ_DISABLE +
                                                DMA_8_BIT_TRANSFER_COUNT +
                                                DMA_PRIORITY_HIGH;

        StartDma(DMA_CHANNEL_NO_3);
        ENABLE_GLOBAL_INT();
    }
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
ROOT void DmaWriteFrameToTxFifo(FRAME   *frame)
{
    DMA_CHANNEL_CONFIGURATION   *dmaChannelConfiguration;

    DISABLE_GLOBAL_INT();
    while (DMAARM & DMA_CHANNEL_NO_3);

    FetchDmaChannelConfiguration (DMA_CHANNEL_NO_3,
                                  &dmaChannelConfiguration);
    dmaChannelConfiguration->srcMsb = HIBYTE(frame);
    dmaChannelConfiguration->srcLsb = LOBYTE(frame);
    dmaChannelConfiguration->destMsb = HIBYTE(&X_RFD);
    dmaChannelConfiguration->destLsb = LOBYTE(&X_RFD);
    dmaChannelConfiguration->lenMsb = USE_FIRST_BYTE_AS_LEN;
    dmaChannelConfiguration->lenLsb = aMaxPHYPacketSize + FRAME_LENGTH_SIZE;
    dmaChannelConfiguration->wsizeTmodeTrigger = BYTE_TRANSFER + TRANSFER_MODE_BLOCK;
    dmaChannelConfiguration->incIrqM8Pri = SRC_INC_ONE_BYTE +
                                            DST_INC_NONE +
                                            DMA_IRQ_DISABLE +
                                            DMA_8_BIT_TRANSFER_COUNT +
                                            DMA_PRIORITY_HIGH;

    StartDma(DMA_CHANNEL_NO_3);
    ENABLE_GLOBAL_INT();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -