summaryrefslogtreecommitdiff
path: root/digital/zigbit/bitcloud/stack/Components/NWK/include/private/nwkMem.h
blob: 8453f39994359a74a0729268c5132163099ea16d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
/**************************************************************************//**
  \file nwkMem.h

  \brief NWK Memory header file.

  \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:
    2007-06-14 S. Vladykin - Created.
    2009-04-30 M. Gekk     - Refactoring.
   Last change:
    $Id: nwkMem.h 18049 2011-07-20 13:08:36Z mgekk $
 ******************************************************************************/
#if !defined _NWK_MEM_H
#define _NWK_MEM_H

/******************************************************************************
                              Includes section
 ******************************************************************************/
#include <nwkConfig.h>
#include <nwkCommon.h>
#include <nwkIB.h>
#include <nwkTaskManager.h>
#include <nwkReset.h>
#include <nwkDiscovery.h>
#include <nwkTx.h>
#include <nwkDataReq.h>
#include <nwkTxDelay.h>
#include <nwkPacket.h>
#include <nwkLeave.h>
#include <nwkEDScan.h>
#include <nwkBTT.h>
#include <nwkAddressConflict.h>
#include <nwkAddressMap.h>
#include <nwkCommands.h>
#include <nwkLoopback.h>
#include <nwkFormation.h>
#include <nwkStartRouter.h>
#include <nwkJoinReq.h>
#include <nwkJoinInd.h>
#include <nwkPermitJoining.h>
#include <nwkLinkStatus.h>
#include <nwkRoutingTable.h>
#include <nwkRouteDiscovery.h>
#include <nwkRouteDiscoveryTable.h>
#include <nwkStatusInd.h>
#include <nwkSync.h>
#include <nwkSyncLoss.h>
#include <nwkConcentrator.h>
#include <nwkReportCommand.h>
#include <nwkUpdateCommand.h>
#include <nwkManager.h>
#include <nwkDirectJoin.h>
#include <nwkOrphan.h>
#include <nwkSilentJoin.h>
#include <nwkRouteRecord.h>
#include <nwkRouteCache.h>
#include <nwkManyToOne.h>
#include <nwkGroup.h>
#include <nwkPassiveAck.h>

/******************************************************************************
                               Types section
 ******************************************************************************/
/** Internal variables of NWK layer. */
typedef struct _NwkMem_t
{
  /** Global NWK state. */
  NwkState_t state;
  /** State of task manager. */
  NwkTaskManager_t taskManager;
  /** Internal variables of NLME-RESET component. */
  NwkReset_t reset;
  /** Internal variables of NLME-DISCOVERY component. */
  NwkDiscovery_t discovery;
  /** States and parameters of packet transmission component. */
  NwkTx_t tx;
  NwkDataConf_t dataConf;
  NwkTxDelay_t txDelay;
  NwkPacketManager_t packetManager;
  /** Internal variables of NLME-LEAVE component. */
  NwkLeave_t leave;
  /** Internal variables of NLME-ED-SCAN component. */
  NwkEDScan_t edScan;
  /** Broadcast transaction table. Only pointer to configServer
   * and a size of table. */
  NwkBTT_t BTT;
  /** Address map table. */
  NwkAddressMap_t addressTable;
  /** Neighbor table */
  NwkNeighborTable_t neighborTable;
  /** Address conflict resolver. */
  NwkAddrConflict_t addrConflict;
  /** Requests to send command packets. */
  NwkCommands_t commands;
  /** Queue and state of loopback component. */
  NwkLoopback_t loopback;
#if defined _COORDINATOR_
  /** Internal variables of NLME-FORMATION component. */
  NwkFormation_t formation;
#endif /* _COORDINATOR_ */
#if defined _ROUTER_
  /** Internal variables of NLME-START-ROUTER component. */
  NwkStartRouter_t startRouter;
#endif /* _ROUTER_ */
#if defined _ROUTER_ || defined _ENDDEVICE_
  /** Internal state of NLME-JOIN.request primitive. */
  NwkJoinReq_t joinReq;
#endif /* _ROUTER_ or _ENDDEVICE_ */
#if defined _ROUTER_ || defined _COORDINATOR_
  /** Internal state of NLME-JOIN.indication primitive. */
  NwkJoinInd_t joinInd;
  /** Internal variables of NLME-PERMIT-JOINING component. */
  NwkPermitJoining_t permitJoining;
  /** Internal state of handler of a link status command. */
  NwkLinkStatus_t linkStatus;
  #if defined NWK_ROUTING_CAPACITY \
    && (defined _NWK_MESH_ROUTING_ || defined _NWK_MANY_TO_ONE_ROUTING_)
  /** Status and internals variables of a routing components. */
  NwkRouteDiscovery_t routeDiscovery;
  NwkRouteDiscoveryTable_t routeDiscoveryTable;
  NwkRoutingTable_t routingTable;
  #endif /* NWK_ROUTING_CAPACITY and (_NWK_MESH_ROUTING_ or _NWK_MANY_TO_ONE_ROUTING_) */
  #if defined NWK_ROUTING_CAPACITY && defined _NWK_ROUTE_RECORD_
  /** Internal state of handler of a route record command. */
  NwkRouteRecord_t routeRecord;
  #endif /* NWK_ROUTING_CAPACITY and _NWK_ROUTE_RECORD_ */
  /** Variables of network status sender. */
  NwkStatusSender_t statusSender;
#if defined _NWK_DIRECT_JOIN_
  NwkDirectJoin_t directJoin;
#endif /* _NWK_DIRECT_JOIN_ */
#if defined _NWK_PASSIVE_ACK_
  NwkPassiveAck_t passiveAck;
#endif /* _NWK_PASSIVE_ACK_ */
#endif /* _ROUTER_ or _COORDINATOR_ */
#if defined _ENDDEVICE_
  /** Internal variables of NLME-SYNC component. */
  NwkSync_t sync;
#endif /* _ENDDEVICE_ */
#if defined _ROUTER_ && defined NWK_COORD_REALIGNMENT
  /** Internal variables of NLME-SYNC-LOSS component. */
  NwkSyncLoss_t syncLoss;
#endif /* _ROUTER_ and NWK_COORD_REALIGNMENT */
#if defined _RESOLVE_PANID_CONFLICT_
  /** Internal state of handler of a report command. */
  NwkReportCommand_t nwkReportCommand;
  /** Internal state of handler of a update command. */
  NwkUpdateCommand_t nwkUpdateCommand;
  #if defined _NETWORK_MANAGER_
  NwkManager_t manager;
  #endif /* _NETWORK_MANAGER_ */
#endif /* _RESOLVE_PANID_CONFLICT_ */
#if defined _NWK_CONCENTRATOR_
  NwkConcentrator_t concentrator;
#endif /* _NWK_CONCENTRATOR_ */
#if defined _NWK_ROUTE_CACHE_
  NwkRouteCache_t routeCache;
#endif /* _NWK_ROUTE_CACHE_ */
#if defined _NWK_ORPHAN_JOIN_
  NwkOrphan_t orphan;
#endif
#if defined _NWK_SILENT_JOIN_
  NwkSilentJoin_t silentJoin;
#endif
#if defined NWK_ROUTING_CAPACITY && defined _NWK_MANY_TO_ONE_ROUTING_
  NwkManyToOne_t manyToOne;
#endif
#if defined _GROUP_TABLE_
  NWK_GroupTable_t groupTable;
#endif
} NwkMem_t;

