Digi XBee(R) ANSI C Host Library
sxa.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2012 Digi International Inc.,
3  * All rights not expressly granted are reserved.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
7  * You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
10  * =======================================================================
11  */
12 
19 #ifndef __XBEE_SXA
20 #define __XBEE_SXA
21 
22 #include "xbee/atcmd.h"
23 #include "xbee/wpan.h"
24 #include "xbee/discovery.h"
25 #include "xbee/io.h"
26 #include "xbee/reg_descr.h"
27 
29 
40 
41 // Note: even though any one cache entry can have only one of the following
42 // values, we use a bitfield-like encoding (instead of ordinal) to make it
43 // easier for code to test for any-one-out-of-N states.
44 enum
45 {
58 };
59 
63 #define _SXA_CACHED_PREFIX_SIZE (sizeof(sxa_cache_flags_t))
64 
68 typedef XBEE_PACKED(,
69 {
70  sxa_cache_flags_t flags;
71 }) sxa_cached_t;
72 
76 typedef XBEE_PACKED(,
77 {
78  sxa_cache_flags_t flags;
79  uint8_t value;
81 
85 typedef XBEE_PACKED(,
86 {
87  sxa_cache_flags_t flags;
88  uint16_t value;
90 
94 typedef XBEE_PACKED(,
95 {
96  sxa_cache_flags_t flags;
97  uint32_t value;
99 
103 typedef XBEE_PACKED(,
104 {
105  sxa_cache_flags_t flags;
106  addr64 value;
108 
116 #define _SXA_CACHED_STRING(name, len) \
117  XBEE_PACKED(, { sxa_cache_flags_t flags; uint8_t value[len+1]; }) name
118 
124 #define _SXA_CACHED_BIN(name, len) \
125  XBEE_PACKED(, { sxa_cache_flags_t flags; uint8_t value[len]; }) name
126 
127 
128 struct sxa_cached_group_t;
129 struct sxa_node_t;
130 
139 typedef void (*sxa_cache_upd_fn)(
140  struct sxa_node_t FAR *sxa,
141  const struct sxa_cached_group_t FAR *cgroup
142  );
143 
158 typedef struct sxa_cached_group_t
159 {
171 
172 /*-------------------------------------------------
173 
174  This section based on NDS implementation.
175 
176 -------------------------------------------------*/
177 
178 //
179 // Gateway capabilities.
180 // This is a set of features supported by the network and gateway.
181 // This set may depend on the hardware and firmware versions of
182 // the gateway and gateway radio currently in use.
183 // Individual nodes may not support all of these features.
184 //
185 
186 // Advanced addressing: ability to send and receive to any endpoint and
187 // cluster ID on remote nodes. Without this capability, only a single
188 // endpoint and cluster ID (e.g. remote serial port) may be used on each node.
189 #define ZB_CAP_ADV_ADDR 0x00000001
190 
191 // Ability to access ZigBee device objects
192 #define ZB_CAP_ZDO 0x00000002
193 
194 // Ability to access Digi device objects on remote nodes.
195 // DDO access to the gateway radio is always available.
196 #define ZB_CAP_REMOTE_DDO 0x00000004
197 
198 // Ability to update firmware on the gateway radio.
199 #define ZB_CAP_GW_FW 0x00000008
200 
201 // Ability to update firmware on remote nodes via the gateway.
202 #define ZB_CAP_REMOTE_FW 0x00000010
203 
204 // Supports ZigBee mesh networking
205 #define ZB_CAP_ZIGBEE 0x00000020
206 
207 // Supports ZigBee Pro/2007 mesh networking
208 #define ZB_CAP_ZBPRO 0x00000040
209 
210 // Supports DigiMesh networking
211 #define ZB_CAP_DIGIMESH 0x00000080
212 
213 // Supports parent/child relationship
214 #define ZB_CAP_CHILDREN 0x00000100
215 
216 // Supports ZigBee Smart Energy profile
217 #define ZB_CAP_SE 0x00000200
218 
219 /*-------------------------------------------------
220 -------------------------------------------------*/
221 
222 
267 typedef struct sxa_node_t
268 {
269  struct sxa_node_t
270  FAR *next;
271  struct sxa_node_t
272  FAR *next_local;
273  int16_t index;
277  uint32_t caps;
287 
292 #ifndef _SXA_MAX_QUEUED
293  #define _SXA_MAX_QUEUED 100
295 #endif
296  const struct _xbee_reg_descr_t FAR * FAR * queued;
307  xbee_atcmd_reg_t misc_reg[2];
308 
309 #if 0
310  uint16_t cache_mask;
316  uint16_t error_mask;
319  uint16_t doing_mask;
320 #endif
321 
322  const sxa_cached_group_t FAR *groups;
323  const sxa_cached_group_t FAR *doing_group;
324 
327 
333 
334  // Following fields cached with SXA_CACHED_DEVICE_INFO group
340 #define XBEE_ATAO_NOT_SUPPORTED 0xFF
341  uint16_t hardware_version;
347 
348 // Module field in device type (DD)
349 #define MS_MOD_UNSPEC 0x00000000 // Unspecified
350 #define MS_MOD_SERIES1 0x00010000 // 802.15.4 or ZigBee (Freescale)
351 #define MS_MOD_ZNET25 0x00020000 // ZNet 2.5 (Ember)
352 #define MS_MOD_ZB 0x00030000 // ZB/SE (Ember)
353 #define MS_MOD_XBEE900 0x00040000 // XBee DigiMesh 900
354 #define MS_MOD_XBEE24 0x00050000 // XBee DigiMesh 2.4
355 #define MS_MOD_XBEE868 0x00060000 // XBee 868
356 #define MS_MOD_XBEE900DP 0x00070000 // XBee DP 900
357 #define MS_MOD_ZB_S2C 0x000a0000 // ZB/SE on S2C (Ember EM357)
358 
359 #define MS_MOD_MIN MS_MOD_SERIES1
360 #define MS_MOD_MAX MS_MOD_ZB_S2C
361 
362 
368 
369  // Miscellaneous cached data. This is mainly to support iDigi which
370  // wants access to all possible device registers. The names of the
371  // fields correspond to the iDigi RCI element tags in
372  // <do_command target="zigbee"><query_state>...
373  sxa_cached_uint8_t aggregation;
374  sxa_cached_uint8_t assoc_led;
375  sxa_cached_uint8_t beacon_response;
376  sxa_cached_uint8_t broadcast_hops;
377  sxa_cached_uint8_t cca_threshold;
378  sxa_cached_uint8_t channel;
379  _SXA_CACHED_STRING(command_char, 1);
380  sxa_cached_uint16_t cluster_id;
381  sxa_cached_uint16_t command_timeout;
382  sxa_cached_uint8_t coord_assoc;
383  sxa_cached_uint8_t coord_enable;
384  sxa_cached_uint8_t delay_slots;
385  sxa_cached_uint8_t dest_endpoint;
386  sxa_cached_uint8_t device_options;
387  sxa_cached_uint16_t discover_timeout;
388  sxa_cached_uint8_t encrypt_enable;
389  sxa_cached_uint8_t encrypt_options;
390  sxa_cached_uint8_t end_assoc;
391  _SXA_CACHED_BIN(ext_pan_id, 8);
392  sxa_cached_uint16_t flow_threshold;
393  sxa_cached_uint16_t guard_times;
394  sxa_cached_uint8_t hop_sequence;
395  sxa_cached_addr64 io_address;
396  sxa_cached_uint8_t io_enable;
397  sxa_cached_uint16_t initial_pan_id;
398  sxa_cached_uint8_t join_time;
399  sxa_cached_uint8_t join_notification;
400  sxa_cached_uint8_t join_verification;
401  _SXA_CACHED_BIN(link_key, 16);
402  sxa_cached_uint8_t mac_mode;
403  sxa_cached_uint8_t mac_retries;
404  sxa_cached_uint8_t max_hops;
405  sxa_cached_uint8_t mesh_retries;
406  sxa_cached_uint8_t multi_transmit;
407  sxa_cached_uint8_t net_delay_slots;
408  _SXA_CACHED_BIN(network_key, 16);
409  sxa_cached_uint16_t network_watchdog;
410  sxa_cached_uint8_t packet_timeout;
411  sxa_cached_uint16_t pan_id;
412  sxa_cached_uint16_t polling_rate;
413  sxa_cached_uint8_t power_level;
414  sxa_cached_uint8_t power_mode;
415  sxa_cached_uint8_t rssi_timer;
416  sxa_cached_uint16_t scan_channels;
417  sxa_cached_uint8_t scan_duration;
418  sxa_cached_uint8_t serial_parity;
419  sxa_cached_uint32_t serial_rate;
420  sxa_cached_uint16_t sleep_count;
421  sxa_cached_uint16_t sleep_disassoc;
422  sxa_cached_uint8_t sleep_mode;
423  sxa_cached_uint8_t sleep_options;
424  sxa_cached_uint16_t sleep_period;
425  sxa_cached_uint8_t sleep_sample_rate;
426  sxa_cached_uint16_t sleep_time;
427  sxa_cached_uint16_t sleep_wake;
428  sxa_cached_uint8_t source_endpoint;
429  sxa_cached_uint8_t stack_profile;
430  sxa_cached_uint8_t stop_bits;
431  sxa_cached_uint16_t supply_threshold;
432  sxa_cached_uint8_t xbee_retries;
433  sxa_cached_uint16_t wake_host_delay;
434  sxa_cached_uint8_t zigbee_enable;
435 
436  sxa_cached_uint8_t association;
437  sxa_cached_uint16_t children;
438  sxa_cached_uint8_t max_payload;
439  sxa_cached_uint16_t config_code;
440  sxa_cached_uint8_t verify_cert;
441  sxa_cached_uint16_t supply_voltage;
442  sxa_cached_uint8_t temperature;
443  sxa_cached_uint8_t duty_cycle;
444  sxa_cached_uint8_t rssi;
445  sxa_cached_uint8_t tx_power;
446  sxa_cached_uint8_t sleep_status;
447  sxa_cached_uint16_t sleep_time_op;
448  sxa_cached_uint16_t wake_time;
449  sxa_cached_uint32_t ack_failures;
450  sxa_cached_uint32_t cca_failures;
451  sxa_cached_uint32_t good_packets;
452  sxa_cached_uint32_t missed_syncs;
453  sxa_cached_uint32_t missed_sync_msg;
454  sxa_cached_uint32_t rf_errors;
455  sxa_cached_uint32_t tx_errors;
456 
457 } sxa_node_t;
458 
462 enum
463 {
476 
483 };
484 
485 extern const FAR sxa_cached_group_t _sxa_default_cache_groups[];
486 const sxa_cached_group_t FAR * _sxa_cache_group_by_id(uint16_t id);
487 void _sxa_update_io_config_group(
488  sxa_node_t FAR *sxa,
489  const sxa_cached_group_t FAR *cgroup);
490 void _sxa_process_version_info(
491  const xbee_cmd_response_t FAR *response,
492  const struct xbee_atcmd_reg_t FAR *reg,
493  void FAR *base);
494 
495 
496 /*---------------------------------------------------------------------------*/
497 /* Simple XBee API public functions */
498 /*---------------------------------------------------------------------------*/
499 extern sxa_node_t FAR *sxa_table;
500 extern int sxa_table_count;
501 extern sxa_node_t FAR *sxa_local_table;
502 
503 sxa_node_t FAR *sxa_node_by_addr( const addr64 FAR *ieee_be);
504 sxa_node_t FAR *sxa_local_node( const xbee_dev_t *xbee);
505 sxa_node_t FAR *sxa_node_by_name( const char FAR *name);
506 sxa_node_t FAR *sxa_node_by_index( int index);
507 sxa_node_t FAR *sxa_node_add( xbee_dev_t *xbee, const xbee_node_id_t FAR *node_id);
508 void sxa_node_table_dump( void);
509 
510 #define sxa_list_head() sxa_table
511 sxa_node_t FAR * (sxa_list_head)(void);
512 #define sxa_list_count() sxa_table_count
513 int (sxa_list_count)(void);
514 #define sxa_xbee(s) ((s)->xbee)
515 xbee_dev_t * (sxa_xbee)(sxa_node_t FAR *sxa);
516 #define sxa_wpan_address(s) ((s)->addr_ptr)
517 wpan_address_t FAR * (sxa_wpan_address)(sxa_node_t FAR *sxa);
518 
519 int sxa_get_digital_input( const sxa_node_t FAR *sxa, uint_fast8_t index);
520 int sxa_get_digital_output( const sxa_node_t FAR *sxa, uint_fast8_t index);
521 int16_t sxa_get_analog_input( const sxa_node_t FAR *sxa, uint_fast8_t index);
522 int sxa_set_digital_output( sxa_node_t FAR *sxa,
523  uint_fast8_t index, enum xbee_io_digital_output_state state);
524 int sxa_io_configure( sxa_node_t FAR *sxa,
525  uint_fast8_t index, enum xbee_io_type type);
526 int sxa_io_set_options( sxa_node_t FAR *sxa,
527  uint16_t sample_rate, uint16_t change_mask);
528 void sxa_io_dump( sxa_node_t FAR *sxa);
529 int sxa_io_query( sxa_node_t FAR *sxa);
530 int sxa_io_query_status( sxa_node_t FAR *sxa);
531 
532 sxa_node_t FAR * sxa_init_or_exit(xbee_dev_t *xbee,
533  const wpan_endpoint_table_entry_t *ep_table,
534  int verbose
535  );
536 void _sxa_launch_update(sxa_node_t FAR *sxa,
537  const struct _xbee_reg_descr_t FAR *xrd,
538  uint16_t cache_group);
539 void sxa_tick(void);
540 int sxa_is_digi(const sxa_node_t FAR *sxa);
541 
542 /*---------------------------------------------------------------------------*/
543 /* Node Discovery */
544 /*---------------------------------------------------------------------------*/
545 int _sxa_disc_process_node_data( xbee_dev_t *xbee, const void FAR *raw,
546  int length);
547 int _sxa_disc_atnd_response( xbee_dev_t *xbee, const void FAR *raw,
548  uint16_t length, void FAR *context);
549 int _sxa_disc_handle_frame_0x95( xbee_dev_t *xbee, const void FAR *raw,
550  uint16_t length, void FAR *context);
551 int _sxa_disc_cluster_handler( const wpan_envelope_t FAR *envelope,
552  void FAR *context);
553 
554 
555 
562 #define XBEE_FRAME_HANDLE_ND_RESPONSE \
563  { XBEE_FRAME_LOCAL_AT_RESPONSE, 0, _sxa_disc_atnd_response, NULL }, \
564  { XBEE_FRAME_NODE_ID, 0, _sxa_disc_handle_frame_0x95, NULL }
565 
566 #define XBEE_DISC_CLIENT_CLUST_ENTRY \
567  { DIGI_CLUST_NODEID_MESSAGE, _sxa_disc_cluster_handler, NULL, \
568  WPAN_CLUST_FLAG_INPUT | WPAN_CLUST_FLAG_NOT_ZCL }
569 
570 
571 
572 /*---------------------------------------------------------------------------*/
573 /* XBee I/O control */
574 /*---------------------------------------------------------------------------*/
575 int _sxa_io_process_response( const addr64 FAR *ieee_be,
576  const void FAR *raw, int length);
577 int _sxa_io_response_handler(xbee_dev_t *xbee, const void FAR *raw,
578  uint16_t length, void FAR *context);
579 int _sxa_io_cluster_handler(const wpan_envelope_t FAR *envelope,
580  void FAR *context);
581 int _sxa_remote_is_cmd_response_handler(xbee_dev_t *xbee, const void FAR *raw,
582  uint16_t length, void FAR *context);
583 int _sxa_local_is_cmd_response_handler(xbee_dev_t *xbee, const void FAR *raw,
584  uint16_t length, void FAR *context);
585 
586 /*---------------------------------------------------------------------------*/
587 /* XBee cache control */
588 /*---------------------------------------------------------------------------*/
589 sxa_cache_flags_t sxa_cache_status(sxa_node_t FAR * sxa,
590  const _xbee_reg_descr_t FAR * zb,
591  uint16_t cache_group);
592 void _sxa_set_cache_status(sxa_node_t FAR * sxa,
593  const _xbee_reg_descr_t FAR * zb,
594  uint16_t cache_group,
595  sxa_cache_flags_t flags);
596 void FAR * sxa_cached_value_ptr(sxa_node_t FAR * sxa,
597  const _xbee_reg_descr_t FAR * zb);
598 uint16_t sxa_cached_value_len(sxa_node_t FAR * sxa,
599  const _xbee_reg_descr_t FAR * zb);
600 int sxa_find_pending_cache(sxa_node_t FAR * sxa,
601  const _xbee_reg_descr_t FAR * zb);
602 int sxa_schedule_update_cache(sxa_node_t FAR * sxa,
603  const _xbee_reg_descr_t FAR * zb);
604 
605 
612 #define XBEE_FRAME_HANDLE_IS_RESPONSE \
613  { XBEE_FRAME_REMOTE_AT_RESPONSE, 0, _sxa_remote_is_cmd_response_handler, NULL }, \
614  { XBEE_FRAME_LOCAL_AT_RESPONSE, 0, _sxa_local_is_cmd_response_handler, NULL }, \
615  { XBEE_FRAME_IO_RESPONSE, 0, _sxa_io_response_handler, NULL }
616 
617 #define XBEE_IO_CLIENT_CLUST_ENTRY \
618  {DIGI_CLUST_IODATA, _sxa_io_cluster_handler, NULL, \
619  WPAN_CLUST_FLAG_INPUT | WPAN_CLUST_FLAG_NOT_ZCL}
620 
622 
623 // If compiling in Dynamic C, automatically #use the appropriate C file.
624 #ifdef __DC__
625  #use "xbee_sxa.c"
626 #endif
627 
628 #endif // __XBEE_SXA
629 
int _sxa_io_process_response(const addr64 FAR *ieee_be, const void FAR *raw, int length)
Function shared by multiple functions that process I/O sample messages (0x92 frames and ATIS response...
Definition: xbee_sxa.c:652
unsigned long uint32_t
32-bit unsigned integer
Definition: platform_config.h:43
uint8_t ao
Value of XBee module&#39;s AO (API options) register.
Definition: sxa.h:339
uint16_t q_index
Cached register value handling: current update (index into .queued) If >= .nqueued, then no current update is being processed, so scan list for next update (if any).
Definition: sxa.h:303
uint32_t caps
Capabilites bitmask (ZB_CAP_*)
Definition: sxa.h:278
int _sxa_disc_atnd_response(xbee_dev_t *xbee, const void FAR *raw, uint16_t length, void FAR *context)
Frame handler for processing AT Command Response frames.
Definition: xbee_sxa.c:366
const xbee_atcmd_reg_t FAR * get_list
If not NULL, is a command list used to update all cached values in the group.
Definition: sxa.h:166
Dest addr: DH,DL.
Definition: sxa.h:475
#define FAR
On platforms with "far" pointers, define to the proper keyword; empty definition if not required...
Definition: platform.h:396
Definition: sxa.h:57
addr64 dest_addr
Value of DH and DL registers, combined into a single logical field.
Definition: sxa.h:367
Definition: sxa.h:47
#define XBEE_BEGIN_DECLS
Macro defined to.
Definition: platform.h:41
Entry for table of XBee registers to query at startup.
Definition: atcmd.h:493
sxa_cache_flags_t device_info_cf
Cache flags for device info group.
Definition: sxa.h:336
xbee_node_id_t id
Instance of basic node addressing and identification info.
Definition: sxa.h:279
xbee_dev_t * xbee
Local device through which discovered.
Definition: sxa.h:275
Device information: HV, VR and DD.
Definition: sxa.h:472
Note that Node Discovery isn&#39;t supported on XBee Smart Energy firmware.
#define _SXA_CACHED_STRING(name, len)
Cached string register value.
Definition: sxa.h:116
xbee_io_t io
I/O shadow state and configuration.
Definition: sxa.h:332
Definition: sxa.h:53
#define _SXA_CACHED_BIN(name, len)
Cached binary register value.
Definition: sxa.h:124
uint32_t stamp
Time stamp of last received message from xbee_seconds_timer().
Definition: sxa.h:276
uint8_t sxa_cache_flags_t
Definition: sxa.h:39
wpan_address_t address
IEEE and network addresses (for remote devices, else N/A)
Definition: sxa.h:286
struct @9 sxa_cached_addr64
Cached extended address register value.
unsigned short uint16_t
16-bit unsigned integer
Definition: platform_config.h:41
This structure and the attendant functions provide a useful layer for Rabbit applications who wish to...
Definition: sxa.h:267
int _sxa_disc_handle_frame_0x95(xbee_dev_t *xbee, const void FAR *raw, uint16_t length, void FAR *context)
Frame handler for processing Node Identification Indicator (0x95) frames.
Definition: xbee_sxa.c:400
Miscellaneous stuff (one of the sxa_cached_* sub-structures) - these have their own individual cache ...
Definition: sxa.h:482
Cached register group value.
Definition: sxa.h:158
uint32_t firmware_version
Value of XBee module&#39;s VR register (4-bytes on some devices)
Definition: sxa.h:344
unsigned char uint8_t
8-bit unsigned integer
Definition: platform_config.h:39
void(* sxa_cache_upd_fn)(struct sxa_node_t FAR *sxa, const struct sxa_cached_group_t FAR *cgroup)
Function registered for cache group update post-processing.
Definition: sxa.h:139
int _sxa_disc_cluster_handler(const wpan_envelope_t FAR *envelope, void FAR *context)
Cluster handler for "Digi Node Identification" cluster.
Definition: xbee_sxa.c:621
Single structure to hold an 802.15.4 device&#39;s 64-bit IEEE/MAC address and 16-bit network address...
Definition: types.h:98
struct sxa_node_t FAR * next
Next in linked list (or NULL)
Definition: sxa.h:269
Definition: io.h:37
Definition: sxa.h:49
Definition: reg_descr.h:50
struct sxa_node_t FAR * next_local
Next in linked list of local devices (or NULL)
Definition: sxa.h:271
int _sxa_disc_process_node_data(xbee_dev_t *xbee, const void FAR *raw, int length)
Function shared by multiple functions that process Node Identification Messages (0x95 frames and ATND...
Definition: xbee_sxa.c:311
sxa_cache_flags_t dhdl_cf
Cache flags for DH/DL (destination address) group.
Definition: sxa.h:364
uint32_t dd
Value of XBee module&#39;s DD register (device type)
Definition: sxa.h:346
Definition: sxa.h:51
uint16_t nqueued
Cached register value handling: number of entries in .queued Range [0.._SXA_MAX_QUEUED].
Definition: sxa.h:291
struct @5 sxa_cached_t
Cached generic register value (no data)
Structure used to pass AT Command responses to registered callback handlers.
Definition: atcmd.h:74
struct @7 sxa_cached_uint16_t
Cached uint16_t register value.
parsed Node ID in host-byte-order and fixed length fields
Definition: discovery.h:126
struct @8 sxa_cached_uint32_t
Cached uint32_t register value.
Sending AT command requests and processing the responses.
short int16_t
16-bit signed integer
Definition: platform_config.h:40
wpan_address_t FAR * addr_ptr
Either NULL (for local device) or points to next field.
Definition: sxa.h:284
Typedef used to hold a 64-bit IEEE address, represented as 8 bytes, 4 16-bit values or 2 32-bit value...
Definition: types.h:34
Definition: device.h:361
xbee_io_type
Configuration type for XBee built-in I/Os.
Definition: io.h:128
sxa_cache_flags_t io_config_cf
Cache flags for I/O configuration group.
Definition: sxa.h:329
int16_t index
Index (order of discovery: 0, 1, 2...)
Definition: sxa.h:274
#define XBEE_END_DECLS
Macro defined to.
Definition: platform.h:42
struct @6 sxa_cached_uint8_t
Cached uint8_t register value.
sxa_cache_flags_t node_id_cf
Cache flags for node_id group.
Definition: sxa.h:326
Header for XBee register descriptors.
I/O configuration: ATD0 etc., in .io field.
Definition: sxa.h:470
Information on each endpoint on this device.
Definition: aps.h:252
uint16_t flags_offs
Offset (within sxa_node_t) of cache group status flags (_SXA_CACHED_OK etc.) This field is zero to in...
Definition: sxa.h:164
uint16_t id
Arbitrary numeric ID of this group (see SXA_CACHED_NODE_ID etc.)
Definition: sxa.h:161
The "envelope" is used to gather all necessary information about a given frame on the network...
Definition: aps.h:40
xbee_io_digital_output_state
Digital output state for XBee built-in I/Os configured as outputs.
Definition: io.h:163
Definition: sxa.h:55
Dummy for when no caching required.
Definition: sxa.h:465
Got .id.node_id (normally obtained by initial discovery, however app can explicitly refresh if desire...
Definition: sxa.h:468
sxa_cache_upd_fn get_fn
If not NULL, is a function to call (after get_list, if any) in order to perform any necessary post pr...
Definition: sxa.h:169