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

广州做网站一般要多少钱/淘宝指数查询官网

广州做网站一般要多少钱,淘宝指数查询官网,池州市建设工程质量安全监督局网站,网站蓝色和红色搭配前言 要让手机能够控制手表,第一步当然要让手机能够“看见”手表,人类作为上帝视角,我们是能够通过眼睛直接看见手机和手表的,但要让手机“看见”手表,就需要一端把自己的信息通过电磁波的形式发往空中,另…

前言

要让手机能够控制手表,第一步当然要让手机能够“看见”手表,人类作为上帝视角,我们是能够通过眼睛直接看见手机和手表的,但要让手机“看见”手表,就需要一端把自己的信息通过电磁波的形式发往空中,另一端接收到空中的电磁波信号识别到需要的信息,从而感知到对端并与对端握手和后续的交互。完成上述的过程这里需要引入两个概念广播和连接。本章主要讲解如何让两个设备“见面”。

ble广播类型

广播类型意义
通用广播既可以被主动扫描到,也可以被连接的广播方式,是最常用的广播方式
定向广播报文里含有广播者地址和发起者地址,发起者设备收到发给自己的定向广播报文后,可以立即发送连接请求给对方
不可连接广播只能广播数据,不能响应主动扫描或者连接
可发现广播不能被连接,但可以广播数据或者响应主动扫描

这里就我们常用的广播报文–通用广播抓包分析下

在这里插入图片描述

广播报文格式

在这里插入图片描述

报头格式

在这里插入图片描述

广播报文类型

广播报文类型含义
ADV_IND通用广播指示
ADV_DIRECT_IND定向连接指示
ADV_NONCONN_IND不可连接指示
ADV_SCAN_IND可扫描指示
SCAN_REQ主动扫描请求
SCAN_RSP主动扫描响应
CONNECT_REQ连接请求

发送地址类型

在这里插入图片描述

长度

对于广播报文,长度域包含6个比特,有效值的范围是6-37个字节。广播报文除了最多31个字节的数据外,还要包含6个字节的广播设备地址,6个字节加31个字节导致报文长度最多为37个字节,因此需要6比特的长度域

数据

广播包中的数据域使用LTV的格式进行定义,即 length + type + value
length表示(type + value)的总长度;
type为1byte数据类型,蓝牙协议规范定义类型如下:

