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 0x20d
36 
44 #define APP_LIB_SETTINGS_AES_KEY_NUM_BYTES 16
45 
51 #define APP_LIB_SETTINGS_LL_ROLE_BIT 0x10
52 
53 // Device address definition is in app/app.h */
54 
60 typedef uint32_t app_lib_settings_net_addr_t;
61 
66 
71 #define CHANNEL_NO_CHANNEL 0
72 
73 typedef enum
74 {
94 
95 
100 typedef enum
101 {
109 
110 
144 typedef struct __attribute__((packed))
145 {
146  struct
147  {
148  const uint8_t (*encryption_key_p)
150  const uint8_t (*authentication_key_p)
153  } network_key_pair, management_key_pair;
154 
155  struct
156  {
161  uint8_t apply_flags : 1;
162 
165  uint8_t app_key_management_supported : 1;
166 
169  uint8_t app_key_management_configured : 1;
170 
173  uint8_t revoke_keys : 1;
174 
176  uint8_t reserved : 4;
177  } flags;
178 
182 
183 
189 typedef uint8_t app_lib_settings_role_t;
190 
212 typedef bool (*app_lib_settings_is_group_cb_f)(app_addr_t group_addr);
213 
236 
253  uint32_t * bits_p);
254 
267 
281 
302  const uint8_t * key_p);
303 
314 
330 
341  app_lib_settings_net_addr_t * addr_p);
342 
357 
367  app_lib_settings_net_channel_t * channel_p);
368 
389 
402  app_lib_settings_role_t * role_p);
403 
431 
455 
476  const uint8_t * key_p);
477 
500 
521  const uint8_t * key_p);
522 
544 typedef app_res_e (*app_lib_settings_get_ac_range_f)(uint16_t * ac_min_value_p,
545  uint16_t * ac_max_value_p);
546 
596 typedef app_res_e (*app_lib_settings_set_ac_range_f)(uint16_t ac_min_value,
597  uint16_t ac_max_value);
598 
611 typedef app_res_e (*app_lib_settings_get_offline_scan_f)(uint16_t * max_scan_p);
612 
637 typedef app_res_e (*app_lib_settings_set_offline_scan_f)(uint16_t max_scan);
638 
655  uint16_t * min_value_p, uint16_t * max_value_p);
656 
672  uint16_t * min_value_p, uint16_t * max_value_p);
673 
705 
730  uint8_t * channels_p, size_t num_bytes);
731 
769  const uint8_t * channels_p, size_t num_bytes);
770 
779 
786 typedef bool (*app_lib_settings_is_valid_network_channel_f)(uint8_t channel);
787 
795 
804 
819  const app_lib_settings_key_management_configuration_t * key_mgmt_cfg_p);
820 
821 
823 #define REMOTE_API_CSAP_WRITE_UNICAST 0x1
824 
825 // Return codes, these must match the values of the enum response_type_e in remote API
827 #define REMOTE_API_CSAP_RESPONSE_NORMAL 0
828 
829 #define REMOTE_API_CSAP_RESPONSE_NONE 1
830 
831 #define REMOTE_API_CSAP_RESPONSE_ACCESS_DENIED 0xf8
832 
833 #define REMOTE_API_CSAP_RESPONSE_WRITE_ONLY_ATTRIBUTE 0xf9
834 
835 #define REMOTE_API_CSAP_RESPONSE_INVALID_BROADCAST_REQUEST 0xfa
836 
837 #define REMOTE_API_CSAP_RESPONSE_INVALID_BEGIN 0xfb
838 
839 #define REMOTE_API_CSAP_RESPONSE_NO_SPACE_FOR_RESPONSE 0xfc
840 
841 #define REMOTE_API_CSAP_RESPONSE_INVALID_VALUE 0xfd
842 
843 #define REMOTE_API_CSAP_RESPONSE_INVALID_LENGTH 0xfe
844 
845 #define REMOTE_API_CSAP_RESPONSE_UNKNOWN_REQUEST 0xff
846 
852 typedef struct
853 {
855  const uint8_t * request_buffer;
857  uint8_t * response_buffer;
867 
896 typedef uint8_t (*app_lib_settings_remote_api_csap_write_f)( uint16_t attr_id, uint32_t flags, app_lib_settings_remote_api_csap_data_t * data);
897 
912 
913 
936 
937 
951 
952 
963 
964 
978 
979 
989 
1003 
1011 typedef struct
1012 {
1054 
1055 #endif /* APP_LIB_SETTINGS_H_ */
app_lib_settings_remote_api_csap_data_t
Struct containing the CSAP Read adn Write request and response information. Needed the requests are h...
Definition: wms_settings.h:852
app_lib_settings_register_remote_api_csap_write_cb_f
app_res_e(* app_lib_settings_register_remote_api_csap_write_cb_f)(app_lib_settings_remote_api_csap_write_f cb)
Register a callback function which is to be called when a CSAP Write request is received and it needs...
Definition: wms_settings.h:910
app_lib_settings_t::isValidNetworkAddress
app_lib_settings_is_valid_network_address_f isValidNetworkAddress
Definition: wms_settings.h:1039
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:729
app_lib_settings_register_remote_api_csap_cancel_cb_f
app_res_e(* app_lib_settings_register_remote_api_csap_cancel_cb_f)(app_lib_settings_remote_api_csap_cancel_f cb)
Register a callback function which is to be called when a CSAP Cancel request is received and it need...
Definition: wms_settings.h:1001
app_lib_settings_t::registerGroupQuery
app_lib_settings_set_group_query_cb_f registerGroupQuery
Definition: wms_settings.h:1036
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:387
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:475
app_lib_settings_net_channel_t
uint8_t app_lib_settings_net_channel_t
Channel type definition.
Definition: wms_settings.h:65
APP_LIB_SETTINGS_ROLE_SUBNODE_LE
@ APP_LIB_SETTINGS_ROLE_SUBNODE_LE
Definition: wms_settings.h:84
app_lib_settings_t::registerRemoteApiCsapWriteCb
app_lib_settings_register_remote_api_csap_write_cb_f registerRemoteApiCsapWriteCb
Definition: wms_settings.h:1046
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:768
APP_LIB_SETTINGS_ROLE_ADVERTISER
@ APP_LIB_SETTINGS_ROLE_ADVERTISER
Definition: wms_settings.h:92
app_lib_settings_remote_api_csap_data_t::response_buffer_len
uint8_t response_buffer_len
Definition: wms_settings.h:865
app_lib_settings_register_remote_api_csap_update_cb_f
app_res_e(* app_lib_settings_register_remote_api_csap_update_cb_f)(app_lib_settings_remote_api_csap_update_f cb)
Register a callback function which is to be called when a CSAP Update request is received and it need...
Definition: wms_settings.h:976
app_lib_settings_t::registerRemoteApiCsapReadCb
app_lib_settings_register_remote_api_csap_read_cb_f registerRemoteApiCsapReadCb
Definition: wms_settings.h:1048
app_lib_settings_t::getFeatureLockKey
app_lib_settings_get_feature_lock_key_f getFeatureLockKey
Definition: wms_settings.h:1016
app_lib_settings_t::getAuthenticationKey
app_lib_settings_get_authentication_key_f getAuthenticationKey
Definition: wms_settings.h:1026
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:329
APP_LIB_SETTINGS_ROLE_HEADNODE_LE
@ APP_LIB_SETTINGS_ROLE_HEADNODE_LE
Definition: wms_settings.h:80
app_lib_settings_t::getAcRange
app_lib_settings_get_ac_range_f getAcRange
Definition: wms_settings.h:1030
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:637
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:1042
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:340
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:212
app_lib_settings_remote_api_csap_cancel_f
void(* app_lib_settings_remote_api_csap_cancel_f)(void)
A callback function type used for providing the Remote API Cancel request information to application ...
Definition: wms_settings.h:988
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:544
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:401
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:786
app_lib_settings_t::getOfflineScan
app_lib_settings_get_offline_scan_f getOfflineScan
Definition: wms_settings.h:1032
app_lib_settings_t::setEncryptionKey
app_lib_settings_set_encryption_key_f setEncryptionKey
Definition: wms_settings.h:1029
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:313
app_lib_settings_net_addr_t
uint32_t app_lib_settings_net_addr_t
Network address type definition.
Definition: wms_settings.h:60
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:654
app_lib_settings_t::setNodeRole
app_lib_settings_set_node_role_f setNodeRole
Definition: wms_settings.h:1025
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:280
app_lib_settings_remote_api_csap_data_t::request_buffer
const uint8_t * request_buffer
Definition: wms_settings.h:855
app_lib_settings_t::registerRemoteApiCsapCancelCb
app_lib_settings_register_remote_api_csap_cancel_cb_f registerRemoteApiCsapCancelCb
Definition: wms_settings.h:1052
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:611
APP_LIB_SETTINGS_REMOTE_API_RES_OK
@ APP_LIB_SETTINGS_REMOTE_API_RES_OK
Definition: wms_settings.h:105
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:235
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:671
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:802
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:301
APP_LIB_SETTINGS_REMOTE_API_RES_NONE
@ APP_LIB_SETTINGS_REMOTE_API_RES_NONE
Definition: wms_settings.h:103
app_lib_settings_key_management_configuration_t::network_key_pair_seq
uint8_t network_key_pair_seq
Definition: wms_settings.h:179
app_lib_settings_t::getNetworkChannel
app_lib_settings_get_network_channel_f getNetworkChannel
Definition: wms_settings.h:1022
app_lib_settings_t::setNetworkAddress
app_lib_settings_set_network_address_f setNetworkAddress
Definition: wms_settings.h:1021
app_lib_settings_t::getReservedChannels
app_lib_settings_get_reserved_channels_f getReservedChannels
Definition: wms_settings.h:1037
app_lib_settings_t::getAcRangeLimits
app_lib_settings_get_ac_range_limits_f getAcRangeLimits
Definition: wms_settings.h:1035
app_lib_settings_role_e
app_lib_settings_role_e
Definition: wms_settings.h:73
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:266
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:366
app_lib_settings_remote_api_csap_update_f
app_lib_settings_remote_api_res_e(* app_lib_settings_remote_api_csap_update_f)(void)
A callback function type used for providing the Remote API Update request information to application ...
Definition: wms_settings.h:962
app_lib_settings_t::registerRemoteApiCsapUpdateCb
app_lib_settings_register_remote_api_csap_update_cb_f registerRemoteApiCsapUpdateCb
Definition: wms_settings.h:1050
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:520
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:818
app_lib_settings_t::getNodeAddress
app_lib_settings_get_node_address_f getNodeAddress
Definition: wms_settings.h:1018
app_lib_settings_key_management_configuration_t::management_key_pair_seq
uint8_t management_key_pair_seq
Definition: wms_settings.h:180
app_lib_settings_t::setNodeAddress
app_lib_settings_set_node_address_f setNodeAddress
Definition: wms_settings.h:1019
app_lib_settings_t::getFeatureLockBits
app_lib_settings_get_feature_lock_bits_f getFeatureLockBits
Definition: wms_settings.h:1014
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:596
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:355
APP_LIB_SETTINGS_ROLE_SINK_LL
@ APP_LIB_SETTINGS_ROLE_SINK_LL
Definition: wms_settings.h:78
app_lib_settings_t::getEncryptionKey
app_lib_settings_get_encryption_key_f getEncryptionKey
Definition: wms_settings.h:1028
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:88
app_lib_settings_remote_api_res_e
app_lib_settings_remote_api_res_e
Definition: wms_settings.h:100
app_lib_settings_t::setNetworkChannel
app_lib_settings_set_network_channel_f setNetworkChannel
Definition: wms_settings.h:1023
app_lib_settings_get_encryption_key_f
app_res_e(* app_lib_settings_get_encryption_key_f)(uint8_t *key_p)
Check if the encryption key is set and read the key value.
Definition: wms_settings.h:499
app_addr_t
uint32_t app_addr_t
Definition: wms_app.h:228
app_lib_settings_key_management_configuration_t
Structure to hold key management configuration information for the settings API.
Definition: wms_settings.h:144
APP_LIB_SETTINGS_ROLE_SINK_LE
@ APP_LIB_SETTINGS_ROLE_SINK_LE
Definition: wms_settings.h:76
APP_LIB_SETTINGS_ROLE_SUBNODE_LL
@ APP_LIB_SETTINGS_ROLE_SUBNODE_LL
Definition: wms_settings.h:86
app_lib_settings_remote_api_csap_read_f
uint8_t(* app_lib_settings_remote_api_csap_read_f)(uint16_t attr_id, app_lib_settings_remote_api_csap_data_t *data)
A callback function type used for providing the Remote API CSAP Read request information to applicati...
Definition: wms_settings.h:935
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:429
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:777
app_lib_settings_t
Settings library API.
Definition: wms_settings.h:1011
app_lib_settings_t::isValidNodeAddress
app_lib_settings_is_valid_node_address_f isValidNodeAddress
Definition: wms_settings.h:1041
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:703
app_lib_settings_t::setFeatureLockKey
app_lib_settings_set_feature_lock_key_f setFeatureLockKey
Definition: wms_settings.h:1017
app_lib_settings_role_t
uint8_t app_lib_settings_role_t
Node role type.
Definition: wms_settings.h:189
app_lib_settings_t::getNetworkAddress
app_lib_settings_get_network_address_f getNetworkAddress
Definition: wms_settings.h:1020
app_lib_settings_register_remote_api_csap_read_cb_f
app_res_e(* app_lib_settings_register_remote_api_csap_read_cb_f)(app_lib_settings_remote_api_csap_read_f cb)
Register a callback function which is to be called when a CSAP Read request is received and it needs ...
Definition: wms_settings.h:949
app_lib_settings_t::setAcRange
app_lib_settings_set_ac_range_f setAcRange
Definition: wms_settings.h:1031
app_lib_settings_t::getNetworkChannelLimits
app_lib_settings_get_network_channel_limits_f getNetworkChannelLimits
Definition: wms_settings.h:1034
app_lib_settings_t::setReservedChannels
app_lib_settings_set_reserved_channels_f setReservedChannels
Definition: wms_settings.h:1038
app_lib_settings_t::keyManagementConfiguration
app_lib_settings_key_management_config_f keyManagementConfiguration
Definition: wms_settings.h:1044
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:252
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:794
app_lib_settings_remote_api_csap_write_f
uint8_t(* app_lib_settings_remote_api_csap_write_f)(uint16_t attr_id, uint32_t flags, app_lib_settings_remote_api_csap_data_t *data)
A callback function type used for providing the Remote API CSAP Write request information to applicat...
Definition: wms_settings.h:896
app_lib_settings_t::resetAll
app_lib_settings_reset_all_f resetAll
Definition: wms_settings.h:1013
APP_LIB_SETTINGS_REMOTE_API_RES_OK_RESET
@ APP_LIB_SETTINGS_REMOTE_API_RES_OK_RESET
Definition: wms_settings.h:107
app_lib_settings_t::setFeatureLockBits
app_lib_settings_set_feature_lock_bits_f setFeatureLockBits
Definition: wms_settings.h:1015
app_lib_settings_t::getNodeRole
app_lib_settings_get_node_role_f getNodeRole
Definition: wms_settings.h:1024
app_lib_settings_t::isValidNetworkChannel
app_lib_settings_is_valid_network_channel_f isValidNetworkChannel
Definition: wms_settings.h:1040
app_lib_settings_remote_api_csap_data_t::response_buffer
uint8_t * response_buffer
Definition: wms_settings.h:857
APP_LIB_SETTINGS_ROLE_HEADNODE_LL
@ APP_LIB_SETTINGS_ROLE_HEADNODE_LL
Definition: wms_settings.h:82
app_lib_settings_get_authentication_key_f
app_res_e(* app_lib_settings_get_authentication_key_f)(uint8_t *key_p)
Check if the authentication key is set and read the key value.
Definition: wms_settings.h:454
app_lib_settings_t::setAuthenticationKey
app_lib_settings_set_authentication_key_f setAuthenticationKey
Definition: wms_settings.h:1027
app_lib_settings_t::setOfflineScan
app_lib_settings_set_offline_scan_f setOfflineScan
Definition: wms_settings.h:1033
APP_LIB_SETTINGS_ROLE_AUTOROLE_LL
@ APP_LIB_SETTINGS_ROLE_AUTOROLE_LL
Definition: wms_settings.h:90
app_lib_settings_remote_api_csap_data_t::request_buffer_len
uint8_t request_buffer_len
Definition: wms_settings.h:859