[Tinyos-2-commits] CVS: tinyos-2.x/tos/chips/tmp175 HalTMP175Advanced.nc, 1.1.2.1, 1.1.2.2 HalTMP175ControlP.nc, 1.1.2.1, 1.1.2.2 HalTMP175ReaderP.nc, 1.1.2.2, 1.1.2.3 HplTMP175LogicP.nc, 1.1.2.2, 1.1.2.3

Philip Buonadonna philipb at users.sourceforge.net
Thu Jul 6 16:20:19 PDT 2006


Update of /cvsroot/tinyos/tinyos-2.x/tos/chips/tmp175
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7862

Modified Files:
      Tag: tinyos-2_0_devel-BRANCH
	HalTMP175Advanced.nc HalTMP175ControlP.nc HalTMP175ReaderP.nc 
	HplTMP175LogicP.nc 
Log Message:
Updated support for TI TMP175 sensor chip

Index: HalTMP175Advanced.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/tmp175/Attic/HalTMP175Advanced.nc,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** HalTMP175Advanced.nc	19 Jun 2006 18:20:59 -0000	1.1.2.1
--- HalTMP175Advanced.nc	6 Jul 2006 23:20:16 -0000	1.1.2.2
***************
*** 38,41 ****
--- 38,43 ----
   */
  
+ #include "TMP175.h"
+ 
  interface HalTMP175Advanced {
  

Index: HalTMP175ControlP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/tmp175/Attic/HalTMP175ControlP.nc,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** HalTMP175ControlP.nc	19 Jun 2006 18:20:59 -0000	1.1.2.1
--- HalTMP175ControlP.nc	6 Jul 2006 23:20:16 -0000	1.1.2.2
***************
*** 39,43 ****
   */
  
! generic module HplTMP175ReaderP()
  {
    provides interface HalTMP175Advanced;
--- 39,43 ----
   */
  
! module HalTMP175ControlP
  {
    provides interface HalTMP175Advanced;
***************
*** 54,58 ****
      STATE_SET_FQ,
      STATE_SET_RES,
!     STATE_NONE;
    };
  
--- 54,61 ----
      STATE_SET_FQ,
      STATE_SET_RES,
!     STATE_NONE,
! 
!     STATE_SET_TLOW,
!     STATE_SET_THIGH,
    };
  
***************
*** 68,77 ****
      mState = nextState;
  
!     error = call HplTMP715.setConfigReg(val);
      if (error) {
        call TMP175Resource.release();
      }
      else {
!       mConfigRegVal = newRegVal;
      }
  
--- 71,103 ----
      mState = nextState;
  
!     error = call HplTMP175.setConfigReg(val);
! 
      if (error) {
        call TMP175Resource.release();
      }
      else {
!       mConfigRegVal = val;
!     }
! 
!     return error;
! 
!   }
! 
!   static error_t setThresh(uint8_t nextState, uint32_t val) {
!     error_t error;
! 
! 
!     mState = nextState;
! 
!     if(mState == STATE_SET_TLOW)
!       error = call HplTMP175.setTLowReg(val << 4);
!     else
!       error = call HplTMP175.setTHighReg(val << 4);
! 
!     if (error) {
!       call TMP175Resource.release();
!     }
!     else {
!       mConfigRegVal = val;
      }
  
***************
*** 159,163 ****
      }
      
!     error = call HplTMP175.setTLowReg(val << 4);
  
      if (error) {
--- 185,190 ----
      }
      
!     //error = call HplTMP175.setTLowReg(val << 4);
!     error = setThresh(STATE_SET_TLOW, val);
  
      if (error) {
***************
*** 176,180 ****
      }
  
!     error = call HplTMP175.setTHighReg(val << 4);
  
      if (error) {
--- 203,208 ----
      }
  
!     //error = call HplTMP175.setTHighReg(val << 4);
!     error = setThresh(STATE_SET_THIGH, val);
  
      if (error) {
***************
*** 209,212 ****
--- 237,261 ----
    }
  
+   task void handleTReg() {
+     error_t lasterror;
+     atomic lasterror = mHplError;
+     call TMP175Resource.release();
+     switch (mState) {
+     case STATE_SET_TLOW:
+       signal HalTMP175Advanced.setTLowDone(lasterror);
+       break;
+     case STATE_SET_THIGH:
+       signal HalTMP175Advanced.setTHighDone(lasterror);
+       break;
+     default:
+       break;
+     }
+     mState = STATE_NONE;
+   }
+ 
+   event void TMP175Resource.granted() {
+     // intentionally left blank
+   }
+ 
    async event void HplTMP175.setConfigRegDone(error_t error) {
      mHplError = error;
***************
*** 216,233 ****
  
    async event void HplTMP175.setTLowRegDone(error_t error) {
! 
  
    }
  
    async event void HplTMP175.setTHighRegDone(error_t error) {
! 
! 
    }
  
    async event void HplTMP175.alertThreshold() {
! 
! 
    }
  
    default event void HalTMP175Advanced.setTHighDone(error_t error) { return; }
    default event void HalTMP175Advanced.setThermostatModeDone(error_t error){ return; } 
--- 265,290 ----
  
    async event void HplTMP175.setTLowRegDone(error_t error) {
!     mHplError = error;
!     post handleTReg();
  
    }
  
    async event void HplTMP175.setTHighRegDone(error_t error) {
!     mHplError = error;
!     post handleTReg();
    }
  
    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();
!     }
    }
  
