错误报告多定期app_easy_timer回调bug

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

我有3个定时器宣布app_easy_time.one是一个第二次定期,第二个被称为在某些场合,最后一个是呼叫通过随机的时间埃维30秒。
有了这三个定时器,第二个定时器回调被称为无法正确解剖。我认为它被第一个定期计时器调用。
如果我只用前两个定时器,eveything似乎确定。

更新:一些简化代码ilustrting我的定时器设置中,错误地triggerd hanler问题是我的错,但出现其他问题。

静态无效app_watchdog_second_timer_handler()//调用每一秒,
{
second_coun ++;
APP_WATCHDOG_SECOND_TIMER = app_easy_timer(100,app_watchdog_second_timer_handler);// 1000毫秒

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

}

如果(second_count == 30)//一个周期是30秒
{
second_coun = 0;
}

}

空隙sendSensorDataHandler(无效)//调用一次的周期
{
APP_SEND_DATA_TIMER = EASY_TIMER_INVALID_TIMER;//这一行地址我以前的问题,现在计时器触发正确的处理程序
}

空隙resetSendData(无效)//在一些conditon triggerd
{
如果(APP_SEND_DATA_TIMER!= EASY_TIMER_INVALID_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
嗨toughworld,

嗨toughworld,

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

谢谢mt_dialog.

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

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

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

嗨toughworld,

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

空隙testing_timer_handler1(无效)
{
testing_timer1 = EASY_TIMER_INVALID_TIMER;
如果(testing_timer!= EASY_TIMER_INVALID_TIMER)
{
testing_timer = app_easy_timer_modify(testing_timer,RESET_SEND_DATA_TIME +(co_rand_byte()%20)* 10);
}
testing_timer1 = app_easy_timer(60,testing_timer_handler1);
}

空隙testing_timer_handler(无效)
{
如果(testing_timer!= EASY_TIMER_INVALID_TIMER)
{
testing_timer = easy_timer_invalid_timer;
ARCH_SET_PXACT_GPIO();
}
}

谢谢mt_dialog.

马赫什
离线
最后一次露面:3年4个月前
加入:2016年1月4日14:03
你好,

你好,
我在DA14583DEVKT-B板上使用SDK 5.0.3软件。
我已经采取了“ble_app_peripheral”(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)” 被用于触发周期性呼叫。

请帮我解决这个问题。

问候,
马赫什Chandana。

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

嗨mahesh,

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

谢谢mt_dialog.

马赫什
离线
最后一次露面:3年4个月前
加入:2016年1月4日14:03
你好,

你好,
我使用“ble_app_peripheral”(BLE例子给出项目)代码。
我需要以下信息,这将是有益的
1.截至目前,我只能达到最低10毫秒。是否有可能增加内核定时器的调度频率(即app_easy_timer())。
2.我希望用队列中执行我的应用程序。请指导我如何创建和使用的队列。
按我的应用需求3.我需要(通过BLE传输)的传感器数据发送到为内核,当过的数据是可用的。我是否可以称之为“ke_msg_send(REQ)”当过我的传感器数据。任何约束和限制在那里。什么是两个连续的包或消息向内核之间所需的最短时间。

问候,
马赫什Chandana。

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

嗨mahesh,

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

2.你可以找到关于在RW-BT内核-SW-FS的RW内核信息。

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

谢谢mt_dialog.

马赫什
离线
最后一次露面:3年4个月前
加入:2016年1月4日14:03
你好,

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

问候,
马赫什Chandana。

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

嗨mahesh,

是其可能的,你没有做什么特别的,只是发送通知的时间间隔,你想,如果超过一个通知是在队列中可用的堆栈将发送一个以上的数据包。至于多少数据包可以在一个连接间隔发送请检查下一个线程http://support.dialog-semiconductor.com/number-packets-connection-event

谢谢mt_dialog.

马赫什
离线
最后一次露面:3年4个月前
加入:2016年1月4日14:03
你好,

你好,
当过我送使能通知(即,写入请求(即值为1)从移动到服务器),它是在服务器侧接收(即,在user_catch_rest_hndl())。但是当过我(从移动即写请求(即0的值)到服务器)发送禁用通知,我无法接收在服务器侧(即user_catch_rest_hndl())。

我需要指示(在服务器端)当过我收到禁用通知。我怀疑它是在内核级别本身处理。
如何才能辨别的禁用通知的接收。

问候,
马赫什Chandana。

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

嗨mahesh,

当特性的中央写你的应用程序中ble_app_peripheral项目的指示,例如,你应该能够赶上CUST1_IDX_ADC_VAL_1_NTF_CFG情况下,在user_catch_rest_hndl()函数,当你得到这个指示您的应用程序,你可以检查该参数的值具有PRF_CLI_START_NTF或PRF_CLI_STOP_NTFIND。

谢谢mt_dialog.