SPP API¶
Overview¶
Application Example¶
Check bluetooth folder in ESP-IDF examples, which contains the following application:
- This is a SPP demo. This demo can discover the service, connect, send and recive SPP data bluetooth/bt_spp_acceptor, bluetooth/bt_spp_initiator
 
API Reference¶
Header File¶
Functions¶
- 
esp_err_t 
esp_spp_register_callback(esp_spp_cb_t callback)¶ This function is called to init callbacks with SPP module.
- Return
 - ESP_OK: success
 - other: failed
 
- Parameters
 callback: pointer to the init callback function.
- 
esp_err_t 
esp_spp_init(esp_spp_mode_t mode)¶ This function is called to init SPP.
- Return
 - ESP_OK: success
 - other: failed
 
- Parameters
 mode: Choose the mode of SPP, ESP_SPP_MODE_CB or ESP_SPP_MODE_VFS.
- 
esp_err_t 
esp_spp_deinit()¶ This function is called to uninit SPP.
- Return
 - ESP_OK: success
 - other: failed
 
- 
esp_err_t 
esp_spp_start_discovery(esp_bd_addr_t bd_addr)¶ This function is called to performs service discovery for the services provided by the given peer device. When the operation is complete the callback function will be called with a ESP_SPP_DISCOVERY_COMP_EVT.
- Return
 - ESP_OK: success
 - other: failed
 
- Parameters
 bd_addr: Remote device bluetooth device address.
- 
esp_err_t 
esp_spp_connect(esp_spp_sec_t sec_mask, esp_spp_role_t role, uint8_t remote_scn, esp_bd_addr_t peer_bd_addr)¶ This function makes an SPP connection to a remote BD Address. When the connection is initiated or failed to initiate, the callback is called with ESP_SPP_CL_INIT_EVT. When the connection is established or failed, the callback is called with ESP_SPP_OPEN_EVT.
- Return
 - ESP_OK: success
 - other: failed
 
- Parameters
 sec_mask: Security Setting Mask. Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only.role: Master or slave.remote_scn: Remote device bluetooth device SCN.peer_bd_addr: Remote device bluetooth device address.
- 
esp_err_t 
esp_spp_disconnect(uint32_t handle)¶ This function closes an SPP connection.
- Return
 - ESP_OK: success
 - other: failed
 
- Parameters
 handle: The connection handle.
- 
esp_err_t 
esp_spp_start_srv(esp_spp_sec_t sec_mask, esp_spp_role_t role, uint8_t local_scn, const char *name)¶ This function create a SPP server and starts listening for an SPP connection request from a remote Bluetooth device. When the server is started successfully, the callback is called with ESP_SPP_START_EVT. When the connection is established, the callback is called with ESP_SPP_SRV_OPEN_EVT.
- Return
 - ESP_OK: success
 - other: failed
 
- Parameters
 sec_mask: Security Setting Mask. Security Setting Mask. Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only.role: Master or slave.local_scn: The specific channel you want to get. If channel is 0, means get any channel.name: Server’s name.
Unions¶
- 
union 
esp_spp_cb_param_t¶ - #include <esp_spp_api.h>
SPP callback parameters union.
Public Members
- 
struct esp_spp_cb_param_t::spp_init_evt_param 
init¶ SPP callback param of SPP_INIT_EVT
- 
struct esp_spp_cb_param_t::spp_discovery_comp_evt_param 
disc_comp¶ SPP callback param of SPP_DISCOVERY_COMP_EVT
- 
struct esp_spp_cb_param_t::spp_open_evt_param 
open¶ SPP callback param of ESP_SPP_OPEN_EVT
- 
struct esp_spp_cb_param_t::spp_srv_open_evt_param 
srv_open¶ SPP callback param of ESP_SPP_SRV_OPEN_EVT
- 
struct esp_spp_cb_param_t::spp_close_evt_param 
close¶ SPP callback param of ESP_SPP_CLOSE_EVT
- 
struct esp_spp_cb_param_t::spp_start_evt_param 
start¶ SPP callback param of ESP_SPP_START_EVT
- 
struct esp_spp_cb_param_t::spp_cl_init_evt_param 
cl_init¶ SPP callback param of ESP_SPP_CL_INIT_EVT
- 
struct esp_spp_cb_param_t::spp_write_evt_param 
write¶ SPP callback param of ESP_SPP_WRITE_EVT
- 
struct esp_spp_cb_param_t::spp_data_ind_evt_param 
data_ind¶ SPP callback param of ESP_SPP_DATA_IND_EVT
- 
struct esp_spp_cb_param_t::spp_cong_evt_param 
cong¶ SPP callback param of ESP_SPP_CONG_EVT
- 
struct 
spp_cl_init_evt_param¶ - #include <esp_spp_api.h>
ESP_SPP_CL_INIT_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint32_t 
handle¶ The connection handle
- 
uint8_t 
sec_id¶ security ID used by this server
- 
bool 
use_co¶ TRUE to use co_rfc_data
 - 
esp_spp_status_t 
 
- 
struct 
spp_close_evt_param¶ - #include <esp_spp_api.h>
ESP_SPP_CLOSE_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint32_t 
port_status¶ PORT status
- 
uint32_t 
handle¶ The connection handle
- 
bool 
async¶ FALSE, if local initiates disconnect
 - 
esp_spp_status_t 
 
- 
struct 
spp_cong_evt_param¶ - #include <esp_spp_api.h>
ESP_SPP_CONG_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint32_t 
handle¶ The connection handle
- 
bool 
cong¶ TRUE, congested. FALSE, uncongested
 - 
