Hi thanks for the answer and mosty the way you help me approach the issue.

I have to also write here that this was a toy example. I was trying to capture 
the key only once, so once the button is pressed to stop doing this after that 
point. If I understand it right the reason that it does not work, is the way a 
mote works, which I think is the big lesson here.


Logically the code looks okay, as the software at the ends call the low level 
disable. I guess that the problem as you said has to do with the interrupt 
handler. If I wanted to make this work perhaps I should add a timer that is 
called once and then disables the notify..


I will try that later and let you know. Is important for me to understand such 
toy examples as will allow me to further understand  how things work.


Regards

Alex





On Tuesday, November 12, 2013 9:46 PM, Alaios <[email protected]> wrote:
 


Hi,
thanks for the answer, and mostly appreciated the way you answered so I can 
have also me motivated to find the solution. I looked on the code and this is 
what I found : 




static void 
/*UserButtonC.SwitchToggleC*/SwitchToggleC__0__sendEvent__runTask(void )
#line 79
{
bool pinHigh;

#line 81
pinHigh = /*UserButtonC.SwitchToggleC*/SwitchToggleC__0__m_pinHigh;

/*UserButtonC.SwitchToggleC*/SwitchToggleC__0__Notify__notify(pinHigh);

if (pinHigh) {
/*UserButtonC.SwitchToggleC*/SwitchToggleC__0__GpioInterrupt__enableFallingEdge();
}
else
#line 87
{
/*UserButtonC.SwitchToggleC*/SwitchToggleC__0__GpioInterrupt__enableRisingEdge();
}
}
It looks, that the Notify__notify
 to be inside a piece of code that is responsible for handling the key is 
pressed(pinHigh).
I guess that If I add the Notify__disable there it will work the way I want. Do 
not have the compiler with me, will check tomorrow morning when I will be at 
the office.

For the Notify__disable the function does
static inline error_t 
/*UserButtonC.SwitchToggleC*/SwitchToggleC__0__Notify__disable(void )
#line 67
{
return /*UserButtonC.SwitchToggleC*/SwitchToggleC__0__GpioInterrupt__disable();
}

but then I also found the
inline static error_t MyFooC__Notify__disable(void ){

unsigned char __nesc_result;



__nesc_result = UserButtonP__Notify__disable();



return __nesc_result;
line 67
}


What I do not understand is that the way is written looks like tha the low 
level GpioInterrupt_disable would be called at the end. Have to proceed to bed 
soon, as my daughter gets her teeth out
 soon but I Will try to check again all the code tomorrow during my train ride 
to work.

Thanks a lot have fun





On Monday, November 11, 2013 5:30 AM, Eric Decker <[email protected]> wrote:
 


look at the code actually generated…

build/telosb/app.c

Then look to see where Notify__notify is actually called.   And see what 
Notify__disable actually does.

Notice the name munging.    xyzP.nc which has Notify.disable() in it has the 
names munged to be xyzP__Notify__disable.




On Sun, Nov 10, 2013 at 4:04 PM, Alaios <[email protected]> wrote:

Dear all,
>I was looking the other day on the tinyos website regarding the Notify 
>interface
>http://www.tinyos.net/tinyos-2.1.0/doc/nesdoc/telosb/ihtml/tos.interfaces.Notify.html
>
>there I found the Notify.disable() call that I wanted to try. What I did is I 
>wrote a simple program that once the key at my telosb is pressed the led turns 
>on.
>
>Code looks like that
>
>#include <UserButton.h>
>module MyFooC {
>    uses interface Boot;
>    uses interface Leds;
>    uses interface Notify<button_state_t>;
>}
>
>implementation {
>
>event void Boot.booted() {
>            call Leds.led1Toggle();
>            call
 Notify.enable();
>            }
>
>event void Notify.notify(button_state_t state) {
>if (state == 0) {call Leds.led0Toggle(); }
>else call Leds.led2Toggle();
>call Notify.disable();
>            }
>
>}
>
>as you can see after led turns off I call Notify.disable() so it starts to 
>ignore when button is pressed. Unfortunately this did not work out at all. I 
>keep pressing the button and the led just toggles. What I am missing here from 
>the "theory"?
>
>I would like to thank you in advance for your help
>
>Regards
>Alex
>P.s If wiring is needen then it was:
>
>configuration MyFooAppC{
>}
>
>implementation {
>
>components MyFooC,MainC,LedsC,UserButtonC;
>
>MyFooC.Boot -> MainC.Boot;
>MyFooC.Leds -> LedsC;
>MyFooC.Notify -> UserButtonC.Notify;
>
>}
>
>
>
>
>_______________________________________________
>Tinyos-help mailing list
>[email protected]
>https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>


-- 
Eric B. Decker
Senior (over 50 :-) Researcher



_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to