Example of hello world for X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of HelloWorld_IKS01A2 by ST Expansion SW Team

Hello World Demo Application based on sensor expansion board X-NUCLEO-IKS01A2

Main function is to show how to get humidity, temperature, pressure, accelerometer, magnetomer and gyroscope data using the sensor expansion board and send them using UART to a connected PC or Desktop and display it on terminal applications like TeraTerm.

Revision:
2:f23b144da50a
Parent:
0:69566eea0fba
--- a/X_NUCLEO_IKS01A2/Components/LSM303AGRSensor/LSM303AGR_ACC_Sensor.h	Fri Aug 12 13:57:55 2016 +0000
+++ b/X_NUCLEO_IKS01A2/Components/LSM303AGRSensor/LSM303AGR_ACC_Sensor.h	Fri Aug 19 12:13:37 2016 +0000
@@ -46,6 +46,7 @@
 
 #include "DevI2C.h"
 #include "LSM303AGR_ACC_driver.h"
+#include "MotionSensor.h"
 
 /* Defines -------------------------------------------------------------------*/
 #define LSM303AGR_ACC_SENSITIVITY_FOR_FS_2G_NORMAL_MODE               3.900f  /**< Sensitivity value for 2 g full scale and normal mode [mg/LSB] */
@@ -61,40 +62,30 @@
 #define LSM303AGR_ACC_SENSITIVITY_FOR_FS_16G_HIGH_RESOLUTION_MODE    11.720f  /**< Sensitivity value for 16 g full scale and high resolution mode [mg/LSB] */
 #define LSM303AGR_ACC_SENSITIVITY_FOR_FS_16G_LOW_POWER_MODE         187.580f  /**< Sensitivity value for 16 g full scale and low power mode [mg/LSB] */
 
-
-/* Typedefs ------------------------------------------------------------------*/
-typedef enum
-{
-  LSM303AGR_ACC_STATUS_OK = 0,
-  LSM303AGR_ACC_STATUS_ERROR,
-  LSM303AGR_ACC_STATUS_TIMEOUT,
-  LSM303AGR_ACC_STATUS_NOT_IMPLEMENTED
-} LSM303AGR_ACC_StatusTypeDef;
-
-
 /* Class Declaration ---------------------------------------------------------*/
 
 /**
  * Abstract class of an LSM303AGR Inertial Measurement Unit (IMU) 6 axes
  * sensor.
  */
-class LSM303AGR_ACC_Sensor
+class LSM303AGR_ACC_Sensor : public MotionSensor
 {
   public:
-    LSM303AGR_ACC_Sensor                       (DevI2C &i2c);
-    LSM303AGR_ACC_Sensor                       (DevI2C &i2c, uint8_t address);
-    LSM303AGR_ACC_StatusTypeDef Enable         (void);
-    LSM303AGR_ACC_StatusTypeDef Disable        (void);
-    LSM303AGR_ACC_StatusTypeDef ReadID         (uint8_t *p_id);
-    LSM303AGR_ACC_StatusTypeDef GetAxes        (int32_t *pData);
-    LSM303AGR_ACC_StatusTypeDef GetSensitivity (float *pfData);
-    LSM303AGR_ACC_StatusTypeDef GetAxesRaw     (int16_t *pData);
-    LSM303AGR_ACC_StatusTypeDef GetODR         (float *odr);
-    LSM303AGR_ACC_StatusTypeDef SetODR         (float odr);
-    LSM303AGR_ACC_StatusTypeDef GetFS          (float *fullScale);
-    LSM303AGR_ACC_StatusTypeDef SetFS          (float fullScale);
-    LSM303AGR_ACC_StatusTypeDef ReadReg        (uint8_t reg, uint8_t *data);
-    LSM303AGR_ACC_StatusTypeDef WriteReg       (uint8_t reg, uint8_t data);
+    LSM303AGR_ACC_Sensor(DevI2C &i2c);
+    LSM303AGR_ACC_Sensor(DevI2C &i2c, uint8_t address);
+    virtual int Init(void *init);
+    virtual int ReadID(uint8_t *id);
+    virtual int Get_X_Axes(int32_t *pData);
+    virtual int Get_X_AxesRaw(int16_t *pData);
+    virtual int Get_X_Sensitivity(float *pfData);
+    virtual int Get_X_ODR(float *odr);
+    virtual int Set_X_ODR(float odr);
+    virtual int Get_X_FS(float *fullScale);
+    virtual int Set_X_FS(float fullScale);
+    int Enable(void);
+    int Disable(void);
+    int ReadReg(uint8_t reg, uint8_t *data);
+    int WriteReg(uint8_t reg, uint8_t data);
     
     /**
      * @brief Utility function to read data.
@@ -121,11 +112,11 @@
     }
 
   private:
-    LSM303AGR_ACC_StatusTypeDef SetODR_When_Enabled(float odr);
-    LSM303AGR_ACC_StatusTypeDef SetODR_When_Disabled(float odr);
-    LSM303AGR_ACC_StatusTypeDef GetSensitivity_Normal_Mode( float *sensitivity );
-    LSM303AGR_ACC_StatusTypeDef GetSensitivity_LP_Mode( float *sensitivity );
-    LSM303AGR_ACC_StatusTypeDef GetSensitivity_HR_Mode( float *sensitivity );
+    int Set_X_ODR_When_Enabled(float odr);
+    int Set_X_ODR_When_Disabled(float odr);
+    int Get_X_Sensitivity_Normal_Mode(float *sensitivity );
+    int Get_X_Sensitivity_LP_Mode(float *sensitivity );
+    int Get_X_Sensitivity_HR_Mode(float *sensitivity );
 
     /* Helper classes. */
     DevI2C &dev_i2c;