MeshX 0.4
This repository provides an implementation for Bluetooth Low Energy (BLE) Mesh network nodes. The project allows you to create BLE mesh nodes that can communicate with each other, enabling the development of smart home solutions or other IoT-based applications.
Loading...
Searching...
No Matches
meshx_ble_mesh_prov_srv.h File Reference

This header file defines the provisioning server interface for the MeshX BLE Mesh stack. It includes data structures, enumerations, and function declarations for managing BLE Mesh provisioning operations, including node and provisioner functionalities. More...

Go to the source code of this file.

Data Structures

union  meshx_prov_cb_param_t
 BLE Mesh Node/Provisioner callback parameters union. More...
struct  meshx_prov_cb_param_t::meshx_prov_register_comp_param
 MESHX_PROV_REGISTER_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_set_unprov_dev_name_comp_param
 MESHX_NODE_SET_UPROV_NAME_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_prov_enable_comp_param
 MESHX_NODE_PROV_ENABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_prov_disable_comp_param
 MESHX_NODE_PROV_DISABLE_COMP_EVT. More...
 MESHX_NODE_PROV_LINK_OPEN_EVT. More...
 MESHX_NODE_PROV_LINK_CLOSE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_output_num_evt_param
 MESHX_NODE_PROV_OUTPUT_NUMBER_EVT. More...
struct  meshx_prov_cb_param_t::meshx_output_str_evt_param
 MESHX_NODE_PROV_OUTPUT_STRING_EVT. More...
struct  meshx_prov_cb_param_t::meshx_input_evt_param
 MESHX_NODE_PROV_INPUT_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provision_complete_evt_param
 MESHX_NODE_PROV_COMPLETE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provision_reset_param
 MESHX_NODE_PROV_RESET_EVT. More...
struct  meshx_prov_cb_param_t::meshx_set_oob_pub_key_comp_param
 MESHX_NODE_PROV_SET_OOB_PUB_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_input_number_comp_param
 MESHX_NODE_PROV_INPUT_NUM_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_input_string_comp_param
 MESHX_NODE_PROV_INPUT_STR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_identity_enable_comp_param
 MESHX_NODE_PROXY_IDENTITY_ENABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_gatt_enable_comp_param
 MESHX_NODE_PROXY_GATT_ENABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_gatt_disable_comp_param
 MESHX_NODE_PROXY_GATT_DISABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_private_identity_enable_comp_param
 MESHX_NODE_PRIVATE_PROXY_IDENTITY_ENABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_private_identity_disable_comp_param
 MESHX_NODE_PRIVATE_PROXY_IDENTITY_DISABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_node_add_local_net_key_comp_param
 MESHX_NODE_ADD_LOCAL_NET_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_node_add_local_app_key_comp_param
 MESHX_NODE_ADD_LOCAL_APP_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_node_bind_local_mod_app_comp_param
 MESHX_NODE_BIND_APP_KEY_TO_MODEL_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_recv_unprov_adv_pkt_param
 MESHX_PROVISIONER_RECV_UNPROV_ADV_PKT_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_enable_comp_param
 MESHX_PROVISIONER_PROV_ENABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_disable_comp_param
 MESHX_PROVISIONER_PROV_DISABLE_COMP_EVT. More...
 MESHX_PROVISIONER_PROV_LINK_OPEN_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_read_oob_pub_key_evt_param
 MESHX_PROVISIONER_PROV_READ_OOB_PUB_KEY_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_input_evt_param
 MESHX_PROVISIONER_PROV_INPUT_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_output_evt_param
 MESHX_PROVISIONER_PROV_OUTPUT_EVT. More...
 MESHX_PROVISIONER_PROV_LINK_CLOSE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_comp_param
 MESHX_PROVISIONER_PROV_COMPLETE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_cert_based_prov_start_evt_param
 MESHX_PROVISIONER_CERT_BASED_PROV_START_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_recv_prov_records_list_evt_param
 MESHX_PROVISIONER_RECV_PROV_RECORDS_LIST_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_record_recv_comp_evt_param
 MESHX_PROVISIONER_PROV_RECORD_RECV_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_send_prov_records_get_evt_param
 MESHX_PROVISIONER_SEND_PROV_RECORDS_GET_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_send_prov_record_req_evt_param
 MESHX_PROVISIONER_SEND_PROV_RECORD_REQUEST_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_send_prov_invite_evt_param
 MESHX_PROVISIONER_SEND_PROV_INVITE_EVT. More...
 MESHX_PROVISIONER_SEND_LINK_CLOSE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_add_unprov_dev_comp_param
 MESHX_PROVISIONER_ADD_UNPROV_DEV_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_dev_with_addr_comp_param
 MESHX_PROVISIONER_PROV_DEV_WITH_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_delete_dev_comp_param
 MESHX_PROVISIONER_DELETE_DEV_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_set_dev_uuid_match_comp_param
 MESHX_PROVISIONER_SET_DEV_UUID_MATCH_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_set_prov_data_info_comp_param
 MESHX_PROVISIONER_SET_PROV_DATA_INFO_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_set_static_oob_val_comp_param
 MESHX_PROVISIONER_SET_STATIC_OOB_VALUE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_set_primary_elem_addr_comp_param
 MESHX_PROVISIONER_SET_PRIMARY_ELEM_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_read_oob_pub_key_comp_param
 MESHX_PROVISIONER_PROV_READ_OOB_PUB_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_input_num_comp_param
 MESHX_PROVISIONER_PROV_INPUT_NUMBER_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_prov_input_str_comp_param
 MESHX_PROVISIONER_PROV_INPUT_STRING_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_set_node_name_comp_param
 MESHX_PROVISIONER_SET_NODE_NAME_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_add_local_app_key_comp_param
 MESHX_PROVISIONER_ADD_LOCAL_APP_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_update_local_app_key_comp_param
 MESHX_PROVISIONER_UPDATE_LOCAL_APP_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_bind_local_mod_app_comp_param
 MESHX_PROVISIONER_BIND_APP_KEY_TO_MODEL_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_add_local_net_key_comp_param
 MESHX_PROVISIONER_ADD_LOCAL_NET_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_update_local_net_key_comp_param
 MESHX_PROVISIONER_UPDATE_LOCAL_NET_KEY_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_store_node_comp_data_comp_param
 MESHX_PROVISIONER_STORE_NODE_COMP_DATA_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_delete_node_with_uuid_comp_param
 MESHX_PROVISIONER_DELETE_NODE_WITH_UUID_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_provisioner_delete_node_with_addr_comp_param
 MESHX_PROVISIONER_DELETE_NODE_WITH_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_set_fast_prov_info_comp_param
 MESHX_SET_FAST_PROV_INFO_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_set_fast_prov_action_comp_param
 MESHX_SET_FAST_PROV_ACTION_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_heartbeat_msg_recv_param
 MESHX_HEARTBEAT_MESSAGE_RECV_EVT. More...
