错误报告多定期app_easy_timer回调bug

12个帖子/ 0新
最后一篇
强奸
离线
最后一次露面:3年4个月前
加入:2015-05-12 09:55
错误报告多定期app_easy_timer回调bug

我有3个由app_easy_time声明的计时器是周期性的一秒,第二个是在某些情况下调用的,最后一个在随机时间呼叫epy 30秒。
有了这三个定时器,第二个定时器回调被称为无法正确解剖。我认为它被第一个定期计时器调用。
如果我只使用前两个计时器,eveything似乎可以。

更新:一些简化的代码iLustring我的计时器设置,错误地触发汉勒问题是我的错,而另一个问题发生了另一个问题。

静态void app_watchdog_second_timer_handler()//调用每秒,
{
second_coun ++;
app_watchdog_second_timer = app_easy_timer(100,app_watchdog_second_timer_handler);// 1000女士

if(second_count == 10)
{
uint32_t delay =(co_rand_byte()%20)* 10 + 30;
app_send_data_timer = app_easy_timer(延迟,sendsensordatahandler);

}

if(sign_count == 30)//期间为30秒
{
second_coun = 0;
}

}

void sendsensordatahandler(void)//在一段时间内致电
{
app_send_data_timer = easy_timer_invalid_timer;//这条行地址我以前的问题,现在定时器触发正确的处理程序
}

Void ResetsendData(Void)//触发器在某些条件下
{
if(app_send_data_timer!= eyle_timer_invalid_timer)//此行地址我以前的问题,现在Timer触发正确的处理程序
{
// ----------此处发生另一个问题,此功能组织删除了我的app_watchdog_second_timer,导致运行定时器[app_callbacks [app_timer_max_num],空

app_send_data_timer = app_easy_timer_modify(app_send_data_timer,reset_send_data_time +(co_rand_byte()%20)* 10);
}

}

关键词:
设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Tengworld,

嗨Tengworld,

你能给我一些关于你的设置的细节吗?我设置了3个定时器1)60秒,2)30秒和3)递增延迟。所有这些似乎都准时到了。在你的考试中,如果我正确地正确地确定了一个计时器触发了错误的处理程序,这是正确的吗?

谢谢mt_dialog.

强奸
离线
最后一次露面:3年4个月前
加入:2015-05-12 09:55
谢谢,我上传了一些

谢谢,我上传了一些简化的代码iLustring我的计时器设置,错误地触发了Hanler问题是我的错,但另一个问题发生了,
顺便说一下,在CSR API中,回调有TimerID参数,用于避免赛车编码子,在易于计时器中,没有这个,是可以的吗?
typedef void(* timer_callback_arg)(timer_id const)
timer_id timercreate(uint32 const time,bool const相对,timer_callback_arg处理程序)

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Tengworld,

嗨Tengworld,

如果我正确地正确地正确地opp_easy_timer_modify();而不是修改您的计时器它删除另一个计时器?您是否能够验证到App_easy_timer_modify的值并检查传递给函数的处理程序的ID。我尝试了app_easy_timer_modify,它不会取消计时器。您可以尝试实现更简单的东西,以便如此:

void testing_timer_handler1(void)
{
testing_timer1 = easy_timer_invalid_timer;
if(testing_timer!= easy_timer_invalid_timer)
{
testing_timer = app_easy_timer_modify(tests_timer,reset_send_data_time +(co_rand_byte()%20)* 10);
}
testing_timer1 = app_easy_timer(60,testing_timer_handler1);
}

void testing_timer_handler(void)
{
if(testing_timer!= easy_timer_invalid_timer)
{
testing_timer = easy_timer_invalid_timer;
ARCH_SET_PXACT_GPIO();
}
}

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
我在DA14583DEVKT-B板上使用SDK 5.0.3软件。
我拍摄了“BLE_APP_PERITELAL”(给出了BLE示例项目)。

修改以支持两个特征。需要每10毫秒和30毫秒通过分别的特点1和特征2发送数据。

在每个循环操作中,我需要获得1个数据 - I和3数据包的数据-I(即持续时间为30毫秒)。但我收到了1个数据-1和2数据包的数据-II。
“app_easy_timer(app_peripheral_ctrl_timer_delay,dataval1timercbhandler)”和“app_easy_timer(app_peripheral_ctrl_timer_delay2,dataval2timercbhandler)”用于触发定期呼叫。

请帮我解决这个问题。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

请检查以下帖子http://support.dialog-semicondiondionder.com/whats-kernel-timer- accuracy.

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
我使用“BLE_APP_PERITERAL”(给定的BLE示例项目)代码。
我需要以下信息,这将是有用的
1.截至目前,我只能达到最低10毫秒。是否有可能增加内核定时器的调度频率(即app_easy_timer())。
2.我希望在我的申请中使用队列实现。请指导我如何创建和使用队列。
3.根据我的应用要求,我需要将传感器数据发送到内核(用于通过BLE传输),当数据可用时。无论我是否可以调用“KE_MSG_SEND(REQ)”,当我有传感器数据时。是否存在任何约束和限制。两个连续数据包或消息到内核所需的最短时间是多少。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

1.我不通过调度频率获得你的意思,当代码通过主循环中的RWIP_SCHEDULE()时,所有消息都会安排所有消息。如果这就是你的意思,没有办法增加内核计时器的分辨率。

2.您可以在RW-BT-Kernel-SW-FS中找到有关RW内核的信息。

3.正如上面提到的那样,通过RWIP_SCHEDULE()调度到内核的消息,频繁执行此函数执行的频率取决于该循环,如果系统决定睡眠或不睡眠以及APP_ASYNCH_TRM()的函数函数(app_on_ble_powered)。如果app_on_ble_powered return goto_sleep设备将继续,使相应的睡眠检查并进入睡眠状态,如果返回keep_powered,这将强制调度程序再次运行。

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
谢谢你的快速回复。
是否可以以单个连接间隔发送多个(即多个)通知数据。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

是的,您可能不必做任何特殊的事情,只需在您想要的时间间隔内发送通知,并且堆栈将更多地发送一个数据包如果队列中有多个通知。关于在一个连接间隔中可以发送多少个数据包请检查下一个线程http://support.dialog-semicondiondiondum/number-packets-connection-event.

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
当我发送启用通知时(即,从移动到服务器的写入请求(即1值),它是可在服务器端(即user_catch_rest_hndl())收缩。但是,当我发送禁用通知时(即从移动到服务器的写入请求(即0值)),我无法在服务器端接收(即user_catch_rest_hndl())。

我需要指示(在服务器端),当我接受禁用通知时。我怀疑它是在内核层面的处理。
我如何确定禁用通知的接收。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨mahesh,

嗨mahesh,

当一个中央写入特性时,您在应用程序中找到指示,例如在BLE_APP_PERITELAL项目中,您应该能够在USER_CATCH_REST_HNDL()函数中捕获CUST1_IDX_ADC_VAL_1_NTF_CFG案例,当您将此指示达到您的应用程序时,您可以检查是否参数的值具有prf_cli_start_ntf或prf_cli_stop_ntfind。

谢谢mt_dialog.