summaryrefslogtreecommitdiff
path: root/digital/zigbit/bitcloud/stack/Components/ConfigServer/include/csDefaults.h
diff options
context:
space:
mode:
Diffstat (limited to 'digital/zigbit/bitcloud/stack/Components/ConfigServer/include/csDefaults.h')
-rw-r--r--digital/zigbit/bitcloud/stack/Components/ConfigServer/include/csDefaults.h1381
1 files changed, 1381 insertions, 0 deletions
diff --git a/digital/zigbit/bitcloud/stack/Components/ConfigServer/include/csDefaults.h b/digital/zigbit/bitcloud/stack/Components/ConfigServer/include/csDefaults.h
new file mode 100644
index 00000000..4bda4a33
--- /dev/null
+++ b/digital/zigbit/bitcloud/stack/Components/ConfigServer/include/csDefaults.h
@@ -0,0 +1,1381 @@
+/**************************************************************************//**
+ \file csDefaults.h
+
+ \brief
+ Configuration Server parameters default values.
+ The contents of this file must not be changed by a user. Any default value can be redefined
+ in the application \c configuration.h file.
+
+ Most of the parameters descriptions include the following standard remarks:
+
+ \li <b>Value range</b> notes describe possible values that can be taken by a parameter;
+ \li <b>C-type</b> stands for the type in code that can be used to hold a value of a parameter;
+ \li <b>Can be set</b> indicates when a parameter can be changed: <i>at compile time only</i>, <i>at any time before network start</i>, or <i>at any time</i>;
+ \li if a parameter is stored in EEPROM memory so that its value does not change after hardware reset, while
+ other parameters restore their default values, then it is marked as <b>Persistent</b>; note that only
+ run-time parameters can be persistent.
+
+ \author
+ Atmel Corporation: http://www.atmel.com \n
+ Support email: avr@atmel.com
+
+ Copyright (c) 2010 , Atmel Corporation. All rights reserved.
+ Licensed under Atmel's Limited License Agreement (BitCloudTM).
+
+ \internal
+ History:
+ 19.10.10 A. Razinkov - Created.
+******************************************************************************/
+
+#ifndef _CSDEFAULTS_H
+#define _CSDEFAULTS_H
+
+/******************************************************************************
+ Includes section
+******************************************************************************/
+#include <stackVersion.h>
+#include <aps.h>
+
+/* MISRA killing for IAR compiler */
+#ifdef __IAR_SYSTEMS_ICC__
+ #ifndef _SYSTEM_BUILD
+ #pragma system_include
+ #endif
+#endif
+
+/******************************************************************************
+ Definitions section
+******************************************************************************/
+#ifdef CS_APS_DATA_REQ_BUFFER_SIZE
+ #error CS_APS_DATA_REQ_BUFFER_SIZE definition is renamed to CS_APS_DATA_REQ_BUFFERS_AMOUNT - please, use the new name.
+#endif
+#ifdef CS_APS_ACK_FRAME_BUFFER_SIZE
+ #error CS_APS_ACK_FRAME_BUFFER_SIZE definition is renamed to CS_APS_ACK_FRAME_BUFFERS_AMOUNT - please, use the new name.
+#endif
+
+//BOOST mode is enabled automatically only for 11, 10, 9, 8, 7, 6 dBm(s) all other power valuses do not use BOOST mode.
+//! \brief RF transmission power
+/*!
+The parameter specifies the TX power of the transceiver device, is measured in dBm(s).
+After the node has entered the network the value can only be changed via
+the ZDO_SetTxPowerReq() function.
+
+<b>Value range:</b> depends on the hardware
+<b>C-type:</b> int8_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_RF_TX_POWER
+/* It was TX_PWR_3_0DBM. */
+#define CS_RF_TX_POWER 0
+#endif
+
+//! \brief Determines the device extended address
+/*! 64-bit Unique Identifier (UID). If this value is 0 stack will try to read
+hardware UID from external UID or EEPROM chip. at startup. Location of hardware
+UID is platform dependend and it may not be available on all platforms. If the latter
+case then UID value must be provided by user via this parameter. This parameter must
+be unique for each device in a network.
+
+<b>Value range:</b> any 64-bit value except for broadcast extended addresses
+(see apsCommon.h) \n
+<b>C-type:</b> ExtAddr_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_UID
+#define CS_UID 0x0000000000000000LL
+#endif
+
+//! \brief The maximum duration in ms of frame transmission
+/*!
+The parameter is used in some internal calculations as the maximum duration
+of transmitting a frame to the air. The default value should not be changed by the user.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_MAX_FRAME_TRANSMISSION_TIME
+#define CS_MAX_FRAME_TRANSMISSION_TIME 5
+#endif
+
+//! \brief Size of MAC RX buffer to store data frames
+/*!
+The parameter specifies a size of the buffer used by the MAC component for
+data frames. The default value must not be changed by the user.
+
+<b>Value range:</b> the value must be greater than 131 \n
+<b>C-type:</b> uint16_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_MAC_FRAME_RX_BUFFER_SIZE
+#define CS_MAC_FRAME_RX_BUFFER_SIZE 132
+#endif
+
+#if defined(AT86RF212) || defined(CUSTOMRF3)
+#ifndef CS_LBT_MODE
+#define CS_LBT_MODE false
+#endif
+#endif
+
+#ifdef _MAC2_
+//! \brief MAC transaction persistence time
+/*!
+The parameter determines how long a frame received by the parent of a sleeping
+end device is stored. If the end device does not polls for data during this time, then
+the frame is dropped.
+
+For more details see MAC PIB attributes, Table 86 in IEEE 802.15.4-2006.
+
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+*/
+// (by default in MAC = 7680L)
+#ifndef CS_MAC_TRANSACTION_TIME
+#define CS_MAC_TRANSACTION_TIME 7680L
+#endif
+
+#else //_MAC2_
+
+//! \brief Specifies receiver state (enabled or disabled) during inactive period for an end device
+/*!
+The parameter is taken into account on end devices only. Other devices behave as
+if the parameter equals \c true.
+
+If on an end device the parameter equals \c true,
+then the end device can receive data at any time, radio is always on, and
+its parent, which is informed about the parameter's value during association,
+sends data to the child immediately upon receiving a frame for the child.
+
+Switching the parameter to \c false on an end devices turns on indirect delivery:
+the end device's parent suspends data delivery to the child until it receives
+a polling request from the child; on the end device radio is only on when data is
+being sent.
+
+<b>Value range:</b> \c true or \c false \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_RX_ON_WHEN_IDLE
+#define CS_RX_ON_WHEN_IDLE false
+#endif
+
+// \cond internal
+//! \brief Protocol version identifier. Could not be changed by user.
+#ifndef CS_PROTOCOL_VERSION
+#define CS_PROTOCOL_VERSION 0x02
+#endif
+//! \brief Stack profile identifier (Zigbee PRO profile is equal to 2). Could not be changed by user.
+#ifndef CS_STACK_PROFILE
+#define CS_STACK_PROFILE 0x02
+#endif
+// \endcond
+//! \brief Default value for the type of a device
+/*!
+ZigBee device type determines network behavior of a given device and functions it
+can perform. To give a brief overview, each networks contains exacty one coordinator and
+an arbirtary number of routers and end devices; an end device does not have children, data
+ is passed through the parent, that is, a router or the coordinator.
+
+<b>Value range:</b> \n
+::DEVICE_TYPE_COORDINATOR (0) - the coordinator\n
+::DEVICE_TYPE_ROUTER (1) - a router\n
+::DEVICE_TYPE_END_DEVICE (2) - an end device
+
+<b>C-type:</b> DeviceType_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_DEVICE_TYPE
+#define CS_DEVICE_TYPE DEVICE_TYPE_ROUTER
+#endif
+
+//! \brief The size of the neighbor table
+/*!
+The parameter determines the size of the neighbor table which is used to store
+beacon responses from nearby devices. The parameter puts an upper bound
+over the amount of child devices possible for the node.
+
+<b>Value range:</b> at minimum 1, the maximum value is limited to the available memory \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_NEIB_TABLE_SIZE
+ #define CS_NEIB_TABLE_SIZE 7
+#elif CS_NEIB_TABLE_SIZE == 0
+ #undef CS_NEIB_TABLE_SIZE
+ #define CS_NEIB_TABLE_SIZE 1
+ #warning CS_NEIB_TABLE_SIZE was set to 1
+#endif
+
+//! \brief The maximum number of direct children that a given device (the coordinator or a router) can have
+/*!
+The parameter is only enabled for routers and the coordinator. An end device can not
+have children. If an actual number of children reaches a parameter's value, the node
+will have not been able to accept any more children joining the network. The parameter can be
+set to 0 on a router thus preventing it from accepting any children and can be help form a
+desired network topology. For example, if the parameter is set to 0 on all routers, then the
+coordinator will be the only device that can have children and the network will have star topology.
+
+<b>Value range:</b> from 0 to ::CS_NEIB_TABLE_SIZE \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_MAX_CHILDREN_AMOUNT
+#define CS_MAX_CHILDREN_AMOUNT 6
+#endif
+//! \brief The maximum number of routers among the direct children of the device
+/*!
+The parameter determines how many routers the device can have as children. Note that the maximum number of
+end devices is equal to ::CS_MAX_CHILDREN_AMOUNT - ::CS_MAX_CHILDREN_ROUTER_AMOUNT.
+
+<b>Value range:</b> from 0 to ::CS_MAX_CHILDREN_AMOUNT \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+ */
+#ifndef CS_MAX_CHILDREN_ROUTER_AMOUNT
+#define CS_MAX_CHILDREN_ROUTER_AMOUNT 2
+#endif
+//! \brief The maximum depth of a network
+/*!
+The parameter determines the maximum depth of a network tree formed by
+child-parent relationships between nodes.
+
+While joining the network the node receives beacon responses from potential
+parents containing their actual network depth and declines those which show values not
+less than the maximum network depth on the joining device. A potential parent will also reject a
+beacon from the joining device and will not sent a response if the joining device shows the network
+depth greater than it is allowed on the potential parent. This logic is enabled if the parameter value
+is not greater than 15. If its value is greater than 15, then device does not perform any checkings of
+the network depth, neither when joining a network nor when accepting other nodes as children.
+This allows forming long chains of devices across considerable distances.
+
+The stack also uses the parameter to calculate several timeouts. Besides, the parameter determines the maximum radius
+of a data packet, that is, the maximum number of hops that a packet may travel, which is calculated by
+the following formula:
+
+<i>maximum radius = 2 * MIN(2 * maxNetworkDepth, 255)</i> \n
+
+These uses of the parameter do not change if its value is greater than 15. Therefore to enable
+transmitting data over long chains of devices, the parameter should be set to a real desired network depth,
+rather than to an accidental value over 15.
+
+The parameter should be the same on all devices in the network.
+
+<b>Value range:</b> from 0 to 255 \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_MAX_NETWORK_DEPTH
+#define CS_MAX_NETWORK_DEPTH 5
+#endif
+
+//! \brief The method of automatic address assignment
+/*!
+If ::CS_NWK_UNIQUE_ADDR equals \c 0 this parameter is used to determine
+the assignment method that is applied when a device enters the network to choose
+a short address. Otherwise, the parameter is ignored.
+
+<b>Value range:</b> \n
+NWK_ADDR_ALLOC_DISTRIBUTED (equals 0) - distributed address allocation; the stack
+applies a special recurrent algorithm to form a kind of a search tree from the network to simplify routing \n
+NWK_ADDR_ALLOC_STOCHASTIC (equals 2) - the address is set to a random value, different
+from all other short addresses in the network \n
+NWK_ADDR_ALLOC_FROM_UID (equals 3) - two lower bytes of the extended address are used
+for the short address
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ADDRESS_ASSIGNMENT_METHOD
+#define CS_ADDRESS_ASSIGNMENT_METHOD 2
+#endif
+
+
+#if defined(AT86RF212) || defined(CUSTOMRF3)
+/* Channel number range
+ Page 0 (BPSK modulation is used and supported IEEE 802.15.4 2003/2006 )
+ channel 0: 868 MHz | 20 Kbit/sec
+ channels 1 - 10: 915 MHz | 40 Kbit/sec
+ Page 2 (O-QPSK modulation is used and supported IEEE 802.15.4 2006)
+ channel 0: 868 MHz | 100 Kbit/sec
+ channels 1 - 10: 915 MHz | 250 Kbit/sec
+
+ BOOST mode is enabled automatically only for 11, 10, 9, 8, 7, 6 dBm. All other power values do not use BOOST mode.
+*/
+//! \brief 32-bit mask of channels to be scanned before network is started
+/*!
+Channels that should be used are marked with logical 1 at corresponding bit
+location.
+
+\note For 900 MHz band you also need to specify channel page
+
+<b>Value range:</b> 32-bit values: \n
+Valid channel numbers for 2.4 GHz band are 0x0b - 0x1a \n
+Valid channel numbers for 900 MHz band are 0x00 - 0x0a
+
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+ #ifndef CS_CHANNEL_MASK
+ #define CS_CHANNEL_MASK 0x00000002L
+ #endif
+//! \brief Number of a channel page to be used
+/*!
+Channel page number defines band and modulation scheme that will be
+used for communication.
+
+<b>Value range:</b>
+ 0 - 915MHz (BPSK-40, channels 0x01 - 0x0a), 868MHz (BPSK-20, channel 0x00) \n
+ 2 - 915MHz (O-QPSK-250, channels 0x01 - 0x0a), 868Mhz (O-QPSK-100, channel 0x00) \n
+ 5 - 780MHz (O-QPSK-250, channels 0x00 - 0x03, Chinese band)
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+ #ifndef CS_CHANNEL_PAGE
+ #define CS_CHANNEL_PAGE 0
+ #endif
+
+#else // AT86RF230/230B/231
+//! \brief 32-bit mask of channels to be scanned before network is started
+/*!
+Channels that should be used are marked with logical 1 at corresponding bit
+location.
+
+\note For 900 MHz band you also need to specify channel page
+
+<b>Value range:</b> 32-bit values: \n
+Valid channel numbers for 2.4 GHz band are 0x0b - 0x1a \n
+Valid channel numbers for 900 MHz band are 0x00 - 0x0a
+
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+ #ifndef CS_CHANNEL_MASK
+ #define CS_CHANNEL_MASK 0x00010000L
+ #endif
+//! \brief Number of a channel page to be used. Ignored in the case of AT86RF230/230B/231 RF chip.
+ #ifndef CS_CHANNEL_PAGE
+ #define CS_CHANNEL_PAGE 0
+ #endif
+#endif
+
+//! \brief Extended PAN ID of the network to which the device should join
+/*!
+The parameter specifies the predefined extended PANID of the network to be formed
+(for the coordinator) or joined (for a router or an end device). For a router or an end device
+ the parameter can equal 0 allowing them to join the first suitable network that they discover.
+
+<b>Value range:</b> All 64-bit values except for 0xFFFFFFFFFFFFFFFFLL;
+specify a value in the \c 0x123456789ABCDEFLL format. \n
+<b>C-type:</b> ExtPanId_t (equal to uint64_t) \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_EXT_PANID
+#define CS_EXT_PANID CS_UID
+#endif
+//! \brief An actual value of the extended PANID after network has started
+/*!
+Is automatically written by the stack with an actual extended PANID of the network
+to which the device joined. The parameter should not be changed while the device is
+in the network.
+
+<b>Value range:</b> All 64-bit values, specify a value in the \c 0x123456789ABCDEFLL format. \n
+<b>C-type:</b> ExtPanId_t (equal to uint64_t) \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes.*/
+#ifndef CS_NWK_EXT_PANID
+#define CS_NWK_EXT_PANID 0LL
+#endif
+/*! \brief Determines whether the static or automatic addressing mode will be used for the short address
+
+If set to \c 1, the ::CS_NWK_ADDR will be used as the device's short address.
+Otherwise, the short address is assigned automatically by the stack. An actual assignment
+method is specified in ::CS_ADDRESS_ASSIGNMENT_METHOD.
+
+<b>Value range:</b> \c 1 or \c 0 \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_NWK_UNIQUE_ADDR
+#define CS_NWK_UNIQUE_ADDR 0
+#endif
+//! \brief Device's short address if ::CS_NWK_UNIQUE_ADDR equals 1
+/*!
+If static addressing is applied the stack uses the value of the parameter as a short address. Otherwise,
+the stack assigns the parameter to a randomly chosen value unique within the network. In both cases
+after the network start the parameter holds actual short address of the device. While the device is in
+the network its value must not be changed.
+
+Note that the coordinator short address always equals \c 0x0000.
+
+<b>Value range:</b> 0x0000 - 0xFFF8 \n
+<b>C-type:</b> ShortAddr_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_NWK_ADDR
+#define CS_NWK_ADDR 0xFFFF
+#endif
+//! \brief End device sleep period given in milliseconds
+/*!
+On an end device this parameter determines the duration of a sleep period. Falling asleep is
+performed with the ZDO_SleepReq() request. After sleeping period exceeds the node is awakened and
+the application receives an indication via ZDO_WakeUpInd().
+If the parameter's value is 0, then after the node falls asleep it can only be awakened by a
+hardware interrupt; a callback for a given IRQ is registered via HAL_RegisterIrq().
+On a router or the coordinator, the parameter is used in two ways:
+
+1) To remove information about lost child end devices. If a parent receives no data polls or data
+frames from the child end device for
+CS_NWK_END_DEVICE_MAX_FAILURES*(CS_END_DEVICE_SLEEP_PERIOD + CS_INDIRECT_POLL_RATE) ms,
+then it assumes it to be lost and deletes all information about such child.
+
+2) To determine whether to store or drop a message addressed to a child end device. The parent
+estimates the time when its child end device will wake up by adding this value to the moment when the last poll
+request has been received. If the time till end device wake up is greater than CS_MAC_TRANSACTION_TIME
+the frame is stored. Otherwise, the frame is dropped.
+
+<b>Value range:</b> any value valid for the C-type; add "L" after a value \n
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_END_DEVICE_SLEEP_PERIOD
+#define CS_END_DEVICE_SLEEP_PERIOD 10000L
+#endif
+
+//! \brief Full Function Device sleep period given in milliseconds
+#ifndef CS_FFD_SLEEP_PERIOD
+#define CS_FFD_SLEEP_PERIOD 10000L
+#endif
+
+//! \brief Encryption time of maximum-size packet in ms. Decryption time is equal to encryption time.
+#ifndef CS_ENCRYPTION_TIME
+#if defined(_SECURITY_)
+ #ifdef _MAC_HW_AES_
+ #define CS_ENCRYPTION_TIME 18 // HW encryption
+ #else
+ #define CS_ENCRYPTION_TIME 119 // SW encryption
+ #endif
+#else
+ #define CS_ENCRYPTION_TIME 0ul
+#endif
+#endif
+
+//! \brief Duration of internal processing of the maximum-size packet (without encryption)
+#define CS_PACKET_PROCESS_INSIDE 7
+
+//! \brief A period in ms of polling a parent for data by an end device
+/*!
+On a sleeping end device the parameter determines a period with which poll requests
+are sent to the parent while the end device is awaken. A parent of a sleeping end device
+uses the parameter to calculate estimates of the time when the next poll request from a child
+will be received.
+
+<b>Value range:</b> any value valid for the C-type \n
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_INDIRECT_POLL_RATE
+#define CS_INDIRECT_POLL_RATE 1000
+#endif
+
+//! \brief A value used to calculate the length of time to spend scanning each channel
+/*!
+While scanning channels during network join the node keeps listening to each channel
+specified by the ::CS_CHANNEL_MASK for a period of time calculated according to the
+formula that for the 2.4GHz frequency band is: \n
+
+<i>960 * 16 * (2 raised to a power n + 1) microseconds,</i>
+
+providing n is a value of this parameter. Note that the formula for the Sub-GHz employs
+another constant instead of 16.
+
+<b>Value range:</b> 0x00-0x0e \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_SCAN_DURATION
+#define CS_SCAN_DURATION 0x05
+#endif
+//! \brief Specifies whether the device accepts children joining via MAC association
+/*!
+If the parameter being switched between \c 0xff and \c 0x00, determines whether the device
+accepts or not a child joining the network via MAC association, that is, if the joining device does not
+possess the PANID value of the network and its PANID parameter is set to 0.
+
+The parameter can be set before the netwrok start only. Once the device entered the netwrok it can
+only switch the parameter with the help of a permit duration ZDP request.
+
+<b>Value range:</b> 0xff means "always on", 0x00 means "always off" \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+ */
+#ifndef CS_PERMIT_DURATION
+#define CS_PERMIT_DURATION 0xff
+#endif
+//! \brief Enables or disables the multicast transmission mode at the NWK layer
+/*!
+If the parameter is set to \true multicasting on the NWK level is used, otherwise,
+multicasting on the APS level is applied. The parameter is recommended to be set to
+\c true. For detail refer to ZigBee specification.
+
+<b>Value range:</b> \c true or \c false \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_NWK_USE_MULTICAST
+#define CS_NWK_USE_MULTICAST true
+#endif
+
+//! \brief Indicates whether a complex descriptor is available on this device
+/*!
+<b>Value range:</b> \c true or \c false \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_COMPLEX_DESCRIPTOR_AVAILABLE
+#define CS_COMPLEX_DESCRIPTOR_AVAILABLE false
+#endif
+
+//! \brief Specifies whether a user descriptor is available on this device
+/*!
+A user descriptor is simply a string that can be assigned to a device and requested
+by other devices in the network to identify the device. A user descriptor can read
+and set on a remote device as well as on the local device with the help of corresponding
+ZDP requests.
+
+<b>Value range:</b> \c true or \c false \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_USER_DESCRIPTOR_AVAILABLE
+#define CS_USER_DESCRIPTOR_AVAILABLE true
+#endif
+
+//! \brief The stack version
+/*!
+This is a read-only parameter specifying the stack version
+used by the device.
+
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_STACK_VERSION
+#define CS_STACK_VERSION CS_STACK_VERSION_VALUE
+#endif
+
+#ifdef _COMMISSIONING_
+//! \brief Persistent memory storing interval (ms)
+#ifndef CS_PDS_STORING_INTERVAL
+#define CS_PDS_STORING_INTERVAL 300000UL /* 5 minutes */
+#endif
+
+//! \brief Enabales or disables the power failure feature.
+#ifdef _POWER_FAILURE_
+#ifndef CS_POWER_FAILURE
+#define CS_POWER_FAILURE false
+#endif
+#endif /* _POWER_FAILURE_ */
+#endif /* _COMMISSIONING_ */
+
+// by default in MAC = 7680L
+//! \brief MAC transaction persistence time measured in ms
+/*!
+The parameter determines the maximum interval (in ms) a frame addressed to a sleeping
+end device can be stored on the parent node. If the end device does not poll for data
+during this time, then the frame is dropped.
+
+<b>Value range:</b> all unsinged 32-bit integers\n
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_MAC_TRANSACTION_TIME
+#define CS_MAC_TRANSACTION_TIME ((uint32_t)CS_END_DEVICE_SLEEP_PERIOD + ((uint32_t)CS_INDIRECT_POLL_RATE * 3ul))
+#endif
+
+//! \brief The size of the APS duplicate rejection table
+/*!
+The duplicate rejection table is used by APS to store information about incoming
+unicast messages in order to reject messages that have been already received and processed.
+Following ZigBee specification, the parameter should be not less than 1.
+
+<b>Value range:</b> greater than 1 \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_DUPLICATE_REJECTION_TABLE_SIZE
+#define CS_DUPLICATE_REJECTION_TABLE_SIZE 10
+#endif
+
+//! \brief The maximum number of records in the NWK route table.
+/*!
+The parameter sets the maximum number of records that can be kept in the
+NWK route table. The table is used by NWK to store information about established
+routes. Each table entry specifies the next-hop short address for a route from the
+current node to a given destination node. The table is being filled automatically
+during route discovery. An entry is added when a route is discovered.
+
+Since the end device always sends a frame directly to its parent its route table size
+should be set to 0.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#if defined _ROUTER_ || defined _COORDINATOR_
+ #if !defined CS_ROUTE_TABLE_SIZE
+ #define CS_ROUTE_TABLE_SIZE 4
+ #endif
+ #if CS_ROUTE_TABLE_SIZE == 0
+ #undef CS_ROUTE_TABLE_SIZE
+ #define CS_ROUTE_TABLE_SIZE 1
+ #warning CS_ROUTE_TABLE_SIZE was set to 1
+ #endif
+#else // _ENDDEVICE_
+ #undef CS_ROUTE_TABLE_SIZE
+ #define CS_ROUTE_TABLE_SIZE 0
+#endif // _ROUTER_ or _COORDINATOR_
+
+//! \brief The maximum number of records in the NWK address map table
+/*!
+The parameter sets the maximum number of records in the address map table used by
+NWK to store pairs of corresponding short and extended addresses. The stack appeals
+to the table when a data frame is being sent to a specified extended address to extract
+the corresponding short address. If it fails to find the short address, an error is reported.
+
+<b>C-type:</b> NwkSizeOfAddressMap_t (typedef for uint8_t) \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ADDRESS_MAP_TABLE_SIZE
+#define CS_ADDRESS_MAP_TABLE_SIZE 5
+#endif
+#if CS_ADDRESS_MAP_TABLE_SIZE == 0
+ #undef CS_ADDRESS_MAP_TABLE_SIZE
+ #define CS_ADDRESS_MAP_TABLE_SIZE 1
+ #warning CS_ADDRESS_MAP_TABLE_SIZE was set to 1
+#endif
+
+//! \brief The maximum number of records in the NWK route discovery table
+/*!
+The parameter specifies the size of the route discovery table used by NWK to store
+next-hop addresses of the nodes for routes that are not yet established. Upon exausting
+the capacity of the table, the stack starts rewriting old entries. If the size of the route table
+is big enough after all used routes are established the table may not be used.
+
+Since the end device always sends a frame directly to its parent its route discovery table size
+should be set to 0.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#if defined _ROUTER_ || defined _COORDINATOR_
+ #if !defined CS_ROUTE_DISCOVERY_TABLE_SIZE
+ #define CS_ROUTE_DISCOVERY_TABLE_SIZE 3
+ #endif
+ #if CS_ROUTE_DISCOVERY_TABLE_SIZE == 0
+ #undef CS_ROUTE_DISCOVERY_TABLE_SIZE
+ #define CS_ROUTE_DISCOVERY_TABLE_SIZE 1
+ #warning CS_ROUTE_DISCOVERY_TABLE_SIZE was set to 1
+ #endif
+#else // _ENDDEVICE_
+ #undef CS_ROUTE_DISCOVERY_TABLE_SIZE
+ #define CS_ROUTE_DISCOVERY_TABLE_SIZE 0
+#endif // _ROUTER_ or _COORDINATOR_
+
+#if !defined CS_NWK_BUFFERS_AMOUNT
+ #define CS_NWK_BUFFERS_AMOUNT 4
+#endif // CS_NWK_BUFFERS_AMOUNT
+
+//!\brief The size of the passive acknoledgement table
+#if !defined CS_NWK_PASSIVE_ACK_AMOUNT
+ #define CS_NWK_PASSIVE_ACK_AMOUNT 8
+#endif // CS_NWK_PASSIVE_ACK_AMOUNT
+
+//!\brief The size of of the broadcast transmission table
+/*!
+The broadcast transmission table is used for tracking incoming broadcast messages
+to mark messages that have already been processed by the node. This causes only one
+copy for each broadcast message to be processed. An entry for a broadcast message is
+stored for a certain period of time and then removed.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#if !defined CS_NWK_BTT_SIZE
+ #define CS_NWK_BTT_SIZE 8
+#endif
+
+//!\brief The size of of the group table
+/*!
+The size cannot be 0. The group table stores pairs of a group address and an endpoint. Upon
+receiving a frame addressed to members of a certain group which include the current node as well
+the stack fires indications on all endpoints registered with the group address.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#if defined CS_GROUP_TABLE_SIZE
+ #if CS_GROUP_TABLE_SIZE == 0
+ #undef CS_GROUP_TABLE_SIZE
+ #define CS_GROUP_TABLE_SIZE 1
+ #warning CS_GROUP_TABLE_SIZE was set to 1
+ #endif
+#else
+ #define CS_GROUP_TABLE_SIZE 1
+#endif
+
+//! \brief The number of buffers for data requests on the APS layer
+/*!
+The parameter specifies the number of buffers that are allocated by APS
+to store data requests parameters. The parameter puts an upper bound to the number of
+data requests that can be processed by APS simultaneously. If all buffers are in
+use and a new data request appears, it is kept in a queue until a buffer is released.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_APS_DATA_REQ_BUFFERS_AMOUNT
+ #ifdef _SECURITY_
+ #define CS_APS_DATA_REQ_BUFFERS_AMOUNT 3
+ #else // !_SECURITY_
+ #define CS_APS_DATA_REQ_BUFFERS_AMOUNT 2
+ #endif // _SECURITY_
+#endif
+
+//! \brief The number of buffers for acknowledgement messages sent by APS
+/*!
+This parameter determines the amount of memory that needs to be allocted for a special type
+of buffers used by APS to store payloads for acknowledgement frames. The need to use the buffers
+occurs when the node receives a frame that has to be acknowledged. That is, the APS component on
+the node has to send an acknowledgement frame. For frames initiated by the application, the memory for
+a payload is to be allocated by the application on its own, while the payload memory for an acknowledgement
+frame shall be reserved by APS. The request parameters are still stored in the data request buffers.
+
+Typically, a value of this parameter equals ::CS_APS_DATA_REQ_BUFFERS_AMOUNT - 1.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+// To send APS ACK both types of buffers are used (.._DATA_REQ_.. and .._ACK_FRAME_..)
+#ifndef CS_APS_ACK_FRAME_BUFFERS_AMOUNT
+ #define CS_APS_ACK_FRAME_BUFFERS_AMOUNT 2
+#endif
+
+//! \brief The maximum number of transmissoin retries allowed at the APS layer
+/*!
+The parameter sets the number of attempts that will be made by APS layer to
+transmit a data frame. If all these attempts fail due to underlying layers failures,
+then APS response with an error status.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_APS_MAX_FRAME_RETRIES
+ #define CS_APS_MAX_FRAME_RETRIES 3
+#elif CS_APS_MAX_FRAME_RETRIES > 5
+ #undef CS_APS_MAX_FRAME_RETRIES
+ #define CS_APS_MAX_FRAME_RETRIES 5
+ #warning CS_APS_MAX_FRAME_RETRIES was set to 5
+#endif
+
+#ifndef CS_DTR_WAKEUP
+#define CS_DTR_WAKEUP false
+#endif
+
+/*! \brief If the number of consecutives link status frames given by this parameter is missed
+from a neighbor it is removed from the neigbor table
+
+For all neighbors except for end device children the stack tracks the time of receiving link statuses.
+If link statuses are not received from a given neighbor for this parameter's value times of link status
+period (typically 15 seconds), then the neighbor is deleted from the neighbor table.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_NWK_MAX_LINK_STATUS_FAILURES
+#define CS_NWK_MAX_LINK_STATUS_FAILURES 3
+#endif
+
+/*! \brief Is used to calculate the length of time after which a not responding
+end device child is considered lost
+
+A sleeping end device is considered lost and a corresponding notification is raised on the
+parent, if the end device does not polls for data for the time span which duration is calculated by
+the following formula:
+\code
+CS_NWK_END_DEVICE_MAX_FAILURES * (CS_END_DEVICE_SLEEP_PERIOD + CS_INDIRECT_POLL_RATE)
+\endcode
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time \n
+<b>Persistent:</b> No
+ */
+#ifndef CS_NWK_END_DEVICE_MAX_FAILURES
+#define CS_NWK_END_DEVICE_MAX_FAILURES 3
+#endif
+
+//! \brief The maximum number of records in the binding table
+/*!
+The parameter sets the size of the binding table used by APS to store binding
+links, which are structures containing information about source and destination
+extended addresses and endpoints for unicast bindings and just group addresses
+as destinations for group bindings. If the binding is going to be applied to send
+a data frame, then the corresponding entry shall be first inserted into the table via
+the APS_BindingReq() function.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifdef _BINDING_
+#ifndef CS_APS_BINDING_TABLE_SIZE
+ #define CS_APS_BINDING_TABLE_SIZE 1
+#endif
+#endif //_BINDING_
+
+#ifdef _APS_FRAGMENTATION_
+//! \brief The maximum number of blocks the asdu can be split into
+/*!
+This parameter limits the number of pieces to which the data sent with one APS request
+can be split i f the fragmentation feature is applied. Thus it also limits the maximum amount
+of data sent by the application with a single request:\n
+maximum data length = ::CS_APS_MAX_BLOCKS_AMOUNT * ::CS_APS_BLOCK_SIZE if the latter
+parameter is not 0, else \n
+maximum data length = ::CS_APS_MAX_BLOCKS_AMOUNT * ::APS_MAX_ASDU_SIZE.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+ */
+#ifndef CS_APS_MAX_BLOCKS_AMOUNT
+#define CS_APS_MAX_BLOCKS_AMOUNT 0
+#endif
+
+//! \brief The block size that is used for fragments in fragmented transmission
+/*!
+If the value is 0, then the maximum possible size is used for the block size, that is, the value
+of ::CS_APS_MAX_ASDU_SIZE. The parameter and ::CS_APS_MAX_BLOCKS_AMOUNT are
+ also used to determine an amount of memory allocated for a special buffer that keeps parts of
+incoming fragmented message until all of them are received.
+
+<b>C-type:</b> uint16_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_APS_BLOCK_SIZE
+#define CS_APS_BLOCK_SIZE 0
+#endif
+#if ((CS_APS_BLOCK_SIZE > APS_MAX_ASDU_SIZE) || (CS_APS_BLOCK_SIZE == 0))
+ #undef CS_APS_BLOCK_SIZE
+ #define CS_APS_BLOCK_SIZE APS_MAX_ASDU_SIZE
+#endif
+
+//! \brief Maximum transmission window size (in blocks)
+/*!
+The parameter determines how many pieces of a fragmented message are sent before
+waiting for an aknowledgement. After acknowledgement is received another
+portion of frames are sent and so on.
+
+<b>Value range:</b> greater than 0 \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_APS_MAX_TRANSMISSION_WINDOW_SIZE
+ #ifdef _ZHP_SECURITY_
+ #define CS_APS_MAX_TRANSMISSION_WINDOW_SIZE 1
+ #else
+ #define CS_APS_MAX_TRANSMISSION_WINDOW_SIZE 3
+ #endif
+#endif
+
+#endif /* _APS_FRAGMENTATION_ */
+
+
+/*****************************************************************************
+ Security related defines
+*****************************************************************************/
+
+#ifdef _SECURITY_
+/*! \brief Turns on/off security features
+
+The parameter shall be configured before the network start. If it is set
+to \c false, authentication is not applied as well as encryption of data frames,
+therefore the device will only be able to enter networks without security.
+
+<b>Value range:</b> \c true of \c false \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_SECURITY_ON
+#define CS_SECURITY_ON true
+#endif
+
+/*! \brief A timeout for authentication procedures
+
+A timeout is started when connection with a parent is established. If the
+security related procedures that are performed after this will not be completed
+before the timeout exceeds, the device will fail joining the network. A value is
+measured in milliseconds.
+
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_APS_SECURITY_TIMEOUT_PERIOD
+#define CS_APS_SECURITY_TIMEOUT_PERIOD (2 * 1000 * 10)
+#endif
+
+//! \brief Default address of the trust center
+/*!
+The parameter specifies the trust center extended address. The stack makes use of the
+parameter to support various opertaions in networks with security enabled. For correct network operation
+the parameter's value must coincide with the actual trust center address.
+
+In case the trust center extended address is unknown, for example, for testing purposes, the
+parameter can be set to the universal trust center address which equals ::APS_SM_UNIVERSAL_TRUST_CENTER_EXT_ADDRESS.
+
+<b>Value range:</b> All 64-bit values except for 0xFFFFFFFFFFFFFFFFLL,
+specify a value in the \c 0x123456789ABCDEFLL format. \n
+<b>C-type:</b> ExtAddr_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_APS_TRUST_CENTER_ADDRESS
+#define CS_APS_TRUST_CENTER_ADDRESS 0xAAAAAAAAAAAAAAAALL
+#endif
+//! \brief ZDO security status.
+/*!
+The parameter is used to determine the security type.
+
+<b>Value range:</b> 0,3 - for standard security; 1 - for stdlink security; 1,2,3 - for high security. \n
+0 - network key is preconfigured ; \n
+1 - network join without master key, but with the trust center link key, which must be set via APS_SetLinkKey();\n
+2 - network join employs the trust center master key, which must be set via APS_SetMasterKey(); \n
+3 - <i>for standard security:</i>network key is not preconfigured, but rather received from the
+ trust center in an unencrypted frame;
+ <i>for high security:</i>the trust center master key is not preconfigured, but rather received
+ from the trust center during network join.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+ */
+#ifndef CS_ZDO_SECURITY_STATUS
+#define CS_ZDO_SECURITY_STATUS 0
+#endif
+/*! \brief The maximum number of network keys that can be stored on the device
+
+A device in a secured network can keep several network keys up to the value of this
+parameter. Upon frame reception the device extracts key sequence number from the auxiliary
+header of the frame and decrypts the message with the network key corresponding to this
+sequence number. Besides, one key is considered active for each device; this is the key that
+is used for encrypting outgoing frames.
+
+Network keys are distributed by the trust center with the help of the APS_TransportKeyReq()
+command. A switch to a new active network key is also initiated by the trust center, which
+should use the APS_SwitchKeyReq() function.
+
+<b>C-type:</b> NwkKeyAmount_t (typedef for uint8_t) \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_NWK_SECURITY_KEYS_AMOUNT
+#define CS_NWK_SECURITY_KEYS_AMOUNT 1
+#endif
+/*! \brief Default value of the network key
+
+This is a parameter to store a value of the network key which is used to encrypt a part of a
+data frame occupied by the NWK payload. This type of encryption is applied in both the standard and
+high security mode. The high security mode also enables encryption of the APS payload with a link
+key, but if the \c txOptions.useNwkKey field in APS request parameters is set to 0, the
+APS payload is ecrypted with the network key.
+
+The network key must be predefined if standard security is used with ::CS_ZDO_SECURITY_STATUS
+set to 0. For all other values of ::CS_ZDO_SECURITY_STATUS the network key is received from the
+trust center during device authentication. Note that in the standard security mode with
+::CS_ZDO_SECURITY_STATUS equal to 3 the network key is trasferred to the joining device
+in an unencrypted frame.
+
+<b>Value range:</b> all 128-bit values \n
+<b>C-type:</b> uint8_t[16] or any compatible \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_NETWORK_KEY
+#define CS_NETWORK_KEY {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+#endif
+// \cond internal
+// Default security level.When calculating APS_MAX_ASDU_SIZE assumed that this parameter is 5.
+#ifndef CS_SECURITY_LEVEL
+#define CS_SECURITY_LEVEL 0x05U
+#endif
+#if CS_SECURITY_LEVEL != 0x05U
+#error Parameter CS_SECURITY_LEVEL must be 5.
+#endif
+
+// Default nwkSecureAllFrames attribute value in NIB.
+#ifndef CS_SECURITY_ALL_FRAMES
+#define CS_SECURITY_ALL_FRAMES true
+#endif
+// \endcond
+/*! \brief The maximum number of authentication requests that the trust center can process simultaneously
+
+The parameter is used on the trust center to allocate memory for buffers used
+during joining device authentication. A value of the parameter determines how many
+authentication request the stack on the trust center can process at once.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT
+ #define CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT 1
+#endif
+
+#ifdef _TC_PERMISSION_TABLE_
+//! \brief For a trust center, the maximum amount of records in the permission table
+ #ifndef CS_MAX_TC_ALLOWED_DEVICES_AMOUNT
+ #define CS_MAX_TC_ALLOWED_DEVICES_AMOUNT 5
+ #endif
+#endif
+
+#ifdef _LINK_SECURITY_
+//! \brief The maximum number of entries in APS key-pair set
+/*!
+The parameter is used in stadard security with link keys and in high security
+to specify the size of the APS key-pair set. The APS key-pair set stores pairs of corresponding
+extended address and a link key or a mster key.
+For each node with which the current node is going to communicate it must keep an entry with
+the remote node extended address and a link key. If the link key is unknown, the node can request
+the trust center for it via APS_RequestKeyReq(). The trust center must store a link key or a master
+key depending on the CS_SECURITY_STATUS used for each node it is going to authenticate.
+Entries can also be added manually by APS_SetLinkKey() and APS_SetMasterKey().
+
+<b>Value range:</b> 1 - 255 \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT
+#define CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT 3
+#endif
+
+//\cond internal
+//Not used in the stack
+#ifndef CS_MASTER_KEY
+#define CS_MASTER_KEY {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+#endif
+
+#ifndef CS_MAX_TC_ESTABLISH_KEY_AMOUNT
+#define CS_MAX_TC_ESTABLISH_KEY_AMOUNT 1
+#endif
+//\endcond
+#endif
+
+
+#endif
+
+/*! \brief The number of network join attempts ZDO performs before it reports failure
+
+Determines the maximum number of attempts to enter a network performed by the stack
+during network start. Upon each attempt ZDO sends a beacon request and collects
+beacon responses from nearby devices all over again. A pause length between two attempts
+is given by the ::CS_ZDO_JOIN_INTERVAL parameter.
+
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZDO_JOIN_ATTEMPTS
+#define CS_ZDO_JOIN_ATTEMPTS 4
+#endif
+
+/*! \brief The interval between two network join attempts
+
+The parameter specifies the time span in milliseconds between two attempts
+to join the network. See ::CS_ZDO_JOIN_ATTEMPTS description.
+
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZDO_JOIN_INTERVAL
+#define CS_ZDO_JOIN_INTERVAL 1000
+#endif
+
+/*! \brief ZDP response waiting timeout in millisecods. To use automatically calculated value set to 0
+
+The parameter determines the length of time for which the reply in response to a ZDP request
+is waited. if the response is not received before the timeout exceeds the confirmation callback for
+the ZDP request is called to report a failure status.
+
+<b>C-type:</b> uint16_t \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZDP_RESPONSE_TIMEOUT
+#define CS_ZDP_RESPONSE_TIMEOUT 0
+#endif
+
+//! \brief TC Keep-Alive polling interval, should be in the range 5-20 minutes.
+#ifndef CS_ZDO_TC_KEEP_ALIVE_INTERVAL
+#define CS_ZDO_TC_KEEP_ALIVE_INTERVAL 20
+#endif
+
+
+//! \brief Indication to use a predefined network PANID value
+/*!
+If a predefined value is required to be used for the network PANID, the parameter
+shall be set to \c true. Otherwise, it shall be set to \c false.
+
+<b>Value range:</b> \c true or \c false \n
+<b>C-type:</b> bool \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_NWK_PREDEFINED_PANID
+#define CS_NWK_PREDEFINED_PANID false
+#endif
+
+//! \brief A predefined short PANID value
+/*!
+The parameter holds the short PANID value generated randomly if ::CS_NWK_PREDEFINED_PANID
+equals \c false. Otherwise, the predefined parameter's value is
+used as the short PANID.
+
+<b>Value range:</b> 16-bit values from the range 0x0000 - 0xFFFE \n
+<b>C-type:</b> PanId_t (typedef for uint16_t) \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> Yes
+*/
+#ifndef CS_NWK_PANID
+#define CS_NWK_PANID 0x1234
+#endif
+// \cond internal
+/*! 16-bit manufacturer code allocated by the ZigBee Alliance.
+ * See ZigBee Manufacturer Code Database, 053874r16, Atmel code. */
+#ifndef CS_MANUFACTURER_CODE
+#define CS_MANUFACTURER_CODE 0x1014
+#endif
+
+#if defined _ROUTER_ || defined _COORDINATOR_
+ #if !defined CS_JOIN_IND_OBJ_AMOUNT
+ #define CS_JOIN_IND_OBJ_AMOUNT (CS_NWK_BUFFERS_AMOUNT >> 1)
+ #endif
+#else // _ENDDEVICE_
+ #undef CS_JOIN_IND_OBJ_AMOUNT
+ #define CS_JOIN_IND_OBJ_AMOUNT 0
+#endif // _ROUTER_ or _COORDINATOR_
+
+/* Maximum number of records in the route cache */
+#if defined _NWK_ROUTE_CACHE_ && (defined _ROUTER_ || defined _COORDINATOR_)
+ #if !defined CS_ROUTE_CACHE_SIZE
+ #define CS_ROUTE_CACHE_SIZE 4
+ #endif /* CS_ROUTE_CACHE_SIZE */
+ #if CS_ROUTE_CACHE_SIZE == 0
+ #undef CS_ROUTE_CACHE_SIZE
+ #define CS_ROUTE_CACHE_SIZE 1
+ #warning CS_ROUTE_CACHE_SIZE was set to 1
+ #endif
+#else /* no route cache */
+ #undef CS_ROUTE_CACHE_SIZE
+ #define CS_ROUTE_CACHE_SIZE 0
+#endif
+
+/** The time in milliseconds between concentrator route discoveries.
+ * ZigBee spec r18, Table 3.44, page 348. */
+#if !defined NWK_CONCENTRATOR_DISCOVERY_TIME
+ #define NWK_CONCENTRATOR_DISCOVERY_TIME 20000UL /* milliseconds */
+#endif
+
+// \endcond
+#endif //_MAC2_
+
+#ifdef _ZCL_
+#ifndef CS_ZCL_ATTRIBUTE_REPORT_TIMER_INTERVAL
+ #define CS_ZCL_ATTRIBUTE_REPORT_TIMER_INTERVAL 4000
+#endif
+
+#ifndef CS_ZCL_MEMORY_BUFFERS_AMOUNT
+ #define CS_ZCL_MEMORY_BUFFERS_AMOUNT 5
+#endif
+
+#ifdef _OTAU_
+/** \brief The default address of an upgrade server
+
+The parameter indicates how the OTAU client will search for OTAU servers in the network.
+If one of broadcast addresses is specified, the client will attempt to find all devices supporting
+the OTAU server cluster and will request new images from the first server that will respond.
+Otherwise, the client will try to connect to a particular device with the specified extended
+address.
+
+The parameter is valid for OTAU clients only.
+
+<b>Value range:</b> any 64-bit value: \n
+\li \c 0x0000000000000000ull, \c 0xFFFFFFFFFFFFFFFFull - a server discovery request is broadcasted
+\li otherwise, the client tries to connect to a particular node
+
+<b>C-type:</b> ExtAddr_t \n
+<b>Can be set:</b> at any time before an OTAU start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZCL_OTAU_DEFAULT_UPGRADE_SERVER_IEEE_ADDRESS
+ #define CS_ZCL_OTAU_DEFAULT_UPGRADE_SERVER_IEEE_ADDRESS 0xFFFFFFFFFFFFFFFFull
+#endif
+/** \brief The interval in milliseconds between two attempts to find an upgrade server
+
+The parameter is valid for OTAU clients only.
+
+<b>Value range:</b> any 32-bit value \n
+<b>C-type:</b> uint32_t \n
+<b>Can be set:</b> at any time before an OTAU start \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZCL_OTAU_SERVER_DISCOVERY_PERIOD
+ #define CS_ZCL_OTAU_SERVER_DISCOVERY_PERIOD 60000ul
+#endif
+/** Default values of OTAU session. */
+/** \brief The amount of servers the OTAU client can listen to during upgrade server discovery
+
+The OTAU client can store information about several discovered OTAU servers. However, the client
+device tries to connect to discovered servers one by one until the first successful attempt and then
+communicates and uploads the whole image from the fisrt suitable server.
+
+The parameter is valid for OTAU clients only.
+
+<b>Value range:</b> at least 1 \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZCL_OTAU_DISCOVERED_SERVER_AMOUNT
+ #define CS_ZCL_OTAU_DISCOVERED_SERVER_AMOUNT 1
+#endif
+/** \brief The number of clients that the OTAU server can serve simultaneously
+
+If this parameter equals 1, the OTAU server will upgrade devices in the network
+one by one. However, the server can process more than one client sessions at a time,
+if this parameter is greater than 1.
+
+The parameter is valid for OTAU servers only.
+
+<b>Value range:</b> at least 1 \n
+<b>C-type:</b> uint8_t \n
+<b>Can be set:</b> at compile time only \n
+<b>Persistent:</b> No
+*/
+#ifndef CS_ZCL_OTAU_CLIENT_SESSION_AMOUNT
+ #define CS_ZCL_OTAU_CLIENT_SESSION_AMOUNT 1
+#endif
+/** \brief Usage of page request for OTAU
+*/
+#ifndef CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_USAGE
+ #define CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_USAGE 1
+#endif
+/** \brief Timeout between Image Block Response packet sent form server to client
+
+The value indicates how fast the server shall send the data (via Image Block Response command) to the client.
+The value is determined by the client.
+The server shall wait at the minimum the (response) spacing value before sending more data to the client.
+The value is in milliseconds.
+*/
+#ifndef CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_RESPONSE_SPACING
+ #define CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_RESPONSE_SPACING 200
+#endif
+/** \brief Page size
+
+The value indicates the number of bytes to be sent by the server before the client sends another Image Page Request command.
+In general, page size value shall be larger than the maximum data size value.
+*/
+#if CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_USAGE == 1
+ #ifndef CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_PAGE_SIZE
+ #define CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_PAGE_SIZE 256
+ #endif
+#else
+ #undef CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_PAGE_SIZE
+ #define CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_PAGE_SIZE 1
+#endif //CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_USAGE == 1
+/** \brief OTAU buffer for missed block responses during page request
+*/
+#if CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_USAGE == 1
+ #ifndef CS_ZCL_OTAU_MISSED_BLOCKS_BUFFER_SIZE
+ #define CS_ZCL_OTAU_MISSED_BLOCKS_BUFFER_SIZE 8
+ #endif
+#else
+ #undef CS_ZCL_OTAU_MISSED_BLOCKS_BUFFER_SIZE
+ #define CS_ZCL_OTAU_MISSED_BLOCKS_BUFFER_SIZE 1
+#endif //CS_ZCL_OTAU_IMAGE_PAGE_REQUEST_USAGE == 1
+
+#endif //_OTAU_
+#endif //_ZCL_
+
+#ifndef CS_BAN_TABLE_SIZE
+ #define CS_BAN_TABLE_SIZE 1
+#endif /* _MAC_BAN_NODE_ */
+
+/** \brief The maximum route cost between two nodes for direct delivery
+
+A data frame is routed directly to the neighbor only if the route cost, read
+from the neighbor table, is less than the value of the parameter. If the route
+cost is greater than the value of the parameter, route discovery will be
+initiated to find an indirect route to the neighbor.
+
+<b>Value range:</b> 0 - 8 \n
+0 - ignore information in the neighbor table (always start route discovery) \n
+8 - always send data directly to a neighbor
+
+<b>C-type:</b> NwkLinkCost_t (typedef for uint8_t) \n
+<b>Can be set:</b> at any time before network start \n
+<b>Persistent:</b> No
+ */
+#ifndef CS_MAX_NEIGHBOR_ROUTE_COST
+ #define CS_MAX_NEIGHBOR_ROUTE_COST 8U
+#endif
+
+/******************************************************************************
+ Functions prototypes section
+******************************************************************************/
+
+/**************************************************************************//**
+\brief Set Configuration Server memory to its default state
+******************************************************************************/
+void csSetToDefault(void);
+
+#endif // _CSDEFAULTS_H
+/* eof cdDefaults.h*/