/******************************************************************************
                           External variables section
******************************************************************************/

/** nwkMem is defined in nwkMem.c */
extern NwkMem_t nwkMem;
/** csNIB is defined in configServer.c */
extern NIB_t csNIB;

/******************************************************************************
                           Inline functions section
 ******************************************************************************/
INLINE NIB_t* nwkMemNib(void)
{
  return &csNIB;
}

INLINE NwkTaskManager_t* nwkMemTaskManager(void)
{
  return &nwkMem.taskManager;
}

INLINE NwkReset_t* nwkMemReset(void)
{
  return &nwkMem.reset;
}

INLINE NwkDiscovery_t* nwkMemDiscovery(void)
{
  return &nwkMem.discovery;
}

INLINE NwkTx_t* nwkMemTx(void)
{
  return &nwkMem.tx;
}

INLINE NwkDataConf_t* nwkMemDataConf(void)
{
  return &nwkMem.dataConf;
}

INLINE NwkTxDelay_t* nwkMemTxDelay(void)
{
  return &nwkMem.txDelay;
}

INLINE NwkPacketManager_t* nwkMemPacketManager(void)
{
  return &nwkMem.packetManager;
}

INLINE NwkLeave_t* nwkMemLeave(void)
{
  return &nwkMem.leave;
}

INLINE NwkEDScan_t* nwkMemEDScan(void)
{
  return &nwkMem.edScan;
}

INLINE NwkBTT_t* nwkMemBTT(void)
{
  return &nwkMem.BTT;
}

INLINE NwkAddressMap_t* nwkMemAddressMap(void)
{
  return &nwkMem.addressTable;
}

INLINE NwkAddrConflict_t* nwkMemAddrConflict(void)
{
  return &nwkMem.addrConflict;
}

INLINE NwkCommands_t* nwkMemCommands(void)
{
  return &nwkMem.commands;
}

INLINE NwkLoopback_t* nwkMemLoopback(void)
{
  return &nwkMem.loopback;
}

#if defined _COORDINATOR_
INLINE NwkFormation_t* nwkMemFormation(void)
{
  return &nwkMem.formation;
}
#endif
#if defined _ROUTER_
INLINE NwkStartRouter_t* nwkMemStartRouter(void)
{
  return &nwkMem.startRouter;
}
#endif
#if defined _ROUTER_ || defined _ENDDEVICE_
INLINE NwkJoinReq_t* nwkMemJoinReq(void)
{
  return &nwkMem.joinReq;
}
#endif
#if defined _ROUTER_ || defined _COORDINATOR_
INLINE NwkJoinInd_t* nwkMemJoinInd(void)
{
  return &nwkMem.joinInd;
}

INLINE NwkPermitJoining_t* nwkMemPermitJoining(void)
{
  return &nwkMem.permitJoining;
}

INLINE NwkLinkStatus_t* nwkMemLinkStatus(void)
{
  return &nwkMem.linkStatus;
}

#if defined NWK_ROUTING_CAPACITY \
  && (defined _NWK_MESH_ROUTING_ || defined _NWK_MANY_TO_ONE_ROUTING_)
INLINE NwkRouteDiscovery_t* nwkMemRouteDiscovery(void)
{
  return &nwkMem.routeDiscovery;
}

INLINE NwkRouteDiscoveryTable_t* nwkMemRouteDiscoveryTable(void)
{
  return &nwkMem.routeDiscoveryTable;
}

INLINE NwkRoutingTable_t* nwkMemRoutingTable(void)
{
  return &nwkMem.routingTable;
}
#endif /* NWK_ROUTING_CAPACITY and (_NWK_MESH_ROUTING_ or _NWK_MANY_TO_ONE_ROUTING_) */
#if defined NWK_ROUTING_CAPACITY && defined _NWK_ROUTE_RECORD_
INLINE NwkRouteRecord_t* nwkMemRouteRecord(void)
{
  return &nwkMem.routeRecord;
}
#endif /* NWK_ROUTING_CAPACITY and _NWK_ROUTE_RECORD_ */

INLINE NwkStatusSender_t* nwkMemStatusSender(void)
{
  return &nwkMem.statusSender;
}

#if defined _NWK_PASSIVE_ACK_
INLINE NwkPassiveAck_t* nwkMemPassiveAck(void)
{
  return &nwkMem.passiveAck;
}
#endif /* _NWK_PASSIVE_ACK_ */
#endif /* _ROUTER_ or _COORDINATOR_ */

#if defined _ENDDEVICE_
INLINE NwkSync_t* nwkMemSync(void)
{
  return &nwkMem.sync;
}
#endif
#if defined _ROUTER_ && defined NWK_COORD_REALIGNMENT
INLINE NwkSyncLoss_t* nwkMemSyncLoss(void)
{
  return &nwkMem.syncLoss;
}
#endif /* _ROUTER_ and NWK_COORD_REALIGNMENT */

INLINE NwkNeighborTable_t* nwkMemNeighborTable(void)
{
  return &nwkMem.neighborTable;
}

#if defined _RESOLVE_PANID_CONFLICT_
INLINE NwkReportCommand_t* nwkMemReportCommand(void)
{
  return &nwkMem.nwkReportCommand;
}

INLINE NwkUpdateCommand_t* nwkMemUpdateCommand(void)
{
  return &nwkMem.nwkUpdateCommand;
}
#if defined _NETWORK_MANAGER_
INLINE NwkManager_t* nwkMemManager(void)
{
  return &nwkMem.manager;
}
#endif /* _NETWORK_MANAGER_ */
#endif /* _RESOLVE_PANID_CONFLICT_ */
#if defined _NWK_CONCENTRATOR_
INLINE NwkConcentrator_t* nwkMemConcentrator(void)
{
  return &nwkMem.concentrator;
}
#endif /* _NWK_CONCENTRATOR_ */
#if defined _NWK_ROUTE_CACHE_
INLINE NwkRouteCache_t* nwkMemRouteCache(void)
{
  return &nwkMem.routeCache;
}
#endif /* _NWK_ROUTE_CACHE_ */

#if (defined(_ROUTER_) || defined(_COORDINATOR_)) && defined(_NWK_DIRECT_JOIN_)
INLINE NwkDirectJoin_t* nwkMemDirectJoin(void)
{
  return &nwkMem.directJoin;
}
#endif

#if defined _NWK_ORPHAN_JOIN_
INLINE NwkOrphan_t* nwkMemOrphan(void)
{
  return &nwkMem.orphan;
}
#endif

#if defined _NWK_SILENT_JOIN_
INLINE NwkSilentJoin_t* nwkMemSilentJoin(void)
{
  return &nwkMem.silentJoin;
}
#endif

#if defined NWK_ROUTING_CAPACITY && defined _NWK_MANY_TO_ONE_ROUTING_
INLINE NwkManyToOne_t* nwkMemManyToOne(void)
{
  return &nwkMem.manyToOne;
}
#endif
#if defined _GROUP_TABLE_
INLINE NWK_GroupTable_t* nwkMemGroup(void)
{
  return &nwkMem.groupTable;
}
#endif
#endif /* _NWK_MEM_H */
/** eof nwkMem.h */