首页 > 系统相关 >linux bluez编程学习「1」

linux bluez编程学习「1」

时间:2023-07-18 18:12:31浏览次数:38  
标签:int 编程 uint8 dev bluez linux hci id 设备

之前搭建好了环境并且实现了一个简单的demo,这次多学习几个hci层函数并进行运用

hci层函数可以见 usr/includde/bluetooth/hci_lib.h中

1.开启与关闭设备

int hci_open_dev(int dev_id);
int hci_close_dev(int dd);

hci_open_dev会使用socket()创建一个AF_BLUETOOTH域的套接字描述符,并与指定的本地设备绑定,这样就可以用通过创建的描述符操作该设备

dev_id  :打开的本地设备的设备ID

Returns :创建的套接字描述符,小于0则创建失败

hci_close_dev关闭套接字描述符

套接口(Sockets),通讯术语,通讯的基石是套接口,一个套接口是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接口都有它的类型和与其相关的进程。

 

2.获取设备id

int hci_get_route(bdaddr_t *bdaddr)

根据其bdaddr得到相应的设备id

*如果 bdaddr 为 NULL,则返回第一可用设备的ID 

*返回值小于0获取失败

bdaddr:蓝牙设备地址。每个蓝牙收发器被分配了唯一的一个48位的设备地址,该地址包括24位的LAP 域,16位的 NAP 域和一个8位的UAP 域。

3.发送hci cmd指令

int hci_send_cmd(int dd, uint16_t ogf, uint16_t ocf, uint8_t plen, void *param);

每个HCI命令被分配一个2字节的OpCode,用于唯一地标识不同类型的命令。OpCode参数分为两个字段,称为OpCode组字段(OGF)和OpCode命令字段(OCF),其具体参数可在hci.h中看到

plen 长度

*param 参数

4.设备扫描使能

int hci_le_set_scan_enable(int dev_id, uint8_t enable, uint8_t filter_dup, int to);

dev_id 设备id

enable 使能 1为开启

filter_dup 过滤(具体参数还没找到)

to 超时时间

5.

int hci_le_set_scan_parameters(int dev_id, uint8_t type, uint16_t interval,
                    uint16_t window, uint8_t own_type,
                    uint8_t filter, int to);

设置扫描参数

 

其他问题

1.管理员权限通过vscode打开文件 

 解决办法:改用

code --no-sandbox --user-data-dir

或修改别名为vscode

alias vscode code --no-sandbox --user-data-dir

或直接修改文件权限然后code打开

chmod 777 文件名

 

标签:int,编程,uint8,dev,bluez,linux,hci,id,设备
From: https://www.cnblogs.com/foorun/p/17556485.html

相关文章

  • linux 部署chat-GPT
    1.安装docker和docker-composecurl-fsSLhttps://get.docker.com|bash-sdockersystemctlstartdockersystemctlenabledockercurl-Lhttps://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64>/usr/local/bin/docker-compos......
  • linux常用命令
    1.ps-ef|grep jarps命令的作用是显示进程信息的;|符号,是个管道符号,表示ps和grep命令同时执行;grep命令是查找(GlobalRegularExpressionPrint),能使用正则表达式搜索文本,然后把匹配的行显示出来;ps命令有一些参数:-e:显示所有进程-f:全格式-h:不显示标题-l:长......
  • Linux基础第二章
    一、Linux基础命令二1.cat显示命令cat:显示文件内容选项效果-n显示行号包括空行-b跳过空白行编号-s将所有的连续的多个空行替换为一个空行(压缩成一个空行)-A显示隐藏字符 cat   选项   文件路径cat 选项  test.txt打开test.txt也可以同时打开多个......
  • 深入理解 Socket 编程:网络通信的基石
    深入理解Socket编程:网络通信的基石引言在现代计算机网络中,网络通信是各种应用程序之间进行数据交换和信息传输的基础。Socket编程是实现网络通信的关键组件之一,它提供了一种方便而强大的方式,使得应用程序能够在不同计算机之间进行数据传输。本文将深入探讨Socket编程的基本......
  • Linux下查看某个进程占用资源情况
    方式一先查询指定进程的PIDps-ef|grep进程名top-pPID方式二直接使用ps查询指定进程名或PIDps-aux|grep进程名/PID查看更详细的信息cat/proc/指定的PID/status查看所有进程可用top按用户查看top-u用户名......
  • linux中nginx下载安装部署
    反向代理动静结合负载均衡官网下载稳定版解压tar-zxvfnginx-1.24.0.tar.gz安装nginx的相关依赖yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel进入解压后的nginx-1.20.2目录cdnginx-1.20.2目录执行configure脚本,设置安装nginx的初始化......
  • Linux SCL
    SoftwareCollections(SCLs):Linux软件多版本共存的解决方案,适用于RHEL/CentOS/Fedora.不修改已安装的软件版本,也不会与其产生冲突。 1.首先安装SCL工具和SCL软件源yuminstallscl-utilsyuminstallcentos-release-scl2.然后安装devtoolset-7yuminstalldevto......
  • C++ 网络编程 asio 使用总结
    概述Asio是一个用于网络和低级I/O编程的跨平台C++库,它使用现代C++方法为开发人员提供一致的异步模型.io_contextio_context类为异步I/O对象的用户提供了核心I/O功能,包含:asio::ip::tcp::socketasio::ip::tcp::acceptorasio::ip::udp::socketasio::deadline_timer......
  • 用 Golang 从0到1实现一个高性能的 Worker Pool(一) - 每天5分钟玩转 GPT 编程系列(3)
    目录1.概述2.设计2.1让GPT-4给出功能点2.2自己总结需求,再给GPT派活3.实现3.1你先随意发挥3.2你得让Worker跑起来呀3.3你说说Pool满了怎么办3.4你得把UT给我加上3.5你再给我把文档补上4.总结1.概述话说,早几天一口气过了一遍Golang的并发机制:跟着GPT-4......
  • Linux系统ORACLE重启命令
    如下:一、在Linux下重启Oracle数据库及监听器:1.以oracle身份登录数据库,命令:su-oracle2.进入Sqlplus控制台,命令:sqlplus/nolog3.以系统管理员登录,命令:connect/assysdba4.启动数据库,命令:startup如果是关闭数据库,命令:shutdownimmediate5.退出sqlplus控制台,命令:exit......