struct  meshx_prov_cb_param_t::meshx_lpn_enable_comp_param
 MESHX_LPN_ENABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_lpn_disable_comp_param
 MESHX_LPN_DISABLE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_lpn_poll_comp_param
 MESHX_LPN_POLL_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_lpn_friendship_establish_param
 MESHX_LPN_FRIENDSHIP_ESTABLISH_EVT. More...
struct  meshx_prov_cb_param_t::meshx_lpn_friendship_terminate_param
 MESHX_LPN_FRIENDSHIP_TERMINATE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_friend_friendship_establish_param
 MESHX_FRIEND_FRIENDSHIP_ESTABLISH_EVT. More...
struct  meshx_prov_cb_param_t::meshx_friend_friendship_terminate_param
 MESHX_FRIEND_FRIENDSHIP_TERMINATE_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_recv_adv_pkt_param
 MESHX_PROXY_CLIENT_RECV_ADV_PKT_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_connected_param
 MESHX_PROXY_CLIENT_CONNECTED_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_disconnected_param
 MESHX_PROXY_CLIENT_DISCONNECTED_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_recv_filter_status_param
 MESHX_PROXY_CLIENT_RECV_FILTER_STATUS_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_connect_comp_param
 MESHX_PROXY_CLIENT_CONNECT_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_disconnect_comp_param
 MESHX_PROXY_CLIENT_DISCONNECT_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_set_filter_type_comp_param
 MESHX_PROXY_CLIENT_SET_FILTER_TYPE_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_add_filter_addr_comp_param
 MESHX_PROXY_CLIENT_ADD_FILTER_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_remove_filter_addr_comp_param
 MESHX_PROXY_CLIENT_REMOVE_FILTER_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_client_directed_proxy_set_param
 MESHX_PROXY_CLIENT_DIRECTED_PROXY_CONTROL_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_server_connected_param
 MESHX_PROXY_SERVER_CONNECTED_EVT. More...
struct  meshx_prov_cb_param_t::meshx_proxy_server_disconnected_param
 MESHX_PROXY_SERVER_DISCONNECTED_EVT. More...
struct  meshx_prov_cb_param_t::meshx_model_sub_group_addr_comp_param
 MESHX_MODEL_SUBSCRIBE_GROUP_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_model_unsub_group_addr_comp_param
 MESHX_MODEL_UNSUBSCRIBE_GROUP_ADDR_COMP_EVT. More...
