configServer.h

Go to the documentation of this file.
00001 /*************************************************************************/
00016 #ifndef _CONFIGSERVER_H
00017 #define _CONFIGSERVER_H
00018 
00019 #include <types.h>
00020 #include <avr/io.h>
00021 #include <avr/pgmspace.h>
00022 
00023 /*****************************************************************************
00024   Defines
00025 *****************************************************************************/
00026 #ifndef CS_PROTOCOL_VERSION
00027 #define CS_PROTOCOL_VERSION                   0x02
00028 #endif
00029 #ifndef CS_STACK_PROFILE
00030 #define CS_STACK_PROFILE                      0x02
00031 #endif
00032 #ifndef CS_DEVICE_TYPE
00033 #define CS_DEVICE_TYPE                        DEVICE_TYPE_ROUTER
00034 #endif
00036 
00037 #ifndef CS_NEIB_TABLE_SIZE
00038 #define CS_NEIB_TABLE_SIZE                    6
00039 #endif
00040 #ifndef CS_MAX_CHILDREN_AMOUNT
00041 #define CS_MAX_CHILDREN_AMOUNT                5
00042 #endif
00043 #ifndef CS_MAX_CHILDREN_ROUTER_AMOUNT
00044 #define CS_MAX_CHILDREN_ROUTER_AMOUNT         2
00045 #endif
00046 #ifndef CS_MAX_NETWORK_DEPTH
00047 #define CS_MAX_NETWORK_DEPTH                  5
00048 #endif
00049 #ifndef CS_ADDRESS_ASSIGNMENT_METHOD
00050 #define CS_ADDRESS_ASSIGNMENT_METHOD          2
00051 #endif
00052 #ifndef CS_AUTONETWORK
00053 #define CS_AUTONETWORK                        false
00054 #endif
00055 #ifndef CS_CHANNEL_MASK
00056 #define CS_CHANNEL_MASK                       0x00010000L
00057 #endif
00058 #ifndef CS_UID
00059 #define CS_UID                                0x0000000000000000LL
00060 #endif
00061 #ifndef CS_EXT_PANID
00062 #define CS_EXT_PANID                          CS_UID                     
00063 #endif
00064 #ifndef CS_NWK_EXT_PANID
00065 #define CS_NWK_EXT_PANID                      0LL
00066 #endif
00067 #ifndef CS_NWK_ADDR
00068 #define CS_NWK_ADDR                       0xFFFF
00069 #endif 
00070 #ifndef CS_NWK_UNIQUE_ADDR
00071 #define CS_NWK_UNIQUE_ADDR                          false
00072 #endif
00074 
00077 #ifndef CS_END_DEVICE_ACTIVE_PERIOD
00078 #define CS_END_DEVICE_ACTIVE_PERIOD           0L
00079 #endif
00081 
00084 #ifndef CS_END_DEVICE_SLEEP_PERIOD
00085 #define CS_END_DEVICE_SLEEP_PERIOD            10000L
00086 #endif
00087 
00088 
00089 // Encryption time of maximum packet size in ms. Decryption time is equal to encryption time.
00090 #ifndef CS_ENCRYPTION_TIME
00091 #if defined(_SECURITY_)
00092   #ifdef _MAC_HW_AES_
00093     #define CS_ENCRYPTION_TIME 18     // HW encryption
00094   #else
00095     #define CS_ENCRYPTION_TIME 119    // SW encryption
00096   #endif
00097 #else
00098   #define CS_ENCRYPTION_TIME 0ul
00099 #endif
00100 #endif
00101 
00102 // The time of transmission a packet with max lengh on air plus
00103 // the time of processing an incoming transit packet from receiving from air to sending to air (ms) 
00104 #ifndef CS_MAX_HOP_TIME
00105 #define CS_MAX_HOP_TIME (4ul+7ul)
00106 #endif
00107 
00108 #ifndef CS_ACK_TIMEOUT
00109 #define CS_ACK_TIMEOUT  (3ul * CS_MAX_NETWORK_DEPTH * (CS_MAX_HOP_TIME + (CS_ENCRYPTION_TIME * 2)))
00110 #endif 
00111 
00113 
00114 #ifndef CS_INDIRECT_POLL_RATE
00115 #define CS_INDIRECT_POLL_RATE                 (CS_ACK_TIMEOUT >> 1)
00116 #endif
00117 #ifndef CS_RF_TX_POWER
00118 /* It was TX_PWR_3_0DBM. */
00119 #define CS_RF_TX_POWER                        3
00120 #endif
00121 #ifndef CS_SCAN_DURATION
00122 #define CS_SCAN_DURATION                      0x05
00123 #endif
00124 
00126 #ifndef CS_PERMIT_DURATION
00127 #define CS_PERMIT_DURATION                    0xff
00128 #endif
00129 #ifndef CS_SOFT_RESET_REASON
00130 #define CS_SOFT_RESET_REASON                  0
00131 #endif
00132 #ifndef CS_NWK_USE_MULTICAST
00133 #define CS_NWK_USE_MULTICAST                  false
00134 #endif
00135 // by default in MAC = 7680L
00136 #ifndef CS_MAC_TRANSACTION_TIME               
00137 #define CS_MAC_TRANSACTION_TIME               (CS_END_DEVICE_SLEEP_PERIOD + (CS_INDIRECT_POLL_RATE * 3))
00138 #endif
00139 #ifndef CS_DUPLICATE_REJECTION_TABLE_SIZE
00140 #define CS_DUPLICATE_REJECTION_TABLE_SIZE     10
00141 #endif  
00142 #ifndef CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT    
00143 #define CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT   1
00144 #endif
00145 #ifndef CS_APS_GROUP_TABLE_GROUPS_AMOUNT    
00146 #define CS_APS_GROUP_TABLE_GROUPS_AMOUNT      1
00147 #endif
00148 #ifndef CS_ROUTE_TABLE_SIZE                   
00149 #define CS_ROUTE_TABLE_SIZE                   30
00150 #endif
00151 #ifndef CS_ADDRESS_MAP_TABLE_SIZE                   
00152 #define CS_ADDRESS_MAP_TABLE_SIZE             10
00153 #endif
00154 #ifndef CS_ROUTE_DISCOVERY_TABLE_SIZE                   
00155 #define CS_ROUTE_DISCOVERY_TABLE_SIZE         10
00156 #endif
00157 #ifndef CS_NWK_DATA_REQ_BUFFER_SIZE
00158 #define CS_NWK_DATA_REQ_BUFFER_SIZE           4
00159 #endif
00160 // Minimum value is 3
00161 #ifndef CS_NWK_DATA_IND_BUFFER_SIZE
00162 #define CS_NWK_DATA_IND_BUFFER_SIZE           5
00163 #endif
00164 #ifndef CS_APS_DATA_REQ_BUFFER_SIZE
00165 #define CS_APS_DATA_REQ_BUFFER_SIZE           6
00166 #endif
00167 #ifndef CS_APS_ACK_FRAME_BUFFER_SIZE
00168 #define CS_APS_ACK_FRAME_BUFFER_SIZE          5
00169 #endif
00170 #ifndef CS_MAC_FRAME_RX_BUFFER_SIZE
00171 #define CS_MAC_FRAME_RX_BUFFER_SIZE           1
00172 #endif
00173 #ifndef CS_APS_GROUP_TABLE_SIZEOF
00174 #define CS_APS_GROUP_TABLE_SIZEOF             (CS_APS_GROUP_TABLE_GROUPS_AMOUNT * \
00175                                               (sizeof(APS_GroupTableEntry_t) +    \
00176                                               ((CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT - 1) * sizeof(Endpoint_t))))
00177 #endif
00178 
00179 #ifndef CS_DTR_WAKEUP
00180 #define CS_DTR_WAKEUP                         false
00181 #endif 
00182 
00183 /*****************************************************************************
00184   Security related defines
00185 *****************************************************************************/
00186 #ifdef _SECURITY_  
00187 //Amount of Aps Security Manager buffers
00188 /*Should be no less than 2*/
00189 #ifndef CS_APS_SECURITY_BUFFERS_AMOUNT
00190 #define CS_APS_SECURITY_BUFFERS_AMOUNT          2
00191 #endif
00192 #ifndef CS_APS_SECURITY_TIMEOUT_PERIOD
00193 #define CS_APS_SECURITY_TIMEOUT_PERIOD        CS_ACK_TIMEOUT
00194 #endif
00195 #ifndef CS_APS_TRUST_CENTER_ADDRESS
00196 #define CS_APS_TRUST_CENTER_ADDRESS           0xAAAAAAAAAAAAAAAALL
00197 #endif
00198 #ifndef CS_ZDO_SECURITY_STATUS
00199 #define CS_ZDO_SECURITY_STATUS                PRECONFIGURED_NETWORK_KEY
00200 #endif
00201 #ifndef CS_NETWORK_KEY
00202 #define CS_NETWORK_KEY                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
00203 #endif
00204 #ifndef CS_SECURITY_LEVEL
00205 #define CS_SECURITY_LEVEL             0x05
00206 #endif
00207 #ifndef CS_SECURITY_ALL_FRAMES
00208 #define CS_SECURITY_ALL_FRAMES        true
00209 #endif
00210 #ifndef CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT     
00211 #define CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT     1
00212 #endif
00213 #ifdef _TC_PERMISSION_TABLE_
00214   #ifndef CS_MAX_TC_ALLOWED_DEVICES_AMOUNT
00215   #define CS_MAX_TC_ALLOWED_DEVICES_AMOUNT    5
00216   #endif
00217 #endif
00218 #ifdef _HIGH_SECURITY_
00219 //Maximum amount of Key-Pair Descriptors
00220 #ifndef CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT
00221 #define CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT  2
00222 #endif
00223 #ifndef CS_MASTER_KEY
00224 #define CS_MASTER_KEY                 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
00225 #endif
00226 #ifndef CS_LINK_KEY
00227 #define CS_LINK_KEY                   {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
00228 #endif
00229 #ifndef CS_MAX_TC_ESTABLISH_KEY_AMOUNT
00230 #define CS_MAX_TC_ESTABLISH_KEY_AMOUNT      1
00231 #endif
00232 #endif
00233 
00234 #endif
00235 
00239 typedef enum
00240 {
00241   CS_NEIB_TABLE_SIZE_ID,
00242   CS_MAX_CHILDREN_AMOUNT_ID,
00243   CS_MAX_CHILDREN_ROUTER_AMOUNT_ID,
00244   CS_MAX_NETWORK_DEPTH_ID,
00245   CS_ADDRESS_ASSIGNMENT_METHOD_ID,
00246   CS_NWK_DATA_REQ_BUFFER_SIZE_ID,
00247   CS_NWK_DATA_IND_BUFFER_SIZE_ID,
00248   CS_APS_DATA_REQ_BUFFER_SIZE_ID,
00249   CS_APS_ACK_FRAME_BUFFER_SIZE_ID,
00250   CS_PROTOCOL_VERSION_ID,
00251   CS_STACK_PROFILE_ID,
00252   CS_SCAN_DURATION_ID,
00253   CS_PERMIT_DURATION_ID,
00254   CS_NWK_EXT_PANID_ID,      // eeprom
00255   CS_EXT_PANID_ID,          // eeprom
00256   CS_NWK_ADDR_ID,           // eeprom
00257   CS_NWK_UNIQUE_ADDR_ID,    // bool // eeprom
00258   CS_CHANNEL_MASK_ID,       // eeprom
00259   CS_UID_ID,                // eeprom
00260   CS_INDIRECT_POLL_RATE_ID,
00261   CS_AUTONETWORK_ID,        // eeprom 
00262   CS_DEVICE_TYPE_ID,        // eeprom   
00263   CS_DUPLICATE_REJECTION_TABLE_SIZE_ID,
00264   CS_ACK_TIMEOUT_ID,
00265   CS_MAC_FRAME_RX_BUFFER_SIZE_ID,
00266   CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT_ID,
00267   CS_APS_GROUP_TABLE_GROUPS_AMOUNT_ID,
00268   CS_END_DEVICE_ACTIVE_PERIOD_ID,
00269   CS_END_DEVICE_SLEEP_PERIOD_ID,
00270   CS_RX_ON_WHEN_IDLE_ID,            // eeprom
00271   CS_RF_TX_POWER_ID,                // eeprom
00272   CS_SOFT_RESET_REASON_ID,          // eeprom 
00273   CS_NWK_USE_MULTICAST_ID,
00274   CS_ROUTE_TABLE_SIZE_ID,
00275   CS_ADDRESS_MAP_TABLE_SIZE_ID,
00276   CS_ROUTE_DISCOVERY_TABLE_SIZE_ID,
00277   CS_MAC_TRANSACTION_TIME_ID,  
00278   CS_DTR_WAKEUP_ID,                 // eeprom  
00279   CS_NWK_LOGICAL_CHANNEL_ID,        // eeprom
00280   CS_NWK_PANID_ID,                  // eeprom 
00281 
00282 /***************************************************************************
00283     Security related ID's
00284 ***************************************************************************/
00285 #ifdef _SECURITY_
00286   CS_NETWORK_KEY_ID,                    // eeprom
00287   CS_SECURITY_LEVEL_ID,
00288   CS_SECURITY_ALL_FRAMES_ID,
00289   CS_APS_SECURITY_BUFFERS_AMOUNT_ID,
00290   CS_APS_SECURITY_TIMEOUT_PERIOD_ID,
00291   CS_APS_TRUST_CENTER_ADDRESS_ID,
00292   CS_ZDO_SECURITY_STATUS_ID,            // eeprom
00293   CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT_ID,
00294 #ifdef _TC_PERMISSION_TABLE_
00295   CS_MAX_TC_ALLOWED_DEVICES_AMOUNT_ID,
00296 #endif
00297 #ifdef _HIGH_SECURITY_
00298   CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT_ID,
00299   CS_LINK_KEY_ID,                       // eeprom
00300   CS_MASTER_KEY_ID,                     // eeprom  
00301   CS_MAX_TC_ESTABLISH_KEY_AMOUNT_ID,
00302 #endif
00303 #endif
00304 } CS_ParameterId_t;
00305 
00309 typedef enum
00310 {
00311   CS_NEIB_TABLE_ID,                   // eeprom
00312   CS_NWK_DATA_REQ_BUFFER_ID,
00313   CS_NWK_DATA_IND_BUFFER_ID,
00314   CS_APS_DATA_REQ_BUFFER_ID,
00315   CS_APS_ACK_FRAME_BUFFER_ID,
00316   CS_ASSOCIATE_RESPONSE_BUFFER_ID,
00317   CS_NWK_PAN_DESCRIPTOR_BUFFER_ID,
00318   CS_MAC_PAN_DESCRIPTOR_BUFFER_ID,
00319   CS_DUPLICATE_REJECTION_TABLE_ID,
00320   CS_MAC_FRAME_RX_BUFFER_ID,
00321   CS_APS_GROUP_TABLE_ID,            // eeprom
00322   CS_ROUTE_TABLE_ID,               // eeprom  
00323   CS_ADDRESS_MAP_TABLE_ID,         // eeprom
00324   CS_ROUTE_DISCOVERY_TABLE_ID,
00325 
00326   /***********************************************************************************
00327   Security related ID's
00328   *************************************************************************************/
00329 #if defined(_SECURITY_)
00330   CS_NWK_SECURITY_IB_ID,             // eeprom
00331   CS_APS_SECURITY_BUFFERS_ID,
00332   CS_TC_AUTHENTIC_PROCESS_BUFFER_ID,
00333 #ifdef _TC_PERMISSION_TABLE_
00334   CS_TC_PERMISSION_TABLE_ID,
00335 #endif
00336 #ifdef _HIGH_SECURITY_
00337   CS_APS_KEY_PAIR_DESCRIPTORS_ID,      // eeprom
00338   CS_TC_ESTABLISH_KEY_BUFFER_ID,
00339 #endif
00340 #endif
00341 } CS_MemoryId_t;
00342 
00343 
00344 /***********************************************************************************/
00349 extern void CS_Init(void);
00350 
00351 /***********************************************************************************/
00357 extern void CS_GetMemory(CS_MemoryId_t memoryId, void **memoryPtr);
00358 
00359 /************************************************************************************/
00365 extern void CS_ReadParameter(CS_ParameterId_t parameterId, void *parameterValue);
00366 
00367 /***********************************************************************************/
00375 extern void CS_WriteParameter(CS_ParameterId_t parameterId, void *parameterValue);
00376 
00377 /**************************************************************************/
00380 extern void CS_PdsDefaultValue(void);
00381 
00382 #endif  //#ifndef _CONFIGSERVER_H
00383 

Generated on Wed Apr 2 19:06:16 2008 for ZigBeeNet Stack Documentation by  doxygen 1.5.1-p1