HCI command回复及event的格式

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
YaTr_3516311
Level 5
Level 5
25 sign-ins First solution authored 100 replies posted

Hi,

hci的命令的格式定义的很明确,是5个bytes的头+内容。那么对应的hci命令的回复的格式和event格式的定义呢

我这边测试了一下,命令的回复都是19 01 02 01 00 00,对吗

如何解析hci command命令的回复及对应的event

0 点赞
1 解答
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

请参考command status的event,这个event会返回命令的执行情况。

在原帖中查看解决方案

0 点赞
9 回复数
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

EVENT的格式和command是一样的,包头都是5个byte:19 xx xx xx xx

1. 第一个字节0x19为固定值

2. 第二个字节为event code,在WICED-HCI-Control-Protocol.pdf文档中,每个event介绍的operating code部分可以找到相应的值。例如,对于LE Connected Event,可以查到对应的operating code是0x05。在include/commen/hci_control_api.h中也可以找到相应的宏定义。

3. 第三个字节为group code,在WICED-HCI-Control-Protocol.pdf文档中Table 3-1中可以找到每个group对应的code,例如,LE对应的group code为0x01。在include/commen/hci_control_api.h有每个group的宏定义。

4. 第四和第五两个字节是长度,第四字节为low byte,第五字节为high byte。指的是纯数据的长度,不包含包头的五位。

请注意,WICED-HCI-Control-Protocol.pdf文档中列出的event并不全面,如果遇到找不到的,请到include/commen/hci_control_api.h中查看对应的说明。

你给出的19 01 02 01 00 00的event表示的是GATT group中的GATT Command Status的event。

0 点赞

event的格式明白了。hci命令的回复的格式呢?这些格式有什么相关的文档吗

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

不太明白你的问题,HCI Command的回复就是Event。你可以举个例子说明吗?

0 点赞

我理解的是hci command,hci command response,及对应的hci command event.

比如19 03 01 07 00 00 aa 55 44 33 22 11的命令发给模块,应该会有一条对应的这个命令的回复来表示这条命令是否设置成功(相关命令的ok或者err)?  然后如果成功的话,会有对应的event过来(比如说是connection up的event).

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

请参考command status的event,这个event会返回命令的执行情况。

0 点赞

参考哪里

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

WICED-Studio-6.2\Doc\WICED-HCI-Control-Protocol.pdf

0 点赞

我有个疑惑,以connect为例,

19 03 01 07 00 00 bb 55 44 33 22 11的命令发出去以后,有收到connected的event(19 05 01 0A 00 00 BB 55 44 33 22 11 01 00 00).但我怎么没有收到command status的回复?

1.应该是现有command status的回复再有connected的event过来。对吗?

2. command status的回复(正常执行的话)是19 01 01 00 00 00吗?

pastedImage_1.png

pastedImage_0.png

0 点赞
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

请查看一下代码中是否有发送回复的代码,下面是audio_gateway的BLE connect指令中的回复:

void hci_control_le_handle_connect_cmd( uint8_t addr_type, BD_ADDR addr )

{

    int                    i;

    wiced_bool_t status;

    /* Initiate the connection */

    STREAM_TO_BDADDR(hci_control_le_remote_bdaddr,addr);

    status = wiced_bt_gatt_le_connect( hci_control_le_remote_bdaddr, addr_type, BLE_CONN_MODE_HIGH_DUTY,WICED_TRUE );

    /* Start le connection timer */

    if ( status == WICED_TRUE )

        wiced_start_timer( &hci_control_le_connect_timer, LE_CONTROL_CONNECT_TIMEOUT );

    WICED_BT_TRACE( "wiced_bt_gatt_connect status %d, BDA %B, Addr Type %x\n",

                                          status, hci_control_le_remote_bdaddr, addr_type );

    hci_control_send_command_status_evt( HCI_CONTROL_GATT_EVENT_COMMAND_STATUS,

        status == WICED_TRUE ? HCI_CONTROL_STATUS_IN_PROGRESS : HCI_CONTROL_STATUS_FAILED);

}

0 点赞