/// The type of advertising data(not adv_type)
typedef enum {ESP_BLE_AD_TYPE_FLAG              = 0x01,  /* relate to BTM_BLE_AD_TYPE_FLAG in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_16SRV_PART        = 0x02,  /* relate to BTM_BLE_AD_TYPE_16SRV_PART in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_16SRV_CMPL        = 0x03,  /* relate to BTM_BLE_AD_TYPE_16SRV_CMPL in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_32SRV_PART        = 0x04,  /* relate to BTM_BLE_AD_TYPE_32SRV_PART in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_32SRV_CMPL        = 0x05,  /* relate to BTM_BLE_AD_TYPE_32SRV_CMPL in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_128SRV_PART       = 0x06,  /* relate to BTM_BLE_AD_TYPE_128SRV_PART in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_128SRV_CMPL       = 0x07,  /* relate to BTM_BLE_AD_TYPE_128SRV_CMPL in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_NAME_SHORT        = 0x08,  /* relate to BTM_BLE_AD_TYPE_NAME_SHORT in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_NAME_CMPL         = 0x09,  /* relate to BTM_BLE_AD_TYPE_NAME_CMPL in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_TX_PWR            = 0x0A,  /* relate to BTM_BLE_AD_TYPE_TX_PWR in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_DEV_CLASS         = 0x0D,  /* relate to BTM_BLE_AD_TYPE_DEV_CLASS in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_SM_TK             = 0x10,  /* relate to BTM_BLE_AD_TYPE_SM_TK in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_SM_OOB_FLAG       = 0x11,  /* relate to BTM_BLE_AD_TYPE_SM_OOB_FLAG in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_INT_RANGE         = 0x12,  /* relate to BTM_BLE_AD_TYPE_INT_RANGE in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_SOL_SRV_UUID      = 0x14,  /* relate to BTM_BLE_AD_TYPE_SOL_SRV_UUID in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_128SOL_SRV_UUID   = 0x15,  /* relate to BTM_BLE_AD_TYPE_128SOL_SRV_UUID in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_SERVICE_DATA      = 0x16,  /* relate to BTM_BLE_AD_TYPE_SERVICE_DATA in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_PUBLIC_TARGET     = 0x17,  /* relate to BTM_BLE_AD_TYPE_PUBLIC_TARGET in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_RANDOM_TARGET     = 0x18,  /* relate to BTM_BLE_AD_TYPE_RANDOM_TARGET in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_APPEARANCE        = 0x19,  /* relate to BTM_BLE_AD_TYPE_APPEARANCE in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_ADV_INT           = 0x1A,  /* relate to BTM_BLE_AD_TYPE_ADV_INT in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_LE_DEV_ADDR       = 0x1b,  /* relate to BTM_BLE_AD_TYPE_LE_DEV_ADDR in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_LE_ROLE           = 0x1c,  /* relate to BTM_BLE_AD_TYPE_LE_ROLE in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_SPAIR_C256        = 0x1d,  /* relate to BTM_BLE_AD_TYPE_SPAIR_C256 in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_SPAIR_R256        = 0x1e,  /* relate to BTM_BLE_AD_TYPE_SPAIR_R256 in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_32SOL_SRV_UUID    = 0x1f,  /* relate to BTM_BLE_AD_TYPE_32SOL_SRV_UUID in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_32SERVICE_DATA    = 0x20,  /* relate to BTM_BLE_AD_TYPE_32SERVICE_DATA in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_128SERVICE_DATA   = 0x21,  /* relate to BTM_BLE_AD_TYPE_128SERVICE_DATA in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_LE_SECURE_CONFIRM = 0x22,  /* relate to BTM_BLE_AD_TYPE_LE_SECURE_CONFIRM in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_LE_SECURE_RANDOM  = 0x23,  /* relate to BTM_BLE_AD_TYPE_LE_SECURE_RANDOM in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_URI               = 0x24,  /* relate to BTM_BLE_AD_TYPE_URI in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_INDOOR_POSITION   = 0x25,  /* relate to BTM_BLE_AD_TYPE_INDOOR_POSITION in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_TRANS_DISC_DATA   = 0x26,  /* relate to BTM_BLE_AD_TYPE_TRANS_DISC_DATA in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_LE_SUPPORT_FEATURE= 0x27,  /* relate to BTM_BLE_AD_TYPE_LE_SUPPORT_FEATURE in stack/btm_ble_api.h */ESP_BLE_AD_TYPE_CHAN_MAP_UPDATE   = 0x28,    /* relate to BTM_BLE_AD_TYPE_CHAN_MAP_UPDATE in stack/btm_ble_api.h */ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE  = 0xFF,    /* relate to BTM_BLE_AD_MANUFACTURER_SPECIFIC_TYPE in stack/btm_ble_api.h */
} esp_ble_adv_data_type;

部分常见类型定义解析如下:
在这里插入图片描述

抓包分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结尾

到这里广播篇基本就告一段落了,当然实际中还需要结合具体的场景做分析,主要关注以上几个关键点即可以完成广播相关的操作,下章将介绍如何进行连接,未完待续!

相关文章:

你的手机是如何控制你的手表之广播篇

前言 要让手机能够控制手表,第一步当然要让手机能够“看见”手表,人类作为上帝视角,我们是能够通过眼睛直接看见手机和手表的,但要让手机“看见”手表,就需要一端把自己的信息通过电磁波的形式发往空中,另…...

深入理解并发之LongAdder、DoubleAdder的实现原理

深入理解LongAdder、DoubleAdder的实现原理 本文主要通过LongAdder和DoubleAdder的源码,讲述一下其实现原理。通过LongAdder和DoubleAdder的源码可知。两者都是继承了Striped64的类。下面我们将通过源码的形式讲述一下这三个类都做了哪些事情。 1: Striped64 ​ …...

