你好,
当我试图更改睡眠模式的挂钩时,我在include链中遇到了一个错误。
正如在睡眠模式手册中所描述的,我的中断设置了一个标志(event1#flag),我们在Hook#2中检查它,如果设置了另一个标志(event1ţflagţsync),则设置了另一个在Hookţ1中检查的标志(event1ţflagţsync)。
这两个标志都在app\u ourproject\u proj.h中声明(第二个标志在保留内存中使用了\uu RETAINED)。
当我们想要包含app\u ourproject\u proj.h时,include链中会出现一个错误,说明:
“包含链(gap.h)中出错:使用了未声明的标识符'SMPM\u ADDR\u TYPE\u STATIC'”
我们应该把旗放在别的地方吗?
有什么想法吗?

你好,
你们是在应用程序中使用延长睡眠还是深度睡眠模式?
如果在Hook#2中设置了表示应用程序应进入睡眠的标志,则Hook#1将调用函数
“app\u set\u deep\u sleep()”和“app\u ble\u ext\u wakeup\u on()”
所以深度睡眠和睡眠直到中断发生的功能。
你好,
编译错误在我看来很奇怪。SMPM\u ADDR\u TYPE\u STATIC似乎与您正在做的事情无关。
是否可以共享hook#1和hook#2中的代码?
我们绕过了这个问题,给gap.h中的变量指定了smpm.h中设置的变量的精确值,而不是将它们设置为变量本身。
外部布尔按钮\u按下\u同步\u标志;
外部布尔按钮标志;
外部无效app_adv_stop();
extern void app_adv_start();
外部计数器;
外部布尔变换2;
吊钩#1
静态内联bool app\u asynch\u trm(void)
{
bool ret=假;
如果(更改为2)
{
如果(按钮\u按下\u同步\u标志)
{//naar睡眠模式
app_adv_stop();
app_set_deep_sleep();
//nog函数
app_ble_ext_wakeup_on();
//拉尔斯
按钮\u按下\u同步\u标志=假;
//app_adv_stop();
}
其他的
{//willen gaan睡眠模式
app_ble_ext_wakeup_off();
//nog函数
app_adv_start();
app_disable_sleep();
}
changedIn2=假;
ret=真;
}
返回ret;
}
吊钩#2
静态内联bool app\u asynch\u proc(void)
{
bool ret=假;
如果(按钮标志)
{
计数器++;
如果(计数器%2)
{
//gedrukt,maar false,dus zet hem处于睡眠模式
按钮\u按下\u同步\u标志=真;
//app_adv_stop();
changedIn2=真;
}
其他的
{
按钮\u按下\u同步\u标志=假;
//app_adv_start();
changedIn2=真;
}
ret=真;
ButtonFlag=假;
}
返回ret;
}
ButtonFlag、Button\u Pressed\u Sync\u Flag、changedIn2和counter都被保留(在我们的项目文件app\u filename\u proj中)。