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
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
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
00103
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
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
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
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
00185
00186 #ifdef _SECURITY_
00187
00188
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
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,
00255 CS_EXT_PANID_ID,
00256 CS_NWK_ADDR_ID,
00257 CS_NWK_UNIQUE_ADDR_ID,
00258 CS_CHANNEL_MASK_ID,
00259 CS_UID_ID,
00260 CS_INDIRECT_POLL_RATE_ID,
00261 CS_AUTONETWORK_ID,
00262 CS_DEVICE_TYPE_ID,
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,
00271 CS_RF_TX_POWER_ID,
00272 CS_SOFT_RESET_REASON_ID,
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,
00279 CS_NWK_LOGICAL_CHANNEL_ID,
00280 CS_NWK_PANID_ID,
00281
00282
00283
00284
00285 #ifdef _SECURITY_
00286 CS_NETWORK_KEY_ID,
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,
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,
00300 CS_MASTER_KEY_ID,
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,
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,
00322 CS_ROUTE_TABLE_ID,
00323 CS_ADDRESS_MAP_TABLE_ID,
00324 CS_ROUTE_DISCOVERY_TABLE_ID,
00325
00326
00327
00328
00329 #if defined(_SECURITY_)
00330 CS_NWK_SECURITY_IB_ID,
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,
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