📄 mac_general.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 + -