An internal module of Peer Manager. A module for streamlining pairing, bonding, and encryption, including flash storage of shared data. More...
Typedefs | |
typedef void(* | smd_evt_handler_t )(smd_evt_t const *p_event) |
Event handler for events from the Security Dispatcher module. More... | |
Enumerations | |
enum | smd_evt_id_t { SMD_EVT_PARAMS_REQ, SMD_EVT_SLAVE_SECURITY_REQ, SMD_EVT_SEC_PROCEDURE_START, SMD_EVT_PAIRING_SUCCESS, SMD_EVT_PAIRING_FAIL, SMD_EVT_LINK_ENCRYPTION_UPDATE, SMD_EVT_LINK_ENCRYPTION_FAILED, SMD_EVT_BONDING_INFO_STORED, SMD_EVT_ERROR_BONDING_INFO, SMD_EVT_ERROR_UNEXPECTED } |
Events that can come from the Security Dispatcher module. More... | |
Functions | |
ret_code_t | smd_register (smd_evt_handler_t evt_handler) |
Function for registering with the Security Dispatcher module. This function also initializes the module if uninitialized. More... | |
void | smd_ble_evt_handler (ble_evt_t *ble_evt) |
Function for dispatching SoftDevice events to the Security Dispatcher module. More... | |
ret_code_t | smd_params_reply (uint16_t conn_handle, ble_gap_sec_params_t *p_sec_params) |
Function for providing pairing and bonding parameters to use for the current pairing procedure on a connection. More... | |
ret_code_t | smd_link_secure (uint16_t conn_handle, ble_gap_sec_params_t *p_sec_params, bool force_repairing) |
Function for initiating security on the link, with the specified parameters. More... | |
An internal module of Peer Manager. A module for streamlining pairing, bonding, and encryption, including flash storage of shared data.
typedef void(* smd_evt_handler_t)(smd_evt_t const *p_event) |
Event handler for events from the Security Dispatcher module.
[in] | p_event | The event that has happened. |
enum smd_evt_id_t |
Events that can come from the Security Dispatcher module.
Enumerator | |
---|---|
SMD_EVT_PARAMS_REQ |
Parameters are required for a pairing procedure on the specified connection. The user must provide them using smd_params_reply. |
SMD_EVT_SLAVE_SECURITY_REQ |
The peer (slave) has requested link encryption. Call smd_link_secure to honor the request. The data in the event structure must be used in the parameters. |
SMD_EVT_SEC_PROCEDURE_START |
A security procedure has started. |
SMD_EVT_PAIRING_SUCCESS |
A pairing procedure (and bonding if applicable) has completed with success. |
SMD_EVT_PAIRING_FAIL |
A pairing procedure has failed which means no encryption and no bond could be established. |
SMD_EVT_LINK_ENCRYPTION_UPDATE |
The security level of the link has been updated. The link is encrypted. |
SMD_EVT_LINK_ENCRYPTION_FAILED |
An attempt to start encryption on an unencrypted link failed because the peripheral did not have the correct keys. If the peer is the peripheral, the force_repairing flag should be set when reattempting smd_link_secure. |
SMD_EVT_BONDING_INFO_STORED |
Information exchanged during bonding with a peer has been stored persistently. |
SMD_EVT_ERROR_BONDING_INFO |
Information exchanged during bonding with a peer could not be stored persistently, because of an unexpected error. |
SMD_EVT_ERROR_UNEXPECTED |
An operation failed with an unexpected error. The error is provided. This is possibly a fatal error. |
void smd_ble_evt_handler | ( | ble_evt_t * | ble_evt | ) |
Function for dispatching SoftDevice events to the Security Dispatcher module.
[in] | ble_evt | The SoftDevice event. |
ret_code_t smd_link_secure | ( | uint16_t | conn_handle, |
ble_gap_sec_params_t * | p_sec_params, | ||
bool | force_repairing | ||
) |
Function for initiating security on the link, with the specified parameters.
[in] | conn_handle | Handle of the connection to initiate pairing on. |
[in] | p_sec_params | The security parameters to use for this link. As a central, this can be NULL to reject a slave security request. |
[in] | force_repairing | Whether to force a pairing procedure to happen regardless of whether an encryption key already exists. This argument is only relevant for the central role. Recommended value: false |
NRF_SUCCESS | Success. |
NRF_ERROR_NULL | p_sec_params was NULL (peripheral only). |
NRF_ERROR_INVALID_STATE | Module is not initialized, or this error originates from the SoftDevice. |
NRF_ERROR_INVALID_PARAM | Invalid combination of parameters (not including conn_handle). |
NRF_ERROR_BUSY | Unable to initiate procedure at this time. |
NRF_ERROR_TIMEOUT | There has been an SMP timeout, so no more SMP operations can be performed on this link. |
BLE_ERROR_INVALID_CONN_HANDLE | Invalid connection handle. |
NRF_ERROR_NO_MEM | No more room in flash, or no space in RAM for peer_database to use. |
NRF_ERROR_INTERNAL | No more available peer IDs. |
ret_code_t smd_params_reply | ( | uint16_t | conn_handle, |
ble_gap_sec_params_t * | p_sec_params | ||
) |
Function for providing pairing and bonding parameters to use for the current pairing procedure on a connection.
[in] | conn_handle | The connection handle of the connection the pairing is happening on. |
[in] | p_sec_params | The security parameters to use for this link. |
NRF_SUCCESS | Success. |
NRF_ERROR_INVALID_STATE | Module is not initialized, or no parameters have been requested on that conn_handle, or this error originates from the SoftDevice. |
NRF_ERROR_INVALID_PARAM | Invalid combination of parameters (not including conn_handle). |
NRF_ERROR_TIMEOUT | There has been an SMP timeout, so no more SMP operations can be performed on this link. |
BLE_ERROR_INVALID_CONN_HANDLE | Invalid connection handle. |
NRF_ERROR_NO_MEM | No more room in flash. Fix and reattempt later. |
NRF_ERROR_BUSY | No write buffer. Reattempt later. |
ret_code_t smd_register | ( | smd_evt_handler_t | evt_handler | ) |
Function for registering with the Security Dispatcher module. This function also initializes the module if uninitialized.
[in] | evt_handler | Callback for events from the Security Dispatcher module. |
NRF_SUCCESS | Registration was successful. |
NRF_ERROR_NO_MEM | No more registrations possible. |
NRF_ERROR_NULL | evt_handler was NULL. |