LPM idle_thread

Hello,

why is LPM_SLEEP or LPM_POWERDOWN is commented out?

kernel_init.c:

Hi Frank!

why is LPM_SLEEP or LPM_POWERDOWN is commented out?

I think it's mostly commented out for debugging. Debugging with power save modes can become really nasty (even printf() debugging).

However, I agree this shouldn't be solved like this. Another case for DEVELHELP, maybe?

Cheers, Oleg

See https://github.com/RIOT-OS/RIOT/issues/2927 It’s not yet been developed fully, those are just place holders. I have proposed to use a more dynamic scheme for the LPM modes.

Best regards, Joakim www.eistec.se

Hi,

DEVELHELP should not be used to change the semantics of things.

Cheers, Ludwig

Hi Ludwig!

DEVELHELP should not be used to change the semantics of things.

Can you elaborate?

Cheers, Oleg

Hi,

DEVELHELP should not be used to change the semantics of things.

Can you elaborate?

The system should behave the same whether develhelp is used or not.

If you do something like

#ifdef DEVELHELP if(input_not_correct) {   print("error message");   return ERROR; } #endif

then the application will work correctly (e.g., handle the error) with DEVELHELP and probably crash without. But DEVELHELP is supposed to expose bugs, not work around them. So in this example, the "return ERROR" should be omitted.

Kaspar

Hi!

>> DEVELHELP should not be used to change the semantics of things. > > Can you elaborate? The system should behave the same whether develhelp is used or not.

I would claim that this is impossible. Even a simple puts() already affects the timings, calls peripheral drivers, and may cause interrupts.

then the application will work correctly (e.g., handle the error) with DEVELHELP and probably crash without. But DEVELHELP is supposed to expose bugs, not work around them. So in this example, the "return ERROR" should be omitted.

I would guess that going into LPM_SLEEP instead of LPM_IDLE has a similar effect than calling additional printfs (which basically means that the effect cannot be foreseen in most cases).

Cheers, Oleg

Hi,

Hi Kaspar!

> I would claim that this is impossible. Even a simple puts() already affects > the timings, calls peripheral drivers, and may cause interrupts. "the same" was bad wording. I meant semantically, like Martine initially stated.

I guess you mean Ludwig. I just wanted to point out that going into powerdown mode (but going into *different* powerdown modes) falls into the same category than printing or non printing.

Cheers, Oleg

Hi,

I would claim that this is impossible. Even a simple puts() already affects the timings, calls peripheral drivers, and may cause interrupts.

"the same" was bad wording. I meant semantically, like Martine initially stated.

I guess you mean Ludwig.

Yes, sorry Martine, sorry Ludwig.

I just wanted to point out that going into powerdown mode (but going into *different* powerdown modes) falls into the same category than printing or non printing.

whatever. :wink:

Kaspar