Wirepas SDK
wms_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 "wms_app.h"
30 
32 #define APP_LIB_SETTINGS_NAME 0x74ced676
33 
34 
35 #define APP_LIB_SETTINGS_VERSION 0x20c
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 
59 
64 #define CHANNEL_NO_CHANNEL 0
65 
66 typedef enum
67 {
87 
110 typedef struct __attribute__((packed))
111 {
112  struct
113  {
114  const uint8_t (*encryption_key_p)
116  const uint8_t (*authentication_key_p)
119  } network_key_pair, management_key_pair;
120 
121  struct
122  {
123  uint8_t key_management:1;
124  uint8_t revoke_keys:1;
125  } flags;
126 
130 
136 typedef uint8_t app_lib_settings_role_t;
137 
160 typedef bool (*app_lib_settings_is_group_cb_f)(app_addr_t group_addr);
161 
178 
195  uint32_t * bits_p);
196 
210 
224 
245  const uint8_t * key_p);
246 
257 
273 
284  app_lib_settings_net_addr_t * addr_p);
285 
300 
310  app_lib_settings_net_channel_t * channel_p);
311 
332 
345  app_lib_settings_role_t * role_p);
346 
374 
389 
410  const uint8_t * key_p);
411 
426 
447  const uint8_t * key_p);
448 
470 typedef app_res_e (*app_lib_settings_get_ac_range_f)(uint16_t * ac_min_value_p,
471  uint16_t * ac_max_value_p);
472 
520 typedef app_res_e (*app_lib_settings_set_ac_range_f)(uint16_t ac_min_value,
521  uint16_t ac_max_value);
522 
535 typedef app_res_e (*app_lib_settings_get_offline_scan_f)(uint16_t * max_scan_p);
536 
562 typedef app_res_e (*app_lib_settings_set_offline_scan_f)(uint16_t max_scan);
563 
580  uint16_t * min_value_p, uint16_t * max_value_p);
581 
597  uint16_t * min_value_p, uint16_t * max_value_p);
598 
630 
655  uint8_t * channels_p, size_t num_bytes);
656 
694  const uint8_t * channels_p, size_t num_bytes);
695 
704 
711 typedef bool (*app_lib_settings_is_valid_network_channel_f)(uint8_t channel);
712 
720 
729 
744  const app_lib_settings_key_management_configuration_t * key_mgmt_cfg_p);
745 
747 #define APP_LIB_SETTINGS_MAX_NODE_UID_SIZE 79
748 
764  uint8_t buffer[APP_LIB_SETTINGS_MAX_NODE_UID_SIZE], uint32_t * length);
765 
780 
781 
789 typedef struct
790 {
825 
826 #endif /* APP_LIB_SETTINGS_H_ */
app_lib_settings_t::isValidNetworkAddress
app_lib_settings_is_valid_network_address_f isValidNetworkAddress
Definition: wms_settings.h:817
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: wms_settings.h:654
app_lib_settings_t::registerGroupQuery
app_lib_settings_set_group_query_cb_f registerGroupQuery
Definition: wms_settings.h:814
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: wms_settings.h:330
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: wms_settings.h:409
app_lib_settings_net_channel_t
uint8_t app_lib_settings_net_channel_t
Channel type definition.
Definition: wms_settings.h:58
APP_LIB_SETTINGS_ROLE_SUBNODE_LE
@ APP_LIB_SETTINGS_ROLE_SUBNODE_LE
Definition: wms_settings.h:77
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: wms_settings.h:693
APP_LIB_SETTINGS_ROLE_ADVERTISER
@ APP_LIB_SETTINGS_ROLE_ADVERTISER
Definition: wms_settings.h:85
app_lib_settings_t::getFeatureLockKey
app_lib_settings_get_feature_lock_key_f getFeatureLockKey
Definition: wms_settings.h:794
app_lib_settings_t::getAuthenticationKey
app_lib_settings_get_authentication_key_f getAuthenticationKey
Definition: wms_settings.h:804
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: wms_settings.h:272
APP_LIB_SETTINGS_ROLE_HEADNODE_LE
@ APP_LIB_SETTINGS_ROLE_HEADNODE_LE
Definition: wms_settings.h:73
APP_LIB_SETTINGS_MAX_NODE_UID_SIZE
#define APP_LIB_SETTINGS_MAX_NODE_UID_SIZE
Definition: wms_settings.h:747
app_lib_settings_t::getAcRange
app_lib_settings_get_ac_range_f getAcRange
Definition: wms_settings.h:808
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: wms_settings.h:562
app_res_e
app_res_e
Definition: wms_app.h:201
app_lib_settings_t::isValidNodeRole
app_lib_settings_is_valid_node_role_f isValidNodeRole
Definition: wms_settings.h:820
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: wms_settings.h:283
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: wms_settings.h:160
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: wms_settings.h:470
wms_app.h
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: wms_settings.h:344
app_lib_settings_register_node_uid_cb_f
app_res_e(* app_lib_settings_register_node_uid_cb_f)(app_lib_settings_get_node_uid_cb_f cb)
Register a callback for retrieving the node UID.
Definition: wms_settings.h:778
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: wms_settings.h:711
app_lib_settings_t::getOfflineScan
app_lib_settings_get_offline_scan_f getOfflineScan
Definition: wms_settings.h:810
app_lib_settings_t::setEncryptionKey
app_lib_settings_set_encryption_key_f setEncryptionKey
Definition: wms_settings.h:807
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: wms_settings.h:256
app_lib_settings_net_addr_t
uint32_t app_lib_settings_net_addr_t
Network address type definition.
Definition: wms_settings.h:53
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: wms_settings.h:579
app_lib_settings_t::setNodeRole
app_lib_settings_set_node_role_f setNodeRole
Definition: wms_settings.h:803
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: wms_settings.h:223
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: wms_settings.h:535
app_lib_settings_reset_all_f
app_res_e(* app_lib_settings_reset_all_f)(void)
Reset all settings to default values.
Definition: wms_settings.h:177
app_lib_settings_t::registerNodeUidCb
app_lib_settings_register_node_uid_cb_f registerNodeUidCb
Definition: wms_settings.h:823
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 limits.
Definition: wms_settings.h:596
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: wms_settings.h:727
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: wms_settings.h:244
app_lib_settings_key_management_configuration_t::network_key_pair_seq
uint8_t network_key_pair_seq
Definition: wms_settings.h:127
app_lib_settings_t::getNetworkChannel
app_lib_settings_get_network_channel_f getNetworkChannel
Definition: wms_settings.h:800
app_lib_settings_t::setNetworkAddress
app_lib_settings_set_network_address_f setNetworkAddress
Definition: wms_settings.h:799
app_lib_settings_t::getReservedChannels
app_lib_settings_get_reserved_channels_f getReservedChannels
Definition: wms_settings.h:815
app_lib_settings_t::getAcRangeLimits
app_lib_settings_get_ac_range_limits_f getAcRangeLimits
Definition: wms_settings.h:813
app_lib_settings_role_e
app_lib_settings_role_e
Definition: wms_settings.h:66
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: wms_settings.h:209
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: wms_settings.h:309
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: wms_settings.h:446
app_lib_settings_key_management_config_f
app_res_e(* app_lib_settings_key_management_config_f)(const app_lib_settings_key_management_configuration_t *key_mgmt_cfg_p)
Key management configuration using the settings API.
Definition: wms_settings.h:743
app_lib_settings_t::getNodeAddress
app_lib_settings_get_node_address_f getNodeAddress
Definition: wms_settings.h:796
app_lib_settings_key_management_configuration_t::management_key_pair_seq
uint8_t management_key_pair_seq
Definition: wms_settings.h:128
app_lib_settings_t::setNodeAddress
app_lib_settings_set_node_address_f setNodeAddress
Definition: wms_settings.h:797
app_lib_settings_t::getFeatureLockBits
app_lib_settings_get_feature_lock_bits_f getFeatureLockBits
Definition: wms_settings.h:792
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: wms_settings.h:520
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: wms_settings.h:298
APP_LIB_SETTINGS_ROLE_SINK_LL
@ APP_LIB_SETTINGS_ROLE_SINK_LL
Definition: wms_settings.h:71
app_lib_settings_t::getEncryptionKey
app_lib_settings_get_encryption_key_f getEncryptionKey
Definition: wms_settings.h:806
APP_LIB_SETTINGS_AES_KEY_NUM_BYTES
#define APP_LIB_SETTINGS_AES_KEY_NUM_BYTES
AES key size in bytes.
Definition: wms_settings.h:44
APP_LIB_SETTINGS_ROLE_AUTOROLE_LE
@ APP_LIB_SETTINGS_ROLE_AUTOROLE_LE
Definition: wms_settings.h:81
app_lib_settings_t::setNetworkChannel
app_lib_settings_set_network_channel_f setNetworkChannel
Definition: wms_settings.h:801
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: wms_settings.h:425
app_addr_t
uint32_t app_addr_t
Definition: wms_app.h:228
app_lib_settings_get_node_uid_cb_f
bool(* app_lib_settings_get_node_uid_cb_f)(uint8_t buffer[79], uint32_t *length)
Callback for providing the node UID to the stack.
Definition: wms_settings.h:763
app_lib_settings_key_management_configuration_t
Structure to hold key management configuration information for the settings API.
Definition: wms_settings.h:110
APP_LIB_SETTINGS_ROLE_SINK_LE
@ APP_LIB_SETTINGS_ROLE_SINK_LE
Definition: wms_settings.h:69
APP_LIB_SETTINGS_ROLE_SUBNODE_LL
@ APP_LIB_SETTINGS_ROLE_SUBNODE_LL
Definition: wms_settings.h:79
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: wms_settings.h:372
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: wms_settings.h:702
app_lib_settings_t
Settings library API.
Definition: wms_settings.h:789
app_lib_settings_t::isValidNodeAddress
app_lib_settings_is_valid_node_address_f isValidNodeAddress
Definition: wms_settings.h:819
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: wms_settings.h:628
app_lib_settings_t::setFeatureLockKey
app_lib_settings_set_feature_lock_key_f setFeatureLockKey
Definition: wms_settings.h:795
app_lib_settings_role_t
uint8_t app_lib_settings_role_t
Node role type.
Definition: wms_settings.h:136
app_lib_settings_t::getNetworkAddress
app_lib_settings_get_network_address_f getNetworkAddress
Definition: wms_settings.h:798
app_lib_settings_t::setAcRange
app_lib_settings_set_ac_range_f setAcRange
Definition: wms_settings.h:809
app_lib_settings_t::getNetworkChannelLimits
app_lib_settings_get_network_channel_limits_f getNetworkChannelLimits
Definition: wms_settings.h:812
app_lib_settings_t::setReservedChannels
app_lib_settings_set_reserved_channels_f setReservedChannels
Definition: wms_settings.h:816
app_lib_settings_t::keyManagementConfiguration
app_lib_settings_key_management_config_f keyManagementConfiguration
Definition: wms_settings.h:821
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: wms_settings.h:194
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: wms_settings.h:719
app_lib_settings_t::resetAll
app_lib_settings_reset_all_f resetAll
Definition: wms_settings.h:791
app_lib_settings_t::setFeatureLockBits
app_lib_settings_set_feature_lock_bits_f setFeatureLockBits
Definition: wms_settings.h:793
app_lib_settings_t::getNodeRole
app_lib_settings_get_node_role_f getNodeRole
Definition: wms_settings.h:802
app_lib_settings_t::isValidNetworkChannel
app_lib_settings_is_valid_network_channel_f isValidNetworkChannel
Definition: wms_settings.h:818
APP_LIB_SETTINGS_ROLE_HEADNODE_LL
@ APP_LIB_SETTINGS_ROLE_HEADNODE_LL
Definition: wms_settings.h:75
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: wms_settings.h:388
app_lib_settings_t::setAuthenticationKey
app_lib_settings_set_authentication_key_f setAuthenticationKey
Definition: wms_settings.h:805
app_lib_settings_t::setOfflineScan
app_lib_settings_set_offline_scan_f setOfflineScan
Definition: wms_settings.h:811
APP_LIB_SETTINGS_ROLE_AUTOROLE_LL
@ APP_LIB_SETTINGS_ROLE_AUTOROLE_LL
Definition: wms_settings.h:83