+   async event void HplTMP175.measureTemperatureDone(error_t error, uint16_t val) {
+     // intentionally left blank
+   }
+   
    default event void HalTMP175Advanced.setTHighDone(error_t error) { return; }
    default event void HalTMP175Advanced.setThermostatModeDone(error_t error){ return; } 
***************
*** 237,240 ****
    default event void HalTMP175Advanced.setTLowDone(error_t error){ return; }
    default event void HalTMP175Advanced.alertThreshold(){ return; }
! 
  }
--- 294,297 ----
    default event void HalTMP175Advanced.setTLowDone(error_t error){ return; }
    default event void HalTMP175Advanced.alertThreshold(){ return; }
!   
  }

Index: HalTMP175ReaderP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/tmp175/Attic/HalTMP175ReaderP.nc,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -C2 -d -r1.1.2.2 -r1.1.2.3
*** HalTMP175ReaderP.nc	19 Jun 2006 18:23:10 -0000	1.1.2.2
--- HalTMP175ReaderP.nc	6 Jul 2006 23:20:16 -0000	1.1.2.3
***************
*** 40,44 ****
   */
  
! generic module HplTMP175ReaderP()
  {
    provides interface Read<uint16_t> as Temperature;
--- 40,44 ----
   */
  
! generic module HalTMP175ReaderP()
  {
    provides interface Read<uint16_t> as Temperature;
***************
*** 77,81 ****
    }
  
!   event void HplTMP175.measureTemperatureDone(error_t tmp175_error, uint16_t val) {
      call TMP175Resource.release();
      signal Temperature.readDone(tmp175_error,val);
--- 77,81 ----
    }
  
!   async event void HplTMP175.measureTemperatureDone(error_t tmp175_error, uint16_t val) {
      call TMP175Resource.release();
      signal Temperature.readDone(tmp175_error,val);
***************
*** 83,86 ****
--- 83,92 ----
    }
  
+   // intentionally left empty
+   async event void HplTMP175.setTLowRegDone(error_t error) {}
+   async event void HplTMP175.setTHighRegDone(error_t error) {}
+   async event void HplTMP175.setConfigRegDone(error_t error) {}
+   async event void HplTMP175.alertThreshold() {}
+ 
    default event void Temperature.readDone(error_t error, uint16_t val) {return ;}
  

Index: HplTMP175LogicP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/tmp175/Attic/HplTMP175LogicP.nc,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -C2 -d -r1.1.2.2 -r1.1.2.3
*** HplTMP175LogicP.nc	19 Jun 2006 18:20:59 -0000	1.1.2.2
--- HplTMP175LogicP.nc	6 Jul 2006 23:20:16 -0000	1.1.2.3
***************
*** 41,44 ****
--- 41,47 ----
   */
  
+ #include "TMP175.h"
+ #include "I2C.h"
+ 
  generic module HplTMP175LogicP(uint16_t devAddr)
  {
***************
*** 47,52 ****
    provides interface HplTMP175;
  
!   uses interface I2CPacket;
    uses interface GpioInterrupt as AlertInterrupt;
  }
  
--- 50,56 ----
    provides interface HplTMP175;
  
!   uses interface I2CPacket<TI2CBasicAddr>;
    uses interface GpioInterrupt as AlertInterrupt;
+   uses interface GeneralIO as InterruptPin;
  }
  
***************
*** 68,75 ****
    uint8_t mState;
    uint8_t mConfigRegVal;
!   norace error_t mmSSError;
  
    static error_t doSetReg(uint8_t nextState, uint8_t reg, uint16_t val) {
!     error_r error = SUCCESS;
  
      atomic {
--- 72,79 ----
    uint8_t mState;
    uint8_t mConfigRegVal;
!   norace error_t mSSError;
  
    static error_t doSetReg(uint8_t nextState, uint8_t reg, uint16_t val) {
!     error_t error = SUCCESS;
  
      atomic {
***************
*** 96,100 ****
  
    static error_t doSetRegWord(uint8_t nextState, uint8_t reg, uint16_t val) {
!     error_r error = SUCCESS;
  
      atomic {
--- 100,104 ----
  
    static error_t doSetRegWord(uint8_t nextState, uint8_t reg, uint16_t val) {
!     error_t error = SUCCESS;
  
      atomic {
***************
*** 113,117 ****
      mI2CBuffer[2] = val & 0xFF;
  
!     error = call I2CPacket.writePacket((I2C_START | I2C_STOP),devAddr,3,mI2CBuffer);
      
      if (error) 
--- 117,121 ----
      mI2CBuffer[2] = val & 0xFF;
  
!     error = call I2CPacket.write((I2C_START | I2C_STOP),devAddr,3,mI2CBuffer);
      
      if (error) 
***************
*** 133,140 ****
    }
  
!  command error_t Init.init() {
      mfPtrReset = FALSE;
      mConfigRegVal = 0;
      mState = STATE_STOPPED;
    }
  
--- 137,148 ----
    }
  
!   command error_t Init.init() {
!     // careful! this can be changed via polarity I believe
!     call InterruptPin.makeInput();
!     call AlertInterrupt.enableFallingEdge();
      mfPtrReset = FALSE;
      mConfigRegVal = 0;
      mState = STATE_STOPPED;
+     return SUCCESS;
    }
  
***************
*** 150,154 ****
      }
      
!     if error
        return error;
      
--- 158,162 ----
      }
      
!     if (error)
        return error;
      
***************
*** 171,183 ****
        }
      }
!     if error
        return error;
  
      mI2CBuffer[0] = mI2CBuffer[1] = 0;
  
!     error = call I2C.readPacket(devAddr,2,mI2CBuffer);
  
      if (error)
!       atomic mState = STATE_IDLE:
  
      return error;
--- 179,191 ----
        }
      }