esp_spp_status_t 
 
- 
struct 
spp_data_ind_evt_param¶ - #include <esp_spp_api.h>
ESP_SPP_DATA_IND_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint32_t 
handle¶ The connection handle
- 
uint16_t 
len¶ The length of data
- 
uint8_t *
data¶ The data received
 - 
esp_spp_status_t 
 
- 
struct 
spp_discovery_comp_evt_param¶ - #include <esp_spp_api.h>
SPP_DISCOVERY_COMP_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint8_t 
scn_num¶ The num of scn_num
- 
uint8_t 
scn[ESP_SPP_MAX_SCN]¶ channel #
 - 
esp_spp_status_t 
 
- 
struct 
spp_init_evt_param¶ - #include <esp_spp_api.h>
SPP_INIT_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
 - 
esp_spp_status_t 
 
- 
struct 
spp_open_evt_param¶ - #include <esp_spp_api.h>
ESP_SPP_OPEN_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint32_t 
handle¶ The connection handle
- 
int 
fd¶ The file descriptor only for ESP_SPP_MODE_VFS
- 
esp_bd_addr_t 
rem_bda¶ The peer address
 - 
esp_spp_status_t 
 
- 
struct 
spp_srv_open_evt_param¶ - #include <esp_spp_api.h>
ESP_SPP_SRV_OPEN_EVT.
Public Members
- 
esp_spp_status_t 
status¶ status
- 
uint32_t 
handle¶ The connection handle
- 
uint32_t 
new_listen_handle¶ The new listen handle
- 
int 
fd¶ The file descriptor only for ESP_SPP_MODE_VFS
- 
esp_bd_addr_t 
rem_bda¶ The peer address
 - 
esp_spp_status_t 
 
 - 
struct esp_spp_cb_param_t::spp_init_evt_param 
 
Macros¶
- 
ESP_SPP_SEC_NONE¶ No security. relate to BTA_SEC_NONE in bta/bta_api.h
- 
ESP_SPP_SEC_AUTHORIZE¶ Authorization required (only needed for out going connection ) relate to BTA_SEC_AUTHORIZE in bta/bta_api.h
- 
ESP_SPP_SEC_AUTHENTICATE¶ Authentication required. relate to BTA_SEC_AUTHENTICATE in bta/bta_api.h
- 
ESP_SPP_SEC_ENCRYPT¶ Encryption required. relate to BTA_SEC_ENCRYPT in bta/bta_api.h
- 
ESP_SPP_SEC_MODE4_LEVEL4¶ Mode 4 level 4 service, i.e. incoming/outgoing MITM and P-256 encryption relate to BTA_SEC_MODE4_LEVEL4 in bta/bta_api.h
- 
ESP_SPP_SEC_MITM¶ Man-In-The_Middle protection relate to BTA_SEC_MITM in bta/bta_api.h
- 
ESP_SPP_SEC_IN_16_DIGITS¶ Min 16 digit for pin code relate to BTA_SEC_IN_16_DIGITS in bta/bta_api.h
- 
ESP_SPP_MAX_MTU¶ SPP max MTU
- 
ESP_SPP_MAX_SCN¶ SPP max SCN
Type Definitions¶
- 
typedef uint16_t 
esp_spp_sec_t¶ 
- 
typedef 
void() esp_spp_cb_t(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) SPP callback function type.
- Parameters
 event: Event typeparam: Point to callback parameter, currently is union type
Enumerations¶
- 
enum 
esp_spp_status_t¶ Values:
- 
ESP_SPP_SUCCESS= 0¶ Successful operation.
- 
ESP_SPP_FAILURE¶ Generic failure.
- 
ESP_SPP_BUSY¶ Temporarily can not handle this request.
- 
ESP_SPP_NO_DATA¶ no data.
- 
ESP_SPP_NO_RESOURCE¶ No more set pm control block
- 
 
- 
enum 
esp_spp_role_t¶ Values:
- 
ESP_SPP_ROLE_MASTER= 0¶ Role: master
- 
ESP_SPP_ROLE_SLAVE= 1¶ Role: slave
- 
 
- 
enum 
esp_spp_mode_t¶ Values:
- 
ESP_SPP_MODE_CB= 0¶ When data is coming, a callback will come with data
- 
ESP_SPP_MODE_VFS= 1¶ Use VFS to write/read data
- 
 
- 
enum 
esp_spp_cb_event_t¶ SPP callback function events.
Values:
- 
ESP_SPP_INIT_EVT= 0¶ When SPP is inited, the event comes
- 
ESP_SPP_DISCOVERY_COMP_EVT= 8¶ When SDP discovery complete, the event comes
- 
ESP_SPP_OPEN_EVT= 26¶ When SPP Client connection open, the event comes
- 
ESP_SPP_CLOSE_EVT= 27¶ When SPP connection closed, the event comes
- 
ESP_SPP_START_EVT= 28¶ When SPP server started, the event comes
- 
ESP_SPP_CL_INIT_EVT= 29¶ When SPP client initiated a connection, the event comes
- 
ESP_SPP_DATA_IND_EVT= 30¶ When SPP connection received data, the event comes, only for ESP_SPP_MODE_CB
- 
ESP_SPP_CONG_EVT= 31¶ When SPP connection congestion status changed, the event comes, only for ESP_SPP_MODE_CB
- 
ESP_SPP_WRITE_EVT= 33¶ When SPP write operation completes, the event comes, only for ESP_SPP_MODE_CB
- 
ESP_SPP_SRV_OPEN_EVT= 34¶ When SPP Server connection open, the event comes
-