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

📄 mac_general.c

📁 ucos在NEC平台下的移植
💻 C
字号:
/*******************************************************************************************************
 *                                                                                                     *
 *        **********                                                                                   *
 *       ************                                                                                  *
 *      ***        ***                                                                                 *
 *      ***   +++   ***                                                                                *
 *      ***   + +   ***                                                                                *
 *      ***   +                         CHIPCON CC2420 INTEGRATED 802.15.4 MAC AND PHY                 *
 *      ***   + +   ***                       General MAC Constants, Types, etc.                       *
 *      ***   +++   ***                                                                                *
 *      ***        ***                                                                                 *
 *       ************                                                                                  *
 *        **********                                                                                   *
 *                                                                                                     *
 *******************************************************************************************************
 * CONFIDENTIAL                                                                                        *
 * The use of this file is restricted by the signed MAC software license agreement.                    *
 *                                                                                                     *
 * Copyright Chipcon AS, 2004                                                                          *
 *******************************************************************************************************
 * This module contains general types, constants, macros and functions used by many other MAC modules. *
 *******************************************************************************************************
 * Compiler: AVR-GCC                                                                                   *
 * Target platform: CC2420DB, CC2420 + any ATMEGA MCU                                                  *
 *******************************************************************************************************
 * The revision history is located at the bottom of this file                                          *
 *******************************************************************************************************/
#pragma SFR
#pragma NOP
#pragma STOP
#pragma HALT
#pragma DI
#pragma EI
#pragma  section @@DATA general at 0xE100///
#include "mac_headers.h"



//-------------------------------------------------------------------------------------------------------
// PIBs and related data structures
MAC_PIB mpib;
PHY_PIB ppib;
//-------------------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------------------
// MAC Internal data
MAC_INFO macInfo;
BYTE intMacFlags;
//-------------------------------------------------------------------------------------------------------



    
//-------------------------------------------------------------------------------------------------------
//  BOOL macSetState(MAC_STATE_TYPE newState)
//
//  DESCRIPTION:
//      Changes the internal MAC state, which is used to control polling and scanning. Only specific
//      sequences of transitions are allowed.
//
//  ARGUMENTS:
//      MAC_STATE_TYPE newState
//          The new MAC state
//
//  RETURN VALUE:
//      BOOL
//          TRUE if successful (legal transition to newState)
//          FALSE otherwise (the state was not changed)
//-------------------------------------------------------------------------------------------------------
BOOL macSetState(MAC_STATE_TYPE newState) {
    BOOL result;
    DISABLE_GLOBAL_INT();
    switch (newState) {

    // Association
    case MAC_STATE_TX_ASSOC_REQUEST:         result = (macInfo.state == MAC_STATE_DEFAULT); break;
    case MAC_STATE_ASSOC_REQUEST_SENT:       result = (macInfo.state == MAC_STATE_TX_ASSOC_REQUEST); break;
    case MAC_STATE_TX_ASSOC_DATA_REQUEST:    result = (macInfo.state == MAC_STATE_ASSOC_REQUEST_SENT); break;
    case MAC_STATE_ASSOC_DATA_REQUEST_SENT:  result = (macInfo.state == MAC_STATE_TX_ASSOC_DATA_REQUEST); break;
    
    // Internally generated data request (mpib.macAutoRequest)
    case MAC_STATE_TX_AUTO_DATA_REQUEST:     result = (macInfo.state == MAC_STATE_DEFAULT); break;
    case MAC_STATE_AUTO_DATA_REQUEST_SENT:   result = (macInfo.state == MAC_STATE_TX_AUTO_DATA_REQUEST); break;

    // Manually generated data request (mlmePollRequest)
    case MAC_STATE_TX_MANUAL_DATA_REQUEST:   result = (macInfo.state == MAC_STATE_DEFAULT); break;
    case MAC_STATE_MANUAL_DATA_REQUEST_SENT: result = (macInfo.state == MAC_STATE_TX_MANUAL_DATA_REQUEST); break;
    
    // Channel scanning
    case MAC_STATE_ENERGY_SCAN:              result = (macInfo.state == MAC_STATE_DEFAULT); break;
    case MAC_STATE_ACTIVE_OR_PASSIVE_SCAN:   result = (macInfo.state == MAC_STATE_DEFAULT); break;
    case MAC_STATE_SCAN_RESULT_BUFFER_FULL:  result = (macInfo.state == MAC_STATE_ACTIVE_OR_PASSIVE_SCAN); break;
    case MAC_STATE_ORPHAN_SCAN:              result = (macInfo.state == MAC_STATE_DEFAULT); break;
    case MAC_STATE_ORPHAN_REALIGNED:         result = (macInfo.state == MAC_STATE_ORPHAN_SCAN); break;
    
    // Always possible to return to the default state
    case MAC_STATE_DEFAULT:                  result = TRUE; break;
    default:                                 result = FALSE; break;
    }
    if (result) macInfo.state = newState;
    ENABLE_GLOBAL_INT();
    return result;

} // macSetState




/*******************************************************************************************************
 * Revision history:
 *
 * $Log: mac_general.c,v $
 * Revision 1.7  2004/11/10 09:33:13  thl
 * Fixed a number of bugs according to: MAC software check lists.xls
 *
 * Revision 1.6  2004/08/13 13:04:46  jol
 * CC2420 MAC Release v0.7
 *
 *
 *******************************************************************************************************/

⌨️ 快捷键说明

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