]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/power/AsyncPowerManagerP.nc
For some reason nx_bool was failing on TOSSIM.
[tinyos-2.x.git] / tos / lib / power / AsyncPowerManagerP.nc
index 7c00a4833993a8255da7d4fb1790729369f07d5e..9f15cd3b50428247b22089a52c92a37096650bbe 100644 (file)
@@ -29,6 +29,8 @@
  */
  
 /**
+ * Please refer to TEP 115 for more information about this component and its
+ * intended use.<br><br>
  *
  * This is the internal implementation of the standard power management
  * policy for managing the power states of non-virtualized devices.
  * power up, so it can be powered on and off as often as possible.
  * 
  * @author Kevin Klues (klueska@cs.wustl.edu)
- * @see  Please refer to TEP 115 for more information about this component and its
- *          intended use.
  */
  
 generic module AsyncPowerManagerP() {
-  provides {
-    interface Init;
-  }
   uses {
     interface AsyncStdControl;
 
     interface PowerDownCleanup;
-    interface Init as ArbiterInit;
-    interface ResourceController;
+    interface ResourceDefaultOwner;
+    interface ArbiterInfo;
   }
 }
 implementation {
 
-  norace struct {
-    uint8_t stopping :1;
-    uint8_t requested :1;
-  } f; //for flags
-  
-  command error_t Init.init() {
-    call ArbiterInit.init();
-    call ResourceController.immediateRequest();
-    return SUCCESS;
-  }
-
-  async event void ResourceController.requested() {
-    if(f.stopping == FALSE) {
-      call AsyncStdControl.start();
-      call ResourceController.release();
-    }
-    else atomic f.requested = TRUE;    
+  async event void ResourceDefaultOwner.requested() {
+    call AsyncStdControl.start();
+    call ResourceDefaultOwner.release(); 
   }
 
-  async event void ResourceController.idle() {
-    if(call ResourceController.immediateRequest() == SUCCESS) {
-      atomic f.stopping = TRUE;
-      call PowerDownCleanup.cleanup();
-      call AsyncStdControl.stop();
-    }
-    if(f.requested == TRUE) {
-      call AsyncStdControl.start();
-      call ResourceController.release();
-    }
-    atomic {
-      f.stopping = FALSE;
-      f.requested = FALSE;
-    }
-  }
+  async event void ResourceDefaultOwner.immediateRequested() {
+    call AsyncStdControl.start();
+    call ResourceDefaultOwner.release();
+  } 
 
-  event void ResourceController.granted() {
+  async event void ResourceDefaultOwner.granted() {
+    call PowerDownCleanup.cleanup();
+    call AsyncStdControl.stop();
   }
 
   default async command void PowerDownCleanup.cleanup() {