当前位置: 首页 > news >正文

Matter蓝牙解析

解析 Matter 蓝牙广播

定义需要解析的字段。

#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN/// 蓝牙广播服务 ID
extern NSString * const MatterBLEAdvServiceID;@interface MatterBLEAdv : NSObject
@property (nonatomic, assign) NSInteger opCode;
@property (nonatomic, assign) NSInteger advVersion;
@property (nonatomic, assign) NSInteger discriminator;
@property (nonatomic, assign) NSInteger vendorID;
@property (nonatomic, assign) NSInteger productID;/// 从广播的 NSData 中解析信息。
+ (MatterBLEAdv * _Nullable)advInfoFromData:(NSData *)advertising;@end

.m 文件

具体的解析方法, 按照协议规则解析。

#import "MatterBLEAdv.h"NSString * const MatterBLEAdvServiceID = @"FFF6";@implementation MatterBLEAdv/// 从广播中解析相关数据。
+ (MatterBLEAdv *)advInfoFromData:(NSData *)advertising {if (advertising.length != 8) {return nil;}int opCode = 0;[advertising getBytes:&opCode range:NSMakeRange(0, 1)];int data1_2 = 0;[advertising getBytes:&data1_2 range:NSMakeRange(1, 2)];int advVersion = data1_2 & 0xf000; // bit 15-12int discriminator = data1_2 & 0x0fff; // bit 0-12int vendorID = 0; // 16进制:1345 十进制:4933[advertising getBytes:&vendorID range:NSMakeRange(3, 2)];int productID = 0; // 16进制:a001 十进制:40961[advertising getBytes:&productID range:NSMakeRange(5, 2)];MatterBLEAdv *adv = [[MatterBLEAdv alloc] init];adv.opCode = opCode;adv.advVersion = advVersion;adv.discriminator = discriminator;adv.vendo

http://www.mrgr.cn/news/46690.html

相关文章:

  • electron 启动警告
  • 查看nginx已安装的模块
  • Java定时任务
  • 软件架构考试基础知识 003:信号量与PV操作
  • javaEE-网络原理-5.进阶 传输层UDP.TCP
  • 使用 Python 实现自动化办公(邮件、Excel)
  • Linux系统命令:使得指定的linux命令可以在用户注销或终端关闭后继续运行的工具nohup详解
  • 灯塔:Vue笔记
  • 选型工单管理系统,从原理到应用全面解读
  • 基于多能互补的热电联供型微网优化运行【matlab代码】
  • 世界职业院校技能大赛-软件测试赛项模拟案例参考分享
  • 基于深度学习的实时医学影像增强
  • 03. prometheus 监控 Linux 主机
  • k8s的部署
  • LabelImag标注工具环境配置
  • ESP32-C3实现GPIO输出高低电平
  • SDK4(note下)
  • 信息安全工程师(41)VPN概述
  • 【分立元件】案例:电感焊盘部分发黑原因有什么?
  • RecBole:AttributeError: module ‘ray.tune’ has no attribute ‘report’
  • 【MySQL】表的内外连接
  • 【mysql】使用AbstractRoutingDataSource实现多数据源 与 获取mapper上注解
  • python全栈学习记录(二十四)元类、异常处理
  • std::async概念和使用方法
  • 用包目录结构Python脚本,简陋而强大
  • 逼近理论及应用精解【9】