Changed hts221 into Class.

Dependents:   WeatherSensor-Joe PAG-CourseWork-NicksEdits SOFT253_Assignment SOFT253_Assignment_V2 ... more

Fork of hts221 by Kyle Rodgers

Revision:
1:da79e74eadd1
Parent:
0:030da9425166
Child:
2:6d7166d49741
--- a/hts221.cpp	Fri Jan 30 08:49:01 2015 +0000
+++ b/hts221.cpp	Fri Jul 24 15:21:28 2015 +0000
@@ -16,71 +16,50 @@
 #include <mbed.h>
 #include "hts221.h"
 
-I2C i2c(p22, p20);    //SDA, SCL
-
-
-/*lint ++flb "Enter library region" */
-
-// Gill
-
-
-//
-
-static const char expected_who_am_i = 0xBCU; //!< Expected value to get from WHO_AM_I register.
+HTS221::HTS221 (PinName sda, PinName scl) : _i2c(sda, scl)
+{
+    init();
+    calib();
+}
 
-uint8_t H0_rH_x2; 
-uint8_t H1_rH_x2;
-uint16_t T0_degC_x8;
-uint16_t T1_degC_x8;
-
-int16_t H0_T0_OUT;
-int16_t H1_T0_OUT;
-int16_t T0_OUT;
-int16_t T1_OUT;
-
-float T0_DegC_cal;
-float T1_DegC_cal;
-float H0_RH_cal;
-float H1_RH_cal;
-
-bool hts221_init(void)
+bool HTS221::init(void)
 {   
   bool transfer_succeeded = true;
 
-  i2c.frequency(400000);
-    hts221_register_write(0x10 , TRes_4 << 3 | HRes_5); 
-    hts221_register_write(0x20 , PD_On | BDU_On  | ODR_1Hz); // Control register 1
-    hts221_register_write(0x21 , NoBoot | HeaterOff  | No_OS); // Control register 2
-    hts221_register_write(0x22 , DRDY_H | PP_OD_PP | DRDY_NON); // Control register 3
+  _i2c.frequency(400000);
+    register_write(0x10 , TRes_4 << 3 | HRes_5); 
+    register_write(0x20 , PD_On | BDU_On  | ODR_1Hz); // Control register 1
+    register_write(0x21 , NoBoot | HeaterOff  | No_OS); // Control register 2
+    register_write(0x22 , DRDY_H | PP_OD_PP | DRDY_NON); // Control register 3
                                 
   // Read and verify product ID
-  transfer_succeeded &= hts221_verify_product_id();
+  transfer_succeeded &= verify_product_id();
 
   return transfer_succeeded;
 }
 
-bool hts221_verify_product_id(void)
+bool HTS221::verify_product_id(void)
 {
     char who_am_i[1];
-    hts221_register_read(ADDRESS_WHO_AM_I, &who_am_i[0], 1);
+    register_read(ADDRESS_WHO_AM_I, &who_am_i[0], 1);
     if (who_am_i[0] != expected_who_am_i) return false;
     else return true;
 }
 
-void hts221_register_write(uint8_t register_address, uint8_t value)
+void HTS221::register_write(uint8_t register_address, uint8_t value)
 {   
     char w2_data[2];
     
     w2_data[0] = register_address;
     w2_data[1] = value;
-    i2c.write(HTS221_WriteADDE, w2_data, 2);      
+    _i2c.write(HTS221_WriteADDE, w2_data, 2);      
 
 }
 
-void hts221_register_read(char register_address, char *destination, uint8_t number_of_bytes)
+void HTS221::register_read(char register_address, char *destination, uint8_t number_of_bytes)
 {
-  i2c.write(HTS221_WriteADDE, &register_address, 1, 1);
-  i2c.read(HTS221_WriteADDE, destination, number_of_bytes);   //Note by Tsungta, API may have a bug
+  _i2c.write(HTS221_WriteADDE, &register_address, 1, 1);
+  _i2c.read(HTS221_WriteADDE, destination, number_of_bytes);   //Note by Tsungta, API may have a bug
   
   //runaboud read function added by Tsungta
 /*  if (number_of_bytes == 1) {
@@ -98,11 +77,11 @@
   }*/    
 }
                
-void HTS221_Calib(void) 
+void HTS221::calib(void) 
 {
     char cal_data[16];
     
-    hts221_register_read(0xB0, cal_data, 16);
+    register_read(0xB0, cal_data, 16);
 
   H0_rH_x2 = cal_data[0]; 
   H1_rH_x2 = cal_data[1];
@@ -127,13 +106,13 @@
 
 }
     
-void HTS221_ReadTempHumi( float *pTemp , float *pHumi)
+void HTS221::ReadTempHumi( float *pTemp , float *pHumi)
 {
   char sensor_data[4];
   int16_t H_OUT;
   int16_t T_OUT;   
 
-    hts221_register_read(0xA8, sensor_data, 4);
+    register_read(0xA8, sensor_data, 4);
     
     H_OUT = (sensor_data[1] << 8) + sensor_data[0];
     T_OUT = (sensor_data[3] << 8) + sensor_data[2];
@@ -151,13 +130,10 @@
     if ((int)*pHumi<MinTemp ) *pHumi = MinTemp ;  
 }
 
-float linear_interpolation(int16_t x0, float y0, int16_t x1, float y1, float mes)
+float HTS221::linear_interpolation(int16_t x0, float y0, int16_t x1, float y1, float mes)
 {
    float a = (float) ((y1 - y0) / (x1 - x0));
    float b = (float) -a*x0 + y0;
    float cal = (float) a * mes + b;
    return cal;
-}
-
-/*lint --flb "Leave library region" */
-
+}
\ No newline at end of file