virtuoso原理图无法编辑

(SCH-1217): Could not open "XX schematic" for edit. (because it is locked by user XX on XX) Would you like to open it for read? 解决方法: 到工程目录的schematic文件夹下找到sch.oa.cdslck.RHEL30.XXX-eda.21423和sch.oa.cdslck全部删掉即可正…...

Kotlin协程中的作用域 `GlobalScope`、`lifecycleScope` 和 `viewModelScope`

Kotlin协程中的作用域 Kotlin协程提供了多种作用域来管理协程的生命周期,其中最常见的是 GlobalScope、lifecycleScope 和 viewModelScope。 1. GlobalScope GlobalScope 是一个全局作用域,不受任何其他生命周期的限制。这意味着在 GlobalScope 中启动…...

leetcode739 每日温度

题目 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 输入: tempe…...

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…...

Llama 3-V: 比GPT4-V小100倍的SOTA

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模…...

Anaconda安装配置

Anaconda下载: 网盘下载:https://pan.quark.cn/s/c5663477ccef 配置环境变量: 以管理员身份运行命令提示符 setx /M PATH "%PATH%;C:\ProgramData\anaconda3;C:\ProgramData\anaconda3\Scripts;C:\ProgramData\anaconda3\Library\bi…...

全面理解渗透测试

揭秘网络安全的秘密武器:全面理解渗透测试 在数字化时代,网络安全已成为人们关注的焦点。网络攻击和数据泄露事件频发,给个人、企业和国家带来了巨大的损失。为了应对这一挑战,渗透测试作为一种重要的网络安全评估手段&#xff0…...

「网络编程」基于 UDP 协议实现回显服务器

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 实现回显服务器 🍉socket api🍉回显服务器🍌实现🥝服务器🥝客户端 &#x1f3…...

云数融合与大数据技术在日常生活中的创新应用探索

前言 移动云模型服务产品在中国移动旗下主要包括云计算、大数据、人工智能等服务,它依托广泛的算力资源(4N31X)、丰富的网络接入资源和高品质云专网,实现算网端资源一站式开通,构建企业级一体化解决方案。 文章目录 前言云计算的日常应用智…...

ETCD 备份与还原

安装etcdctl 准备看下etcd如何命令行操作,才发现,主机上,只用kubeadm拉起了etcd,但没有etcdctl命令。 # sudo docker ps -a | awk /etcd-master/{print $1} c4e3a57f05d7 26a11608b270 836dabc8e254 找到正在运行的etcd&#xf…...

LeeCode 1787 DP

题意 传送门 LeeCode 1787 使所有区间的异或结果为零 题解 任一个元素都至多对 k k k个长度为 k k k的区间产生影响,故难以直接依次处理每一个元素。 观察到满足条件的数组中模 k k k意义下索引相等的各个元素相同,故可以依次处理每一个同余类。 d p…...

如何有效屏蔽手机上的骚扰电话20240530

如何有效屏蔽手机上的骚扰电话 引言 最近,我的手机经常接到954开头的7位数字座机电话,这些骚扰电话让我非常困扰。由于我经常点外卖,无法屏蔽所有陌生号码,因此需要一个既能屏蔽特定前缀的骚扰电话,又不影响日常生活…...

Linux CGroup资源限制(概念限制进程CPU使用)

Linux CGroup资源限制(详解) 最近客户认为我们程序占用cpu过高,希望我们限制,排查之后发现是因为程序频繁gc导致,为了精细化、灵活的的限制,想到了使用Linux CGroup。 0 前置知识 ①概念及作用 官网&#…...

Latex中标注通讯作者

