第16节_BLE协议GAP层】的更多相关文章

学习资料:官方手册 Vol 3: Core System Package [Host volume] Part C: Generic Access Profile 下面这个图是BLE协议各层跟医院的各个科室的类比图: 每个医院的大堂都有些约定: ① 大堂里有医院的介绍,你可以根据它确定这个医院是否适合你: ② 有急救通道 ③ 要挂号,挂号后你跟医院才建立了联系,才能去找医生看病. 重点在于:怎么确定医院(是否适合你).怎么建立联系. 在BLE里,也有一些约定用来发现设备.连接设备,在GAP里定义…
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part G: Generic Attribute Profile (GATT) 这篇文章格式比较好,基本上就是对GATT官方文档的翻译: Bluetooth GATT介绍 https://www.cnblogs.com/hzl6255/p/4158363.html 下面这个图是BLE协议各层跟医院的各个科室的类比图: 跟医院类比,GATT层就是医务室,通过它可以得到各种服务──这些服务由属性组…
下面这个图是BLE协议各层跟医院的各个科室的类比图: 跟医院类比,ATT层就是化验室,通过它可以得到各种检查结果──属性.这些检查结果之间有什么联系,它们组合起来体现了什么,化验室是不知道的,这些得由上层来负责. 通过ATT层可以读写对端设备的属性,但是属性之间有什么联系.各个属性怎么组合起来提供服务,由上层GATT负责. 读写对端设备的属性,就是ATT的关键词. 一.属性(Attribute) 属性结构如下: 属性就是一个值, 有那么多属性,这是哪一个属性?用Handle来表示: 这个属性是什…
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Protocol Specification 建议先复习<BLE协议各层的形象化理解>,下面是我们之前用来类比的医院结构图: 下面这个图是BLE协议各层跟医院的各个科室的类比图: Controller就是快递公司,它知道把数据发给对方哪一个设备,但是它不能进入对方内部. L2CAP是“收发室”,它熟知Hos…
本篇博客根据韦大仙视频,整理所得. 先上框图: ATT层 从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义.类比的在BLE协议栈里面,ATT定义了各种属性.属性的操作方法,但是这些属性有什么作用,能给用户提供什么服务,它并不知道.举例如下:假设有两个蓝牙设备,一个是手机,一个是手环,此手环戴在手上可以监测心跳.在ATT这一层,手环提供数据,它是一个服务器.另一边的手机从手环获取数据,它是一个client. 在手环服务器这边,它定义了…
本篇博客的学些要结合书籍<低功耗蓝牙开发权威指南,Robin Heydon著>第7章,实际上这书只是对蓝牙原版协议的简化.摘要. 回顾以前学过的<BLE协议各层的形象化理解>和<BLE协议各层数据格式概述> 一  链路层的5种状态: 就绪态(Stanby).扫描态(Scanning).广播态(Advertsing).发起态(Initiating).连接态(Connection). 扫描态有2种子状态:被动扫描(Passive Scanning).主动扫描(Active…
学习资料: 1. 蓝牙协议core_v5.0.pdf <Vol 2: Core System Package [BR/EDR Controller volume]>的“Part E: Host Controller Interface Functional Specification” 2. BTStack源码 对于被动扫描,周边的外设会给controller发送各种广播包,解析广播包,从而得到设备的信息. 对于主动扫描,除了被动的获得广播包外,controller还可以给某个设备发出扫描请求…
本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运行于linux android 单片机 ,它是纯软件的概念.它和蓝牙芯片之间通过usb口或串口来传输数据.那么对于host和controller中的各个层,它们是如何表示数据的呢?本篇博客就来讨论这个问题. 例子1: 打包: 甲公司A1想给乙公司A2'发送一封信,于是甲公司A1就构造了一个数据包:f…
本篇博客由韦东山视频整理所得 如何控制链路层让其发出广播包.数据包?通过HCI层向它发出命令,也可以通过ATT层.L2CAP层向LL层发出数据. 学习资料: 蓝牙协议core_v5.0.pdf <Vol 4: Host Controller Interface [Transport Layer]> BTStack源码 回顾一下<开源蓝牙协议栈BTStack框架代码阅读>. BLE协议在硬件上分为上下两部件:主机(Host,PC.单片机.Linux板).控制器(蓝牙模块),如下图所示…
[南京米联]ZYNQ第二季更新完毕课程共计16节课 [第二季ZYNQ]                                                                         CH01_Helloworld ZYNQ米联客培训(免费) http://www.osrc.cn/forum.php?mod=viewthread&tid=1239&extra=page%3D1 [第二季ZYNQ]    概述: 1.掌握VIVADO 软件的使用,创建基于ZYN…
usdt钱包开发 比特币协议 -> Omni 层协议 -> USDT USDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/31 ID是31 Tether(USDT 的发行方)的官方钱包已关闭注册,无法注册钱包就无法获得 API Key,也就意味着无法实现类似基于钱包接口的开发方案,但我们可以基于 USDT 的底层协议(叫做 Omni 层协议)进行开发 1. Tether(USDT 的发行方)的官方钱包已关闭注册,无法注册钱包就无法获得…
ps视频教程,ps自学视频教程.ps免费视频教程下载,16节实用性爆棚的Ps课教程视频内容较大,分为俩部分: 16节实用性爆棚的Ps课第一部分:百度网盘,https://pan.baidu.com/s/1Yao79ydFQhmIqL0iWXF23A  ,提取码:c1ih 16节实用性爆棚的Ps课第二部分:百度网盘,https://pan.baidu.com/s/1RJQq6cUyAza4an5Apwd-ng ,提取码:f9e4 网盘内容截图:    …
这一篇主要围绕网络协议接口层的发送函数的解析 int dev_queue_xmit(struct sk_buff *skb) 函数解析 声明: /* include/linux/netdevice.h */ int dev_queue_xmit(struct sk_buff *skb); 定义: /* net/core/dev.c */ int dev_queue_xmit(struct sk_buff *skb) { return __dev_queue_xmit(skb, NULL); }…
Linux 网络设备驱动之网络协议接口层介绍. 网络协议接口层最主要的功能是给上层协议提供透明的数据包发送和接收接口. 当上层ARP或IP需要发送数据包时,它将调用网络协议接口层的dev_queue_xmit 函数发送该数据包, 同时还需要传递给改函数一个 struct sk_buff 数据结构的指针. dev_queue_xmit() 函数的原型为: int dev_queue_xmit(struct sk_buff *skb); 同样的,上层对数据包的接收也通过向 netif_rx() 函数…
原文:Android零基础入门第16节:Android用户界面开发概述 相信通过前面15期的学习,Android的开发环境已经基本掌握了,如果仍有问题,欢迎到Android零基础入门技术讨论微信群交流,从本期开始正式来一步一步踏入Android开发之路. Android应用开发的一项内容就是用户界面的开发.Android提供了非常丰富的用户界面组件,借助于这些用户界面组件,开发者可以非常方便地进行用户界面开发,而且可以开发出非常优秀的用户界面. 一.界面UI元素介绍 Android应用是运行于手…
ZYNQ第二季更新完毕课程共计16节课全部免费 [第二季ZYNQ]                                                                         CH01_Helloworld ZYNQ米联客培训(免费) http://www.osrc.cn/forum.php?mod=viewthread&tid=1239&extra=page%3D1 [第二季ZYNQ] 概述: 1.掌握VIVADO 软件的使用,创建基于ZYNQ的SOC…
第7.16节  案例详解:Python中classmethod定义的类方法 上节介绍了类方法定义的语法以及各种使用的场景,本节结合上节的知识具体举例说明相关内容. 一.    案例说明 本节定义的一个类ClsMethod,在类内定义了类方法clsmeth1.getobjcnt,演示内容包括: 1.    类方法的定义: 2.    在类方法clsmeth1中通过cls方式和类名两种方式调用类方法getobjcnt: 3.    在实例方法__init__中通过类名和"self.__class__…
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的网络协议,互不兼容,这就好比一群人有的说英语,有的说中文,有的说德语,说同一种语言的人可以交流,不同的语言之间就不行了. 为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite…
6.25自我总结 1.网络框架 1.单机 单机游戏 以下两个基于网络的 2.CS架构 cs--->client客户/server服务 服务端(应用程序)一个就够了,客户端(应用程序)可以有多个 服务端和客户端都是应用程序,那两者一定都可以存储数据,哪一个存储数据更好: 服务端: 很多人都可以用,它一次更新,其它人还是直接拿,还能保证数据的安全 客户端:非常快,如果本地保存账号密码,安全性非常低,客户端不联网,数据不更新 3.BS架构 bs--->browser浏览器/服务端 客户端(浏览器)/…
在上几篇博客中,形象的讲解了BLE各个层的作用,各个层的数据结构.本篇博客将研究BLE协议抓包.在实际开发中,有一个中央设备(central)和一个外设(Peripheral).所谓中央设备就是指它可以识别出周边的蓝牙设备,可以发起连接.所谓外设就是手环等.中央设备和外设之间传递数据,我们使用一个抓包工具sniffer,来抓取空中传递的数据,进而分析和调试.在实际开发中,抓包涉及的硬件框图如下: 但是在学习的过程中,使用下面的结构. 使用手机来模拟外设,在安卓手机上可以运行一个软件:com-bl…
一.编排业务逻辑的模式1. 事务脚本模式TS(The Transaction Script pattern ) TS模式概述     TS 鼓励你跳过任何的面向对象的设计,你直接到所需的用户操作的业务组件映射.专注于的业务用户可以通过表示层完成,并为每个请求编写方法.这个方法被称之为事务脚本,此处事务通常是指想要进行商业交易,脚本是指系统中的一系列关系用户操作的系统操作.     TS历时多年仍然不过时的原因只有一个:它基于推行可视化的业务逻辑设计,而可视化正上用户体验的核心.     在TS中…
本节内容: 1:为什么要有使用数组 2:数组的简介 3:一维数组的声明 4: 实例数组声明 5:一维数组的使用 6:一维数组使用注意地方 1:为什么要使用数组 2:数组的简介 3:一维数组的声明 4: 实例数组声明 5:一维数组的使用 6:一维数组使用注意地方…
对于软件的人来说,物理层关注的内容会少一点.在前面的博客中,我们以快递员类比物理层,对于快递员来说,道路千万条,这条不通换另外一条.对于物理层来说也是一样的,它有很多频率,这个频率有冲突了,将会切到另一个频率上面. 举例:深圳比较有两个比较出名的电台:105.7MHZ 和106.2MHZ 注意:当说105.7MHZ时,是指该频率的周围一段都属于105.7MHZ.对于106.2MHZ的频率也是这样的.记住,它并不仅仅指一个值.数据是在该频段范围内传输,数据并不是仅仅在105.7MHZ或106.2M…
一. 引言 上节结合案例介绍了重写__repr__方法的关注点,重写__repr__方法的要点是要准确的输出开发人员关注的信息,并便于开发人员使用相关信息.而__str__方法是为最终用户返回类的相关信息,因此需要相关信息容易理解,更需要开发者在自定义类的过程中重写__str__方法. object类提供的__str__方法,只是简单输出模块名.类名以及对象的ID信息,老猿认为实际上就是在__str__方法直接调用object类的__repr__方法,不过没去研究代码核实.不管怎样,这个信息根本…
一. 什么是组 关于组匹配模式,Python官网上说得比较简单,也没有这个名词,只有组这个名词,老猿查了比较多的资料和做了相关测试之后才理解. 组匹配模式,就是在匹配的正则表达式中使用小括号"()"括起来的任意一个合法的匹配模式串,左括号标记组的起点,右括号标记组的终点,即组匹配模式定义为: (组匹配模式串) 其中组匹配模式串是整个正则表达式的一个子匹配模式.在一个正则表达式内可以定义多个组,每个组都有一个顺序分配的序号(组还可以命名),其中组0为整个正则表达式,组1为第一个括号,组2…
写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在<第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析>老猿分析了csdn博文点赞处理的http请求和响应报文,在<第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞>中通过selenium方式实现了博文自动点赞,但selenium方式老猿觉得并不是一个真正的爬虫实现方式,因此本节老猿将通过request+BeautifulSoup的方式实现一个真正爬虫式的CSDN博文自…
老猿Python博文目录 老猿Python博客地址 一.引言 前面一些章节其实已经在使用信号和槽了,但是作为Qt中最重要的机制也是Qt区别与其他开发平台的重要核心特性,还是非常有必要单独介绍. 二.信号和槽的概念 2.1.概述 信号和槽是Qt特有的信息传输机制,是Qt设计程序的重要基础,它可以让互不干扰的对象建立一种联系. 信号和槽用于对象间的通信,在一个图形界面程序中,当一个部件中发生变化时,通常需要通知其他对象,在Qt中当采用特定事件发生时会发射(注意此处用的是发射(emit)而不是发送,老…
<html> <head> <title>浏览器对象</title> <script type="text/javascript"> var a = 20;//声明变量 函数 对象 属于window对象 //alert(window.a); function test () { alert("window对象函数"); } //window.test();//函数调用 </script> <…
原文:http://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.aspx Table 属性可以应用于一个类. 默认Code First约定创建与名称相同的表名称.Table属性覆盖此默认约定. EF Code First将在给定域类的Table属性中创建一个具有指定名称的表. 请看以下示例: using System.ComponentModel.DataAnno…
http://www.doczj.com/doc/35cb19633169a4517723a3d9-9.html…