From: klueska Date: Mon, 2 Mar 2009 21:05:10 +0000 (+0000) Subject: Added patch to DeferredPowerManager to check for EALREADY when starting or stopping... X-Git-Tag: rc_6_tinyos_2_1_1~481 X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=commitdiff_plain;h=cfc8b8448d14883d4d47e0852797366ef0c13a75 Added patch to DeferredPowerManager to check for EALREADY when starting or stopping to decide if we should release or not --- diff --git a/tos/lib/power/DeferredPowerManagerP.nc b/tos/lib/power/DeferredPowerManagerP.nc index 250042ce..209b5ffc 100644 --- a/tos/lib/power/DeferredPowerManagerP.nc +++ b/tos/lib/power/DeferredPowerManagerP.nc @@ -70,7 +70,8 @@ implementation { call TimerMilli.stop(); stopTimer = FALSE; call StdControl.start(); - call SplitControl.start(); + if (call SplitControl.start()==EALREADY) + call ResourceDefaultOwner.release(); } task void timerTask() { @@ -82,7 +83,7 @@ implementation { stopTimer = TRUE; post startTask(); } - else atomic requested = TRUE; + else requested = TRUE; } async event void ResourceDefaultOwner.immediateRequested() { @@ -105,11 +106,14 @@ implementation { } event void TimerMilli.fired() { - if(stopTimer == FALSE) { - stopping = TRUE; - call PowerDownCleanup.cleanup(); - call StdControl.stop(); - call SplitControl.stop(); + atomic { + if(stopTimer == FALSE) { + stopping = TRUE; + call PowerDownCleanup.cleanup(); + call StdControl.stop(); + if (call SplitControl.stop()==EALREADY) + signal SplitControl.stopDone(SUCCESS); + } } }