ESP32 蓝牙耳机

第11章 ESP32 蓝牙耳机html

 

概述api

    本文为ESP32 学习,蓝牙耳机,更多学习目录请查阅ESP32学习目录
app

11.1 基本概念

    须要知道几个概念,A2DP(Advance Audio Distribution Profile)蓝牙立体声音频传输规范,AVRCP(Audio Video Remote Control Profile)音频/视频远程控制配置文件,具体请参考维基百科。框架

    暂时只是简单的理解,后续更新...ide

11.2 功能分析

    目前ESP32支持蓝牙功能有...函数

11.3 代码分析

    针对于用户主要有以下几个文件须要仔细分析学习

"bt.h"
"bt_app_core.c.h"
"bt_app_av.c.h"
"esp_bt_main.c.h"
"esp_bt_device.c.h"
"esp_gap_bt_api.c.h"
"esp_a2dp_api.c.h"
"esp_avrc_api.c.h"
main.c.hspa

11.3.1调用关系:orm

    暂时么有能力彻底搞懂每一个函数调用关系。视频

11.3.2使用方法:

A.初始化全部必要模块(参考ESP32_DEMO),链接部分ESP32本身的协议栈负责(经过log观察部分处理逻辑)
(感受像是 bt_app_core 系统框架,那么handler和device在哪里?)
init
{
nvs_flash_init();// 存储哪些数据呢?
esp_bt_controller_init();
esp_bt_controller_enable();
esp_bluedroid_init();
esp_bluedroid_enable();
}
task_start
{
bt_app_task_start_up();

// 经过回调,调用下device name ,connection and profile.
bt_app_work_dispatch(bt_av_hdl_stack_evt, BT_APP_EVT_STACK_UP, NULL, 0, NULL);
}
bluetooth device name, connection mode and profile set up
{
esp_bt_dev_set_device_name(dev_name);

/* initialize A2DP sink */
esp_a2d_register_callback(&bt_app_a2d_cb);
esp_a2d_register_data_callback(bt_app_a2d_data_cb);
esp_a2d_sink_init();

/* initialize AVRCP controller */
esp_avrc_ct_init();
esp_avrc_ct_register_callback(bt_app_rc_ct_cb);

/* set discoverable and connectable mode, wait to be connected */
esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
}

B.对接收到的数据进行处理(接收的数据暂时人为都是音频的数据,直接将数据播放就能够了)
在bt_app_av.c文件中回调bt_app_a2d_data_cb处理接收到的音频,若是加上播放驱动,在这里加入就能够了。

C.接收手机发送过来的音乐、和控制手机上一首(下一首、暂停、播放、中止)经过调用 esp_avrc_api.c.h 中的esp_avrc_ct_send_passthrough_cmd(...)(里面有req_id每次都须要改变,CMD根据须要来发送,按键部分还没肯定)

相关文章
相关标签/搜索