00001
00023 #ifndef _CONFIGSERVER_H
00024 #define _CONFIGSERVER_H
00025
00026 #include <types.h>
00027
00028
00029
00030
00031 #ifdef _MAC2_
00032
00033
00035 #ifndef CS_RF_TX_POWER
00036
00037 #define CS_RF_TX_POWER 0
00038 #endif
00039
00041
00042 #ifndef CS_MAC_TRANSACTION_TIME
00043 #define CS_MAC_TRANSACTION_TIME 7680L
00044 #endif
00045
00047
00049 #ifndef CS_UID
00050 #define CS_UID 0x0000000000000000LL
00051 #endif
00052
00054 #ifndef CS_MAX_FRAME_TRANSMISSION_TIME
00055 #define CS_MAX_FRAME_TRANSMISSION_TIME 5
00056 #endif
00057
00058
00059 #define CS_FRAME_TRANSMISSION_TIME_FIELD_SIZE 3
00060
00061
00062 #if CS_MAX_FRAME_TRANSMISSION_TIME >= (1 << CS_FRAME_TRANSMISSION_TIME_FIELD_SIZE)
00063 #error CS_MAX_FRAME_TRANSMISSION_TIME shall be less (1 << CS_FRAME_TRANSMISSION_TIME_FIELD_SIZE)
00064 #endif
00065
00067 #ifndef CS_MAC_FRAME_RX_BUFFER_SIZE
00068 #define CS_MAC_FRAME_RX_BUFFER_SIZE 1
00069 #endif
00070
00071 #else //_MAC2_
00072
00073
00075 #ifndef CS_PROTOCOL_VERSION
00076 #define CS_PROTOCOL_VERSION 0x02
00077 #endif
00079 #ifndef CS_STACK_PROFILE
00080 #define CS_STACK_PROFILE 0x02
00081 #endif
00082
00084
00088 #ifndef CS_DEVICE_TYPE
00089 #define CS_DEVICE_TYPE DEVICE_TYPE_ROUTER
00090 #endif
00092
00095 #ifndef CS_NEIB_TABLE_SIZE
00096 #define CS_NEIB_TABLE_SIZE 7
00097 #endif
00099 #ifndef CS_MAX_CHILDREN_AMOUNT
00100 #define CS_MAX_CHILDREN_AMOUNT 6
00101 #endif
00103
00104 #ifndef CS_MAX_CHILDREN_ROUTER_AMOUNT
00105 #define CS_MAX_CHILDREN_ROUTER_AMOUNT 2
00106 #endif
00108
00109 #ifndef CS_MAX_NETWORK_DEPTH
00110 #define CS_MAX_NETWORK_DEPTH 5
00111 #endif
00112
00114
00115 #ifndef CS_ADDRESS_ASSIGNMENT_METHOD
00116 #define CS_ADDRESS_ASSIGNMENT_METHOD 2
00117 #endif
00118
00119
00120 #ifdef AT86RF212
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00132
00133 #ifndef CS_CHANNEL_MASK
00134 #define CS_CHANNEL_MASK 0x00000002L
00135 #endif
00137
00138 #ifndef CS_CHANNEL_PAGE
00139 #define CS_CHANNEL_PAGE 0
00140 #endif
00141 #else // AT86RF230/230B/231
00143
00144 #ifndef CS_CHANNEL_MASK
00145 #define CS_CHANNEL_MASK 0x00010000L
00146 #endif
00148 #ifndef CS_CHANNEL_PAGE
00149 #define CS_CHANNEL_PAGE 0
00150 #endif
00151 #endif
00152
00154
00156 #ifndef CS_UID
00157 #define CS_UID 0x0000000000000000LL
00158 #endif
00160
00161 #ifndef CS_EXT_PANID
00162 #define CS_EXT_PANID CS_UID
00163 #endif
00165
00166 #ifndef CS_NWK_EXT_PANID
00167 #define CS_NWK_EXT_PANID 0LL
00168 #endif
00170
00172 #ifndef CS_NWK_UNIQUE_ADDR
00173 #define CS_NWK_UNIQUE_ADDR false
00174 #endif
00176 #ifndef CS_NWK_ADDR
00177 #define CS_NWK_ADDR 0xFFFF
00178 #endif
00180
00183 #ifndef CS_END_DEVICE_SLEEP_PERIOD
00184 #define CS_END_DEVICE_SLEEP_PERIOD 10000L
00185 #endif
00186
00188 #ifndef CS_ENCRYPTION_TIME
00189 #if defined(_SECURITY_)
00190 #ifdef _MAC_HW_AES_
00191 #define CS_ENCRYPTION_TIME 18 // HW encryption
00192 #else
00193 #define CS_ENCRYPTION_TIME 119 // SW encryption
00194 #endif
00195 #else
00196 #define CS_ENCRYPTION_TIME 0ul
00197 #endif
00198 #endif
00199
00200 #ifdef AT86RF212
00201
00202
00203
00204
00205
00207 #define CS_MAX_AIR_SPEED 54
00208 #else
00210 #define CS_MAX_AIR_SPEED 5
00211 #endif
00212
00214 #define CS_PACKET_PROCESS_INSIDE 7
00215
00217 #ifndef CS_ACK_TIMEOUT
00218 #define CS_ACK_TIMEOUT (4 * ((CS_ENCRYPTION_TIME * 2) + (CS_MAX_NETWORK_DEPTH * 100)))
00219
00220 #endif
00221
00223
00224 #ifndef CS_INDIRECT_POLL_RATE
00225 #define CS_INDIRECT_POLL_RATE (CS_ACK_TIMEOUT >> 1)
00226 #endif
00227
00228 #ifndef CS_RF_TX_POWER
00229
00230 #define CS_RF_TX_POWER 0
00231 #endif
00232 #ifndef CS_SCAN_DURATION
00233 #define CS_SCAN_DURATION 0x05
00234 #endif
00235
00237 #ifndef CS_PERMIT_DURATION
00238 #define CS_PERMIT_DURATION 0xff
00239 #endif
00240 #ifndef CS_SOFT_RESET_REASON
00241 #define CS_SOFT_RESET_REASON 0
00242 #endif
00244
00245 #ifndef CS_NWK_USE_MULTICAST
00246 #define CS_NWK_USE_MULTICAST false
00247 #endif
00248
00250 #ifndef CS_COMPLEX_DESCRIPTOR_AVAILABLE
00251 #define CS_COMPLEX_DESCRIPTOR_AVAILABLE false
00252 #endif
00253
00255 #ifndef CS_USER_DESCRIPTOR_AVAILABLE
00256 #define CS_USER_DESCRIPTOR_AVAILABLE false
00257 #endif
00258
00260 #ifdef _POWER_FAILURE_
00261 #ifndef CS_POWER_FAILURE
00262 #define CS_POWER_FAILURE false
00263 #endif
00264 #endif
00265
00266
00267 #ifndef CS_MAC_TRANSACTION_TIME
00268 #define CS_MAC_TRANSACTION_TIME (CS_END_DEVICE_SLEEP_PERIOD + (CS_INDIRECT_POLL_RATE * 3))
00269 #endif
00270
00272 #ifndef CS_DUPLICATE_REJECTION_TABLE_SIZE
00273 #define CS_DUPLICATE_REJECTION_TABLE_SIZE 5
00274 #endif
00276 #ifndef CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT
00277 #define CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT 1
00278 #endif
00280 #ifndef CS_APS_GROUP_TABLE_GROUPS_AMOUNT
00281 #define CS_APS_GROUP_TABLE_GROUPS_AMOUNT 1
00282 #endif
00284 #ifndef CS_ROUTE_TABLE_SIZE
00285 #define CS_ROUTE_TABLE_SIZE 5
00286 #endif
00288 #ifndef CS_ADDRESS_MAP_TABLE_SIZE
00289 #define CS_ADDRESS_MAP_TABLE_SIZE 5
00290 #endif
00292 #ifndef CS_ROUTE_DISCOVERY_TABLE_SIZE
00293 #define CS_ROUTE_DISCOVERY_TABLE_SIZE 3
00294 #endif
00295
00296 #ifndef CS_NWK_DATA_REQ_BUFFER_SIZE
00297 #define CS_NWK_DATA_REQ_BUFFER_SIZE 2
00298 #endif
00299
00300 #ifndef CS_NWK_DATA_IND_BUFFER_SIZE
00301 #ifdef _SECURITY_
00302 #define CS_NWK_DATA_IND_BUFFER_SIZE 4
00303 #else
00304 #define CS_NWK_DATA_IND_BUFFER_SIZE 3
00305 #endif // _SECURITY_
00306 #endif // CS_NWK_DATA_IND_BUFFER_SIZE
00307 #ifndef CS_NWK_ROUTE_DISCOVERY_OBJ_SIZE
00308 #define CS_NWK_ROUTE_DISCOVERY_OBJ_SIZE CS_NWK_DATA_IND_BUFFER_SIZE
00309 #endif
00310
00311 #ifndef CS_NWK_BTT_SIZE
00312 #define CS_NWK_BTT_SIZE 16
00313 #endif
00314 #if CS_NWK_BTT_SIZE < 2
00315 #error CS_NWK_BTT_SIZE shall be more 1
00316 #endif
00317
00318 #ifndef CS_APS_DATA_REQ_BUFFER_SIZE
00319 #define CS_APS_DATA_REQ_BUFFER_SIZE 2
00320 #endif
00321 #ifndef CS_APS_ACK_FRAME_BUFFER_SIZE
00322 #define CS_APS_ACK_FRAME_BUFFER_SIZE 2
00323 #endif
00324 #ifndef CS_MAC_FRAME_RX_BUFFER_SIZE
00325 #define CS_MAC_FRAME_RX_BUFFER_SIZE 1
00326 #endif
00327 #ifndef CS_APS_GROUP_TABLE_SIZEOF
00328 #define CS_APS_GROUP_TABLE_SIZEOF (CS_APS_GROUP_TABLE_GROUPS_AMOUNT * \
00329 (sizeof(APS_GroupTableEntry_t) + \
00330 ((CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT - 1) * sizeof(Endpoint_t))))
00331 #endif
00332 #ifndef CS_DTR_WAKEUP
00333 #define CS_DTR_WAKEUP false
00334 #endif
00335
00336 #ifndef CS_MAX_FRAME_TRANSMISSION_TIME
00337 #define CS_MAX_FRAME_TRANSMISSION_TIME 5
00338 #endif
00339
00340 #define CS_FRAME_TRANSMISSION_TIME_FIELD_SIZE 3
00341
00342 #if CS_MAX_FRAME_TRANSMISSION_TIME >= (1 << CS_FRAME_TRANSMISSION_TIME_FIELD_SIZE)
00343 #error CS_MAX_FRAME_TRANSMISSION_TIME shall be less (1 << CS_FRAME_TRANSMISSION_TIME_FIELD_SIZE)
00344 #endif
00345
00346
00347
00348 #ifndef CS_NWK_MAX_LINK_STATUS_FAILURES
00349 #define CS_NWK_MAX_LINK_STATUS_FAILURES 3
00350 #endif
00351
00352
00353
00354
00355 #ifndef CS_NWK_END_DEVICE_MAX_FAILURES
00356 #define CS_NWK_END_DEVICE_MAX_FAILURES 3
00357 #endif
00358
00359
00360
00361
00362
00363
00364
00365
00366 #ifdef _SECURITY_
00367
00368 #ifndef CS_SECURITY_ON
00369 #define CS_SECURITY_ON true
00370 #endif
00371
00372
00373 #ifndef CS_APS_SECURITY_BUFFERS_AMOUNT
00374 #define CS_APS_SECURITY_BUFFERS_AMOUNT 1
00375 #endif
00376 #ifndef CS_APS_SECURITY_TIMEOUT_PERIOD
00377 #define CS_APS_SECURITY_TIMEOUT_PERIOD (CS_ACK_TIMEOUT * 10)
00378 #endif
00379
00381 #ifndef CS_APS_TRUST_CENTER_ADDRESS
00382 #define CS_APS_TRUST_CENTER_ADDRESS 0xAAAAAAAAAAAAAAAALL
00383 #endif
00385
00388 #ifndef CS_ZDO_SECURITY_STATUS
00389 #define CS_ZDO_SECURITY_STATUS PRECONFIGURED_NETWORK_KEY
00390 #endif
00392 #ifndef CS_NETWORK_KEY
00393 #define CS_NETWORK_KEY {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
00394 #endif
00395
00396
00397 #ifndef CS_SECURITY_LEVEL
00398 #define CS_SECURITY_LEVEL 0x05
00399 #endif
00400
00401 #ifndef CS_SECURITY_ALL_FRAMES
00402 #define CS_SECURITY_ALL_FRAMES true
00403 #endif
00404 #ifndef CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT
00405 #define CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT 1
00406 #endif
00407
00408 #ifdef _TC_PERMISSION_TABLE_
00410 #ifndef CS_MAX_TC_ALLOWED_DEVICES_AMOUNT
00411 #define CS_MAX_TC_ALLOWED_DEVICES_AMOUNT 5
00412 #endif
00413 #endif
00414
00415 #ifdef _HIGH_SECURITY_
00416
00417 #ifndef CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT
00418 #define CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT 2
00419 #endif
00420 #ifndef CS_MASTER_KEY
00421 #define CS_MASTER_KEY {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
00422 #endif
00423 #ifndef CS_LINK_KEY
00424 #define CS_LINK_KEY {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
00425 #endif
00426 #ifndef CS_MAX_TC_ESTABLISH_KEY_AMOUNT
00427 #define CS_MAX_TC_ESTABLISH_KEY_AMOUNT 1
00428 #endif
00429 #endif
00430
00431
00432 #endif
00433
00434
00435
00436 #ifndef CS_NWK_PREDEFINED_PANID
00437 #define CS_NWK_PREDEFINED_PANID false
00438 #endif
00439
00440 #ifndef CS_NWK_PANID
00441 #define CS_NWK_PANID 0x1234
00442 #endif
00443
00445 #ifndef CS_MANUFACTURER_CODE
00446 #define CS_MANUFACTURER_CODE 0x100c
00447 #endif
00448
00450 #ifndef CS_AUTO_POLL
00451 #define CS_AUTO_POLL true
00452 #endif
00453
00454
00455 #endif //_MAC2_
00456
00460 typedef enum
00461 {
00462 #ifndef _MAC2_
00463 CS_NEIB_TABLE_SIZE_ID,
00464 CS_MAX_CHILDREN_AMOUNT_ID,
00465 CS_MAX_CHILDREN_ROUTER_AMOUNT_ID,
00466 CS_MAX_NETWORK_DEPTH_ID,
00467 CS_ADDRESS_ASSIGNMENT_METHOD_ID,
00468 CS_NWK_DATA_REQ_BUFFER_SIZE_ID,
00469 CS_NWK_DATA_IND_BUFFER_SIZE_ID,
00470 CS_APS_DATA_REQ_BUFFER_SIZE_ID,
00471 CS_APS_ACK_FRAME_BUFFER_SIZE_ID,
00472 CS_PROTOCOL_VERSION_ID,
00473 CS_STACK_PROFILE_ID,
00474 CS_SCAN_DURATION_ID,
00475 CS_PERMIT_DURATION_ID,
00476 CS_NWK_EXT_PANID_ID,
00477 CS_EXT_PANID_ID,
00478 CS_NWK_ADDR_ID,
00479 CS_NWK_UNIQUE_ADDR_ID,
00480 CS_CHANNEL_MASK_ID,
00481 CS_CHANNEL_PAGE_ID,
00482 #endif // _MAC2_
00483 CS_UID_ID,
00484 #ifndef _MAC2_
00485 CS_INDIRECT_POLL_RATE_ID,
00486 CS_DEVICE_TYPE_ID,
00487 CS_DUPLICATE_REJECTION_TABLE_SIZE_ID,
00488 CS_ACK_TIMEOUT_ID,
00489 #endif // _MAC2_
00490 CS_MAC_FRAME_RX_BUFFER_SIZE_ID,
00491 #ifndef _MAC2_
00492 CS_APS_GROUP_TABLE_ENDPOINTS_AMOUNT_ID,
00493 CS_APS_GROUP_TABLE_GROUPS_AMOUNT_ID,
00494 CS_END_DEVICE_SLEEP_PERIOD_ID,
00495 CS_RX_ON_WHEN_IDLE_ID,
00496 #endif // _MAC2_
00497 CS_RF_TX_POWER_ID,
00498 #ifndef _MAC2_
00499 CS_SOFT_RESET_REASON_ID,
00500 CS_NWK_USE_MULTICAST_ID,
00501 CS_COMPLEX_DESCRIPTOR_AVAILABLE_ID,
00502 CS_USER_DESCRIPTOR_AVAILABLE_ID,
00503 CS_ROUTE_TABLE_SIZE_ID,
00504 CS_ADDRESS_MAP_TABLE_SIZE_ID,
00505 CS_ROUTE_DISCOVERY_TABLE_SIZE_ID,
00506 CS_ROUTE_DISCOVERY_OBJ_SIZE_ID,
00507 CS_BTT_SIZE_ID,
00508 CS_NWK_MAX_LINK_STATUS_FAILURES_ID,
00509 CS_NWK_END_DEVICE_MAX_FAILURES_ID,
00510 #endif // _MAC2_
00511 CS_MAC_TRANSACTION_TIME_ID,
00512 #ifndef _MAC2_
00513 CS_DTR_WAKEUP_ID,
00514 CS_NWK_LOGICAL_CHANNEL_ID,
00515 CS_NWK_PANID_ID,
00516 #endif // _MAC2_
00517 CS_MAX_FRAME_TRANSMISSION_TIME_ID,
00518 #ifndef _MAC2_
00519 CS_ZDP_USER_DESCRIPTOR_ID,
00520 CS_NWK_PREDEFINED_PANID_ID,
00521 CS_MANUFACTURER_CODE_ID,
00522 CS_AUTO_POLL_ID,
00523 #ifdef _POWER_FAILURE_
00524 CS_POWER_FAILURE_ID,
00525 #endif
00526
00527
00528
00529
00530 #ifdef _SECURITY_
00531 CS_SECURITY_ON_ID,
00532 CS_NETWORK_KEY_ID,
00533 CS_SECURITY_LEVEL_ID,
00534 CS_SECURITY_ALL_FRAMES_ID,
00535 CS_APS_SECURITY_BUFFERS_AMOUNT_ID,
00536 CS_APS_SECURITY_TIMEOUT_PERIOD_ID,
00537 CS_APS_TRUST_CENTER_ADDRESS_ID,
00538 CS_ZDO_SECURITY_STATUS_ID,
00539 CS_MAX_TC_AUTHENTIC_PROCESS_AMOUNT_ID,
00540 #ifdef _TC_PERMISSION_TABLE_
00541 CS_MAX_TC_ALLOWED_DEVICES_AMOUNT_ID,
00542 #endif
00543 #ifdef _HIGH_SECURITY_
00544 CS_APS_KEY_PAIR_DESCRIPTORS_AMOUNT_ID,
00545 CS_LINK_KEY_ID,
00546 CS_MASTER_KEY_ID,
00547 CS_MAX_TC_ESTABLISH_KEY_AMOUNT_ID,
00548 #endif
00549 #endif
00550 #endif // _MAC2_
00551 } CS_ParameterId_t;
00552
00553
00557 typedef enum
00558 {
00559 #ifndef _MAC2_
00560 CS_NEIB_TABLE_ID,
00561 CS_NWK_DATA_REQ_BUFFER_ID,
00562 CS_NWK_DATA_IND_BUFFER_ID,
00563 CS_APS_DATA_REQ_BUFFER_ID,
00564 CS_APS_ACK_FRAME_BUFFER_ID,
00565 CS_ASSOCIATE_RESPONSE_BUFFER_ID,
00566 CS_NWK_PAN_DESCRIPTOR_BUFFER_ID,
00567 CS_MAC_PAN_DESCRIPTOR_BUFFER_ID,
00568 CS_DUPLICATE_REJECTION_TABLE_ID,
00569 #endif // _MAC2_
00570 CS_MAC_FRAME_RX_BUFFER_ID,
00571 #ifndef _MAC2_
00572 CS_APS_GROUP_TABLE_ID,
00573 CS_ROUTE_TABLE_ID,
00574 CS_ADDRESS_MAP_TABLE_ID,
00575 CS_ROUTE_DISCOVERY_TABLE_ID,
00576 CS_ROUTE_DISCOVERY_OBJ_ID,
00577 CS_BTT_ID,
00578
00579
00580
00581 #if defined(_SECURITY_)
00582 CS_NWK_SECURITY_IB_ID,
00583 CS_APS_SECURITY_BUFFERS_ID,
00584 CS_TC_AUTHENTIC_PROCESS_BUFFER_ID,
00585 #ifdef _TC_PERMISSION_TABLE_
00586 CS_TC_PERMISSION_TABLE_ID,
00587 #endif
00588 #ifdef _HIGH_SECURITY_
00589 CS_APS_KEY_PAIR_DESCRIPTORS_ID,
00590 CS_TC_ESTABLISH_KEY_BUFFER_ID,
00591 #endif
00592 #endif
00593 #endif // _MAC2_
00594 } CS_MemoryId_t;
00595
00596
00597
00603 extern void CS_ReadParameter(CS_ParameterId_t parameterId, void *parameterValue);
00604
00605
00613 extern void CS_WriteParameter(CS_ParameterId_t parameterId, void *parameterValue);
00614
00615
00616
00621 extern void CS_Init(void);
00622
00623
00629 extern void CS_GetMemory(CS_MemoryId_t memoryId, void **memoryPtr);
00630
00631
00634 extern void CS_PdsDefaultValue(void);
00635
00636
00637 #endif //#ifndef _CONFIGSERVER_H
00638