Wirepas SDK
settings.h
Go to the documentation of this file.
1 /* Copyright 2019 Wirepas Ltd. All Rights Reserved.
2  *
3  * See file LICENSE.txt for full license details.
4  *
5  */
6 
22 #ifndef APP_LIB_SETTINGS_H_
23 #define APP_LIB_SETTINGS_H_
24 
25 #include <stdlib.h>
26 #include <stdint.h>
27 #include <stdbool.h>
28 
29 #include "app/app.h"
30 
32 #define APP_LIB_SETTINGS_NAME 0x74ced676
33 
34 
35 #define APP_LIB_SETTINGS_VERSION 0x205
36 
44 #define APP_LIB_SETTINGS_AES_KEY_NUM_BYTES 16
45 
46 // Device address definition is in app/app.h */
47 
53 typedef uint32_t app_lib_settings_net_addr_t;
54 
61 
69 typedef enum
70 {
80 
88 typedef enum
89 {
97 
106 #define APP_LIB_SETTINGS_BASE_ROLE_MASK 0x0f
107 
115 #define APP_LIB_SETTINGS_FLAG_ROLE_MASK 0xf0
116 
126 typedef uint8_t app_lib_settings_role_t;
127 
147 {
150  return role;
151 }
152 
164 {
165  return role & APP_LIB_SETTINGS_BASE_ROLE_MASK;
166 }
167 
179 {
180  return role & APP_LIB_SETTINGS_FLAG_ROLE_MASK;
181 }
182 
204 typedef bool
206 
222 typedef app_res_e
224 
240 typedef app_res_e
242 
255 typedef app_res_e
257 
270 typedef app_res_e
272 
292 typedef app_res_e
293  (*app_lib_settings_set_feature_lock_key_f)(const uint8_t * key_p);
294 
304 typedef app_res_e
306 
320 typedef app_res_e
322 
332 typedef app_res_e
334 
347 typedef app_res_e
349 
358 typedef app_res_e
360 
378 typedef app_res_e
380 
393 typedef app_res_e
395 
426 typedef app_res_e
428 
441 typedef app_res_e
443 
463 typedef app_res_e
464  (*app_lib_settings_set_authentication_key_f)(const uint8_t * key_p);
465 
478 typedef app_res_e
480 
500 typedef app_res_e
501  (*app_lib_settings_set_encryption_key_f)(const uint8_t * key_p);
502 
524 typedef app_res_e
525  (*app_lib_settings_get_ac_range_f)(uint16_t * ac_min_value_p,
526  uint16_t * ac_max_value_p);
527 
575 typedef app_res_e
576  (*app_lib_settings_set_ac_range_f)(uint16_t ac_min_value,
577  uint16_t ac_max_value);
578 
591 typedef app_res_e
592  (*app_lib_settings_get_offline_scan_f)(uint16_t * max_scan_p);
593 
619 typedef app_res_e
620  (*app_lib_settings_set_offline_scan_f)(uint16_t max_scan);
621 
639 typedef app_res_e
640  (*app_lib_settings_get_channel_map_f)(uint32_t * channelmap_p);
641 
660 typedef app_res_e
661  (*app_lib_settings_set_channel_map_f)(uint32_t channelmap);
662 
677 typedef app_res_e
679  uint16_t * max_value_p);
680 
695 typedef app_res_e
696  (*app_lib_settings_get_ac_range_limits_f)(uint16_t * min_value_p,
697  uint16_t * max_value_p);
698 
728 typedef app_res_e
730 
754 typedef app_res_e
756  size_t num_bytes);
757 
796 typedef app_res_e
797  (*app_lib_settings_set_reserved_channels_f)(const uint8_t * channels_p,
798  size_t num_bytes);
799 
808 
816 
824 
832 
833 
837 typedef struct
838 {
872 
873 #endif /* APP_LIB_SETTINGS_H_ */
app_lib_settings_get_authentication_key_f
app_res_e(* app_lib_settings_get_authentication_key_f)(uint8_t *key_p)
Check if authentication key is set.
Definition: settings.h:442
app_lib_settings_t::getNodeRole
app_lib_settings_get_node_role_f getNodeRole
Definition: settings.h:850
app_lib_settings_set_ac_range_f
app_res_e(* app_lib_settings_set_ac_range_f)(uint16_t ac_min_value, uint16_t ac_max_value)
Set range for access cycle.
Definition: settings.h:576
APP_LIB_SETTINGS_ROLE_FLAG_RESV
@ APP_LIB_SETTINGS_ROLE_FLAG_RESV
Definition: settings.h:93
app_lib_settings_get_base_role
static app_lib_settings_base_role_e app_lib_settings_get_base_role(app_lib_settings_role_t role)
Get base role from full role.
Definition: settings.h:163
app_lib_settings_get_ac_range_limits_f
app_res_e(* app_lib_settings_get_ac_range_limits_f)(uint16_t *min_value_p, uint16_t *max_value_p)
Get access cycle range.
Definition: settings.h:696
app_lib_settings_get_node_role_f
app_res_e(* app_lib_settings_get_node_role_f)(app_lib_settings_role_t *role_p)
Definition: settings.h:394
APP_LIB_SETTINGS_ROLE_SINK
@ APP_LIB_SETTINGS_ROLE_SINK
Definition: settings.h:72
APP_LIB_SETTINGS_ROLE_ADVERTISER
@ APP_LIB_SETTINGS_ROLE_ADVERTISER
Definition: settings.h:78
app_lib_settings_get_network_address_f
app_res_e(* app_lib_settings_get_network_address_f)(app_lib_settings_net_addr_t *addr_p)
Get network address.
Definition: settings.h:333
app_lib_settings_get_encryption_key_f
app_res_e(* app_lib_settings_get_encryption_key_f)(uint8_t *key_p)
Check if encryption key is set.
Definition: settings.h:479
app_lib_settings_t::isValidNodeAddress
app_lib_settings_is_valid_node_address_f isValidNodeAddress
Definition: settings.h:869
app_lib_settings_set_group_query_cb_f
app_res_e(* app_lib_settings_set_group_query_cb_f)(app_lib_settings_is_group_cb_f cb)
Set the callback function for multicat groups.
Definition: settings.h:729
app_lib_settings_t::getOfflineScan
app_lib_settings_get_offline_scan_f getOfflineScan
Definition: settings.h:858
app_lib_settings_get_network_channel_limits_f
app_res_e(* app_lib_settings_get_network_channel_limits_f)(uint16_t *min_value_p, uint16_t *max_value_p)
Get network channel range.
Definition: settings.h:678
app_lib_settings_get_feature_lock_key_f
app_res_e(* app_lib_settings_get_feature_lock_key_f)(uint8_t *key_p)
Check if feature lock key is set.
Definition: settings.h:271
app_lib_settings_t::getFeatureLockKey
app_lib_settings_get_feature_lock_key_f getFeatureLockKey
Definition: settings.h:842
app_lib_settings_t::setOfflineScan
app_lib_settings_set_offline_scan_f setOfflineScan
Definition: settings.h:859
app_lib_settings_t::getNetworkChannel
app_lib_settings_get_network_channel_f getNetworkChannel
Definition: settings.h:848
app_lib_settings_t::getAuthenticationKey
app_lib_settings_get_authentication_key_f getAuthenticationKey
Definition: settings.h:852
app_lib_settings_set_reserved_channels_f
app_res_e(* app_lib_settings_set_reserved_channels_f)(const uint8_t *channels_p, size_t num_bytes)
Set reserved channels.
Definition: settings.h:797
app_lib_joining_received_beacon_s::channel
app_lib_settings_net_channel_t channel
Definition: joining.h:149
app_lib_settings_t
Definition: settings.h:837
app_lib_joining_received_beacon_s::num_bytes
size_t num_bytes
Definition: joining.h:137
app_lib_settings_set_encryption_key_f
app_res_e(* app_lib_settings_set_encryption_key_f)(const uint8_t *key_p)
Set encryption key.
Definition: settings.h:501
app_lib_settings_t::setNetworkAddress
app_lib_settings_set_network_address_f setNetworkAddress
Definition: settings.h:847
app_lib_settings_get_node_address_f
app_res_e(* app_lib_settings_get_node_address_f)(app_addr_t *addr_p)
Get node address.
Definition: settings.h:305
app_lib_settings_t::setFeatureLockBits
app_lib_settings_set_feature_lock_bits_f setFeatureLockBits
Definition: settings.h:841
APP_LIB_SETTINGS_ROLE_FLAG_LL
@ APP_LIB_SETTINGS_ROLE_FLAG_LL
Definition: settings.h:91
app_lib_settings_set_network_channel_f
app_res_e(* app_lib_settings_set_network_channel_f)(app_lib_settings_net_channel_t channel)
Set network channel.
Definition: settings.h:379
APP_LIB_SETTINGS_FLAG_ROLE_MASK
#define APP_LIB_SETTINGS_FLAG_ROLE_MASK
Flag role mask.
Definition: settings.h:115
app_lib_settings_t::getAcRange
app_lib_settings_get_ac_range_f getAcRange
Definition: settings.h:856
app_addr_t
uint32_t app_addr_t
Definition: app.h:228
app_lib_settings_get_reserved_channels_f
app_res_e(* app_lib_settings_get_reserved_channels_f)(uint8_t *channels_p, size_t num_bytes)
Get reserved channels.
Definition: settings.h:755
app_lib_settings_base_role_e
app_lib_settings_base_role_e
Node base role.
Definition: settings.h:69
app_lib_settings_get_network_channel_f
app_res_e(* app_lib_settings_get_network_channel_f)(app_lib_settings_net_channel_t *channel_p)
Get network channel.
Definition: settings.h:359
app_lib_settings_t::setNodeRole
app_lib_settings_set_node_role_f setNodeRole
Definition: settings.h:851
app_lib_settings_t::getReservedChannels
app_lib_settings_get_reserved_channels_f getReservedChannels
Definition: settings.h:865
app_lib_settings_t::isValidNetworkAddress
app_lib_settings_is_valid_network_address_f isValidNetworkAddress
Definition: settings.h:867
app_lib_joining_received_beacon_s::addr
app_lib_settings_net_addr_t addr
Definition: joining.h:147
app_lib_settings_get_feature_lock_bits_f
app_res_e(* app_lib_settings_get_feature_lock_bits_f)(uint32_t *bits_p)
Get feature lock bits.
Definition: settings.h:241
app.h
app_lib_settings_t::setReservedChannels
app_lib_settings_set_reserved_channels_f setReservedChannels
Definition: settings.h:866
app_lib_settings_set_authentication_key_f
app_res_e(* app_lib_settings_set_authentication_key_f)(const uint8_t *key_p)
Set authentication key.
Definition: settings.h:464
app_lib_settings_get_ac_range_f
app_res_e(* app_lib_settings_get_ac_range_f)(uint16_t *ac_min_value_p, uint16_t *ac_max_value_p)
Get the access cycle range.
Definition: settings.h:525
app_lib_settings_set_offline_scan_f
app_res_e(* app_lib_settings_set_offline_scan_f)(uint16_t max_scan)
Set the maximum offline scan interval in seconds.
Definition: settings.h:620
app_lib_settings_flag_role_e
app_lib_settings_flag_role_e
Role flag bits.
Definition: settings.h:88
app_lib_settings_t::registerGroupQuery
app_lib_settings_set_group_query_cb_f registerGroupQuery
Definition: settings.h:864
APP_LIB_SETTINGS_ROLE_SUBNODE
@ APP_LIB_SETTINGS_ROLE_SUBNODE
Definition: settings.h:76
app_lib_settings_set_channel_map_f
app_res_e(* app_lib_settings_set_channel_map_f)(uint32_t channelmap)
Set the channel map (for releases < 3.5)
Definition: settings.h:661
APP_LIB_SETTINGS_BASE_ROLE_MASK
#define APP_LIB_SETTINGS_BASE_ROLE_MASK
Base role mask.
Definition: settings.h:106
__STATIC_INLINE
#define __STATIC_INLINE
Definition: app.h:20
app_lib_settings_t::resetAll
app_lib_settings_reset_all_f resetAll
Definition: settings.h:839
app_lib_settings_is_group_cb_f
bool(* app_lib_settings_is_group_cb_f)(app_addr_t group_addr)
Callback used for determining on which multicast groups the device belongs.
Definition: settings.h:205
app_lib_settings_t::setNetworkChannel
app_lib_settings_set_network_channel_f setNetworkChannel
Definition: settings.h:849
app_lib_settings_set_node_role_f
app_res_e(* app_lib_settings_set_node_role_f)(app_lib_settings_role_t role)
Set node role.
Definition: settings.h:427
app_lib_settings_t::setAcRange
app_lib_settings_set_ac_range_f setAcRange
Definition: settings.h:857
app_lib_settings_t::getEncryptionKey
app_lib_settings_get_encryption_key_f getEncryptionKey
Definition: settings.h:854
app_lib_settings_t::setEncryptionKey
app_lib_settings_set_encryption_key_f setEncryptionKey
Definition: settings.h:855
app_lib_settings_t::getNetworkChannelLimits
app_lib_settings_get_network_channel_limits_f getNetworkChannelLimits
Definition: settings.h:862
app_lib_settings_is_valid_network_channel_f
bool(* app_lib_settings_is_valid_network_channel_f)(uint8_t channel)
Check that the network channel is valid.
Definition: settings.h:815
app_lib_settings_set_feature_lock_key_f
app_res_e(* app_lib_settings_set_feature_lock_key_f)(const uint8_t *key_p)
Set feature lock key.
Definition: settings.h:293
app_lib_settings_is_valid_network_address_f
bool(* app_lib_settings_is_valid_network_address_f)(app_lib_settings_net_addr_t addr)
Check that the network address is valid.
Definition: settings.h:807
app_lib_settings_reset_all_f
app_res_e(* app_lib_settings_reset_all_f)(void)
Reset all settings to default values.
Definition: settings.h:223
app_lib_settings_set_feature_lock_bits_f
app_res_e(* app_lib_settings_set_feature_lock_bits_f)(uint32_t bits)
Set feature lock bits.
Definition: settings.h:256
app_lib_settings_t::getAcRangeLimits
app_lib_settings_get_ac_range_limits_f getAcRangeLimits
Definition: settings.h:863
app_lib_settings_t::getNetworkAddress
app_lib_settings_get_network_address_f getNetworkAddress
Definition: settings.h:846
app_lib_settings_t::getChannelMap
app_lib_settings_get_channel_map_f getChannelMap
Definition: settings.h:860
app_lib_settings_set_node_address_f
app_res_e(* app_lib_settings_set_node_address_f)(app_addr_t addr)
Set node address.
Definition: settings.h:321
app_lib_settings_set_network_address_f
app_res_e(* app_lib_settings_set_network_address_f)(app_lib_settings_net_addr_t addr)
Set network address.
Definition: settings.h:348
APP_LIB_SETTINGS_ROLE_FLAG_AUTOROLE
@ APP_LIB_SETTINGS_ROLE_FLAG_AUTOROLE
Definition: settings.h:95
app_lib_settings_t::isValidNodeRole
app_lib_settings_is_valid_node_role_f isValidNodeRole
Definition: settings.h:870
app_lib_settings_t::setAuthenticationKey
app_lib_settings_set_authentication_key_f setAuthenticationKey
Definition: settings.h:853
app_lib_settings_is_valid_node_role_f
bool(* app_lib_settings_is_valid_node_role_f)(app_lib_settings_role_t role)
Check that the node role is valid.
Definition: settings.h:831
app_lib_settings_create_role
static app_lib_settings_role_t app_lib_settings_create_role(app_lib_settings_base_role_e base, app_lib_settings_flag_role_e flags)
Create a role.
Definition: settings.h:145
app_lib_settings_t::getNodeAddress
app_lib_settings_get_node_address_f getNodeAddress
Definition: settings.h:844
app_lib_settings_get_channel_map_f
app_res_e(* app_lib_settings_get_channel_map_f)(uint32_t *channelmap_p)
Get the channel map (for releases < 3.5)
Definition: settings.h:640
app_lib_settings_t::isValidNetworkChannel
app_lib_settings_is_valid_network_channel_f isValidNetworkChannel
Definition: settings.h:868
app_lib_settings_is_valid_node_address_f
bool(* app_lib_settings_is_valid_node_address_f)(app_addr_t addr)
Check that the node address is valid.
Definition: settings.h:823
APP_LIB_SETTINGS_ROLE_HEADNODE
@ APP_LIB_SETTINGS_ROLE_HEADNODE
Definition: settings.h:74
app_lib_settings_t::getFeatureLockBits
app_lib_settings_get_feature_lock_bits_f getFeatureLockBits
Definition: settings.h:840
app_lib_settings_get_flags_role
static app_lib_settings_role_t app_lib_settings_get_flags_role(app_lib_settings_role_t role)
Get flags from full role.
Definition: settings.h:178
app_res_e
app_res_e
Definition: app.h:201
app_lib_settings_role_t
uint8_t app_lib_settings_role_t
Node role type.
Definition: settings.h:126
app_lib_settings_t::setNodeAddress
app_lib_settings_set_node_address_f setNodeAddress
Definition: settings.h:845
app_lib_settings_get_offline_scan_f
app_res_e(* app_lib_settings_get_offline_scan_f)(uint16_t *max_scan_p)
Get the maximum offline scan interval in seconds.
Definition: settings.h:592
app_lib_settings_net_addr_t
uint32_t app_lib_settings_net_addr_t
Network address type definition.
Definition: settings.h:53
app_lib_settings_net_channel_t
uint8_t app_lib_settings_net_channel_t
Network channel type definition.
Definition: settings.h:60
app_lib_settings_t::setChannelMap
app_lib_settings_set_channel_map_f setChannelMap
Definition: settings.h:861
app_lib_settings_t::setFeatureLockKey
app_lib_settings_set_feature_lock_key_f setFeatureLockKey
Definition: settings.h:843