nRF5 SDK for Mesh v3.0.0
nrf_mesh_events.h
1 /* Copyright (c) 2010 - 2018, Nordic Semiconductor ASA
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification,
5  * are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form, except as embedded into a Nordic
11  * Semiconductor ASA integrated circuit in a product or a software update for
12  * such product, must reproduce the above copyright notice, this list of
13  * conditions and the following disclaimer in the documentation and/or other
14  * materials provided with the distribution.
15  *
16  * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
17  * contributors may be used to endorse or promote products derived from this
18  * software without specific prior written permission.
19  *
20  * 4. This software, with or without modification, must only be used with a
21  * Nordic Semiconductor ASA integrated circuit.
22  *
23  * 5. Any software provided in binary form under this license must not be reverse
24  * engineered, decompiled, modified and/or disassembled.
25  *
26  * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
27  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
28  * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
29  * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
32  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
35  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  */
37 
38 #ifndef MESH_EVT_H__
39 #define MESH_EVT_H__
40 
41 #include <stdbool.h>
42 #include "nrf_mesh.h"
43 #include "nrf_mesh_dfu_types.h"
44 #include "list.h"
45 #include "mesh_config.h"
46 
57 typedef enum
58 {
115 
119 typedef struct
120 {
122  const uint8_t * p_buffer;
124  uint16_t length;
132  uint8_t ttl;
136 
140 typedef struct
141 {
145  const uint8_t * p_network_id;
147  uint32_t iv_index;
149 
153 typedef struct
154 {
155  uint16_t subnet_index;
156  const uint8_t * p_network_id;
159 
163 typedef struct
164 {
168  const uint8_t * p_auth_value;
169  uint32_t iv_index;
170  struct
171  {
173  bool key_refresh;
174  } flags;
176 
183 typedef struct
184 {
186  uint8_t init_ttl;
188  uint8_t hops;
190  uint16_t features;
193  uint16_t src;
195 
199 typedef struct
200 {
204 
206 typedef union
207 {
209  struct
210  {
213  } fw_outdated;
215  struct
216  {
217  nrf_mesh_dfu_transfer_t transfer;
218  uint8_t authority;
219  } req_relay;
221  struct
222  {
224  } req_source;
226  struct
227  {
229  nrf_mesh_dfu_transfer_t transfer;
230  } start;
232  struct
233  {
234  nrf_mesh_dfu_role_t role;
235  nrf_mesh_dfu_transfer_t transfer;
237  } end;
239  struct
240  {
241  nrf_mesh_dfu_transfer_t transfer;
242  uint32_t* p_start_addr;
243  uint32_t length;
244  bool is_signed;
245  } bank;
247 
251 typedef enum
252 {
256 
260 typedef struct
261 {
263  uint16_t src;
265  uint8_t ivi : 1;
269 
273 typedef enum
274 {
294 
298 typedef struct
299 {
305 
309 typedef enum
310 {
318 
319 typedef struct
320 {
324  const void * p_flash_entry;
326  void * p_flash_page;
328  const void * p_area;
330  uint32_t page_count;
332 
333 typedef struct
334 {
337 
338 typedef struct
339 {
342  const void * p_data;
343  uint32_t data_len;
345 
346 typedef struct
347 {
349  uint16_t src;
351  struct
352  {
354  uint16_t friend_counter;
363  } offer;
369 
370 typedef struct
371 {
381  uint32_t iv_index;
383 
384 typedef struct
385 {
387  uint16_t lpn_src;
389  uint16_t friend_src;
391 
392 typedef enum
393 {
403 
404 typedef struct
405 {
407  uint16_t lpn_src;
409  uint16_t friend_src;
413 
417 typedef struct
418 {
421 
423  union {
436 
457  } params;
459 
470 typedef void (*nrf_mesh_evt_handler_cb_t)(const nrf_mesh_evt_t * p_evt);
471 
477 typedef struct
478 {
482  list_node_t node;
486 
494 void nrf_mesh_evt_handler_add(nrf_mesh_evt_handler_t * p_handler_params);
495 
501 void nrf_mesh_evt_handler_remove(nrf_mesh_evt_handler_t * p_handler_params);
502 
505 #endif /* MESH_EVT_H__ */
506 
nrf_mesh_evt_sar_failed_t sar_failed
SAR failed event.
DFU transfer ended.
bool key_refresh_in_phase2
The Key Refresh Flag indicates whether the Key Refresh procedure is in progress (see Section 3...
DFU transfer information structure.
int8_t measured_rssi
The RSSI of the Friend Request as measured by the Friend.
nrf_mesh_evt_dfu_t dfu
DFU event.
The friendship was terminated and the ongoing RX could not continue.
bool key_refresh
Key refresh flag in the beacon.
RX packet metadata.
Definition: nrf_mesh.h:153
uint32_t iv_index
The IV Index field contains the current IV Index.
IV update event structure.
const nrf_mesh_network_secmat_t * p_net
Network layer security material used in the decryption of the payload.
const nrf_mesh_beacon_secmat_t * p_beacon_secmat
The security material within the p_beacon_info that authenticated the incoming beacon.
nrf_mesh_dfu_role_t role
The role of the device in the transfer.
The friendship is successfully terminated.
net_state_iv_update_t state
Current IV update state.
nrf_mesh_fwid_t current
FWID union containing the current firmware ID of the given type.
nrf_mesh_evt_type_t
Mesh event types.
The LPN successfully polled all data from the Friend node.
nrf_mesh_evt_key_refresh_notification_t key_refresh
Key refresh notification event.
uint16_t friend_counter
Number of Friend Offer messages the Friend node has sent in its lifetime.
void nrf_mesh_evt_handler_add(nrf_mesh_evt_handler_t *p_handler_params)
Register an event handler to get events from the core stack.
The device firmware is outdated, according to a trusted source.
Network security material structure.
Definition: nrf_mesh.h:253
The replay protection cache is full.
nrf_mesh_tx_token_t token
Packet ID of the SAR session.
nrf_mesh_evt_net_beacon_received_t net_beacon
A network beacon was received.
Flash operations queue is empty, and flash is stable.
mesh_config_entry_id_t id
ID being loaded when the load failure occured.
Transmission completed.
Mesh config entry identifier.
A heartbeat message is received.
The node received a Friend Offer.
Mesh event structure.
nrf_mesh_evt_lpn_friend_update_t friend_update
Friend Update event.
Flash malfunctioned.
bool iv_update_active
The IV Update Flag indicates whether the IV Update procedure is in progress (see Section 3...
const nrf_mesh_network_secmat_t * p_secmat_net
Network layer security material used in the decryption of the payload.
mesh_config_entry_id_t id
ID being stored when the storage failure occured.
Information structure for the Bluetooth Mesh network beacons.
Definition: nrf_mesh.h:299
nrf_mesh_rx_failed_reason_t
RX failure reason codes.
nrf_mesh_dfu_role_t
The various roles a device can play in a dfu transfer.
nrf_mesh_dfu_end_t
Reasons for a DFU operation to end.
nrf_mesh_evt_lpn_friend_offer_t friend_offer
Friend Offer event.
Mesh core flash user.
nrf_mesh_tx_token_t token
Packet identifier.
RX failed event structure.
The Low Power node was not able to send transport command due to internal fault.
uint16_t features
Features&#39; state bitmap.
void * p_flash_page
The address of the flash page the attempted operation failed.
nrf_mesh_dfu_end_t end_reason
Reason for the end event.
The device firmware is outdated, according to an un-authenticated source.
nrf_mesh_evt_friendship_terminated_reason_t
nrf_mesh_evt_hb_message_t hb_message
HB message received/sent event.
uint16_t lpn_src
Source (element) address of the Low Power node.
nrf_mesh_evt_friendship_established_t friendship_established
Friendship established event.
uint8_t authority
Authority level of the transfer.
list_node_t node
Node for the keeping in linked list.
nrf_mesh_sar_session_cancel_reason_t
SAR session cancelled reason codes.
There was no response from the LPN within the Poll Timeout.
mesh_config_load_failure_t reason
Reason for the load failure.
bool is_removed
Boolean to ensure list integrity.
The node received a Friend Update.
DFU event parameters.
nrf_mesh_evt_config_load_failure_t config_load_failure
Configuration load failure event.
uint32_t iv_index
IV index in the beacon.
Heartbeat received event structure.
void(* nrf_mesh_evt_handler_cb_t)(const nrf_mesh_evt_t *p_evt)
Mesh event handler callback type.
The Friend Request timed out.
DFU request for this node to be the relay of a transfer.
SAR session failed.
SAR failed event structure.
nrf_mesh_evt_iv_update_notification_t iv_update
IV update notification event.
nrf_mesh_dfu_type_t dfu_type
DFU type and firmware ID of the transfer.
Network beacon received structure.
The friendship was established and the ongoing RX could not continue.
The friendship is successfully established.
nrf_mesh_evt_handler_cb_t evt_cb
Callback function pointer.
Bluetooth Mesh security material structure.
Definition: nrf_mesh.h:320
nrf_mesh_flash_user_module_t
User tokens for the flash manager.
The Low Power node actively terminated the friendship.
mesh_config_load_failure_t
Definition: mesh_config.h:53
uint8_t subscription_list_size
Number of subscriptions the Friend can store for the LPN.
uint32_t length
Length of the firmware in the bank.
bool is_friend_queue_empty
The field is set to indicate whether the Friend Queue is empty or not.
uint8_t receive_window_ms
Receive window supported by the Friend node.
A message is received.
nrf_mesh_evt_config_storage_failure_t config_storage_failure
Configuration storage failure event.
const nrf_mesh_rx_metadata_t * p_rx_metadata
RX metadata for the packet that produced the beacon.
An IV update event occurred.
Mesh configuration persistent storage is stable.
const nrf_mesh_rx_metadata_t * p_metadata
Metadata for the received packet.
Key refresh notification structure.
Mesh configuration persistent storage failed while storing.
uint8_t ttl
Time-to-live for the message.
uint32_t nrf_mesh_tx_token_t
TX Token type, used as a context parameter to notify the application of ended transmissions.
Definition: nrf_mesh.h:95
nrf_mesh_address_t src
Source address of the message.
uint32_t page_count
The number of pages provided to the flash manager of the module reporting the event.
nrf_mesh_dfu_transfer_t transfer
DFU type and firmware ID of the transfer.
uint16_t src
Unicast address of the sender.
void nrf_mesh_evt_handler_remove(nrf_mesh_evt_handler_t *p_handler_params)
Remove an event handler.
nrf_mesh_evt_type_t type
Type of event.
nrf_mesh_key_refresh_phase_t
Key refresh phase.
Definition: nrf_mesh.h:217
const void * p_flash_entry
The flash entry that failed.
nrf_mesh_address_t dst
Destination address of the message.
Mesh event handler context structure.
uint16_t friend_src
Source (element) address of the Friend node.
const void * p_area
The start of the area owned by the flash manager of the module reporting the event.
uint8_t hops
Calculated hop value.
uint8_t friend_queue_size
Size of the message queue the Friend has reserved for messages to the LPN.
Transmission complete event structure.
The transport SAR session timed out.
const uint8_t * p_network_id
Network ID of the beacon that triggered the notification.
A key refresh event occurred.
bool is_signed
Flag indicating whether the bank is signed with an encryption key.
nrf_mesh_rx_failed_reason_t reason
Reason for the RX failure.
nrf_mesh_secmat_t secmat
Security material used in the decryption of the payload.
const uint8_t * p_auth_value
Authentication value in the beacon.
An authenticated network beacon is received.
DFU transfer starts.
Bluetooth Mesh address.
Definition: nrf_mesh.h:362
nrf_mesh_evt_message_t message
Incoming message.
uint8_t init_ttl
Initial TTL value used for sending the heartbeat message.
uint32_t iv_index
IV index currently used for sending messages.
Device state manager flash user.
nrf_mesh_evt_rx_failed_t rx_failed
RX failed.
uint16_t src
Metadata for the received packet.
DFU request for this node to be the source of a transfer.
nrf_mesh_evt_friendship_terminated_reason_t reason
Reason for friendship termination.
nrf_mesh_evt_flash_failed_t flash_failed
Flash failed event.
net_state_iv_update_t iv_update
IV update flag in the beacon.
nrf_mesh_evt_tx_complete_t tx_complete
Transmission complete.
The peer cancelled the SAR session.
Message received event structure.
const nrf_mesh_rx_metadata_t * p_metadata
Metadata for the received packet.
uint16_t length
Message length.
const void * p_data
Failing data.
ID of a standalone firmware segment.
The LPN did not receive all segments before NRF_MESH_EVT_LPN_FRIEND_POLL_COMPLETE.
uint32_t data_len
Length of the failing data.
Security material for the Bluetooth Mesh network beacons.
Definition: nrf_mesh.h:270
const nrf_mesh_beacon_info_t * p_beacon_info
Pointer to the associated beacon info used to authenticate the incoming beacon.
The transport SAR session TX retry limit is exceeded.
Access layer flash user.
nrf_mesh_evt_friendship_terminated_t friendship_terminated
Friendship terminated event.
nrf_mesh_sar_session_cancel_reason_t reason
Reason for closing the session.
uint16_t src
Source (element) address of the Friend node.
const uint8_t * p_buffer
Buffer containing the message data.
uint16_t lpn_src
Source (element) address of the Low Power node.
The mesh has been disabled.
The peer started another SAR session.
The Friend node did not reply to the (repeated) Friend Poll.
net_state_iv_update_t
State of IV update procedure.
Definition: nrf_mesh.h:329
There were not enough resources to process the transport SAR session.
uint8_t ivi
IV index bit of the RX packet.
Mesh configuration persistent storage failed while loading an entry.
nrf_mesh_dfu_type_t
DFU transfer types.
uint32_t * p_start_addr
Start address of the bank.
uint16_t friend_src
Source (element) address of the Friend node.
nrf_mesh_flash_user_module_t user
The module the event is reported from.

Documentation feedback | Developer Zone | Subscribe | Updated