!     if (error)
        return error;
  
      mI2CBuffer[0] = mI2CBuffer[1] = 0;
  
!     error = call I2CPacket.read(I2C_START | I2C_STOP, devAddr,2,mI2CBuffer);
  
      if (error)
!       atomic mState = STATE_IDLE;
  
      return error;
***************
*** 190,194 ****
    
    command error_t HplTMP175.setTLowReg(uint16_t val){ 
!     return doSetRegWord(STATE_SETLOW,TMP175_PTR_TLOW,val);  
    }
  
--- 198,202 ----
    
    command error_t HplTMP175.setTLowReg(uint16_t val){ 
!     return doSetRegWord(STATE_SETTLOW,TMP175_PTR_TLOW,val);  
    }
  
***************
*** 197,201 ****
    }
  
!   async event void I2CPacket.readDone(uint16_t chipAddr, uint8_t len, uint8_t *buf, error_t i2c_error) {
      uint16_t tempVal;
  
--- 205,209 ----
    }
  
!   async event void I2CPacket.readDone(error_t i2c_error, uint16_t chipAddr, uint8_t len, uint8_t *buf) {
      uint16_t tempVal;
  
***************
*** 205,209 ****
        tempVal = ((tempVal << 8) | buf[1]);
        mState = STATE_IDLE;
!       signal HplTMP175.measureTemperatureDone(error,tempVal);
        break;
      default:
--- 213,217 ----
        tempVal = ((tempVal << 8) | buf[1]);
        mState = STATE_IDLE;
!       signal HplTMP175.measureTemperatureDone(i2c_error,tempVal);
        break;
      default:
***************
*** 214,218 ****
    }
  
!   async event void I2CPacket.writeDone(uint16_t chipAddr, uint8_t len, uint8_t *buf, error_t i2c_error) {
      error_t error = i2c_error;
  
--- 222,226 ----
    }
  
!   async event void I2CPacket.writeDone(error_t i2c_error, uint16_t chipAddr, uint8_t len, uint8_t *buf) {
      error_t error = i2c_error;
  
***************
*** 244,248 ****
  	break;
        default:
! 	mState = STATE_IDLE:
  	break;
        }
--- 252,256 ----
  	break;
        default:
! 	mState = STATE_IDLE;
  	break;
        }
***************
*** 252,256 ****
        mI2CBuffer[0] = TMP175_PTR_TEMP;
        mfPtrReset = TRUE;
!       call I2C.writePacket(devAddr,1,mI2CBuffer);
      } 
  
--- 260,264 ----
        mI2CBuffer[0] = TMP175_PTR_TEMP;
        mfPtrReset = TRUE;
!       call I2CPacket.write(I2C_START | I2C_STOP, devAddr,1,mI2CBuffer);
      } 
  
***************
*** 267,275 ****
    default event void SplitControl.startDone( error_t error ) { return; }
    default event void SplitControl.stopDone( error_t error ) { return; }
!   default event void HplTMP175.getTemperatureDone( error_t error, uint16_t val ){ return; }
!   default event void HplTMP175.setConfigRegDone( error_t error ){ return; }
!   default event void HplTMP175.setTHighRegDone(error_t error){ return; }
!   default event void HplTMP175.setTLowRegDone(error_t error){ return; }
!   default event void HplTMP175.alertThreshold(){ return; }
  
  }
--- 275,283 ----
    default event void SplitControl.startDone( error_t error ) { return; }
    default event void SplitControl.stopDone( error_t error ) { return; }
!   default async event void HplTMP175.measureTemperatureDone( error_t error, uint16_t val ){ return; }
!   default async event void HplTMP175.setConfigRegDone( error_t error ){ return; }
!   default async event void HplTMP175.setTHighRegDone(error_t error){ return; }
!   default async event void HplTMP175.setTLowRegDone(error_t error){ return; }
!   default async event void HplTMP175.alertThreshold(){ return; }
  
  }



More information about the Tinyos-2-commits mailing list