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
35#define APP_LIB_SETTINGS_VERSION 0x20a
36
44#define APP_LIB_SETTINGS_AES_KEY_NUM_BYTES 16
45
46// Device address definition is in app/app.h */
47
54
59
64#define CHANNEL_NO_CHANNEL 0
65
87
94typedef struct __attribute__((packed))
95{
96 struct
97 {
98 const uint8_t (*encryption_key_p)
100 const uint8_t (*authentication_key_p)
103 } network_key_pair, management_key_pair;
104
107
114
137typedef bool (*app_lib_settings_is_group_cb_f)(app_addr_t group_addr);
138
155
172 uint32_t * bits_p);
173
187
201
222 const uint8_t * key_p);
223
234
250
262
277
288
309
322 app_lib_settings_role_t * role_p);
323
351
366
387 const uint8_t * key_p);
388
403
424 const uint8_t * key_p);
425
447typedef app_res_e (*app_lib_settings_get_ac_range_f)(uint16_t * ac_min_value_p,
448 uint16_t * ac_max_value_p);
449
497typedef app_res_e (*app_lib_settings_set_ac_range_f)(uint16_t ac_min_value,
498 uint16_t ac_max_value);
499
512typedef app_res_e (*app_lib_settings_get_offline_scan_f)(uint16_t * max_scan_p);
513
539typedef app_res_e (*app_lib_settings_set_offline_scan_f)(uint16_t max_scan);
540
557 uint16_t * min_value_p, uint16_t * max_value_p);
558
574 uint16_t * min_value_p, uint16_t * max_value_p);
575
607
632 uint8_t * channels_p, size_t num_bytes);
633
671 const uint8_t * channels_p, size_t num_bytes);
672
681
688typedef bool (*app_lib_settings_is_valid_network_channel_f)(uint8_t channel);
689
697
706
720 const app_lib_settings_key_provisioning_t * key_provisioning_p);
721
725typedef struct
726{
757/* This function is reserved for future use */
760
761#endif /* APP_LIB_SETTINGS_H_ */
app_res_e
Definition wms_app.h:202
uint32_t app_addr_t
Definition wms_app.h:228
app_res_e(* app_lib_settings_set_feature_lock_bits_f)(uint32_t bits)
Set feature lock bits.
app_res_e(* app_lib_settings_set_node_role_f)(app_lib_settings_role_t role)
Set node role.
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.
app_lib_settings_get_ac_range_f getAcRange
app_res_e(* app_lib_settings_get_node_address_f)(app_addr_t *addr_p)
Get node address.
app_lib_settings_set_network_address_f setNetworkAddress
app_res_e(* app_lib_settings_set_network_channel_f)(app_lib_settings_net_channel_t channel)
Set network channel.
app_res_e(* app_lib_settings_reset_all_f)(void)
Reset all settings to default values.
app_lib_settings_set_authentication_key_f setAuthenticationKey
app_lib_settings_is_valid_node_role_f isValidNodeRole
app_lib_settings_get_offline_scan_f getOfflineScan
app_lib_settings_set_ac_range_f setAcRange
bool(* app_lib_settings_is_valid_node_address_f)(app_addr_t addr)
Check that the node address is valid.
app_lib_settings_set_feature_lock_bits_f setFeatureLockBits
app_lib_settings_get_network_channel_limits_f getNetworkChannelLimits
app_lib_settings_get_network_address_f getNetworkAddress
app_lib_settings_set_node_address_f setNodeAddress
app_res_e(* app_lib_settings_get_network_address_f)(app_lib_settings_net_addr_t *addr_p)
Get network address.
bool(* app_lib_settings_is_valid_network_address_f)(app_lib_settings_net_addr_t addr)
Check that the network address is valid.
app_res_e(* app_lib_settings_set_node_address_f)(app_addr_t addr)
Set node address.
app_lib_settings_get_feature_lock_key_f getFeatureLockKey
app_lib_settings_set_group_query_cb_f registerGroupQuery
app_lib_settings_get_ac_range_limits_f getAcRangeLimits
app_lib_settings_is_valid_node_address_f isValidNodeAddress
app_res_e(* app_lib_settings_get_network_channel_f)(app_lib_settings_net_channel_t *channel_p)
Get network channel.
app_res_e(* app_lib_settings_set_encryption_key_f)(const uint8_t *key_p)
Set encryption key.
app_lib_settings_set_reserved_channels_f setReservedChannels
uint32_t app_lib_settings_net_addr_t
Network address type definition.
#define APP_LIB_SETTINGS_AES_KEY_NUM_BYTES
AES key size in bytes.
app_res_e(* app_lib_settings_get_offline_scan_f)(uint16_t *max_scan_p)
Get the maximum offline scan interval in seconds.
uint8_t app_lib_settings_role_t
Node role type.
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.
app_lib_settings_is_valid_network_channel_f isValidNetworkChannel
app_lib_settings_get_network_channel_f getNetworkChannel
app_lib_settings_is_valid_network_address_f isValidNetworkAddress
app_lib_settings_set_offline_scan_f setOfflineScan
app_lib_settings_get_node_role_f getNodeRole
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.
app_lib_settings_set_network_channel_f setNetworkChannel
app_res_e(* app_lib_settings_get_node_role_f)(app_lib_settings_role_t *role_p)
app_res_e(* app_lib_settings_get_authentication_key_f)(uint8_t *key_p)
Check if authentication key is set.
app_res_e(* app_lib_settings_set_feature_lock_key_f)(const uint8_t *key_p)
Set feature lock key.
app_lib_settings_provision_keys_f provisionKeys
app_lib_settings_get_node_address_f getNodeAddress
bool(* app_lib_settings_is_group_cb_f)(app_addr_t group_addr)
Callback used for determining on which multicast groups the device belongs.
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.
app_lib_settings_reset_all_f resetAll
app_res_e(* app_lib_settings_set_authentication_key_f)(const uint8_t *key_p)
Set authentication key.
app_res_e(* app_lib_settings_set_reserved_channels_f)(const uint8_t *channels_p, size_t num_bytes)
Set reserved channels.
app_res_e(* app_lib_settings_get_feature_lock_key_f)(uint8_t *key_p)
Check if feature lock key is set.
bool(* app_lib_settings_is_valid_node_role_f)(app_lib_settings_role_t role)
Check that the node role is valid.
app_lib_settings_set_encryption_key_f setEncryptionKey
app_lib_settings_get_reserved_channels_f getReservedChannels
app_res_e(* app_lib_settings_get_feature_lock_bits_f)(uint32_t *bits_p)
Get feature lock bits.
app_lib_settings_set_feature_lock_key_f setFeatureLockKey
app_res_e(* app_lib_settings_set_network_address_f)(app_lib_settings_net_addr_t addr)
Set network address.
app_lib_settings_set_node_role_f setNodeRole
app_res_e(* app_lib_settings_get_encryption_key_f)(uint8_t *key_p)
Check if encryption key is set.
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.
app_lib_settings_role_e
@ APP_LIB_SETTINGS_ROLE_HEADNODE_LE
@ APP_LIB_SETTINGS_ROLE_SUBNODE_LL
@ APP_LIB_SETTINGS_ROLE_SINK_LL
@ APP_LIB_SETTINGS_ROLE_HEADNODE_LL
@ APP_LIB_SETTINGS_ROLE_AUTOROLE_LE
@ APP_LIB_SETTINGS_ROLE_SINK_LE
@ APP_LIB_SETTINGS_ROLE_SUBNODE_LE
@ APP_LIB_SETTINGS_ROLE_ADVERTISER
@ APP_LIB_SETTINGS_ROLE_AUTOROLE_LL
app_lib_settings_get_authentication_key_f getAuthenticationKey
app_res_e(* app_lib_settings_get_reserved_channels_f)(uint8_t *channels_p, size_t num_bytes)
Get reserved channels.
app_lib_settings_get_encryption_key_f getEncryptionKey
app_lib_settings_get_feature_lock_bits_f getFeatureLockBits
bool(* app_lib_settings_is_valid_network_channel_f)(uint8_t channel)
Check that the network channel is valid.
uint8_t app_lib_settings_net_channel_t
Channel type definition.
app_res_e(* app_lib_settings_set_offline_scan_f)(uint16_t max_scan)
Set the maximum offline scan interval in seconds.
app_res_e(* app_lib_settings_provision_keys_f)(const app_lib_settings_key_provisioning_t *key_provisioning_p)
Provision keys using the settings API.
Structure to hold key provisioning information for the settings API.