** 直接使用脚注,不用添加宏包 多个同地址的并列,建议加点空格,好看一些 ** \title{xxxxxxxxxxxxxxxxxxx}\author{xxxxxxxxxxxxxxxxxxx\footnote{Corresponding author} ,bbbbbbbbbbbbbbbbbbb}\address{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx…...

PyQt5开发笔记:1.环境搭建与界面美化

推荐视频教程: https://www.bilibili.com/video/BV1LT4y1e72X?p23&vd_source7ab611f3afb3d469faad93d3996f99ba 一、打开网址,点击下载 https://build-system.fman.io/qt-designer-download 下载后,点开exe 不推荐:http…...

公派/自费访问学者申请出国访学的常见问题解答(下)

06、学术背景和研究成果要求? 访学是面向学术单位和企事业单位开放的。 针对学术单位,比如高校与科研院所,学科内涉及的论文发表,课题研究,专利,著作,含金量较高的奖项等背景都是国外比较看重…...

完全指南:C语言学习资源汇总

C语言是编程学习的基石,无论是为了职业发展还是个人兴趣,掌握C语言都是技术生涯的重要一步。为了帮助初学者和有经验的程序员更好地学习和深化对C语言的理解,我们汇总了一系列优秀的书籍和在线资源。这些资源将帮助你从基础知识到高级概念&am…...

Kubernetes——Ingress详解

目录 前言——Service策略的作用 1.外部访问方案 2.使用场景和限制 2.1NodePort 2.2LoadBalancer 2.3externalIPs 2.4Ingress 3.Ingress如何实现对外服务 4.LB和Ingress结合起来实现对外服务的过程 一、Ingress 1.定义 2.组成 3.工作原理 4.总结 二、部署Nginx-I…...

反射、类加载、静态代理,jdk动态代理,cglib代理

一、 反射 反射是在程序运行状态下,动态获取类的结构(属性,构造器,方法,注解),动态的创建类对象然后调用类中的属性方法。反射的起源Class,Class中包含类反射要使用的API 获取Class的…...

MySQL Hints:控制查询优化器的选择

码到三十五 : 个人主页 MySQL Hints是优化数据库查询性能的一种强大工具。它们允许开发者在SQL查询中嵌入指令,以影响MySQL优化器的决策过程。在某些情况下,优化器可能无法选择最佳的查询执行计划,这时我们可以使用Hints来引导优化…...

【TB作品】msp430g2553单片机,OLED,PCF8591,ADC,DAC

硬件 OLED PCF8591 /** OLED* VCC GND* SCL接P2^0* SDA接P2^1*//** PCF8591* VCC GND* SCL接P1^4* SDA接P1^5*//* 板子上按键 P1.3 *//* 单片机ADC输入引脚 P1.1 *//* 说明:将PCF8591的DAC输出接到单片机ADC输入引脚 P1.1,单片机采集电压并显示 */功能…...

C#WPF数字大屏项目实战10--不良指标分页

1、区域划分 2、区域布局 3、视图模型 4、控件绑定 5、运行效果 走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,财务自由...

数字塔问题

#include<iostream> using namespace std; //从下向上得到最优值 void dtower(int a[][100],int s[][100],int n) {for(int in; i>1; i--){for(int j1; j<i; j){if(in)s[i][j]a[i][j];else{int ts[i1][j];if(t<s[i1][j1])ts[i1][j1];s[i][j]a[i][j]t;}}} } void…...

【介绍下Pwn,什么是Pwn?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…...

Python:b站多个视频爬取下载

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…...

Java常规题技术分享

一、数组排序和添加成员 设计类Student和类StudentClass。 (1) 类Student有字符串属性name、double属性grade和int属性age 有带参数的构造方法&#xff0c;可设置三个属性的值 有各个属性的置取方法 (2)类StudentClass有Student数组属性stus存放班级成员&#xff0c;有int…...

Pytorch语义分割(1)-----加载数据

在语义分割中用到的数据无非就是原始图片&#xff08;image&#xff09;和标注后得到的mask图片&#xff0c;所以在读取数据的时候只要返回图片和标签信息就OK 了。 import torch import os import numpy as np from torch.utils.data import Dataset from utils_func import …...

Java中加号的多种用途

在Java中&#xff0c; 符号有多种用途&#xff0c;主要根据上下文而定。以下是在Java中的一些主要用途&#xff1a; 加法运算符&#xff1a; 这是最常见的用途&#xff0c;用于数字相加。 int a 5;int b 3;int sum a b; // sum is 8 字符串连接符&#xff1a; 当用…...