]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/tmp175/HalTMP175ControlP.nc
Merge over into the trunk.
[tinyos-2.x.git] / tos / chips / tmp175 / HalTMP175ControlP.nc
index a1745789628ee04ef305e52b2e5d961fa0d50e31..451be31bce9f0e46dd6179eac3185bc0d62d74cf 100644 (file)
@@ -63,11 +63,13 @@ implementation {
   uint8_t mConfigRegVal = 0;
   error_t mHplError;
 
+  task void complete_Alert() {
+    signal HalTMP175Advanced.alertThreshold();
+  }
 
   static error_t setCfg(uint8_t nextState, uint32_t val) {
     error_t error;
 
-
     mState = nextState;
 
     error = call HplTMP175.setConfigReg(val);
@@ -80,13 +82,11 @@ implementation {
     }
 
     return error;
-
   }
 
   static error_t setThresh(uint8_t nextState, uint32_t val) {
     error_t error;
 
-
     mState = nextState;
 
     if(mState == STATE_SET_TLOW)
@@ -97,12 +97,8 @@ implementation {
     if (error) {
       call TMP175Resource.release();
     }
-    else {
-      mConfigRegVal = val;
-    }
 
     return error;
-
   }
 
   command error_t HalTMP175Advanced.setThermostatMode(bool useInt) {
@@ -131,7 +127,7 @@ implementation {
     }
 
     newRegVal = (polarity) ? (mConfigRegVal | TMP175_CFG_POL) : (mConfigRegVal & ~TMP175_CFG_POL);
-    error = setCfg(STATE_SET_MODE, newRegVal);
+    error = setCfg(STATE_SET_POLARITY, newRegVal);
 
     return error;
   }
@@ -183,8 +179,7 @@ implementation {
     if (error) {
       return error;
     }
-    
-    //error = call HplTMP175.setTLowReg(val << 4);
+
     error = setThresh(STATE_SET_TLOW, val);
 
     if (error) {
@@ -202,7 +197,6 @@ implementation {
       return error;
     }
 
-    //error = call HplTMP175.setTHighReg(val << 4);
     error = setThresh(STATE_SET_THIGH, val);
 
     if (error) {
@@ -218,21 +212,25 @@ implementation {
     call TMP175Resource.release();
     switch (mState) {
     case STATE_SET_MODE:
+      mState = STATE_NONE;
       signal HalTMP175Advanced.setThermostatModeDone(lasterror);
       break;
     case STATE_SET_POLARITY:
+      mState = STATE_NONE;
       signal HalTMP175Advanced.setPolarityDone(lasterror);
       break;
     case STATE_SET_FQ:
+      mState = STATE_NONE;
       signal HalTMP175Advanced.setFaultQueueDone(lasterror);
       break;
     case STATE_SET_RES:
+      mState = STATE_NONE;
       signal HalTMP175Advanced.setResolutionDone(lasterror);
       break;
     default:
       break;
     }
-    mState = STATE_NONE;
+    //mState = STATE_NONE;
     return;
   }
 
@@ -242,15 +240,18 @@ implementation {
     call TMP175Resource.release();
     switch (mState) {
     case STATE_SET_TLOW:
+      mState = STATE_NONE;
       signal HalTMP175Advanced.setTLowDone(lasterror);
       break;
     case STATE_SET_THIGH:
+      mState = STATE_NONE;
       signal HalTMP175Advanced.setTHighDone(lasterror);
       break;
     default:
+      mState = STATE_NONE;
       break;
     }
-    mState = STATE_NONE;
+    //mState = STATE_NONE;
   }
 
   event void TMP175Resource.granted() {
@@ -275,11 +276,7 @@ implementation {
   }
 
   async event void HplTMP175.alertThreshold() {
-    // if in interrupt mode, need to clear interrupt, otherwise, just signal
-    if(mConfigRegVal & TMP175_CFG_POL) {
-      // this will clear the interrupt, just ignore the result
-      call HplTMP175.measureTemperature();
-    }
+    post complete_Alert();
   }
 
   async event void HplTMP175.measureTemperatureDone(error_t error, uint16_t val) {