< div class = "字段field-name-taxonomy-forums field-type-taxonomy-term-reference field-label-above”> < div class = "字段标签" >论坛:,< / div > < div class = "字段条目" > < div class =”field-item甚至“rel = " sioc: has_container " > < a href = " /论坛/ dialog-smartbond-bluetooth-low-energy - % E2 % 80% 93 -软件”“=“sioc:容器sioc:论坛”属性= " rdfs: label skos: prefLabel”数据类型= " " >对话框Smartbond蓝牙低能量-软件< / > < / div > < / div > < / div > < div class =”字段field-name-body field-type-text-with-summary field-label-hidden”> < div class = "字段条目" > < div class =”field-item甚至“财产=“内容:编码”> < p >你好,< br / >我们已经开发出一种程序来响应按钮中断,类似于睡眠模式和prox_reporter程序。在我们的例子中,程序永远不会进入永久休眠-它总是在广告或在后台有一个计时器在未来重新启动广告。当按钮被按下时,我们希望改变广告的有效载荷,并在几秒钟内停止对按钮的响应(即忽略多次按下或双击)。< br / >我们注意到,sleepmode程序有一个回调响应按钮事件(user_app_button_press_cb wkupct_register_callback设定的),但prox_reporter 2回调:app_button_press_cb由wkupct_register_callback和app_wakeup_cb app_easy_wakeup_set设定的。prox_reporter < br / >, app_button_press_cb调用似乎做一些低水平操作(periph_init、arch_set_sleep_mode arch_ble_force_wakeup, arch_ble_ext_wakeup_off),然后调用app_easy_wakeup,发送一个事件,应该发起app_wakeup_cb将做高层的逻辑。 我们假设两个回调算法是为了让系统完成它的唤醒操作,或者为了防止高级操作被连续多次调用。由于某种原因,我们的app_wakeup_cb没有被调用(我们调试了代码,注意到app_easy_wakeup()被调用,但是app_wakeup_cb没有被调用……)。
然后我们直接从user_app_button_press_cb(而不是调用app_easy_wakeup())调用app_wakeup_cb(),但我们不确定这是否安全。
不使用app_easy_wakeup有什么副作用?我们的假设正确吗?为什么睡眠模式程序中没有?你有一个类似的程序,只响应一个按钮点击一次,即在按钮被按下后禁用irq,并仅在几秒钟后重新启用irq ?
我们注意到在app_button_press_cb的末尾,它再次调用app_button_enable()。 In our case, we do not want to immediately restart listening to button events, so we removed this line. May this be our problem that causes app_wakeup_cb not to run?
Thanks,
Oren Zomer