Gamepad & WSN

蓝牙HCI根据OpCode计算OCF、OGF源代码

日期: 2013-05-14    作者: Gamepader    分类: Network    标签: , , ,     评论: 0    超过223人围观

最近在折腾蓝牙HCI接口,苦于没有人教,自己慢慢,终于能够通上信了(HCI_Reset命令执行成功)。
鉴于不清楚那一百多个蓝牙HCI指令具体用在什么环境,特地买了个USB蓝牙CSR4.0的模块来研究学习(算是下了大本钱了 :))。
用BUS Hound抓到的部分数据如下:

1
2
3
4
5
6
7
8
9
10
11
18.0 CTL 20 00 00 00 00 00 03 00 SEND HCI 5.1.0
18.0 OUT 03 0c 00 ... 5.2.0
18.1 IN 0e 04 01 03 0c 00 ...... 6.1.0
18.0 CTL 20 00 00 00 00 00 03 00 SEND HCI 7.1.0
18.0 OUT 05 10 00 ... 7.2.0
18.1 IN 0e 0b 01 05 10 00 36 01 40 0a 00 08 00 [email protected] 8.1.0
18.0 CTL 20 00 00 00 00 00 03 00 SEND HCI 9.1.0
18.0 OUT 01 10 00 ... 9.2.0
18.1 IN 0e 0c 01 01 10 00 06 bb 22 06 0a 00 bb 22 ........"...." 10.1.0
18.0 CTL 20 00 00 00 00 00 03 00 SEND HCI 11.1.0
18.0 OUT 02 10 00 ... 11.2.0

但是鉴于以下两点,不方便拆分具体的OCF和OGF。

    1.蓝牙HCI命令使用小端格式(Little-Endian)
    2.OGF占6 bits、OCF占10 bits。

想到用一个比较简单的数据结构来实现拆分:

1
2
3
4
5
6
7
8
typedef union _opcode_t_
{
    unsigned int opcod;
    struct {
        unsigned short ocf :10;
        unsigned short ogf :6;
    } op;
} opcode_t;

附上C++程序源代码如下(由于功能简单,代码相对简单,勿喷):
蓝牙HCI根据OpCode计算OCF、OGF源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio .h>

typedef union _opcode_t_
{
    unsigned int opcod;
    struct {
        unsigned short ocf :10;
        unsigned short ogf :6;
    } op;
} opcode_t;

opcode_t HCI_OpCode;
unsigned int HCI_OP;

void main(unsigned char argc, unsigned char argv[])
{
    unsigned int* tmp;
    tmp = &HCI_OpCode;
    HCI_OP = 0x1005;

    while(1)
    {
        printf("Input OpCode (In Big-Endian):0x");
        scanf("%x",&HCI_OP);
        if(HCI_OP == 0) break;
        *tmp = HCI_OP;
        printf("OpCode=0x%04X\t",HCI_OpCode.opcod);
        printf("OGF=0x%02X\t",HCI_OpCode.op.ogf);
        printf("OCF=0x%02X\r\n\r\n",HCI_OpCode.op.ocf);
    }
    printf("Thankyou for use,Code by Gamepader.com");
    getch();

    return;
}

附上运行效果图(其实没有什么效果):
HCIOpCode2运行效果图
源代码下载:CalcOpCode.c
编译好的源程序:CalcOpCode.exe
原创文章,欢迎转载,但请注明来源://blog.gamepader.com/archives/2013/05/the-bluetooth-hci-according-opcode-calculated-ocf-ogf-source-code.html

本文链接:https://blog.gamepader.com/archives/2013/05/the-bluetooth-hci-according-opcode-calculated-ocf-ogf-source-code.html
本文分类:
>>
除特别标注,本站所有文章均为原创、转载请注明出处。

-- EOF -- ,Leave a msg~~ ^_^

发表评论

loading...