DA14580
基本开发工具包,添加模拟传感器和EEPROM
SDK 5.0.3.
你好,对话,
我正在基于ble_app_peripheral示例继续工作,其中我一直在使用custs1_val_set_req消息和ke_msg_send(req)方法更新特征值。其中一个特征是发送到主机应用程序(Andriod平板电脑/电话)的状态字节。我想从未连接运行的操作中发送一些状态,然后在我唤醒时呈现它并连接连接。我首先尝试在user_app_connected中更新状态特性,但不起作用。如果我在用来在连接时更新其他特征的例程中发出完全相同的值更新消息,它可以工作。这些更新每秒运行一次计时器,因此在发送任何特征更新消息之前都有一个第二延迟。所以我的问题是:在使用custs1_val_set_req的特征值更新之前连接到主机时需要延迟延迟?有什么样的指示或已知时间吗?或者甚至可以在未连接时更新特征值的方法?
沿着类似的线路,我想知道是否有在断开连接或进入睡眠之前更新特征值所需的设置时间?
谢谢,最大
设备:
嗨max44,
当设备连接时启用了配置文件(在Default_App_On_Connection中),因此当您未连接时,如果尚未启用配置文件(自文件指定一组处理程序,则无法通过Custs1_Val_set_req更新特性连接状态)如果在启用自定义配置文件之后将邮件放置,则应更新您的值。除了您可以直接访问数据库(不使用任何消息)无论您想要的attmdb_att_set_value()当然您必须先在更新之前创建数据库,并且您必须知道特征的句柄你即将更新。
我没有完全究竟是关于设置时间的说法,只要您发送消息以更新核心,内核将在调度功能传递后发送任何其他消息,然后您跌倒返回睡眠返回消息将在下一次唤醒设备时执行,除非在发送休眠过程的呼叫时,除非在发送睡眠过程时返回exped_powered而不是goto_sleep时,否则将在设备的下一次唤醒时执行。
由于MT_dialog
谢谢mt,
我认为你可以正确地解释我的“设置时间”问题。我想确保在睡觉前发送消息没有时间约束,否则它将丢失。从你所说的话,如果已经提交了消息,那就不应该发生。
如果您可以向我提供关于如何设置特征句柄的进一步指导,我想学习如何使用AttMDB_Att_Set_Value()。我看过musts1_val_set_req_handler,我看:
//更新DB中的值
attmdb_att_set_value (custs1_env。SHDL + param->句柄,param->长度,(uint8_t *)¶m->值);
因此,使用此作为指导(在几个小时后摸索),我插入了消息中使用的值,如下所示:
attmdb_att_set_value(custs1_env.shdl + cust1_idx_status_val,def_cust1_status_char_len,(uint8_t *)&status_value);
我在我的代码中插入了这个操作,在没有连接的操作,我想呈现一些状态。这是编译的,似乎正在工作。我收到状态字节代码,我期待在运行脱机操作后从Android平板电脑重新连接。但是,我必须承认我真的不知道我在这里在做什么。如果看起来是正确的,请告诉我。如果是,它似乎比Ble_App_Peripheralal示例中的消息传递系统更简单。
问候,最大
嗨max44,
是的,这应该不会发生,因为你已经从你的应用程序发送消息调度程序应该服务它在当前时间期间,设备是唤醒的,或在下一次设备将被唤醒。当然,正如我所提到的,如果你在传递了调度程序函数之后发出了一个内核消息,你总是可以取消“go to sleeping procedure”,以便在你醒着的时候执行消息。
关于ATTMDB_ATT_SET_VALUE()是的,您已发布的方式是一种快速而肮脏的方法来使用它(快速且脏,因为您正在令人默认地将特性放置的句柄不符合任何其他原因,如果您想仅更改特定的特征它很好)。
由于MT_dialog
公吨,
谢谢你的评论。这是我这里的全部问题。
快速和“脏”适合我......并与我的原油编码风格合作。:)
问候,最大