嗨,对话,
我在扩展睡眠模式下使用583模块,外部唤醒中断使用bleèu barebone示例实现,该示例工作正常,并使用以下配置进行广告:
///播发操作类型。
.advised\u operation=ADV\u UNDIRECT,
///设备的自有BD地址源:
.address\u src=GAPM\u PUBLIC\u ADDR,
///播发间隔
.intv=64,//50ms(80*0.625ms)
///广告渠道图
.channel_map=0x7,
我现在想用随机的BLE地址做广告,所以我做了以下更改:
.address\u src=GAPM\u GEN\u STATIC\u RND\u ADDR,
因此,我可以在每个连接上生成随机地址,但设备不会进入睡眠状态,我还需要做哪些更改才能使其进入睡眠状态并使用随机地址进行广告?
设备:
你好,dhirajp15,
我不明白用随机地址做广告的选项与设备不睡觉这一事实有什么关系,还有其他问题。如果您在该配置中来回切换,您是否可以看到设备未睡眠和正在睡眠,以及如何确切地检查设备是否正在睡眠?通过巧妙的片段?你用数字万用表测量耗电量?我没有看到任何类似的设置。
谢谢你的对话
嗨,MT\u Dialog,
我在里面写了一个计时器
架构\u ble \u set \u ext \u sleep():
拱门\u ble \u ext \u wakeup \u on():
这通常会使处理器进入长时间睡眠,直到我按下唤醒按钮,如果我在用户配置中使用公共地址,则在睡眠期间处理器不会播发,但在设置随机地址时,即使调用了after the sleep指令,处理器也会继续播发
谢谢,
迪拉杰
你好,dhirajp15,
您的描述中缺少了一些东西,据我所知,您将设备设置为播发模式,并通过内核计时器计算播发时间,当计时器过期时,您从计时器回调调用这两个函数,设备停止播发?为了停止广告,不管你使用的是哪个地址(公共的还是私人的,静态的还是随机的),你应该在代码的某个地方停止广告。如果你不发送GAPM\u CANCEL\u CMD命令,你的设备应该永远继续做广告,只调用arch\u ble\u ext\u wakeup\u on()不会停止你的设备做广告。建议这样做的方案是在播发时调用计时器,并从计时器回调发送GAPM\u CANCEL\u CMD,当播发停止时,您将调用唤醒过程的所有nessecary函数。所以检查一下你停止做广告的地方。
谢谢你的对话
嗨,MT\u Dialog,
谢谢你的帮助!
在调用sleep之前,我使用了app\u easy\u gap\u advertized\u stop()函数,它可以工作!
所以在ble\u barebone示例583中,默认情况下启动广告,如果我在user\u app\u init()内调用app\u easy\u gap\u advertive\u stop(),它不会停止广告我应该怎么做才能在开始时停止广告,我的目标是在外部中断时唤醒设备并使其广告,我不希望它在开始时广告
谢谢迪拉杰
你好,dhirajp15,
如果您从app\u init()发送消息,消息将永远不会执行,因为在app\u init()之后,内核的消息队列将被重置(GAPM\u reset)。我不明白的是你为什么要在广告开始前取消它?当你根本无法开始做广告的时候,为什么还要叫广告停止呢?如果您不想在设备启动后立即播发,您可以创建一个自定义函数并替换\u set \u dev \u config \u complete()上的默认\u app \u或\u db \u init \u complete()上的默认\u app \u,具体取决于您是否在设备上创建数据库。例如,barebone在\u db\u init\u complete()上从默认的\u app\u开始发布广告,因为它实现了diss服务。如果在设备配置结束时没有服务实现,设备将从默认的应用程序开始播发。
谢谢你的对话
嗨,MT\u dialog,
我能够成功地实现随机BLE地址。
谢谢你的帮助。
当做,
迪拉杰
你好,dhirajp15,
很高兴你能让它工作,如果以上任何职位有帮助,请标记为接受他们。
谢谢你的对话