BluFi API
Overview
BluFi is a profile based GATT to config ESP32 Wi-Fi to connect/disconnect AP or setup a softap and etc.
Use should concern these things:
The event sent from profile. Then you need to do something as the event indicate.
Security reference. You can write your own Security functions such as symmetrical encryption/decryption and checksum functions. Even you can define the “Key Exchange/Negotiation” procedure.
Application Example
Check bluetooth folder in ESP-IDF examples, which contains the following application:
This is the BluFi demo. This demo can set ESP32’s Wi-Fi to softap/station/softap&station mode and config Wi-Fi connections - bluetooth/blufi
API Reference
Header File
This header file can be included with:
#include "esp_blufi_api.h"
This header file is a part of the API provided by the
btcomponent. To declare that your component depends onbt, add the following to your CMakeLists.txt:REQUIRES bt
or
PRIV_REQUIRES bt
Functions
- 
esp_err_t esp_blufi_register_callbacks(esp_blufi_callbacks_t *callbacks)
 This function is called to receive blufi callback event.
- 参数
 callbacks – [in] callback functions
- 返回
 ESP_OK - success, other - failed
- 
esp_err_t esp_blufi_profile_init(void)
 This function is called to initialize blufi_profile.
- 返回
 ESP_OK - success, other - failed
- 
esp_err_t esp_blufi_profile_deinit(void)
 This function is called to de-initialize blufi_profile.
- 返回
 ESP_OK - success, other - failed
- 
esp_err_t esp_blufi_send_wifi_conn_report(wifi_mode_t opmode, esp_blufi_sta_conn_state_t sta_conn_state, uint8_t softap_conn_num, esp_blufi_extra_info_t *extra_info)
 This function is called to send wifi connection report.
- 参数
 opmode – : wifi opmode
sta_conn_state – : station is already in connection or not
softap_conn_num – : softap connection number
extra_info – : extra information, such as sta_ssid, softap_ssid and etc.
- 返回
 ESP_OK - success, other - failed
- 
esp_err_t esp_blufi_send_wifi_list(uint16_t apCount, esp_blufi_ap_record_t *list)
 This function is called to send wifi list.
- 参数
 apCount – : wifi list count
list – : wifi list
- 返回
 ESP_OK - success, other - failed
- 
uint16_t esp_blufi_get_version(void)
 Get BLUFI profile version.
- 返回
 Most 8bit significant is Great version, Least 8bit is Sub version
- 
esp_err_t esp_blufi_send_error_info(esp_blufi_error_state_t state)
 This function is called to send blufi error information.
- 参数
 state – : error state
- 返回
 ESP_OK - success, other - failed
Unions
- 
union esp_blufi_cb_param_t
 - #include <esp_blufi_api.h>
BLUFI callback parameters union.
Public Members
- 
struct esp_blufi_cb_param_t::blufi_init_finish_evt_param init_finish
 Blufi callback param of ESP_BLUFI_EVENT_INIT_FINISH
- 
struct esp_blufi_cb_param_t::blufi_deinit_finish_evt_param deinit_finish
 Blufi callback param of ESP_BLUFI_EVENT_DEINIT_FINISH
- 
struct esp_blufi_cb_param_t::blufi_set_wifi_mode_evt_param wifi_mode
 Blufi callback param of ESP_BLUFI_EVENT_INIT_FINISH
- 
struct esp_blufi_cb_param_t::blufi_connect_evt_param connect
 Blufi callback param of ESP_BLUFI_EVENT_CONNECT
- 
struct esp_blufi_cb_param_t::blufi_disconnect_evt_param disconnect
 Blufi callback param of ESP_BLUFI_EVENT_DISCONNECT
- 
struct esp_blufi_cb_param_t::blufi_recv_sta_bssid_evt_param sta_bssid
 Blufi callback param of ESP_BLUFI_EVENT_RECV_STA_BSSID
- 
struct esp_blufi_cb_param_t::blufi_recv_sta_ssid_evt_param sta_ssid
 Blufi callback param of ESP_BLUFI_EVENT_RECV_STA_SSID
- 
struct esp_blufi_cb_param_t::blufi_recv_sta_passwd_evt_param sta_passwd
 Blufi callback param of ESP_BLUFI_EVENT_RECV_STA_PASSWD
- 
struct esp_blufi_cb_param_t::blufi_recv_softap_ssid_evt_param softap_ssid
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SOFTAP_SSID
- 
struct esp_blufi_cb_param_t::blufi_recv_softap_passwd_evt_param softap_passwd
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SOFTAP_PASSWD
- 
struct esp_blufi_cb_param_t::blufi_recv_softap_max_conn_num_evt_param softap_max_conn_num
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SOFTAP_MAX_CONN_NUM
- 
struct esp_blufi_cb_param_t::blufi_recv_softap_auth_mode_evt_param softap_auth_mode
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SOFTAP_AUTH_MODE
- 
struct esp_blufi_cb_param_t::blufi_recv_softap_channel_evt_param softap_channel
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SOFTAP_CHANNEL
- 
struct esp_blufi_cb_param_t::blufi_recv_username_evt_param username
 Blufi callback param of ESP_BLUFI_EVENT_RECV_USERNAME
- 
struct esp_blufi_cb_param_t::blufi_recv_ca_evt_param ca
 Blufi callback param of ESP_BLUFI_EVENT_RECV_CA_CERT
- 
struct esp_blufi_cb_param_t::blufi_recv_client_cert_evt_param client_cert
 Blufi callback param of ESP_BLUFI_EVENT_RECV_CLIENT_CERT
- 
struct esp_blufi_cb_param_t::blufi_recv_server_cert_evt_param server_cert
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SERVER_CERT
- 
struct esp_blufi_cb_param_t::blufi_recv_client_pkey_evt_param client_pkey
 Blufi callback param of ESP_BLUFI_EVENT_RECV_CLIENT_PRIV_KEY
- 
struct esp_blufi_cb_param_t::blufi_recv_server_pkey_evt_param server_pkey
 Blufi callback param of ESP_BLUFI_EVENT_RECV_SERVER_PRIV_KEY
- 
struct esp_blufi_cb_param_t::blufi_get_error_evt_param report_error
 Blufi callback param of ESP_BLUFI_EVENT_REPORT_ERROR
- 
struct esp_blufi_cb_param_t::blufi_recv_custom_data_evt_param custom_data
 Blufi callback param of ESP_BLUFI_EVENT_RECV_CUSTOM_DATA
- 
struct blufi_connect_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_CONNECT.
Public Members
- 
esp_blufi_bd_addr_t remote_bda
 Blufi Remote bluetooth device address
- 
uint8_t server_if
 server interface
- 
uint16_t conn_id
 Connection id
 - 
esp_blufi_bd_addr_t remote_bda
 
- 
struct blufi_deinit_finish_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_DEINIT_FINISH.
Public Members
- 
esp_blufi_deinit_state_t state
 De-initial status
 - 
esp_blufi_deinit_state_t state
 
- 
struct blufi_disconnect_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_DISCONNECT.
Public Members
- 
esp_blufi_bd_addr_t remote_bda
 Blufi Remote bluetooth device address
 - 
esp_blufi_bd_addr_t remote_bda
 
- 
struct blufi_get_error_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_REPORT_ERROR.
Public Members
- 
esp_blufi_error_state_t state
 Blufi error state
 - 
esp_blufi_error_state_t state
 
- 
struct blufi_init_finish_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_INIT_FINISH.
Public Members
- 
esp_blufi_init_state_t state
 Initial status
 - 
esp_blufi_init_state_t state
 
- 
struct blufi_recv_ca_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_CA_CERT.
 
- 
struct blufi_recv_client_cert_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_CLIENT_CERT
 
- 
struct blufi_recv_client_pkey_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_CLIENT_PRIV_KEY
 
- 
struct blufi_recv_custom_data_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_CUSTOM_DATA.
 
- 
struct blufi_recv_server_cert_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SERVER_CERT
 
- 
struct blufi_recv_server_pkey_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SERVER_PRIV_KEY
 
- 
struct blufi_recv_softap_auth_mode_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SOFTAP_AUTH_MODE.
Public Members
- 
wifi_auth_mode_t auth_mode
 Authentication mode
 - 
wifi_auth_mode_t auth_mode
 
- 
struct blufi_recv_softap_channel_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SOFTAP_CHANNEL.
Public Members
- 
uint8_t channel
 Authentication mode
 - 
uint8_t channel
 
- 
struct blufi_recv_softap_max_conn_num_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SOFTAP_MAX_CONN_NUM.
Public Members
- 
int max_conn_num
 SSID
 - 
int max_conn_num
 
- 
struct blufi_recv_softap_passwd_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SOFTAP_PASSWD.
 
- 
struct blufi_recv_softap_ssid_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_SOFTAP_SSID.
 
- 
struct blufi_recv_sta_bssid_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_STA_BSSID.
Public Members
- 
uint8_t bssid[6]
 BSSID
 - 
uint8_t bssid[6]
 
- 
struct blufi_recv_sta_passwd_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_STA_PASSWD.
 
- 
struct blufi_recv_sta_ssid_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_STA_SSID.
 
- 
struct blufi_recv_username_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_RECV_USERNAME.
 
- 
struct blufi_set_wifi_mode_evt_param
 - #include <esp_blufi_api.h>
ESP_BLUFI_EVENT_SET_WIFI_MODE.
Public Members
- 
wifi_mode_t op_mode
 Wifi operation mode
 - 
wifi_mode_t op_mode
 
 - 
struct esp_blufi_cb_param_t::blufi_init_finish_evt_param init_finish
 
Structures
- 
struct esp_blufi_extra_info_t
 BLUFI extra information structure.
Public Members
- 
uint8_t sta_bssid[6]
 BSSID of station interface
- 
bool sta_bssid_set
 is BSSID of station interface set
- 
uint8_t *sta_ssid
 SSID of station interface
- 
int sta_ssid_len
 length of SSID of station interface
- 
uint8_t *sta_passwd
 password of station interface
- 
int sta_passwd_len
 length of password of station interface
- 
uint8_t *softap_ssid
 SSID of softap interface
- 
int softap_ssid_len
 length of SSID of softap interface
- 
uint8_t *softap_passwd
 password of station interface
- 
int softap_passwd_len
 length of password of station interface
- 
uint8_t softap_authmode
 authentication mode of softap interface
- 
bool softap_authmode_set
 is authentication mode of softap interface set
- 
uint8_t softap_max_conn_num
 max connection number of softap interface
- 
bool softap_max_conn_num_set
 is max connection number of softap interface set
- 
uint8_t softap_channel
 channel of softap interface
- 
bool softap_channel_set
 is channel of softap interface set
- 
uint8_t sta_max_conn_retry
 max retry of sta establish connection
- 
bool sta_max_conn_retry_set
 is max retry of sta establish connection set
- 
uint8_t sta_conn_end_reason
 reason of sta connection end
- 
bool sta_conn_end_reason_set
 is reason of sta connection end set
- 
int8_t sta_conn_rssi
 rssi of sta connection
- 
bool sta_conn_rssi_set
 is rssi of sta connection set
- 
uint8_t sta_bssid[6]
 
- 
struct esp_blufi_ap_record_t
 Description of an WiFi AP.
- 
struct esp_blufi_callbacks_t
 BLUFI callback functions type.
Public Members
- 
esp_blufi_event_cb_t event_cb
 BLUFI event callback
- 
esp_blufi_negotiate_data_handler_t negotiate_data_handler
 BLUFI negotiate data function for negotiate share key
- 
esp_blufi_encrypt_func_t encrypt_func
 BLUFI encrypt data function with share key generated by negotiate_data_handler
- 
esp_blufi_decrypt_func_t decrypt_func
 BLUFI decrypt data function with share key generated by negotiate_data_handler
- 
esp_blufi_checksum_func_t checksum_func
 BLUFI check sum function (FCS)
- 
esp_blufi_event_cb_t event_cb
 
Macros
- 
ESP_BLUFI_BD_ADDR_LEN
 Bluetooth address length.
Type Definitions
- 
typedef uint8_t esp_blufi_bd_addr_t[ESP_BLUFI_BD_ADDR_LEN]
 Bluetooth device address.
- 
typedef void (*esp_blufi_event_cb_t)(esp_blufi_cb_event_t event, esp_blufi_cb_param_t *param)
 BLUFI event callback function type.
- Param event
 : Event type
- Param param
 : Point to callback parameter, currently is union type
- 
typedef void (*esp_blufi_negotiate_data_handler_t)(uint8_t *data, int len, uint8_t **output_data, int *output_len, bool *need_free)
 BLUFI negotiate data handler.
- Param data
 : data from phone
- Param len
 : length of data from phone
- Param output_data
 : data want to send to phone
- Param output_len
 : length of data want to send to phone
- Param need_free
 : output reporting if memory needs to be freed or not *
- 
typedef int (*esp_blufi_encrypt_func_t)(uint8_t iv8, uint8_t *crypt_data, int crypt_len)
 BLUFI encrypt the data after negotiate a share key.
- Param iv8
 : initial vector(8bit), normally, blufi core will input packet sequence number
- Param crypt_data
 : plain text and encrypted data, the encrypt function must support autochthonous encrypt
- Param crypt_len
 : length of plain text
- Return
 Nonnegative number is encrypted length, if error, return negative number;
- 
typedef int (*esp_blufi_decrypt_func_t)(uint8_t iv8, uint8_t *crypt_data, int crypt_len)
 BLUFI decrypt the data after negotiate a share key.
- Param iv8
 : initial vector(8bit), normally, blufi core will input packet sequence number
- Param crypt_data
 : encrypted data and plain text, the encrypt function must support autochthonous decrypt
- Param crypt_len
 : length of encrypted text
- Return
 Nonnegative number is decrypted length, if error, return negative number;
- 
typedef uint16_t (*esp_blufi_checksum_func_t)(uint8_t iv8, uint8_t *data, int len)
 BLUFI checksum.
