vinodstanur / open9x

Automatically exported from code.google.com/p/open9x
0 stars 0 forks source link

Delay not applied in user function #182

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
After migrating to r1863 for sky9x, my A2 alerts which had previously a delay 
in order to space the "low battery" voice i'm playing are now always on, 
resulting in a continuous voice alert.

Regards

Original issue reported on code.google.com by baptiste...@gadz.org on 25 Jan 2013 at 2:41

GoogleCodeExporter commented 8 years ago
By the way, is it possible to update the voice pack "french.zip" ? the voice is 
still my favorite :)

Original comment by baptiste...@gadz.org on 25 Jan 2013 at 2:42

GoogleCodeExporter commented 8 years ago
Fixed when reverting this:

Original comment by baptiste...@gadz.org on 27 Jan 2013 at 5:24

Attachments:

GoogleCodeExporter commented 8 years ago
I have quickly made this commit, but it's completely untested:
http://code.google.com/p/open9x/source/detail?r=1896

Would you review the code change and test it on Sky9x? 2 case should be handled:

- when the switch is active during a longer time than the duration (your case 
if I am right)

- when the switch is active during a shorter time than the duration (for 
example with a d>=ofs custom switch)

Thanks!

Original comment by bson...@gmail.com on 27 Jan 2013 at 10:30

GoogleCodeExporter commented 8 years ago
Thanks a lot !

r1896 compiled:

- when the switch is active during a longer time than the duration
    -> CS is triggered, duration & delay are OK (you're right that's the situation i'am in when my battery gets low)

- when the switch is active during a shorter time than the duration
    -> CS is never triggered :(

I'm ready for more tests if you need it.
Regards

Original comment by baptiste...@gadz.org on 28 Jan 2013 at 11:45

GoogleCodeExporter commented 8 years ago
ooops I forgot something important:

if (result && !cswStates[cs_idx])
  cswDurations[cs_idx] = get_tmr10ms() + (cs->duration*50);

=> cswStates[cs_idx] = result;

Original comment by bson...@gmail.com on 28 Jan 2013 at 12:42

GoogleCodeExporter commented 8 years ago
I'm not sure where to add your line ?

Whith the following code it is still not OK.

Original comment by baptiste...@gadz.org on 28 Jan 2013 at 1:33

Attachments:

GoogleCodeExporter commented 8 years ago
It should be inserted between the 2 if. With other words, just after these 2 
lines:

if (result && !cswStates[cs_idx])
  cswDurations[cs_idx] = get_tmr10ms() + (cs->duration*50);

Original comment by bson...@gmail.com on 28 Jan 2013 at 1:56

GoogleCodeExporter commented 8 years ago
Thanks :)

Unfortunately still not OK for the 2nd case (short time activation)

Original comment by baptiste...@gadz.org on 28 Jan 2013 at 2:03

GoogleCodeExporter commented 8 years ago
Strange, it seeems to work here on the simu (with the last commit)

Original comment by bson...@gmail.com on 29 Jan 2013 at 3:23

GoogleCodeExporter commented 8 years ago
Maybe i'm not doing the good test.
Here is what i'm doing (with r1898 flashed):

I've created IP6: V1>x Dir 5 1 1
If i push "Dir" further more than 1 sec IP6 is triggered (1 sec On, 1 Sec Off, 
...)

If i push rapidely "Dir", nothing is triggered (see attached picture)

Original comment by baptiste...@gmail.com on 29 Jan 2013 at 3:50

Attachments:

GoogleCodeExporter commented 8 years ago
I thought I had answered to #10, but now I don't see it ...

A delay means: start the action after a delay of 1s, but only if the condition 
remains true after this delay! So it's normal in your case, you have set a 
delay of 1s, you have to push Dir during one second. 

Original comment by bson...@gmail.com on 2 Feb 2013 at 12:28

GoogleCodeExporter commented 8 years ago
OK, so i have misunderstood the behavior.
No problem with that since i'm not using the CS this way.
Thanks for the help you can close the issue.

Original comment by baptiste...@gadz.org on 5 Feb 2013 at 7:20