今天看来 A2DP 的例程, 由于之前没有接触过 经典蓝牙, 对AVRCP 的profile不熟悉。。
看到一点 关于 控制命令的, 发现没有音量控制的。 想加个音量控制的上去,
但是看到 这些命令的值 挺特别, 应该是profile 规定的~~~ 于是 去看AVRCP 的profile 找了半天 都没找到 这些命令的 值 如何规定~~~~
/// AVRC passthrough command code
typedef enum {
ESP_AVRC_PT_CMD_PLAY = 0x44, /*!< play */
ESP_AVRC_PT_CMD_STOP = 0x45, /*!< stop */
ESP_AVRC_PT_CMD_PAUSE = 0x46, /*!< pause */
ESP_AVRC_PT_CMD_FORWARD = 0x4B, /*!< forward */
ESP_AVRC_PT_CMD_BACKWARD = 0x4C, /*!< backward */
ESP_AVRC_PT_CMD_REWIND = 0x48, /*!< rewind */
ESP_AVRC_PT_CMD_FAST_FORWARD = 0x49 /*!< fast forward */
} esp_avrc_pt_cmd_t;
请各位熟悉AVRCP 的指点指点。
另外有个奇怪的问题, 我尝试将play 命令 的值 修改为0x40 ,编译后下载,发现这个命令还是有效~~~~
这就奇怪了, 如果这个值没有意义 为啥 又要定这样 特别的值呢?
离线
https://github.com/bluekitchen/btstack/blob/master/src/classic/avrcp.h
找到定义了:
AVRCP_OPERATION_ID_PLAY = 0x44, AVRCP_OPERATION_ID_STOP = 0x45, AVRCP_OPERATION_ID_PAUSE = 0x46, AVRCP_OPERATION_ID_REWIND = 0x48, AVRCP_OPERATION_ID_FAST_FORWARD = 0x49, AVRCP_OPERATION_ID_FORWARD = 0x4B, AVRCP_OPERATION_ID_BACKWARD = 0x4C, AVRCP_OPERATION_ID_UNDEFINED = 0xFF
看来这些值是不能随便改的, 看你是不是没有重新编译成功, 或者烧录有问题?
是啊, 我对比了其他方案的SDK ,发现其他家的 也是这样定义, 所以这个应该是profile 规定的!
但是看了一下午profile ,没找到这些命令 没有找到具体说明~~~
离线
https://www.silabs.com/documents/login/application-notes/AN986.pdf
Note:
Not all devices support all command code. For example, iOS devices do not support remote volume control
using 0x41, 0x42, or 0x43 commands. This is a limitation of iOS and not an iWRAP firmware problem.注意:
并非所有设备都支持所有命令代码。例如,iOS设备不支持远程音量控制
使用0x41,0x42或0x43命令。这是iOS的限制,而不是iWRAP固件问题。
今天强制 使用0x41 和0x42 这样的命令,发现 苹果5 播放音乐确实是不支持。
但我有一个疑问,那作为CT 设备 它本事应该支持, (在他不清楚TG 是否为IOS 设备情况 它应该支持才对,不然如果是安卓的手机来连接 它呢)?
离线