zoukankan      html  css  js  c++  java
  • ESP32 蓝牙耳机

    第11章 ESP32 蓝牙耳机

    概述

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

    11.1 基本概念

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

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

    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.h

    11.3.1调用关系:

        暂时么有能力完全搞懂每个函数调用关系。

    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根据需要来发送,按键部分还没确定)

  • 相关阅读:
    nginx构建https
    安装mysql的遇到的问题
    docker mysql 2059
    centos7 安装chrome
    谷歌浏览器启动参数
    php-webdriver:PHP控制浏览器动作, php web驱动, PHP实现自动化, php webdriver 教程, A php client for webdriver.
    nginx转发
    nginx变量与实列
    mysql 语句
    frp 内网穿透配置
  • 原文地址:https://www.cnblogs.com/mrsandstorm/p/7987502.html
Copyright © 2011-2022 走看看