📄 mac_general.h
字号:
/*******************************************************************************************************
* *
* ********** *
* ************ *
* *** *** *
* *** +++ *** *
* *** + + *** *
* *** + 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: NEC Electronics PM plus V5.20 *
* Target platform: 78K0/KF2 *
*******************************************************************************************************
* The revision history is located at the bottom of this file *
*******************************************************************************************************/
#ifndef MACGENERAL_H
#define MACGENERAL_H
/*******************************************************************************************************
*******************************************************************************************************
************************** CONSTANTS AND MACROS **************************
*******************************************************************************************************
*******************************************************************************************************/
//-------------------------------------------------------------------------------------------------------
// Inherent MAC constants
// The maximum number of addresses shown in a pending list (in a beacon)
#define MAX_PENDING_LIST_SIZE 7
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// MAC command packet types
typedef enum {
CMD_ASSOCIATION_REQUEST = 1,
CMD_ASSOCIATION_RESPONSE,
CMD_DISASSOCIATION_NOTIFICATION,
CMD_DATA_REQUEST,
CMD_PAN_ID_CONFLICT_NOTIFICATION,
CMD_ORPHAN_NOTIFICATION,
CMD_BEACON_REQUEST,
CMD_COORDINATOR_REALIGNMENT,
CMD_GTS_REQUEST
} MAC_COMMAND_TYPE;
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// MAC command payload lengths, including the command frame identifier
#define CMD_ASSOCIATION_REQUEST_PAYLOAD_LENGTH 2
#define CMD_ASSOCIATION_RESPONSE_PAYLOAD_LENGTH 4
#define CMD_DISASSOCIATION_NOTIFICATION_PAYLOAD_LENGTH 2
#define CMD_DATA_REQUEST_PAYLOAD_LENGTH 1
#define CMD_PAN_ID_CONFLICT_NOTIFICATION_PAYLOAD_LENGTH 1
#define CMD_ORPHAN_NOTIFICATION_PAYLOAD_LENGTH 1
#define CMD_BEACON_REQUEST_PAYLOAD_LENGTH 1
#define CMD_COORDINATOR_REALIGNMENT_PAYLOAD_LENGTH 8
#define CMD_GTS_REQUEST_PAYLOAD_LENGTH 2
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// Frame control field formatting
// Indexes
#define FRAME_TYPE_IDX 0
#define SECURITY_ENABLED_IDX 3
#define FRAME_PENDING_IDX 4
#define ACK_REQ_IDX 5
#define INTRA_PAN_IDX 6
#define DEST_ADDR_MODE_IDX 10
#define SRC_ADDR_MODE_IDX 14
// Bit masks
#define FRAME_TYPE_BM 0x0007
#define SECURITY_ENABLED_BM 0x0008
#define FRAME_PENDING_BM 0x0010
#define ACK_REQ_BM 0x0020
#define INTRA_PAN_BM 0x0040
#define DEST_ADDR_MODE_BM 0x0C00
#define SRC_ADDR_MODE_BM 0xC000
// FRAME_TYPE
#define FT_BEACON 0
#define FT_DATA 1
#define FT_ACKNOWLEDGMENT 2
#define FT_MAC_COMMAND 3
#define FT_100 4
#define FT_101 5
#define FT_110 6
#define FT_111 7
// ADDR_MODE
// See mac.h
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// Scan types
#define ENERGY_SCAN 0
#define ACTIVE_SCAN 1
#define PASSIVE_SCAN 2
#define ORPHAN_SCAN 3
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// Disassociate reasons
#define COORD_WISHES_DEVICE_TO_LEAVE 1
#define DEVICE_WISHES_TO_LEAVE 2
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// Superframe specification field formatting (beacon)
// Indexes
#define SS_BEACON_ORDER_IDX 0
#define SS_SUPERFRAME_ORDER_IDX 4
#define SS_FINAL_CAP_SLOT_IDX 8
#define SS_BATT_LIFE_EXT_IDX 12
#define SS_PAN_COORDINATOR_IDX 14
#define SS_ASSOCIATION_PERMIT_IDX 15
// Bit masks
#define SS_BEACON_ORDER_BM 0x000F
#define SS_SUPERFRAME_ORDER_BM 0x00F0
#define SS_FINAL_CAP_SLOT_BM 0x0F00
#define SS_BATT_LIFE_EXT_BM 0x1000
#define SS_PAN_COORDINATOR_BM 0x4000
#define SS_ASSOCIATION_PERMIT_BM 0x8000
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
// Capability information field formatting (association request)
// Indexes
#define CI_ALTERNATE_PAN_COORD_IDX 0
#define CI_DEVICE_TYPE_IS_FFD_IDX 1
#define CI_POWER_SOURCE_IDX 2
#define CI_RX_ON_WHEN_IDLE_IDX 3
#define CI_SECURITY_CAPABILITY_IDX 6
#define CI_ALLOCATE_ADDRESS_IDX 7
// Bit masks
#define CI_ALTERNATE_PAN_COORD_BM 0x01
#define CI_DEVICE_TYPE_IS_FFD_BM 0x02
#define CI_POWER_SOURCE_BM 0x04
#define CI_RX_ON_WHEN_IDLE_BM 0x08
#define CI_SECURITY_CAPABILITY_BM 0x40
#define CI_ALLOCATE_ADDRESS_BM 0x80
//-------------------------------------------------------------------------------------------------------
/*******************************************************************************************************
*******************************************************************************************************
************************** MODULE DATA **************************
*******************************************************************************************************
*******************************************************************************************************/
//----------------------------------------------------------------------------------------------------------
typedef BYTE KEY[16];
typedef struct {
KEY pSymmetricKey;
DWORD frameCounter;
BYTE keySequenceCounter;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -