-
-
Notifications
You must be signed in to change notification settings - Fork 1
API Reference
Complete API documentation for the a2dpSinkHfpClient component.
- Initialization
- Configuration
- A2DP Functions
- HFP Call Control
- HFP Voice Recognition
- HFP Volume Control
- HFP Query Functions
- HFP Advanced Features
- AVRC Control
- AVRC Metadata
- Status Functions
- Callbacks
Initialize the Bluetooth A2DP sink and HFP hands-free client.
esp_err_t a2dpSinkHfpHf_init(const a2dpSinkHfpHf_config_t *config);Parameters:
-
config: Pointer to configuration structure
Returns:
-
ESP_OK: Success -
ESP_FAIL: Initialization failed
Example:
a2dpSinkHfpHf_config_t config = {
.device_name = "ESP32-Speaker",
.i2s_tx_bck = 26,
.i2s_tx_ws = 25,
.i2s_tx_dout = 22,
.i2s_rx_bck = 32,
.i2s_rx_ws = 33,
.i2s_rx_din = 34
};
esp_err_t ret = a2dpSinkHfpHf_init(&config);Deinitialize and clean up all resources.
esp_err_t a2dpSinkHfpHf_deinit(void);Returns:
-
ESP_OK: Success
Set custom PIN code for Bluetooth pairing.
esp_err_t a2dpSinkHfpHf_set_pin(const char *pin_code, uint8_t pin_len);Parameters:
-
pin_code: PIN code string (e.g., "1234") -
pin_len: Length of PIN code (1-16)
Returns:
-
ESP_OK: Success -
ESP_ERR_INVALID_ARG: Invalid parameters
Note: Must be called before a2dpSinkHfpHf_init().
Set country code for phone number formatting.
esp_err_t a2dpSinkHfpHf_set_country_code(const char *country_code);Parameters:
-
country_code: Country code string (e.g., "1" for USA, "44" for UK)
Returns:
-
ESP_OK: Success -
ESP_ERR_INVALID_ARG: Invalid country code
A2DP audio streaming is handled automatically when a device connects. No manual functions needed for basic operation.
Answer an incoming call.
esp_err_t a2dpSinkHfpHf_answer_call(void);Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected or error
Example:
if (a2dpSinkHfpHf_answer_call() == ESP_OK) {
printf("Answering call\n");
}Reject an incoming call.
esp_err_t a2dpSinkHfpHf_reject_call(void);Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected or error
Hang up active call.
esp_err_t a2dpSinkHfpHf_hangup_call(void);Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected or error
Dial a phone number.
esp_err_t a2dpSinkHfpHf_dial_number(const char *number);Parameters:
-
number: Phone number string (e.g., "1234567890")
Returns:
-
ESP_OK: Command sent successfully -
ESP_ERR_INVALID_ARG: NULL pointer -
ESP_FAIL: Not connected
Example:
a2dpSinkHfpHf_dial_number("5551234567");Redial the last dialed number.
esp_err_t a2dpSinkHfpHf_redial(void);Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected
Dial from speed dial memory location.
esp_err_t a2dpSinkHfpHf_dial_memory(int location);Parameters:
-
location: Memory location number (1-99, phone-dependent)
Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected
Start voice recognition (Siri, Google Assistant, etc.).
esp_err_t a2dpSinkHfpHf_start_voice_recognition(void);Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected or not supported
Example:
// Trigger Siri/Google Assistant
a2dpSinkHfpHf_start_voice_recognition();Stop voice recognition.
esp_err_t a2dpSinkHfpHf_stop_voice_recognition(void);Returns:
-
ESP_OK: Command sent successfully -
ESP_FAIL: Not connected
Update speaker or microphone volume on the phone.
esp_err_t a2dpSinkHfpHf_volume_update(const char *target, int volume);Parameters:
-
target: "spk" for speaker, "mic" for microphone -
volume: Volume level (0-15)
Returns:
-
ESP_OK: Command sent successfully -
ESP_ERR_INVALID_ARG: Invalid target or volume -
ESP_FAIL: Not connected
Example:
// Set speaker volume to maximum
a2dpSinkHfpHf_volume_update("spk", 15);
// Set microphone volume to mid-level
a2dpSinkHfpHf_volume_update("mic", 8);Query the current network operator name.
esp_err_t a2dpSinkHfpHf_query_operator(void);Returns:
-
ESP_OK: Query sent (check HFP event logs for response) -
ESP_FAIL: Not connected
Query list of current calls.
esp_err_t a2dpSinkHfpHf_query_current_calls(void);Returns:
-
ESP_OK: Query sent (check HFP event logs for response) -
ESP_FAIL: Not connected
Retrieve subscriber info (own phone number).
esp_err_t a2dpSinkHfpHf_retrieve_subscriber_info(void);Returns:
-
ESP_OK: Query sent (check HFP event logs for response) -
ESP_FAIL: Not connected
Send response and hold command.
esp_err_t a2dpSinkHfpHf_send_btrh(int btrh);Parameters:
-
btrh:-
0: Put incoming call on hold -
1: Accept held call -
2: Reject held call
-
Returns:
-
ESP_OK: Command sent successfully -
ESP_ERR_INVALID_ARG: Invalid value (not 0-2) -
ESP_FAIL: Not connected
Send iPhone XAPL (accessory protocol) features.
esp_err_t a2dpSinkHfpHf_send_xapl(const char *features);Parameters:
-
features: Feature string (e.g., "iPhone-6.3.0,2")
Returns:
-
ESP_OK: Command sent successfully -
ESP_ERR_INVALID_ARG: Invalid format -
ESP_FAIL: Not connected
Send iPhone accessory event (battery level, docked state).
esp_err_t a2dpSinkHfpHf_send_iphoneaccev(int bat_level, int docked);Parameters:
-
bat_level: Battery level (0-9), or -1 to skip -
docked: Docked state (0=not docked, 1=docked), or -1 to skip
Returns:
-
ESP_OK: Command sent successfully -
ESP_ERR_INVALID_ARG: Invalid parameters -
ESP_FAIL: Not connected
Example:
// Report 80% battery, not docked
a2dpSinkHfpHf_send_iphoneaccev(8, 0);Send play command.
bool a2dpSinkHfpHf_avrc_play(void);Returns:
-
true: Command sent -
false: AVRC not connected
Send pause command.
bool a2dpSinkHfpHf_avrc_pause(void);Returns:
-
true: Command sent -
false: AVRC not connected
Skip to next track.
bool a2dpSinkHfpHf_avrc_next(void);Returns:
-
true: Command sent -
false: AVRC not connected
Skip to previous track.
bool a2dpSinkHfpHf_avrc_prev(void);Returns:
-
true: Command sent -
false: AVRC not connected
Get current track metadata.
const bt_avrc_metadata_t* a2dpSinkHfpHf_get_avrc_metadata(void);Returns:
- Pointer to metadata structure
-
NULL: No metadata available
Metadata Structure:
typedef struct {
char title[128];
char artist[128];
char album[128];
char genre[32];
bool valid;
} bt_avrc_metadata_t;Example:
const bt_avrc_metadata_t *metadata = a2dpSinkHfpHf_get_avrc_metadata();
if (metadata && metadata->valid) {
printf("Now Playing: %s - %s\n", metadata->artist, metadata->title);
}Check if Bluetooth device is connected.
bool a2dpSinkHfpHf_is_connected(void);Returns:
-
true: Device connected -
false: No device connected
Check if AVRC (remote control) is connected.
bool a2dpSinkHfpHf_is_avrc_connected(void);Returns:
-
true: AVRC connected -
false: AVRC not connected
Register callback for track metadata updates.
void a2dpSinkHfpHf_register_avrc_metadata_callback(bt_avrc_metadata_cb_t callback);Callback Signature:
void metadata_callback(const bt_avrc_metadata_t *metadata);Example:
void my_metadata_callback(const bt_avrc_metadata_t *metadata) {
if (metadata && metadata->valid) {
printf("Track: %s\n", metadata->title);
printf("Artist: %s\n", metadata->artist);
}
}
a2dpSinkHfpHf_register_avrc_metadata_callback(my_metadata_callback);Register callback for playback status changes.
void a2dpSinkHfpHf_register_avrc_playback_callback(bt_avrc_playback_status_cb_t callback);Callback Signature:
void playback_callback(const bt_avrc_playback_status_t *status);Status Structure:
typedef struct {
esp_avrc_playback_stat_t status; // STOPPED, PLAYING, PAUSED
} bt_avrc_playback_status_t;Register callback for volume changes.
void a2dpSinkHfpHf_register_avrc_volume_callback(bt_avrc_volume_cb_t callback);Callback Signature:
void volume_callback(uint8_t volume);Parameters:
-
volume: Volume level (0-127)