Bluez HCI Commands

news2024/11/25 2:57:39

        在 lib/Hci.h 头文件中定义了很的我 HCI Commands,这些命令是分组的,每个组下面又提供了具体的命令,如:

 

其中

OGF 为 OpCode Group Flag,表明命令级别

OCF 为 OpCode Command Flag,表明要执行的命令

Hci.h 头文件里提供的命令级别一共有 8 个,分别为:

1,OGF_LINK_CTL        /* Link Control */

2,OGF_LINK_POLICY         /* Link Policy */

3,OGF_HOST_CTL        /* Host Controller and Baseband */

4,OGF_INFO_PARAM        /* Informational Parameters */

5,OGF_STATUS_PARAM        /* Status params */

6,OGF_TESTING_CMD        /* Testing commands */

7, OGF_LE_CTL        /* LE commands */

8, OGF_VENDOR_CMD        /* Vendor specific commands */

每组命令下提供了很多的具体的命令,可以详看Hci.h头文件。 可以从提供的命令看出 :

1,OGF_LINK_CTL  主要用于控制蓝牙设备的,如 查询、链接创建、链接断开等操作。

2,OGF_LINK_POLICY 主要用于控制蓝牙设备的模式或是角色,如读写模式、发现模式,主/从模式等。其他的可以自己看看了,当要向一个蓝牙设备发送指令时,则根据需要指定OGF和OCF,如链接函数:

int hci_create_connection(int dd, const bdaddr_t *bdaddr, uint16_t ptype,
				uint16_t clkoffset, uint8_t rswitch,
				uint16_t *handle, int to)
{
	evt_conn_complete rp;
	create_conn_cp cp;
	struct hci_request rq;

	memset(&cp, 0, sizeof(cp));
	bacpy(&cp.bdaddr, bdaddr);
	cp.pkt_type       = ptype;
	cp.pscan_rep_mode = 0x02;
	cp.clock_offset   = clkoffset;
	cp.role_switch    = rswitch;

	memset(&rq, 0, sizeof(rq));
	rq.ogf    = OGF_LINK_CTL;
	rq.ocf    = OCF_CREATE_CONN;
	rq.event  = EVT_CONN_COMPLETE;
	rq.cparam = &cp;
	rq.clen   = CREATE_CONN_CP_SIZE;
	rq.rparam = &rp;
	rq.rlen   = EVT_CONN_COMPLETE_SIZE;

	if (hci_send_req(dd, &rq, to) < 0)
		return -1;

	if (rp.status) {
		errno = EIO;
		return -1;
	}

	*handle = rp.handle;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泰迪智能科技基于产业技能生态链学生学徒制的双创工作室--促进学生高质量就业

据悉&#xff0c;6月28日&#xff0c;广东省人力资源和社会保障厅在广东岭南现代技师学院举行广东省“产教评”技能生态链建设对接活动。该活动以“新培养、新就业、新动能”为主题&#xff0c;总结推广“产教评”技能人才培养新模式&#xff0c;推行“岗位培养”学徒就业新形式…

【无标题】用Javascript编写魔方程序(详解)2023-7-4

第一步&#xff0c;先初始化魔方&#xff0c;如上图&#xff0c;可以很直观的看到魔方的6个面。直接贴代码 <!doctype html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initia…

微信小程序之Image那些事

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、使用场景二、使用方式1.动态读取image大小2.动态设置style3.动态赋值 总结 前言 小程序中 Image使用频率是非常高的 不同场景下 Image使用的属性也不一样 …

中级保育员专业知识卫生管理考试题库及答案

本题库是根据最新考试大纲要求&#xff0c;结合近年来考试真题的重难点进行汇编整理组成的全真模拟试题&#xff0c;考生们可以进行专项训练&#xff0c;查漏补缺巩固知识点。本题库对热点考题和重难点题目都进行了仔细的整理和编辑&#xff0c;相信考生在经过了针对性的刷题练…

【Redisson】Redisson--话题(订阅分发)

Redisson系列文章&#xff1a; 【Redisson】Redisson–基础入门【Redisson】Redisson–布隆(Bloom Filter)过滤器【Redisson】Redisson–分布式锁的使用&#xff08;推荐使用&#xff09;【分布式锁】Redisson分布式锁底层原理【Redisson】Redisson–限流器、【Redisson】Redi…

你知道ai绘画以图生图软件怎么使用吗?

小美&#xff1a;嗨&#xff0c;张华&#xff0c;你听说过这个令人难以置信的新技术“以图生图ai绘画”吗&#xff1f;它简直让人惊叹&#xff01; 张华&#xff1a;没有&#xff0c;我还没有听说过。什么是以图生图ai绘画&#xff1f; 小美&#xff1a;你看这些美丽的照片&a…

Apikit 自学日记:创建自动化测试项目

在API 自动化测试中&#xff0c;所有的测试用例都是以项目维度来进行管理&#xff0c;一个自动化测试项目可以从多个API文档项目中引用API信息来创建API测试用例。 点击左侧菜单栏&#xff0c;进入 API自动化测试 项目列表页&#xff0c;点击添加按钮&#xff1a; 在弹窗中输入…

六大排序——(插入、希尔、选择、交换、归并、计数)

目录 一、插入排序 二、希尔排序 三、选择排序 1&#xff09;直接选择排序&#xff1a; 2&#xff09;堆排序 四、交换排序 1&#xff09;冒泡排序 2&#xff09;快速排序 1、Hoare版 2、挖坑法 3、前后指针 快排优化 快速排序非递归来实现 快排总结 五、归并排…

Spring整合Junit单元测试

1.Spring整合Junit单元测试 1.1 原始Junit测试Spring的问题 在测试类中&#xff0c;每个测试方法都有以下两行代码&#xff1a; ApplicationContext ac new ClassPathXmlApplicationContext("application.xml");BookDao bookDao (BookDao)ac.getBean("bookDa…

环二肽试剂:Cyclo(D-Tyr-D-Phe),对A549细胞具有抗tumor活性

英文名称&#xff1a;Cyclo(D-Tyr-D-Phe)产品结构式&#xff1a; 产品规格&#xff1a; 1.CAS号&#xff1a;N/A 2.分子式&#xff1a;C18H18N2O3 3.分子量&#xff1a;310.35 4.包装规格&#xff1a;1g、5g、10g&#xff0c;包装灵活 5.外观颜色&#xff1a;固体/粉末 6.溶解条…

【⑩MySQL】:表管理,让数据管理不再困难

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL表/数据库创建和管理的讲解✨ 目录 前言1. 基础知识2. 创建和管理数据库3.创建表4. 修改表5. 删除表6.总结 1. 基础知识 ✨1.1 表的基本概念 在MySQL数据库中&#xff0c;表是一种很重要的数据库对象&#xf…

酷炫音乐盒: 使用Python和Tkinter打造自己的音乐播放器

前言 Python的Tkinter&#xff08;Tk接口&#xff09;是一个用于创建图形用户界面&#xff08;GUI&#xff09;的标准库。它是Python的内置模块&#xff0c;无需额外安装即可使用。Tkinter提供了一组部件&#xff08;如按钮、标签、文本框等&#xff09;和布局管理器&#xff…

ROS学习——运行管理

ROS是多进程(节点)的分布式框架&#xff0c;一个完整的ROS系统实现&#xff1a; 可能包含多台主机&#xff1b; 每台主机上又有多个工作空间(workspace)&#xff1b; 每个的工作空间中又包含多个功能包(package)&#xff1b; 每个功能包又包含多个节点(Node)&#xff0c;不同的…

MyBatis—操作数据库

MyBatis &#x1f50e;前置铺垫创建数据库MyBatis 的执行流程创建对应流程 &#x1f50e;MyBatis—查询查询用户信息执行流程创建实体类创建 Interface 与 xml在 xml 中编写 SQL 语句模拟执行流程 &#x1f50e;单元测试定义优点执行单元测试引入依赖生成单元测试编写代码Asser…

优思学院|制造不良品是品质成本意识的问题吗?

制造的最大错误&#xff0c;就是制造出不良品或者不适合的物品。 谁都知道制造出这类“不良品”会使成本增加&#xff0c;但是到底会增加什么成本&#xff0c;可能就不是人人 都清楚。 若是不小心制造出不适合品&#xff0c;浪费的成本除了该物品的材料费、加工人力的费用、设…

VR电力安全警示教育:身临其境体验事故伤害

VR电力安全警示教育由广州华锐互动开发&#xff0c;是一种利用虚拟现实技术模拟电厂安全事故的应用程序。该应用程序通过模拟真实的场景和情境&#xff0c;让用户身临其境地体验VR电力安全警示教育的过程&#xff0c;从而提高用户的安全意识和应对能力。 在VR电力安全警示教育中…

Linux下获取另外一个程序的标准输出和标准错误输出的一种实现方式

问题&#xff1a;一个程序如何获取另外一个程序的标准输出和标准错误输出&#xff1f; 标准输入&#xff0c;标准输出&#xff0c;标准错误输出是一个程序的基本组成&#xff0c;在Linux下一个程序调用另外一个程序&#xff0c;如何获取其标准输出和错误输出呢&#xff1f; 分析…

专用开发工具和环境在嵌入式系统开发中的重要性

嵌入式系统是一种特殊类型的计算机系统&#xff0c;其设计和开发用于控制特定设备或执行特定任务。以下是嵌入式系统的一些特点以及与其开发相关的专用工具和环境&#xff1a; 特定目标&#xff1a;嵌入式系统通常被设计用于执行特定的任务或控制特定的设备。它们被定制以满足特…

开发一款财经直播系统需要注意的方面

数据保护与隐私&#xff1a;确保用户的个人信息和交易数据得到有效的保护&#xff0c;遵守相关的数据保护法规。采用高级加密技术来保护用户的敏感信息&#xff0c;并建立安全的存储和传输机制。 信息真实性&#xff1a;提供准确、可信的财经信息&#xff0c;确保平台上发布…

【Jenkins】Jenkins构建后端流水线

目录 一、新建任务1、输入任务名称&#xff0c;选择构建项目类型&#xff08;这里我选择的是Maven项目&#xff09;&#xff0c;任务名称一般格式为&#xff1a;项目名称-前后端2、创建成功后的结果 二、配置流水线1、进入刚创建好的任务页面中&#xff0c;点击配置2、General配…