首页 > 其他分享 >BLE定向广播/Direct Adv

BLE定向广播/Direct Adv

时间:2023-04-05 13:56:28浏览次数:28  
标签:Adv Addr Direct 广播 BLE sizeof 定向

前言

定向广播事件是为了尽可能快的建立连接。这种报文包含两个地址:广播者的地址和发起者的地址。发起设备在收到发给自己的定向广播报文后,可以立即发送连接请求作为回应。
定向广播事件有特殊的时序要求。完整的广播事件必须每3.75ms重复一次。这一要求使得扫描设备只需要扫描3.75ms便可以收到定向广播设备的消息。
如此快的发送会让报文充斥着广播信道,进而导致该区域内的其他设备无法进行广播。因此,定向广播不可以持续1.28s以上的事件。如果主机没有主动要求停止,或者连接没有建立,控制器都会自动停止广播。一旦到了1.28s,主机便只能使用间隔长得多的通用广播,让其他设备来连接。
当使用定向广播时,设备不能被主动扫描。此外,定向广播报文的净荷中也不能带有其他附件数据。该净荷中只能包含两个必需的地址,别无其他。

代码实现:

void directAdvertising(void)
{
    gapBondRec_t bond_info;

    uint8_t adv_event_type = GAP_ADTYPE_ADV_HDC_DIRECT_IND;
    uint8_t Adv_Direct_Addr[B_ADDR_LEN];
    uint8_t Adv_Direct_Type = adv_direct.advtype;

    tmos_snv_read(mainRecordNvID(0), sizeof(gapBondRec_t), &bond_info);
    tmos_memcpy(Adv_Direct_Addr, bond_info.publicAddr, 6);

    PRINT("Adv Direct type:%#x (", Adv_Direct_Type);
    for (int i = 0; i < 6; i++) {
        PRINT("%#x ", Adv_Direct_Addr[i]);
    } PRINT(")\n");

    GAPRole_SetParameter( GAPROLE_ADV_DIRECT_ADDR, sizeof(Adv_Direct_Addr), Adv_Direct_Addr);
    GAPRole_SetParameter( GAPROLE_ADV_DIRECT_TYPE, sizeof(Adv_Direct_Type), &Adv_Direct_Type);
    GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof(adv_event_type), &adv_event_type);

    uint8_t initial_advertising_enable = TRUE;
    // Set the GAP Role Parameters
    GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8), &initial_advertising_enable);

}

标签:Adv,Addr,Direct,广播,BLE,sizeof,定向
From: https://www.cnblogs.com/gscw/p/17289302.html

相关文章

  • 【Windows】Advanced_System_Care ( v 11.3.5 ) 内存清理插件 大小15.1 MB
    【Windows】Advanced_System_Care(v11.3.5)内存清理插件大小为15.1MBhttps://xcherry.lanzouj.com/il2iOmsobni密码: 3dw3 软件提取自Advanced_System_Care(  v11.3.5  )软件从2018年来,在自己电脑上用到了今天,觉得还不错,分享出来,类似于腾讯电脑管家的小火......
  • Error resolving template [date], template might not exist or might not be access
    这种情况要不就是你想加载页面@RequestMapping("/welcome1.html")publicStringwelcome1(){return"/welcome1";}但写错了改正:@RequestMapping("/welcome1.html")publicStringwelcome1(){return"welcome1";}或者你想return一个值加入注解@R......
  • 记几次 [线上环境] Dubbo 线程池占满原因分析(第二次:CompletableFuture)
    转载:https://blog.csdn.net/wsmalltiger/article/details/124236189文章目录[线上环境]Dubbo线程池占满原因排查系列前言一、问题分析1、分析日志2、定位原因二、解决方案三、总结前言  某天早上9点左右收到线上故障报警,超过3个商家反馈“无法正常进入功能页面,点击相关操作提......
  • 搭一下 Stable Diffusion WebUI
    Preface前不久看到好多朋友用上StableDiffusion来做原画,然后又配合上了Chatgpt。一直以来都想尝试一下,奈何2014款的双核mac跑个idea都发出了拖拉机的轰鸣声。所以一直都是看一半就搁置。然而,这也耐不住心情低落想要一些东西来分散自己的注意力,今天我就和他杠上了。硬件Mac......
  • Advanced Installer傻瓜式打包教程
    工具AdvancedInstaller11.0前言这个包不复杂,没有服务和注册表等操作,但需要.NETFramework4.5和MySQL,同时需要初始化一下数据库,下面一起来实操一下。开始开始前先安装AdvancedInstaller。然后建议画个流程图,帮助自己了解安装包执行时每一步的检测和需要做的操作,比如我这里......
  • IEnumerable 和 IEnumerator
    什么是IEnumerable?这是一个由可枚举类实现的接口。整个集合在c#可以实现IEnumerable接口。它返回IEnumerator。它不会根据代码中使用的访问说明符而更改。IEnumerable有一个称为GetEnumerator的方法。此实现仅在类内部完成。迭代过程使得在集合中遍历变得更容易。......
  • Error response from daemon: conflict: unable to remove repository reference "mic
    docker删除镜像时出现了这样的问题解决方法:强制删除docerrmi-f[IMAGEID]......
  • MATH1023 Multivariable Calculus
    TheUniversityofSydneySchoolofMathematicsandStatisticsLecturesWeek2–SeparableDifferentialEquations&NewtonianDynamicsMATH1023:MultivariableCalculusandModellingSemester1,20231.Existenceanduniquenessofsolutions2.Simple1stOrde......
  • 线程间数据传递之ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal
    前言在JAVA中线程之间传输数据的方式有多种,而本文旨在探讨ThreadLocal及其衍生类的使用场景。使用场景业务系统的参数传递:在我们的业务系统中可能会用到许多公共参数,可能是用户的token信息,在我们链路中可能某一个方法需要用到它,那么我们又不想一层层的传递它。分布式系统要打......
  • Serializable接口 和 serialVersionUID 的关系
    结论建议实现了Serializable手动生成serialVersionUID一般认为实现了Serializable接口,不手动生成serialVersionUID不会出问题。如果没有手动生成,序列化和反序列化的时候,通过类所有字段算一个serialVersionUID出来,但是据说不同jvm可能算的不一样。实现了Serializable......