Wirepas SDK
wms_joining.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 
16 #ifndef APP_LIB_JOINING_H_
17 #define APP_LIB_JOINING_H_
18 
19 #include <stdlib.h>
20 #include <stdint.h>
21 #include <stdbool.h>
22 
23 #include "wms_app.h"
24 #include "wms_settings.h" // For app_lib_settings_net_addr_t and
25  // app_lib_settings_net_channel_t
26 #include "wms_time.h" // For app_lib_time_timestamp_coarse_t
27 
29 #define APP_LIB_JOINING_NAME 0x000a2336
30 
31 
32 #define APP_LIB_JOINING_VERSION 0x201
33 
39 #define APP_LIB_JOINING_MIN_INTERVAL 100
40 
46 #define APP_LIB_JOINING_MAX_INTERVAL 8000
47 
53 #define APP_LIB_JOINING_MIN_TIMEOUT 100
54 
60 #define APP_LIB_JOINING_MAX_TIMEOUT 10000
61 
69 #define APP_LIB_JOINING_MAX_PAYLOAD_NUM_BYTES 64
70 
77 typedef enum
78 {
91 
97 typedef struct
98 {
100  uint32_t interval;
106  int8_t tx_power;
108  uint32_t type;
110  const void * payload;
114 
122 {
129  size_t num_bytes;
131  uint32_t type;
133  uint8_t * old_payload;
143  int8_t rssi;
145  int8_t tx_power;
147  uint8_t reserved;
150 };
151 
153  app_lib_joining_received_beacon_t;
154 
166  const app_lib_joining_received_beacon_t * beacons,
167  size_t num_beacons);
168 
174 typedef struct
175 {
185  uint32_t timeout;
189  void * buffer;
191  size_t num_bytes;
193 
212  const app_lib_joining_beacon_tx_param_t * param);
213 
219 
239  const app_lib_joining_beacon_rx_param_t * param);
240 
249 
271 
285 
292 
299 
303 typedef struct
304 {
314 
315 #endif /* APP_LIB_JOINING_H_ */
APP_LIB_JOINING_RX_STATUS_STOPPED
@ APP_LIB_JOINING_RX_STATUS_STOPPED
Definition: wms_joining.h:82
app_lib_joining_beacon_rx_param_t::cb
app_lib_joining_beacon_rx_cb_f cb
Definition: wms_joining.h:177
app_lib_settings_net_channel_t
uint8_t app_lib_settings_net_channel_t
Channel type definition.
Definition: wms_settings.h:58
app_lib_joining_beacon_tx_param_t::interval
uint32_t interval
Definition: wms_joining.h:100
APP_LIB_JOINING_RX_STATUS_INTERRUPTED
@ APP_LIB_JOINING_RX_STATUS_INTERRUPTED
Definition: wms_joining.h:87
app_lib_joining_stop_joining_beacon_rx_f
app_res_e(* app_lib_joining_stop_joining_beacon_rx_f)(void)
Stop receiving joining beacons.
Definition: wms_joining.h:248
app_lib_joining_t::enableRemoteApi
app_lib_joining_enable_remote_api_f enableRemoteApi
Definition: wms_joining.h:311
app_lib_joining_enable_remote_api_f
app_res_e(* app_lib_joining_enable_remote_api_f)(bool enable)
Enable or disable Remote API control for transmitting joining beacons.
Definition: wms_joining.h:291
app_lib_joining_start_joining_beacon_tx_f
app_res_e(* app_lib_joining_start_joining_beacon_tx_f)(const app_lib_joining_beacon_tx_param_t *param)
Start transmitting joining beacons.
Definition: wms_joining.h:211
APP_LIB_JOINING_RX_STATUS_DONE
@ APP_LIB_JOINING_RX_STATUS_DONE
Definition: wms_joining.h:80
app_lib_joining_t::startJoiningBeaconTx
app_lib_joining_start_joining_beacon_tx_f startJoiningBeaconTx
Definition: wms_joining.h:305
app_lib_joining_beacon_tx_param_t::channel
app_lib_settings_net_channel_t channel
Definition: wms_joining.h:104
app_res_e
app_res_e
Definition: wms_app.h:201
app_lib_joining_beacon_tx_param_t::tx_power
int8_t tx_power
Definition: wms_joining.h:106
wms_app.h
wms_settings.h
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_joining_start_joining_process_f
app_res_e(* app_lib_joining_start_joining_process_f)(app_lib_settings_net_addr_t addr, app_lib_settings_net_channel_t channel)
Start the joining process by joining a cluster as a joining member.
Definition: wms_joining.h:268
app_lib_joining_beacon_rx_param_t
Parameters for receiving joining beacons.
Definition: wms_joining.h:174
app_lib_joining_stop_joining_process_f
app_res_e(* app_lib_joining_stop_joining_process_f)(void)
Stop the joining process and restore network address and channel.
Definition: wms_joining.h:284
APP_LIB_JOINING_MAX_PAYLOAD_NUM_BYTES
#define APP_LIB_JOINING_MAX_PAYLOAD_NUM_BYTES
Maximum number of payload bytes in a joining beacon.
Definition: wms_joining.h:69
app_lib_joining_t
List of library functions.
Definition: wms_joining.h:303
app_lib_joining_t::startJoiningBeaconRx
app_lib_joining_start_joining_beacon_rx_f startJoiningBeaconRx
Definition: wms_joining.h:307
app_lib_time_timestamp_coarse_t
uint32_t app_lib_time_timestamp_coarse_t
Coarse timestamp type.
Definition: wms_time.h:50
app_lib_joining_t::stopJoiningBeaconRx
app_lib_joining_stop_joining_beacon_rx_f stopJoiningBeaconRx
Definition: wms_joining.h:308
app_lib_joining_received_beacon_s::time
app_lib_time_timestamp_coarse_t time
Definition: wms_joining.h:137
app_lib_joining_beacon_rx_param_t::max_exec_time_us
uint32_t max_exec_time_us
Definition: wms_joining.h:179
app_lib_joining_beacon_tx_param_t::addr
app_lib_settings_net_addr_t addr
Definition: wms_joining.h:102
app_lib_joining_stop_joining_beacon_tx_f
app_res_e(* app_lib_joining_stop_joining_beacon_tx_f)(void)
Stop transmitting joining beacons.
Definition: wms_joining.h:218
app_lib_joining_received_beacon_s
Received joining beacon.
Definition: wms_joining.h:121
app_lib_joining_beacon_rx_param_t::timeout
uint32_t timeout
Definition: wms_joining.h:185
app_lib_joining_beacon_rx_param_t::buffer
void * buffer
Definition: wms_joining.h:189
APP_LIB_JOINING_RX_STATUS_OUT_OF_SPACE
@ APP_LIB_JOINING_RX_STATUS_OUT_OF_SPACE
Definition: wms_joining.h:89
app_lib_joining_t::startJoiningProcess
app_lib_joining_start_joining_process_f startJoiningProcess
Definition: wms_joining.h:309
app_lib_joining_received_beacon_s::old_payload
uint8_t * old_payload
Definition: wms_joining.h:133
app_lib_joining_start_joining_beacon_rx_f
app_res_e(* app_lib_joining_start_joining_beacon_rx_f)(const app_lib_joining_beacon_rx_param_t *param)
Start receiving joining beacons.
Definition: wms_joining.h:238
app_lib_joining_beacon_tx_param_t::payload
const void * payload
Definition: wms_joining.h:110
app_lib_joining_beacon_tx_param_t
Parameters for sending joining beacons.
Definition: wms_joining.h:97
app_lib_joining_received_beacon_s::next
struct app_lib_joining_received_beacon_s * next
Definition: wms_joining.h:124
wms_time.h
app_lib_joining_beacon_tx_param_t::payload_num_bytes
size_t payload_num_bytes
Definition: wms_joining.h:112
app_lib_joining_received_beacon_s::rssi
int8_t rssi
Definition: wms_joining.h:143
app_lib_joining_beacon_rx_cb_f
void(* app_lib_joining_beacon_rx_cb_f)(app_lib_joining_rx_status_e status, const app_lib_joining_received_beacon_t *beacons, size_t num_beacons)
Function type for joining beacon RX callback.
Definition: wms_joining.h:164
app_lib_joining_beacon_tx_param_t::type
uint32_t type
Definition: wms_joining.h:108
app_lib_joining_t::enableProxy
app_lib_joining_enable_proxy_f enableProxy
Definition: wms_joining.h:312
app_lib_joining_beacon_rx_param_t::max_num_beacons
size_t max_num_beacons
Definition: wms_joining.h:187
app_lib_joining_received_beacon_s::num_bytes
size_t num_bytes
Definition: wms_joining.h:129
app_lib_joining_t::stopJoiningBeaconTx
app_lib_joining_stop_joining_beacon_tx_f stopJoiningBeaconTx
Definition: wms_joining.h:306
app_lib_joining_rx_status_e
app_lib_joining_rx_status_e
Status values for beacon reception callback.
Definition: wms_joining.h:77
app_lib_joining_received_beacon_s::reserved
uint8_t reserved
Definition: wms_joining.h:147
app_lib_joining_received_beacon_s::payload
uint8_t payload[64]
Definition: wms_joining.h:149
app_lib_joining_enable_proxy_f
app_res_e(* app_lib_joining_enable_proxy_f)(bool enable)
Enable or disable built-in proxy for handling joining data packets.
Definition: wms_joining.h:298
app_lib_joining_t::stopJoiningProcess
app_lib_joining_stop_joining_process_f stopJoiningProcess
Definition: wms_joining.h:310