From b24866225a6301d3a663f874725e83c012dc25d3 Mon Sep 17 00:00:00 2001 From: Florent Duchon Date: Wed, 26 Dec 2012 17:36:00 +0100 Subject: digital/beacon: add bitcloud stack into common directory digital/zigbit --- .../stack/Components/NWK/include/nwkCommon.h | 353 +++++++++++++++++++++ 1 file changed, 353 insertions(+) create mode 100644 digital/zigbit/bitcloud/stack/Components/NWK/include/nwkCommon.h (limited to 'digital/zigbit/bitcloud/stack/Components/NWK/include/nwkCommon.h') diff --git a/digital/zigbit/bitcloud/stack/Components/NWK/include/nwkCommon.h b/digital/zigbit/bitcloud/stack/Components/NWK/include/nwkCommon.h new file mode 100644 index 00000000..e17fd64b --- /dev/null +++ b/digital/zigbit/bitcloud/stack/Components/NWK/include/nwkCommon.h @@ -0,0 +1,353 @@ +/**************************************************************************//** + \file nwkCommon.h + + \brief Declarations of common NWK layer constants and types. + + \author + Atmel Corporation: http://www.atmel.com \n + Support email: avr@atmel.com + + Copyright (c) 2008-2011, Atmel Corporation. All rights reserved. + Licensed under Atmel's Limited License Agreement (BitCloudTM). + + \internal + History: + 2009-04-13 Max Gekk - Created. + Last change: + $Id: nwkCommon.h 17470 2011-06-10 11:31:00Z mgekk $ + ******************************************************************************/ +#if !defined _NWK_COMMON_H +#define _NWK_COMMON_H + +/****************************************************************************** + Includes section + ******************************************************************************/ +#include +#include + +/****************************************************************************** + Definitions section + ******************************************************************************/ +/** Base NWK header length of data packet: + * - frame control field (2 octets), + * - destination address (2 octets), + * - source address (2 octets), + * - radius (1 octet), + * - sequence number (1 octet), + * - multicast control field (1 octet). */ +#define NWK_DATA_FRAME_HEADER_LENGTH 9U +/** Length of auxiliary frame header. See ZigBee spec r18, Figure 4.3. */ +#if defined _SECURITY_ + #define NWK_AUXILIARY_HEADER_SIZE 14U + #define NWK_MAX_DATA_FRAME_FOOTER_LENGTH 4U +#else + #define NWK_AUXILIARY_HEADER_SIZE 0U + #define NWK_MAX_DATA_FRAME_FOOTER_LENGTH 0U +#endif /* _SECURITY_ */ + +/** The hop count radius for concentrator route discoveries. + * ZigBee spec r18, Table 3.44, page 348. */ +#define NWK_CONCENTRATOR_RADIUS 8U /* hop */ +/** The maximum number of hops in a source route. ZigBee spec r18, Table 3.44. + **/ +#define NWK_MAX_SOURCE_ROUTE (NWK_CONCENTRATOR_RADIUS) +/** Maximum length of the source route subframe: + * - relay count field (1 octet), + * - relay index field (1 octet), + * - relay list (NWK_MAX_SOURCE_ROUTE * size of short address). + * See ZigBee spec r18, 3.3.1.9, page 316. */ +#if defined _NWK_SOURCE_ROUTING_ + #define NWK_MAX_SOURCE_ROUTE_SUBFRAME_LENGTH (2U+(2U*NWK_MAX_SOURCE_ROUTE)) +#else + #define NWK_MAX_SOURCE_ROUTE_SUBFRAME_LENGTH 0U +#endif /* _NWK_SOURCE_ROUTING_ */ + +/** Maximum lenght of NWK header. */ +#define NWK_MAX_UNSECURE_HEADER_LEHGTH \ + (NWK_DATA_FRAME_HEADER_LENGTH + NWK_MAX_SOURCE_ROUTE_SUBFRAME_LENGTH) +#define NWK_MAX_DATA_FRAME_HEADER_LEHGTH \ + (NWK_MAX_UNSECURE_HEADER_LEHGTH + NWK_AUXILIARY_HEADER_SIZE) + +/** Length of the reserved part in the data frame. */ +#define NWK_AFFIX_LENGTH (MAC_AFFIX_LENGTH + \ + NWK_MAX_DATA_FRAME_HEADER_LEHGTH + NWK_MAX_DATA_FRAME_FOOTER_LENGTH) + +/** Length of the reserved header in the data frame. */ +#define NWK_NSDU_OFFSET (MAC_MSDU_OFFSET + NWK_MAX_DATA_FRAME_HEADER_LEHGTH) + +/** Maximum lenght of NWK payload. */ +#define NWK_MAX_NSDU_SIZE (MAC_MAX_MSDU_SIZE \ + - NWK_MAX_DATA_FRAME_HEADER_LEHGTH - NWK_MAX_DATA_FRAME_FOOTER_LENGTH) + +/** Valid broadcast addresses. See ZigBee spec r18, Table 3.54, page 411. */ +#define IS_BROADCAST_ADDR(A) (LE16_TO_CPU(A) >= 0xFFF8U) +#define IS_CORRECT_SHORT_ADDR(A) (LE16_TO_CPU(A) < 0xFFF8U) + +/** Low power routers only. */ +#define LOW_POWER_ROUT_ADDR CCPU_TO_LE16(0xFFFBU) +#define BROADCAST_ADDR_LOWPOWER_ROUTERS LOW_POWER_ROUT_ADDR + +/** All routers and coordinator in a network. */ +#define ALL_ROUT_AND_COORD_ADDR CCPU_TO_LE16(0xFFFCU) +#define BROADCAST_ADDR_ROUTERS ALL_ROUT_AND_COORD_ADDR + +/** All devices with MAC attribute macRxOnWhenIdle = TRUE. */ +#define RX_ON_WHEN_IDLE_ADDR CCPU_TO_LE16(0xFFFDU) +#define BROADCAST_ADDR_RX_ON_WHEN_IDLE RX_ON_WHEN_IDLE_ADDR + +/** All devices in PAN. */ +#define ALL_DEVICES_IN_PAN_ADDR 0xFFFFU +#define BROADCAST_ADDR_ALL ALL_DEVICES_IN_PAN_ADDR + +/** The value of the nwkNetworkAddress attribute of its NIB has + * a value of 0xffff indicating that it is not currently joined to a network. */ +#define NWK_NO_SHORT_ADDR 0xFFFFU + +/** The maximum broadcast jitter time measured in number of octets. + * ZigBee spec r18, Table 3.43. */ +#define NWKC_MAX_BROADCAST_JITTER 2000U /*