亲爱的MT\u dialog,
我使用示例程序“ble\u app\u peripheral”。现在我想使用characteristik“val 1”,而不激活特征“Control Point”。
1.我做的,定时器的功能独立于“控制点”。但如果我通过特征“控制点”发送“0x01”,值仍然显示。我必须做什么,才能使用“val1”的通知而不激活“Control Point”?
2.我在函数“user_custs1_adc_val_1_cfg_ind_indler”中启动计时器。似乎,定时器似乎更快,因为计时器启动“user_custs1_ctrl_wr_ind_handler”时。我使用相同的“app_peripheral_ctrl_timer_delay”--delay。什么是原因?
亲切的问候。
设备:
嗨dmueller,
1.我不确定我是否理解您所做的,但您必须以某种方式触发计时器以开始计数(即控制点特性在写入时所做的只是触发计时器),您将计时器的触发放置在何处?如果你没有得到任何通知值,那么显然计时器是不会被触发的。例如,如果调用timer\u used=app\u easy\u timer(app\u PERIPHERAL\u CTRL\u timer\u DELAY,app\u adcval1\u timer\u cb\u handler);在用户\u custs1 \u adc \u val \u 1 \u cfg \u ind \u handler()中,就像您在第二个问题或连接回调中所做的那样,设备应该根据计时器超时来更新值。
2.关于在提到的函数中触发时,您看到定时器运行更快,我没有看到这样的东西,可以使用电源profiler和arch_set_pxact_gpio()(触发电源分布器中的光标)以测量之间的距离不同的定时器超时。
谢谢你的对话
嗨mt_dialog,
1.我在函数“user_custs1_adc_val_1_cfg_ind_handler”中启动计时器。计时器有效。如果我在没有通知的情况下读取该值,我就可以看到。如果我开始通知,智能手机显示屏上没有任何内容。首先,如果我在“控制点”中发送“0x01”,则使用通知将更新值。我认为有一个连接携带的通知功能和“控制点” - 特征,但我不知道在哪里。
2.我有了一个新的知识:如果我使用“user\u custs1\u ctrl\u wr\u ind\u handler”中的计时器,值会均匀增加。如果我使用“user\u custs1\u adc\u val\u 1\u cfg\u ind\u handler”中的计时器,三个值会快速发送。然后是一个小小的休息。三个值正在快速发送。等等。也许你有个主意,为什么会这样?
(我拍了两个视频。不幸的是,它们超过了10MB。但如果你给我一个电子邮件地址,我可以把这些视频发给你)
亲切的问候。
嗨dmueller,
1)由于您将计时器放在user_custs1_adc_val_1_cfg_ind_handler()函数中,这意味着您不必通过控制点特征触发计时器,但启用通知(从中央)user_custs1_adc_val_1_cfg_ind_handler()将触发,激活计时器开始生成通知。因此,您没有收到通知的事实,但在读取时看到递增到特征,我可以假设您正在激活控制点特性,但您不会在中央启用通知。作为通知的常规交换机实现控制点特性的示例。一旦执行写入控制点,user_custs1_ctrl_wr_ind_handler()函数会被触发,如果该值是正确的!= 0然后启用计时器。轮到轮流上的计时器发送到堆栈的通知命令,并且在排列的连接间隔到达时发送通知。此外,为了获取Central上的通知,您需要从中央启用它们,一旦启用它们,将触发user_custs1_adc_val_1_cfg_ind_handler()。
2)在您的第二个创建中,我只能假设您从控制点触发多个定时器,也可以从user_custs1_adc_val_1_cfg_ind_handler()或甚至更多(如果您重写控制点特性或继续启用禁用通知)和所有这些都在经过它们时,他们向堆栈推出通知。
谢谢你的对话
嗨mt_dialog,
1.是的,这是正确的。我不希望通过控制点特征触发计时器。我已经启用了中央的通知。但首先,如果我通过控制点特征发送0x01,我会看到智能手机上的值。我将再次进行一些测试。
我会在计时器之后展示。但我知道,我没有从控制点特征开始计时器。
谢谢你的helb。
亲切的问候。
嗨dmueller,
1.如果不想从控制点特征触发计时器,那么不要在该特征处执行写入,只需将定时器启动函数放在user_custs1_adc_val_1_cfg_ind_handler()函数中,因此通过启用ADC值1特征的通知将发生处理程序并启动将触发通知发送功能的计时器。
2.关于第二种情况,当放置在不同的代码部分时,定时器计数更快,这是唯一的逻辑解释,即您启用超过1个定时器,每个计时器通过相同的通知功能(相同的计时器回调)更新并每次发送更多通知。
谢谢你的对话
嗨mt_dialog,
很抱歉重播太晚了。
1.是的,我已经从user_custs1_adc_val_1_cfg_ind_handler()开始计时器。
我现在删除了控制characteristic。现在都是功能。
非常感谢你的帮助。
亲切的问候。