struct  meshx_prov_cb_param_t::meshx_deinit_mesh_comp_param
 MESHX_DEINIT_MESH_COMP_EVT. More...
struct  meshx_ble_mesh_prov_srv_param

Typedefs

typedef control_task_msg_handle_t prov_srv_cb_t
typedef control_task_msg_evt_provision_t prov_evt_t
typedef struct meshx_ble_mesh_prov_srv_param meshx_prov_srv_param_t

Enumerations

enum  meshx_prov_bearer_t {
  MESHX_PROV_ADV = (1UL << (0)) ,
  MESHX_PROV_GATT = (1UL << (1))
}
enum  meshx_prov_oob_info_t {
  MESHX_PROV_OOB_OTHER = (1UL << (0)) ,
  MESHX_PROV_OOB_URI = (1UL << (1)) ,
  MESHX_PROV_OOB_2D_CODE = (1UL << (2)) ,
  MESHX_PROV_OOB_BAR_CODE = (1UL << (3)) ,
  MESHX_PROV_OOB_NFC = (1UL << (4)) ,
  MESHX_PROV_OOB_NUMBER = (1UL << (5)) ,
  MESHX_PROV_OOB_STRING = (1UL << (6)) ,
  MESHX_PROV_CERT_BASED = (1UL << (7)) ,
  MESHX_PROV_RECORDS = (1UL << (8)) ,
  MESHX_PROV_OOB_ON_BOX = (1UL << (11)) ,
  MESHX_PROV_OOB_IN_BOX = (1UL << (12)) ,
  MESHX_PROV_OOB_ON_PAPER = (1UL << (13)) ,
  MESHX_PROV_OOB_IN_MANUAL = (1UL << (14)) ,
  MESHX_PROV_OOB_ON_DEV = (1UL << (15))
}

Functions

meshx_err_t meshx_prov_srv_notify_plat_event (meshx_prov_srv_param_t *param)
 Notify the model event to the application.
meshx_err_t meshx_plat_init_prov (const uint8_t *uuid)
 Initialize provisioning parameters.
meshx_ptr_t meshx_plat_get_prov (void)
 Get the provisioning parameters.
bool meshx_prov_srv_is_provisioned (void)
 Checks if the device is provisioned.

Detailed Description

This header file defines the provisioning server interface for the MeshX BLE Mesh stack. It includes data structures, enumerations, and function declarations for managing BLE Mesh provisioning operations, including node and provisioner functionalities.

Copyright (c) 2024 - 2025 MeshX

The file provides definitions for provisioning events, callback parameters, and provisioning bearer and OOB information types. It also includes APIs for initializing and retrieving provisioning parameters.

Author
Pranjal Chanda

Typedef Documentation

◆ meshx_prov_srv_param_t

◆ prov_evt_t

This enum value is associated with bt_mesh_prov_bearer_t in mesh_main.h

◆ prov_srv_cb_t

Enumeration Type Documentation

◆ meshx_prov_bearer_t