- Param iv8
 : initial vector(8bit), normally, blufi core will input packet sequence number
- Param data
 : data need to checksum
- Param len
 : length of data
Enumerations
- 
enum esp_blufi_cb_event_t
 Values:
- 
enumerator ESP_BLUFI_EVENT_INIT_FINISH
 
- 
enumerator ESP_BLUFI_EVENT_DEINIT_FINISH
 
- 
enumerator ESP_BLUFI_EVENT_SET_WIFI_OPMODE
 
- 
enumerator ESP_BLUFI_EVENT_BLE_CONNECT
 
- 
enumerator ESP_BLUFI_EVENT_BLE_DISCONNECT
 
- 
enumerator ESP_BLUFI_EVENT_REQ_CONNECT_TO_AP
 
- 
enumerator ESP_BLUFI_EVENT_REQ_DISCONNECT_FROM_AP
 
- 
enumerator ESP_BLUFI_EVENT_GET_WIFI_STATUS
 
- 
enumerator ESP_BLUFI_EVENT_DEAUTHENTICATE_STA
 
- 
enumerator ESP_BLUFI_EVENT_RECV_STA_BSSID
 
- 
enumerator ESP_BLUFI_EVENT_RECV_STA_SSID
 
- 
enumerator ESP_BLUFI_EVENT_RECV_STA_PASSWD
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SOFTAP_SSID
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SOFTAP_PASSWD
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SOFTAP_MAX_CONN_NUM
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SOFTAP_AUTH_MODE
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SOFTAP_CHANNEL
 
- 
enumerator ESP_BLUFI_EVENT_RECV_USERNAME
 
- 
enumerator ESP_BLUFI_EVENT_RECV_CA_CERT
 
- 
enumerator ESP_BLUFI_EVENT_RECV_CLIENT_CERT
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SERVER_CERT
 
- 
enumerator ESP_BLUFI_EVENT_RECV_CLIENT_PRIV_KEY
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SERVER_PRIV_KEY
 
- 
enumerator ESP_BLUFI_EVENT_RECV_SLAVE_DISCONNECT_BLE
 
- 
enumerator ESP_BLUFI_EVENT_GET_WIFI_LIST
 
- 
enumerator ESP_BLUFI_EVENT_REPORT_ERROR
 
- 
enumerator ESP_BLUFI_EVENT_RECV_CUSTOM_DATA
 
- 
enumerator ESP_BLUFI_EVENT_INIT_FINISH
 
- 
enum esp_blufi_sta_conn_state_t
 BLUFI config status.
Values:
- 
enumerator ESP_BLUFI_STA_CONN_SUCCESS
 
- 
enumerator ESP_BLUFI_STA_CONN_FAIL
 
- 
enumerator ESP_BLUFI_STA_CONNECTING
 
- 
enumerator ESP_BLUFI_STA_NO_IP
 
- 
enumerator ESP_BLUFI_STA_CONN_SUCCESS
 
- 
enum esp_blufi_init_state_t
 BLUFI init status.
Values:
- 
enumerator ESP_BLUFI_INIT_OK
 
- 
enumerator ESP_BLUFI_INIT_FAILED
 
- 
enumerator ESP_BLUFI_INIT_OK
 
- 
enum esp_blufi_deinit_state_t
 BLUFI deinit status.
Values:
- 
enumerator ESP_BLUFI_DEINIT_OK
 
- 
enumerator ESP_BLUFI_DEINIT_FAILED
 
- 
enumerator ESP_BLUFI_DEINIT_OK
 
- 
enum esp_blufi_error_state_t
 Values:
- 
enumerator ESP_BLUFI_SEQUENCE_ERROR
 
- 
enumerator ESP_BLUFI_CHECKSUM_ERROR
 
- 
enumerator ESP_BLUFI_DECRYPT_ERROR
 
- 
enumerator ESP_BLUFI_ENCRYPT_ERROR
 
- 
enumerator ESP_BLUFI_INIT_SECURITY_ERROR
 
- 
enumerator ESP_BLUFI_DH_MALLOC_ERROR
 
- 
enumerator ESP_BLUFI_DH_PARAM_ERROR
 
- 
enumerator ESP_BLUFI_READ_PARAM_ERROR
 
- 
enumerator ESP_BLUFI_MAKE_PUBLIC_ERROR
 
- 
enumerator ESP_BLUFI_DATA_FORMAT_ERROR
 
- 
enumerator ESP_BLUFI_CALC_MD5_ERROR
 
- 
enumerator ESP_BLUFI_WIFI_SCAN_FAIL
 
- 
enumerator ESP_BLUFI_MSG_STATE_ERROR
 
- 
enumerator ESP_BLUFI_SEQUENCE_ERROR