📄 zmac.h
字号:
/* Copyright (c) 2008, Swedish Institute of Computer Science * All rights reserved. * * Additional fixes for AVR contributed by: * * Colin O'Flynn coflynn@newae.com * Eric Gnoske egnoske@gmail.com * Blake Leverett bleverett@gmail.com * Mike Vidales mavida404@gmail.com * Kevin Brown kbrown3@uccs.edu * Nate Bohlmann nate@elfwerks.com * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name of the copyright holders nor the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. *//** * \brief The equivalent IEEE 802.15.4 (2003/2006) header file for * the mac primitives. * *//** * \addtogroup rf230mac * @{*//** * \file * \brief The IEEE 802.15.4 (2003/2006) MAC utility functions. */#ifndef MAC_H#define MAC_H/* Includes */#include <stdint.h>#include <stdbool.h>#include "frame.h"#include "ieee-15-4-manager.h"#define EEPROMMACADDRESS ((void*)0)#define EEPROMDSTADDRESS ((void*)8)#define EEPROMCHANADDRESS ((void*)16)#define EEPROMPANIDADDRESS ((void*)17)#define EEPROMROLEADDRESS ((void*)19)#define SUCCESS (0)#define CHANNEL_PAGE_0 (0)/* MAC command frames codes *//* MAC enumerations *//** \brief Pre-defined data frame control field (FCF) values. * \name FCF Values * @{*/#define FCF_NO_ACK (0x8841)#define FCF_ACK_REQ (0x8861)/** @} *//** \brief Hardcoded various "network" addresses, for use when testing. * \name Pre-defined network addresses * @{ */#define DEST_PAN_ID (0xABCD)#define SOURCE_PAN_ID (0xABCD)#define LONG_ADDR_1 (0xFFEEDDCCBBAA1100LL)#define LONG_ADDR_2 (0x1122334455667788LL)#define LONG_ADDR_3 (0xDDEEAADDBBEEEEFFLL)#define LONG_ADDR_4 (0x0123456789ABCDEFLL)#define SOURCE_ADDR (0x1234)#define FCF_ACK (0x0002)#define TX_OPTION_NOACK (0)#define TX_OPTION_ACK (1)#define LONG_ADDR_LEN (8)/** @} */#define MPDU_OVERHEAD (11) /**< This overhead includes FCF, DSN, DEST_PAN_ID, DEST_ADDR, SOURCE_ADDR, & FCS *//** \brief These are some definitions of values used in the FCF. See the 802.15.4 spec for details. * \name FCF element values definitions * @{ */#define BEACONFRAME (0x00)#define DATAFRAME (0x01)#define ACKFRAME (0x02)#define CMDFRAME (0x03)#define BEACONREQ (0x07)#define IEEERESERVED (0x00)#define NOADDR (0x00) /**< Only valid for ACK or Beacon frames. */#define SHORTADDRMODE (0x02)#define LONGADDRMODE (0x03)#define NOBEACONS (0x0F)#define BROADCASTADDR (0xFFFF)#define BROADCASTPANDID (0xFFFF)#define IEEE802154_2003 (0x00)#define IEEE802154_2006 (0x01)#define SECURITY_LEVEL_NONE (0)#define SECURITY_LEVEL_128 (3)#define PSDULEN (127)/** @} *//* typedef enum {TRUE, FALSE} bool; */typedef struct dataRequest { uint8_t srcAddrMode; uint8_t dstAddrMode; uint16_t dstPANId; addr_t dstAddr; uint8_t msduLength; uint8_t *msdu; uint8_t msduHandle; uint8_t txOptions; uint8_t securityLevel; uint8_t keyIdMode; uint8_t *keySource; uint8_t keyIndex;} dataRequest_t;/* Macros & Defines */extern ieee_15_4_manager_t ieee15_4ManagerAddress;extern dataRequest_t dataRequestStructAddress;#define ieee15_4Struct (&ieee15_4ManagerAddress)#define dataRequestStruct (&dataRequestStructAddress)/** * \name Scan variables * \brief Global variables and defines for scan. * \{*/extern uint8_t msduHandle;extern bool iAmCoord;extern bool autoModes;extern uint16_t macShortAddr;extern uint64_t macLongAddr;/** @} *//* PHY PIB Attributes *//* uint8_t phyCurrentChannel Integer 0-26 * The RF channel to use for all following transmissions and receptions (see6.1.2). */extern uint8_t phyCurrentChannel;/* uint64_t macCoordExtendedAddress -- no default * * The 64-bit address of the coordinator/router through which the network layer wishes to communicate */extern uint64_t macCoordExtendedAddress;/* uint16_t macCoordShortAddress -- default 0xffff * * The 16-bit short address assigned to the coordinator through which the network layer wishes * to communicate. A value of 0xfffe indicates th the coordinator is only using it's 64-bit * extended address. A value of 0xffff indicates that this value is unknown. */extern uint16_t macCoordShortAddress;/* uint64_t macDestAddress -- default 0xffff * * This address is the 64-bit address that will be used as the mechanism to * provide a destination to the upper layers. */extern uint64_t macDestAddress;/* uint8_t macDSN -- default is random value within the range * * The sequence number (0x00 - 0xff) added to the transmitted data or MAC command frame. */extern uint8_t macDSN;/* uint16_t macDstPANId -- default 0xffff * * The 16-bit identifier of the PAN on which the device is sending to. If this value * is 0xffff, the device is not associated. */extern uint16_t macDstPANId;/* uint16_t macSrcPANId -- default 0xffff * * The 16-bit identifier of the PAN on which the device is operating. If this value * is 0xffff, the device is not associated. */extern uint16_t macSrcPANId;/* uint16_t macShortAddress -- default 0xffff * * The 16-bit address that the device uses to communicate in the PAN. If the device is the * PAN coordinator, this value shall be chosen before a PAN is started. Otherwise, the * address is allocated by a coordinator during association. A value of 0xfffe indicates * that the device has associated but has not been allocated an address. A value of 0xffff * indicates that the device does not have a short address. */extern uint16_t macShortAddress;/* Scan defines *//* Protoypes */void mac_init(void);#endif/** @} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -