<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[物联网布道师]]></title><description><![CDATA[物联网布道师]]></description><link>https://blog.youkuaiyun.com/hesuping</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hesuping]]></copyright><item><title><![CDATA[BlueZ 开发学习指南（一） --- D-Bus介绍]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/131708132</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/131708132</guid><author>hesuping</author><pubDate>Thu, 13 Jul 2023 17:45:09 +0800</pubDate><description><![CDATA[Linux使用的蓝牙协议栈是Blue Z，不同于我们以往的开发方式，Blue Z提供的API 并不是通过头文件这样的形式， 而是通过D-Bus的方式来提供的。Blue Z提供的是Host端的协议栈，Control端的协议往往由专门的芯片厂提供。Host和Control通过HCI接口来通讯。HCI接口可以是UART、USB、SD卡，也可以是虚拟的。下图是应用通过D-Bus与Blue Z进行通讯的过程。]]></description><category></category></item><item><title><![CDATA[【转载】【Nordic博文分享系列】详解Zephyr设备树（DeviceTree）与驱动模型]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129621537</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129621537</guid><author>hesuping</author><pubDate>Fri, 17 Mar 2023 15:24:16 +0800</pubDate><description><![CDATA[这里其他的都好理解，值得详细说的是phandle-array类型。这个数组的每一个元素都是一个特殊的结构体，结构体的第一个值必定是一个phandle，后续的值可以是任意值，数量也可以任意。以设备树中的/soc/peripheral/adc@e000节点为例，节点中未指明interrupt parent，故从设备树向上推断，推到/soc节点，此节点指明中断控制器是&nivc，即/soc/interrupt-cntroller@e000e100，其device-binding是"arm,v8m-nvic"。]]></description><category></category></item><item><title><![CDATA[【蓝牙系列】蓝牙5.4到底更新了什么（2）]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129419443</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129419443</guid><author>hesuping</author><pubDate>Thu, 09 Mar 2023 11:22:06 +0800</pubDate><description><![CDATA[加密广播特性提供了一种标准化的、普遍适用的机制，用于广播包、扫描响应包和 EIR 数据包中传输加密数据，并安全地共享相关的加密密钥材料。这意味着无连接通信现在可以用作一对多或一对一拓扑中的安全应用程序数据传输机制。通用属性配置文件 (GATT) 提供了一种方法，通过该方法可以在由 GATT 服务、特性和描述符组成的结构中表示设备数据和功能。]]></description><category></category></item><item><title><![CDATA[【蓝牙系列】蓝牙5.4到底更新了什么?（1）--- PAwR]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129393501</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129393501</guid><author>hesuping</author><pubDate>Tue, 07 Mar 2023 22:39:50 +0800</pubDate><description><![CDATA[BLE有两种扫描方式：主动扫描和被动扫描。被动扫描是接收方只到扫描广播数据包，不发送任何回复数据包。而主动扫描，接收方接收到可扫描的广播包后，会回复一包Scan request PDU，来请求广播者发送更多的广播信息， 广播者收到后会继续广播scan response数据。可连接的 vs 不可连接的​		可连接的广播表示扫描方收到该广播后，可能会发起连接请求，这也是我们最常见的广播包。而不可连接的广播最常见的就是蓝牙beacon包。可扫描的 vs 不可扫描的。]]></description><category></category></item><item><title><![CDATA[【转载】C 语言资源大全中文版]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129281362</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129281362</guid><author>hesuping</author><pubDate>Wed, 01 Mar 2023 14:52:50 +0800</pubDate><description><![CDATA[我想很多程序员应该记得 GitHub 上有一个 Awesome：XXX 系列的资源整理。是 koz.ross 发起维护的 C 语言资源列表，内容包括了：构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等等。Awesome 系列虽然挺全，但基本只对收录的资源做了极为简要的介绍，如果有更详细的中文介绍，对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。]]></description><category></category></item><item><title><![CDATA[【经典蓝牙】 蓝牙HFP层协议分析]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129225199</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129225199</guid><author>hesuping</author><pubDate>Sun, 26 Feb 2023 12:05:51 +0800</pubDate><description><![CDATA[HFP(Hands-Free Profile)， 是蓝牙免提协议， 可以让蓝牙设备对对端蓝牙设备的通话进行控制，例如蓝牙耳机控制手机通话的接听、 挂断、 拒接、 语音拨号等。HFP中蓝牙两端的数据交互是通过定义好的AT指令来通讯的。﻿﻿HFP支持的所有的特性，列表如下图：﻿﻿﻿﻿﻿﻿﻿HFP的连接和断开，HF端和AG端都可以发起手机状态信息特性。AG端状态改变后会通知到HF端，例如：手机信号强度，手机电量、手机漫游信息，手机通话状态（响铃、接听、挂断）。]]></description><category></category></item><item><title><![CDATA[【经典蓝牙】蓝牙 A2DP协议分析]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129225107</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129225107</guid><author>hesuping</author><pubDate>Sun, 26 Feb 2023 11:58:32 +0800</pubDate><description><![CDATA[A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议， 用于传输单声道， 双声道音乐（一般在 A2DP 中用于 stereo 双声道） ， 典型应用为蓝牙耳机。A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC（Sub-Band Coding）来减小音频数据的大小，同时保持高音质，SBC压缩虽然效率较低，但是是必须支持的基本备用方案。]]></description><category></category></item><item><title><![CDATA[【经典蓝牙】蓝牙AVRCP协议分析]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129224939</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129224939</guid><author>hesuping</author><pubDate>Sun, 26 Feb 2023 11:50:01 +0800</pubDate><description><![CDATA[蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制，以及获取手机的音乐信息等场景。AVRCP协议有两个角色，分别是controller（CT）和 target(TG)。CT: 发送控制命令到对端，控制对端媒体播放器的设备，例如蓝牙耳机，蓝牙遥控器等。TG：接收对端的控制命令，并执行操作，进行回复的设备，例如手机，电脑等。]]></description><category></category></item><item><title><![CDATA[【密码学】 一篇文章讲透数字证书]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129220530</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129220530</guid><author>hesuping</author><pubDate>Sun, 26 Feb 2023 11:27:53 +0800</pubDate><description><![CDATA[数字证书的作用包括以下几个方面：认证身份：数字证书可以证明通信中参与者的身份，防止身份伪造和冒充。加- 密通信：使用数字证书中的公钥进行加密通信，保护通信内容不被窃听或篡改。数据完整性保护：使用数字证书中的数字签名保证通信内容的完整性，防止数据被篡改。可信性：数字证书由认证机构颁发，证明通信参与者的身份和信用，增强通信的可信度。总之，数字证书是数字安全通信的重要工具，它可以有效地保护通信的机密性、完整性和可信性，保证通信的安全性。]]></description><category></category></item><item><title><![CDATA[【密码学】 一篇文章讲透数字签名]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129220489</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129220489</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 21:03:39 +0800</pubDate><description><![CDATA[数字签名（又称公钥数字签名）是只有信息的发送者才能产生的别人无法伪造的一段数字串，这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名，但是在使用了公钥加密领域的技术来实现的，用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算，一个用于签名，另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改， 并验证消息的可靠性， 也可以防止否认。]]></description><category></category></item><item><title><![CDATA[【蓝牙mesh】Bearer层（承载层）介绍]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129220143</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129220143</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:34:32 +0800</pubDate><description><![CDATA[蓝牙Mesh Bearer层分为广播Bearer层和Gatt bearer层，一个节点设备可以支持至少其中的一个，也可以都支持。一般情况下，子设备节点如果不是低功耗设备，两个层都会支持的。在蓝牙Mesh网络中，Bearer层还提供了许多其他的功能，例如数据加密、数据压缩、数据分段等等。这些功能都是为了提高数据传输的效率和安全性。总的来说，Bearer层是蓝牙Mesh网络中非常重要的一层，它提供了数据传输的基础支持，使整个网络能够顺畅地运行。]]></description><category></category></item><item><title><![CDATA[【蓝牙mesh】Network协议层介绍]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129220113</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129220113</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:33:01 +0800</pubDate><description><![CDATA[Network层是蓝牙Mesh协议栈中中，按照协议栈层级仅次于网络承载层的，是对整个蓝牙MeshMesh网络中非常重要的一个协议层。Network层会使用netkey对数据包进行单独的加解密和认证，为mesh网络的数据安全提供有力的保障。]]></description><category></category></item><item><title><![CDATA[【蓝牙mesh】Lower协议层介绍]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129220069</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129220069</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:29:48 +0800</pubDate><description><![CDATA[蓝牙Mesh中的Lower层主要的功能就是对网络数据包进行分片和组包，是位于Upper层和Network层之间，对蓝牙Mesh的分层加密起着非常重要的作用。]]></description><category></category></item><item><title><![CDATA[【蓝牙mesh】Upper协议层介绍]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129220036</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129220036</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:25:37 +0800</pubDate><description><![CDATA[Control数据主要是用在Mesh设备的Friend特性，通过Friend特性和低功耗LowPower节点之间建立联系。Control数据就是下面的这几条命令，除此之外Upper层的所有数据都是Access数据。Friend节点与LowPower节点建立关系的流程如下：要建立 Friendship关系，首先LowPower节点向空中发送 Friend Request 请求（地址类型是 all-friend）]]></description><category></category></item><item><title><![CDATA[【蓝牙mesh】access层（接入层）协议介绍]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129219921</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129219921</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:23:07 +0800</pubDate><description><![CDATA[Model ID 是一个16Bit 或者32Bit的一个数值。用来表示设备的某个功能模块，比如onoff model, lightness model。那16Bit的Model ID 和 32Bit的Model ID有什么区别呢？16Bit的Model ID 是有蓝牙技术联盟分配的。如下图是Sig制定的几个Model ID32Bit的Model ID是由各个厂商自定义的Model ID。]]></description><category></category></item><item><title><![CDATA[【设计模式】 观察者模式介绍及C代码实现]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129219883</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129219883</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:14:47 +0800</pubDate><description><![CDATA[观察者模式（Observer Pattern）是一种常用的设计模式，它定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象，当主题对象发生变化时，它的所有观察者都会收到通知并更新自己的状态。观察者模式又称为发布-订阅模式。Subject（主题）：被观察的对象，它将所有观察者对象的引用保存在一个集合中，并提供了添加和删除观察者对象的方法。Observer（观察者）：观察者接口，定义了更新自己的状态的方法，以便主题在状态发生变化时通知观察者。ConcreteSubject（具体主题）]]></description><category></category></item><item><title><![CDATA[【设计模式】 工厂模式介绍及C代码实现]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129219900</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129219900</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:14:28 +0800</pubDate><description><![CDATA[工厂模式是一种创建型设计模式，它提供一种通用的接口来创建对象，但是让子类决定实例化哪个类。工厂模式将对象的创建过程封装在一个工厂类中，避免直接调用构造函数，提高代码的灵活性和可维护性。工厂模式实现了依赖倒置原则，即面向接口编程而不是面向实现编程。在工厂模式中，有一个抽象工厂接口，定义了工厂类应该实现的方法，以及一组产品接口，定义了工厂类应该创建的产品的通用行为。具体的工厂类实现了抽象工厂接口，用于创建具体的产品对象。工厂模式可以分为三种不同的类型：简单工厂模式、工厂方法模式和抽象工厂模式。]]></description><category></category></item><item><title><![CDATA[【设计模式】 策略模式介绍及C代码实现]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129219859</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129219859</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:13:28 +0800</pubDate><description><![CDATA[策略模式（Strategy Pattern）是一种常用的面向对象设计模式，它定义了一系列可互相替换的算法或策略，并将每个算法封装成独立的对象，使得它们可以在运行时动态地替换。具体来说，策略模式定义了一系列算法，每个算法都封装在一个具体的策略类中，这些策略类实现了相同的接口或抽象类。在使用算法的时候，客户端通过一个上下文对象来调用策略类的方法，从而完成算法的执行。这样，客户端可以在运行时动态地选择不同的策略类，从而实现不同的行为。]]></description><category></category></item><item><title><![CDATA[【设计模式】 模板方法模式介绍及C代码实现]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/129219825</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/129219825</guid><author>hesuping</author><pubDate>Sat, 25 Feb 2023 20:09:49 +0800</pubDate><description><![CDATA[那什么是模板方法设计模式？模板方法设计模式：定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。这样就使得子类可以不改变一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。模板方法模式的主要思想是基于“好莱坞原则”，即“不要打电话给我们，我们会打电话给你”。这意味着在模板方法模式中，父类定义了一个算法框架，但是具体的实现由子类决定。子类可以通过继承父类，并重写父类的某些方法来实现自己的具体实现。模板方法模式通常由两个部分组成：抽象父类和具体子类。]]></description><category></category></item><item><title><![CDATA[【Matter】解密Matter协议（二）--- 关键概念及特性]]></title><link>https://blog.youkuaiyun.com/hesuping/article/details/127357008</link><guid>https://blog.youkuaiyun.com/hesuping/article/details/127357008</guid><author>hesuping</author><pubDate>Mon, 17 Oct 2022 09:20:52 +0800</pubDate><description><![CDATA[Matter网络更像是一个虚拟的网络，他可以跨越不同的底层通讯协议，让不同协议的设备之间可以互相通讯。Fabric：在Matter协议里将这个虚拟的网络称为Fabric，Fabric是一群共享相同Trusted Root的设备的集合，每个Fabric有着自己的Fabric ID，这个ID是一个64-bit的整数。Node： 在Fabric中每个物理的设备称为一个Node，每个Node有自己的Node_ID，每个Node_ID也是64-bit的整数，在同一个Fabric网络内，该Node_ID是唯一的。]]></description><category></category></item></channel></rss>