精华内容
下载资源
问答
  •  windows下寻找远端蓝牙设备,从最开始的inquiry寻找设备,到连接设备,到最后配对完成,整个HCI层所发的command和event以及Data包可以反应整个蓝牙的inquiry,pair等原理和过程。这篇笔记就是分析这个过程,结合...
    一.概述
    
       在windows下寻找远端蓝牙设备,从最开始的inquiry寻找设备,到连接设备,到最后配对完成,整个HCI层所发的command和event以及Data包可以反应整个蓝牙的inquiry,pair等原理和过程。这篇笔记就是分析这个过程,结合Spec的具体描述,以此熟悉蓝牙的配对流程。

    二.Inquiry流程
       这个流程主要是inquiry远端的蓝牙设备,不进行连接,只进行发现。

    1.Write_Inquiry_Transmit_Power_Level command
    01011001 00001100 00000001 00000000
    可以看出首先是设置inquiry的发射功率。
    OpCode为0x0c59
    total_lenrth为0x01
    发射功率为0x00db
    command completed event:
    00001110 00000100 00000010 01011001 00001100 00000000
    这个event有三个parameters:Num_HCI_Command_Packets,Command_Opcode和Return_Parameters
    EventCode为0x0e,
    total_length为0x04
    Number HCI Command Packets: 2
    OpCode为0x0c59
    status为0,表示设置成成功。

    2.Inquiry command event
        设置完inquiry的Tx Power后,就可以进行inquiry了。Inquiry的三个参数为LAP, Inquiry_Length和
    Num_Responses
    00000001 00000100 00000101 00110011 10001011 10011110 00000011 00000000
    OpCode:0x0401 
    Total_length:0x05
    LAP:00110011 10001011 10011110(GIAC)  //这是通用的呼叫的LAP为0x9e8b33
    Inquiry Length (sec): 0x03 //3 * 1.28 sec 总的inquiry时间
    Num_Responses:0x00  //0x00表示在inquiry时间结束前不限制response的数量
    command status event: 
    //注意这里没有返回command completed events,表示inquiry的过程正在进行,结束应该用Inquiry Complete event
    00001111 00000100 00000000 00000010 00000001 00000100
    这个event有三个parameters:Status, Num_HCI_Command_Packets, Command_Opcode
    EventCode:0x0F
    totalLength:0x04
    status:0x00
    Num_HCI_Command_Packets:0x02
    Command_Opcode:0x0401
    表示inquiry的command执行成功

    3.奇怪的command completed event
       Spec上指出在inquiry的过程中不会有command completed event产生,但FTS抓到两个command completed event,但是这连两个event的OpCode无效,这里不知道为什么,猜测被Host忽略掉了。
    在HCI层看从inquiry的整个过程

    4.Inquiry Result with RSSI event  
       之后就是所有接收到inquiry的设备返回inquiry的结果,event为Inquiry Result with RSSI。以下是其中的一个:
    该Event的参数为:
    Num_responses,
    BD_ADDR[i],
    Page_Scan_Repetition_Mode[i],
    Reserved[i],
    Class_of_Device[i],
    Clock_Offset[i],
    RSSI[i]
    00100010 00001111 00000001 01100100 01110110 01011000 00001101 10110111 10011100 00000001 00000010 00000100 00000001 00000010 11010010 01010000 10110010
    EventCode:0x0F:0x22
    totalLength:0x0F = 15
    Num_responses:0x01
    BD_ADDR[i] = 01100100 01110110 01011000 00001101 10110111 10011100 = 0x9c-b7-0d-58-76-64
    Page_Scan_Repetition_Mode[i] = 00000001 = 0x01(R1)
    Reserved[i] = 00000010 = 0x02  //保留
    Class_of_Device[i] = 00000100 00000001 00000010 = 0x020104  //Computer,Handheld PC
    Clock_Offset[i]:11010010 01010000 = 0x50d2
    RSSI[i] = 10110010 = 0xb2(-78db)
    以上反应了这个搜索到的设备的相关信息

    5.Extended Inquiry Result event
       紧跟在Inquiry Result with RSSI event后,可能有多个。这个event反应的设备的额外信息,例如设备名称。相比于Inquiry Result with RSSI event多了一个Extended_Inquiry_Response部分。如:
    00101111 11111111 00000001 01110000 01010001 01000110 10000011 00010101 00000000 00000001 00000000 00000100 00000001 10111110 00101000 01110110 10110110 00001011 00001001 01010100 01010010 01001001 01010011 01010100 01000001 01001110 00101101 01010000 01000011 00000010 00001010 00000100 00000000 00000000 00000000 00000000 00000000 00000000 ........ 00000000
    EventCode:0x0F:0x2F
    totalLength:0xFF = 255  //减去15个字节剩下240个Extended Inquiry Response部分
    在HCI层看从inquiry的整个过程
    Num_responses:0x01
    BD_ADDR[i] = 01110000 01010001 01000110 10000011 00010101 00000000 = 0x00-15-83-46-51-70
    Page_Scan_Repetition_Mode[i] = 00000001 = 0x01(R1)
    Reserved[i] = 00000000 = 0x00  //保留
    Class_of_Device[i] 00000100 00000001 10111110 = 0xbe0104   //Computer,Handheld PC
    Clock_Offset[i]:00101000 01110110 = 0x7628
    RSSI[i] = 10110110 = 0xb6
    以下是拓展部分:
    Length:0x00001011 = 0x0b = 11
    EIR Data Type:00001001 = 0x09(Complete Local Name)
    EIR Data:01010100 01010010 01001001 01010011 01010100 01000001 01001110 00101101 01010000 01000011 00000010 00001010 00000100 00000000
    转换成ascii即为:TRISTAN-PC
    奇怪的是在这个名称后面有几个无法识别的字符:
    在HCI层看从inquiry的整个过程
    猜测可能是指明名称的结束,收到event端的设备忽略即可吧,或者名称很奇怪?
        可能有一系列的Extended Inquiry Result event,反映了不同的设备在响应主机的搜索。

    6.inquiry completed event 
       这个event表示已经完成了整个的inquiry的过程。只有一个参数Status。如下:
    00000001 00000001 00000000
    event code:0x01
    totalLength:0x01
    status:0x00 成功
       奇怪的是在这条event之后又产生了command completed event,和3中的情况一样,OpCode是不可识别的。。。

    三.总结
      以上是整个inquiry过程产生的command和event。首先通过Write_Inquiry_Transmit_Power_Level command设置inquiry的发射功率,然后通过inquiry command寻找设备,Inquiry Result with RSSI event返回设备的相关信息,包括蓝牙地址,class device等;Extended Inquiry Result event返回设别的额外信息,在这里是设备的名称;在inquiry length到达后,产生inquiry completed event表示inquiry整个过程的结束。
       需要注意的是,返回的inquiry result可能是多个的,至于command completed event的产生,很是奇怪,Spec上指出inquiry的过程不会产生command completed event的,而且这些event里的OpCode部分是不可识别的,猜测Host会忽略这些没有作用的command completed event。
    展开全文
  • 经典蓝牙inquiryinquiry scan

    千次阅读 2018-12-28 11:59:00
    1、Inquiry命令 让蓝牙芯片进入发现周围蓝牙设备模式,它...最后一个参数表示停止发现设备前返回最大设备响应数。 1.1 Inquiry 模式 Inquiry模式有3种,主要区别是返回值不一样。 第一种模式:标准...

    1、Inquiry命令

    蓝牙芯片进入发现周围蓝牙设备的模式,它的返回值是周围蓝牙设备的信号。

    输入的参数有如下三个:一个是LAP(暂时没有弄明白),一个是Inquiry长度表示发现多久单位是1.28秒,最长是61.44秒,

    最后一个参数表示在停止发现设备前返回最大设备的响应数。

    1.1 Inquiry 模式

    Inquiry模式有3种,主要区别是返回值不一样。

    第一种模式:标准返回格式,Standard Inquiry Result event format

    第二种模式:查询结果返回带有RSSI格式,Inquiry Result format with RSSI

    第三种模式:查询结果带有RSSI的格式或者额外的查询结果格式,Inquiry Result with RSSI format or Extended Inquiry Result format。

    Extended Inquiry Result format:除了带有RSSI,可能带有设备名字之类的信息。

     

    2、Inquiry scan

    作用:蓝牙设备开启inquiry scan模式,才能够被别的蓝牙设备搜索到。

    其他设备发起inquiry命令,周围的蓝牙设备开启inquiry scan功能后,才能被搜索到。

    Inquiry scan有三个相关参数

    2.1 INQUIRY SCAN INTERVAL(查询扫描间隔)

    这个参数表示蓝牙间隔多久进行一次查询扫描。

    这个值得范围是:

    Time Range: 11.25 to 2560 ms
    Time Default: 2.56 s

    2.2 INQUIRY SCAN WINDOW

    这个参数表示蓝牙进行Inquiry Scan时持续的时间,这个值必须小于等于Inquiry Scan Interval的值。

    Time Range: 10.625 ms to 2560 ms
    Time Default: 11.25 ms


    2.3 Inquiry Scan type

    设置查询扫描的类型

     

     

     

     

     

     

     

    展开全文
  • 前面讲了使用 ioctl发送HCI Command方法。但HCI protocol还有一些Command,比如Inquiry等,他们则不需要使用...应用程序中: hci_inquiry(dev_id, length, num_rsp, NULL, &info, flags); 这样需要包含blueZ 头文
    前面讲了使用 ioctl发送HCI Command的方法。但HCI protocol还有一些Command,比如Inquiry等,他们则不需要使用ioctl来发送。blueZ 直接提供了支持,虽然他们的最终都是用同样办法实现的。

    在应用程序中:
    hci_inquiry(dev_id, length, num_rsp, NULL, &info, flags);
    这样需要包含blueZ 头文件如下:
    #include //BTPROTO_HCI
    #include //struct hci_dev_info
    #include //hci_devid()
    #include //l2cap
    #include //hidp

    hci_inquiry()的实现在 bluez-lib-xxx/lib/src/hci.c中。
    哈哈,发现其实最终也是使用:
    ioctl(dd, HCIINQUIRY, (unsigned long) buf);
    这样,其实就和上一篇对应起来了。所有HCI Command最终都使用ioctl来发送。
    展开全文
  • Integer Inquiry

    2014-02-02 13:55:52
    过年后就自己开始想做题了,可是题目是英文,还是不太理解题意,就不用说是自己做了,所以会先网上自己把答案搜出来,然后再去理解,所以先开始处于原来状态了。看到题目时候根本想不到主要考虑是什么,...

    过年后就自己开始想做题了,可是题目是英文,还是不太理解题意,就不用说是自己做了,所以会先在网上自己把答案搜出来,然后再去理解,所以先在开始处于原来的状态了。看到题目的时候根本想不到主要考虑的是什么,看到答案后有时候还是不理解。

    Integer Inquiry

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K(Java/Other)

    Total Submission(s) : 7   Accepted Submission(s) : 2

    Font: Times NewRoman | Verdana | Georgia

    Font Size: ← →

    Problem Description

    One of the first users of BIT's new supercomputer wasChip Diller. He extended his exploration of powers of 3 to go from 0 to 333 andhe explored taking various sums of those numbers.
    ``This supercomputer is great,'' remarked Chip. ``I only wish Timothy were hereto see these results.'' (Chip moved to a new apartment, once one becameavailable on the third floor of the Lemon Sky apartments on Third Street.)

    Input

    The input will consist of at most 100 lines of text,each of which contains a single VeryLongInteger. Each VeryLongInteger will be100 or fewer characters in length, and will only contain digits (noVeryLongInteger will be negative).

    The final input line will contain a single zero on a line by itself.

    Output

    Your program should output the sum of theVeryLongIntegers given in the input.


    This problem contains multiple test cases!

    The first line of a multiple input is an integer N, then a blank line followedby N input blocks. Each input block is in the format indicated in the problemdescription. There is a blank line between input blocks.

    The output format consists of N output blocks. There is a blank line betweenoutput blocks.

    Sample Input

    1

     

     

    123456789012345678901234567890

    123456789012345678901234567890

    123456789012345678901234567890

    0

    Sample Output

    370370367037037036703703703670

    这个题主要解决的是:首先是把输入的数的位数相同,若不同前面补0

    #include<stdio.h>

    #include<string>

    #include<iostream>

    usingnamespace std;

     

    //高精度加法

    //只能是两个正数相加

    stringadd(string str1,string str2)//高精度加法

    {

        string str;

     

        int len1=str1.length();

        int len2=str2.length();

        //前面补0,弄成长度相同

        if(len1<len2)

        {

            for(int i=1;i<=len2-len1;i++)

               str1="0"+str1;

        }

        else

        {

           for(int i=1;i<=len1-len2;i++)

               str2="0"+str2;

        }

        len1=str1.length();

        int cf=0;

        int temp;

        for(int i=len1-1;i>=0;i--)

        {

            temp=str1[i]-'0'+str2[i]-'0'+cf;

            cf=temp/10;

            temp%=10;

            str=char(temp+'0')+str;

        }

        if(cf!=0) str=char(cf+'0')+str;

        return str;

    }

     

     

    intmain()

    {

        int T;

        scanf("%d",&T);

        while(T--)

        {

            string sum="0";

            string str1;

            while(cin>>str1)

            {

                if(str1=="0")break;

                sum=add(sum,str1);

            }

            cout<<sum<<endl;

            if(T>0)cout<<endl;

        }

    return 0;

    }

     

    展开全文
  • 前面讲了使用 ioctl发送HCI Command方法... 应用程序中: hci_inquiry(dev_id, length, num_rsp, NULL, &info, flags); 这样需要包含blueZ 头文件如下: #include //BTPROTO_HCI #i
  • Inquiry-源码

    2021-03-06 20:44:42
    开发模式下使用Nuxt.js开发中启动ExpressJS服务器(热重载)。 收听 。 npm运行构建 生成用于生产nuxt.js Web应用程序。 npm开始 生产中启动ExpressJS服务器。 例子 文献资料 执照
  • 打开蓝牙开关,连接一个之前连接过设备(该设备不在Inquiry的范围内),尝试连接,时间过长。 操作步骤: a. 打开蓝牙,连接一个耳机设备 b. 关闭蓝牙,关闭耳机 c. 再打开蓝牙,自动连接耳机(设备已关闭),Time...
  • 在上一篇文章中,我们详细分析了android是如何解析蓝牙反馈上来搜索到设备信息,本文将会继续分析这些信息到了上层之后是如何处理。 8、inquiry result引起...jni层收到这个signal之后,会调用java层o...
  • 查询命令(INQUIRY)请求获取UFI设备参数信息。他被用作主机上驱动器访问FUI设备配置,特别是接通电源和硬件复位之后使用。命令内容如下表: 位 字节 7 6 5 4 3...
  • 在上一篇文章中,我们详细分析了android是如何解析蓝牙反馈上来搜索到设备信息,本文将会继续分析这些信息到了上层之后是如何处理。 8、inquiry result引起...jni层收到这个signal之后,会调用java层onDev
  • 本文晓东将会和大家一起来看看inquiry command格式,以及发出这个command后会产生哪些影响。 4、inquiry cmd格式分析。  蓝牙core spec中明确定义了inquirycmd格式已经返回event。我们来具体看看: ...
  • 一 如何CL程序自动回复询问类消息(Inquiry Message) AS/400系统开发中,经 常要与各种各样消息打交道。有一类叫“Escape Message”消息,是当程序出现错误后,会强迫程序异常结束,并告诉错误类型和原因。...
  • 玩了半天,四个软件中终于选择了网博士。并提供以下改进建议。...3) MetaProducts Inquiry(没找到1.8R2破解,郁闷),试用了一下,有些图标出不来,截CNBETA.COM时,评论根本截不到。 4) 网博士基本上该...
  • UVA - 424 Integer Inquiry

    2016-08-20 01:46:05
    UVA - 424 Integer Inquiry题目大意:很好理解,高精度数字求和。解题思路:先读入所有数字,再将所有数字右对齐,之后对应位相加,最后余数存入 res 数组。想得是很简单。 刚发现没有右对齐必要,直接倒过来...
  • HDU-1047-Integer Inquiry

    2020-04-08 21:37:31
    最近练习数论题目~ 这是一道大数加法问题~ 题目大意:就是首先给你一个t.有多少组测数据。每组测试数据以0结束。 输出格式限定:每组测试数据输出中间有空行。最后一组输出数据末尾没有空行。这个注意就好啦...
  • setting 界面开始搜索时候,通常也会同时进行le scan,这一点在inquiry流程之命令下发中已经讲述。此篇文章主要是分析一下对于controller 搜索到广播包处理。这里以Android Obluedroid代码作为分析对象。 ...
  • Android 上面蓝牙inquiry设置界面,打开蓝牙就会自动搜索周边蓝牙设备,其最终调用到协议栈start_discovery接口,此篇文章分析该接口调用流程以及与controller交互过程。 static int start_...
  • StackStorm介绍 StackStorm是一个... Inquiry 自动化任务执行过程中,往往会需要等待确认步骤,比如需要人工审核,需要外部系统确认。为此StackStorm提供一种Action交互机制Inquiry,通过执行core.as...
  • zoj 1292 Integer Inquiry

    2019-09-29 23:49:38
    一道简单大整数加法题,让我做了整整一晚上,无语~~太马虎了,题目中说每个数长度小于等于100,但和不一定小于100啊,唉~·我就了这上面~~ 代码: 1 #include<stdio.h> 2 #include<stdlib.h&...
  • POJ 1503 Integer Inquiry

    2018-05-24 18:29:00
    题意:给你至多100行超大整数,以0结束输入,要求你求出...2、把每次读入字符串长度存放0号元素中(sum[i][0])。 3、将所有大整数和存放0号字符串中(sum[0])。 4、从0号字符串最大处向前寻找第一个不为0...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 244
精华内容 97
关键字:

在的inquiry