Enumerator
MESHX_PROV_ADV (1UL << (0)) 
MESHX_PROV_GATT (1UL << (1)) 
32{
#define MESHX_BIT(nr)
Definition meshx_ble_mesh_cmn_def.h:22
meshx_prov_bearer_t
Definition meshx_ble_mesh_prov_srv.h:32
@ MESHX_PROV_ADV
Definition meshx_ble_mesh_prov_srv.h:33
@ MESHX_PROV_GATT
Definition meshx_ble_mesh_prov_srv.h:34

◆ meshx_prov_oob_info_t

Enumerator
MESHX_PROV_OOB_OTHER (1UL << (0)) 
MESHX_PROV_OOB_URI (1UL << (1)) 
MESHX_PROV_OOB_2D_CODE (1UL << (2)) 
MESHX_PROV_OOB_BAR_CODE (1UL << (3)) 
MESHX_PROV_OOB_NFC (1UL << (4)) 
MESHX_PROV_OOB_NUMBER (1UL << (5)) 
MESHX_PROV_OOB_STRING (1UL << (6)) 
MESHX_PROV_CERT_BASED (1UL << (7)) 
MESHX_PROV_RECORDS (1UL << (8)) 
MESHX_PROV_OOB_ON_BOX (1UL << (11)) 
MESHX_PROV_OOB_IN_BOX (1UL << (12)) 
MESHX_PROV_OOB_ON_PAPER (1UL << (13)) 
MESHX_PROV_OOB_IN_MANUAL (1UL << (14)) 
MESHX_PROV_OOB_ON_DEV (1UL << (15)) 
39{
49 /* 9 - 10 are reserved */
meshx_prov_oob_info_t
Definition meshx_ble_mesh_prov_srv.h:39
@ MESHX_PROV_CERT_BASED
Definition meshx_ble_mesh_prov_srv.h:47
@ MESHX_PROV_OOB_OTHER
Definition meshx_ble_mesh_prov_srv.h:40
@ MESHX_PROV_OOB_2D_CODE
Definition meshx_ble_mesh_prov_srv.h:42
@ MESHX_PROV_RECORDS
Definition meshx_ble_mesh_prov_srv.h:48
@ MESHX_PROV_OOB_ON_BOX
Definition meshx_ble_mesh_prov_srv.h:50
@ MESHX_PROV_OOB_IN_BOX
Definition meshx_ble_mesh_prov_srv.h:51
@ MESHX_PROV_OOB_ON_DEV
Definition meshx_ble_mesh_prov_srv.h:54
@ MESHX_PROV_OOB_NUMBER
Definition meshx_ble_mesh_prov_srv.h:45
@ MESHX_PROV_OOB_NFC
Definition meshx_ble_mesh_prov_srv.h:44
@ MESHX_PROV_OOB_STRING
Definition meshx_ble_mesh_prov_srv.h:46
@ MESHX_PROV_OOB_BAR_CODE
Definition meshx_ble_mesh_prov_srv.h:43
@ MESHX_PROV_OOB_IN_MANUAL
Definition meshx_ble_mesh_prov_srv.h:53
@ MESHX_PROV_OOB_URI
Definition meshx_ble_mesh_prov_srv.h:41
@ MESHX_PROV_OOB_ON_PAPER
Definition meshx_ble_mesh_prov_srv.h:52

Function Documentation

◆ meshx_plat_get_prov()

meshx_ptr_t meshx_plat_get_prov ( void )

Get the provisioning parameters.

This function returns a pointer to the global provisioning parameters.

Returns
Pointer to the global provisioning parameters.

◆ meshx_plat_init_prov()

meshx_err_t meshx_plat_init_prov ( const uint8_t * uuid)

Initialize provisioning parameters.

This function initializes the provisioning parameters by copying the UUID from the provided server configuration and registering the provisioning callback.

Parameters
uuidPointer to the UUID of the device.
Returns
  • MESHX_SUCCESS: Success
  • MESHX_FAIL: Failed to register provisioning callback

◆ meshx_prov_srv_is_provisioned()

bool meshx_prov_srv_is_provisioned ( void )

Checks if the device is provisioned.

This function returns whether the device has been provisioned.

Returns
bool true if provisioned, false otherwise.
317{
318 uint16_t primary_addr = 0;
319 if (MESHX_SUCCESS == meshx_get_base_element_id(&primary_addr))
320 {
321 return (primary_addr != MESHX_ADDR_UNASSIGNED);
322 }
323 return false;
324}
meshx_err_t meshx_get_base_element_id(uint16_t *base_el_id)
Retrieves the base element ID for the BLE Mesh platform.
#define MESHX_ADDR_UNASSIGNED
Definition meshx_ble_mesh_cmn_def.h:30
**This function is called by the parent element when a state change request *is received It validates the request and returns a result to the element not the model layer **return * MESHX_SUCCESS
Definition meshx_model_level.cpp:385

◆ meshx_prov_srv_notify_plat_event()

meshx_err_t meshx_prov_srv_notify_plat_event ( meshx_prov_srv_param_t * param)

Notify the model event to the application.

Note
This API is not to be defined in Platform Port layer and shall be called by the respective platform event handler to notify the MeshX of a model event.

This function notifies the application of a model event by invoking the registered provisioning callback with the provided event parameters.

Parameters
[in]paramPointer to the event parameters structure.
Returns
  • MESHX_SUCCESS: Success
  • MESHX_FAIL: Failed to notify model event
302{
303 if (!param)
304 {
305 return MESHX_INVALID_ARG;
306 }
307
311 param,
313 );
314}
struct meshx_ble_mesh_prov_srv_param meshx_prov_srv_param_t
@ CONTROL_TASK_MSG_CODE_PROV_PLAT
Definition meshx_control_task.h:71
meshx_err_t control_task_msg_publish(control_task_msg_code_t msg_code, control_task_msg_evt_t msg_evt, const void *msg_evt_params, size_t sizeof_msg_evt_params)
Publish a control task message.
Definition meshx_control_task.c:84
CONTROL_TASK_MSG_EVT_PROVISION_ALL
Definition meshx_control_task.h:169
@ MESHX_INVALID_ARG
Definition meshx_err.h:46