nRF51 SDK - S120 SoftDevice
|
Frame format encoding of the BLE_GAP_EVT_CONNECTED packet.
Event ID = 0x10 for BLE_GAP_EVT_CONNECTED.
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Connected event, the ble_gap_evt_connected_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
7 bytes | Peer Address: ble_gap_addr_t | (See Figure 2 for details on encoding) |
7 bytes | Own Address: ble_gap_addr_t | (See Figure 2 for details on encoding) |
1 byte | Bitfields: - IRK Index: 7 bits, - IRK Match: 1 bit | (See Figure 3 for details on encoding) |
8 bytes | GAP Connection Parameters: ble_gap_conn_params_t | (See Figure 4 for details on encoding) |
The own address is encoded the same way as the peer address.
Frame format encoding of the BLE_GAP_EVT_DISCONNECTED packet.
Event ID = 0x11 for BLE_GAP_EVT_DISCONNECTED.
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Disconnected event, the ble_gap_evt_disconnected_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Reason | See ble_gap_evt_disconnected_t::reason |
Frame format encoding of the BLE_GAP_EVT_CONN_PARAM_UPDATE packet.
Event ID = 0x12 for BLE_GAP_EVT_CONN_PARAM_UPDATE
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Connect Parameter Update event, the ble_gap_evt_conn_param_update_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
8 bytes | GAP Connection Parameters ble_gap_conn_params_t | (See Figure 1 for details on encoding) |
Frame format encoding of the BLE_GAP_EVT_SEC_PARAMS_REQUEST packet.
Event ID = 0x13 for BLE_GAP_EVT_SEC_PARAMS_REQUEST
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle, and for the BLE GAP Security Parameters Request event, the ble_gap_evt_sec_params_request_t is encoded after the connection handle, as seen in Figure 1.
The Bond, MITM, IO capabilities, and OOB fields are all bitfields inside 1 byte as seen in Figure 2.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Bitfields: - Bond: 1 bit, - MITM: 1 bit, - IO Capabilities: 3 bits, - OOB: 1 bit | (See Figure 2 for details on encoding) |
1 byte | Minimum Keysize | See ble_gap_sec_params_t::min_key_size |
1 byte | Maximum Keysize | See ble_gap_sec_params_t::max_key_size |
1 byte | Peripheral Key Distribution Bitmap: - enc: 1 bit, - id: 1 bit, - sign: 1 bit | See ble_gap_sec_params_t::kdist_periph |
1 byte | Central Key Distribution Bitmap: - enc: 1 bit, - id: 1 bit, - sign: 1 bit | See ble_gap_sec_params_t::kdist_central |
Encodings of Central and Peripheral Key Distribution Bitmaps are the same.
Frame format encoding of the BLE_GAP_EVT_SEC_INFO_REQUEST packet.
Event ID = 0x14 for BLE_GAP_EVT_SEC_INFO_REQUEST
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Security Info Request event, the ble_gap_evt_sec_info_request_t is encoded after the connection handle, as seen in Figure 1.
The "Encryption info present", "Identity info present", and "Signing info present" flags are all bitfields inside 1 byte as seen in Figure 2.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Address Type | See ble_gap_addr_t::addr_type |
6 bytes | Address | See ble_gap_addr_t::addr |
10 bytes | Master ID | See ble_gap_master_id_t |
1 byte | Bitfields: - Encryption info: 1 bit, - Identity info: 1 bit, - Signing info: 1 bit | (See Figure 2 for details on encoding) |
Frame format encoding of the BLE_GAP_EVT_PASSKEY_DISPLAY packet.
Event ID = 0x15 for BLE_GAP_EVT_PASSKEY_DISPLAY.
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Passkey display event, the ble_gap_evt_passkey_display_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
6 bytes | Passkey | See ble_gap_evt_passkey_display_t::passkey |
Frame format encoding of the BLE_GAP_EVT_AUTH_KEY_REQUEST packet.
Event ID = 0x16 for BLE_GAP_EVT_AUTH_KEY_REQUEST.
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP key request event, the ble_gap_evt_auth_key_request_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Key type | See ble_gap_evt_auth_key_request_t::key_type |
Frame format encoding of the BLE_GAP_EVT_AUTH_STATUS packet.
Event ID = 0x17 for BLE_GAP_EVT_AUTH_STATUS
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Authentication Status event, the ble_gap_evt_auth_status_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Authentication Status | |
1 byte | Error Source | bonded error_src |
1 byte | Security levels mode1 | lv1 lv2 lv3 |
1 byte | Security levels mode2 | lv1 lv2 lv3 |
1 byte | Keys distribution - peripheral | enc id sign |
1 byte | Keys distribution - central | enc id sign |
6 .. 138 bytes | Security Keyset Structure | See ble_gap_sec_keyset_t |
Note: The security keyset structure is not part of the event data, but it is sent to the application processor. The BLE_GAP_EVT_AUTH_STATUS event indicates that the security keys exchange is complete. At this point, the security keys (contained in the security keyset structure) have been updated by the SoftDevice. Therefore, they must be sent to the application processor to enable the application to use the new keys.
The security keys synchronization between connectivity and application processors is done using GAP Functions for managing memory for security keys on connectivity device. and GAP Functions for managing memory for security keys in application device..
To find the security keys corresponding to the actual connection handle, the conn_ble_gap_sec_context_find and app_ble_gap_sec_context_find functions are used.
As the security context is no longer needed after the synchronization of the security keys, it is released using conn_ble_gap_sec_context_destroy and app_ble_gap_sec_context_destroy.
The details of the security keyset structure encoding are described in Encoding of Keyset Structure.
Frame format encoding of the BLE_GAP_EVT_CONN_SEC_UPDATE packet.
Event ID = 0x18 for BLE_GAP_EVT_CONN_SEC_UPDATE
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Security Info Request event, the ble_gap_evt_conn_sec_update_t is encoded after the connection handle, as seen in Figure 1.
The security mode and level are both bitfields inside 1 byte as seen in Figure 2.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Security Mode bitfields: - Security mode (sm): 4 bits, - Level (lv): 4 bits | (See Figure 2 for details on encoding) |
1 byte | Encryption Key Size | See ble_gap_conn_sec_t::encr_key_size |
Frame format encoding of the BLE_GAP_EVT_TIMEOUT packet.
Event ID = 0x19 for BLE_GAP_EVT_TIMEOUT
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Timeout event, the ble_gap_evt_timeout_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Timeout Source | See ble_gap_evt_timeout_t::src |
Frame format encoding of the BLE_GAP_EVT_RSSI_CHANGED packet.
Event ID = 0x1A for BLE_GAP_EVT_RSSI_CHANGED
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP RSSI Changed event, the ble_gap_evt_rssi_changed_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | RSSI | See ble_gap_evt_rssi_changed_t::rssi |
Frame format encoding of the BLE_GAP_EVT_ADV_REPORT packet.
Event ID = 0x1B for BLE_GAP_EVT_ADV_REPORT
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE ADV REPORT event, the ble_gap_evt_adv_report_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Address Type | See ble_gap_addr_t::addr_type |
6 bytes | Address | See ble_gap_addr_t::addr |
1 byte | RSSI | See ble_gap_evt_rssi_changed_t::rssi |
1 byte | Flags | scan_rsp:1 type:2 dlen:5 |
0..31 bytes | Data | Data bytes |
Frame format encoding of the BLE_GAP_EVT_SCAN_REQ_REPORT packet.
Event ID = 0x1E for BLE_GAP_EVT_SCAN_REQ_REPORT
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP Scan Req. Report event, the ble_gap_evt_scan_req_report_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Peer Address Type | See ble_gap_addr_t::addr_type |
6 bytes | Peer Address | See ble_gap_addr_t::addr |
1 bytes | RSSI | See ble_gap_evt_scan_req_report_t::rssi |
Frame format encoding of the BLE_GAP_EVT_SEC_REQUEST packet.
Event ID = 0x1C for BLE_GAP_EVT_SEC_REQUEST
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP SEC Request event, the ble_gap_evt_sec_request_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
1 byte | Bond, MITM | See ble_gap_evt_sec_request_t::bond and ble_gap_evt_sec_request_t::mitm |
Frame format encoding of the BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST packet.
Event ID = 0x1D for BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST
All BLE events, ble_evt_t, are encoded with the header ble_evt_hdr_t first, containing only the Event ID followed by the event. The Event Length will not be encoded, because the size of the event could differ depending on the decoder architecture.
The BLE GAP event contains a connection handle. For the BLE GAP CONN PARAM Update Request event, the ble_gap_evt_conn_param_update_request_t is encoded after the connection handle, as seen in Figure 1.
The order of the encoding is:
Length | Parameter | Value |
---|---|---|
2 bytes | Connection Handle | See ble_gap_evt_t::conn_handle |
8 bytes | Connection Parameters | See BLE_GAP_EVT_CONNECTED codec for encoding details |