removed X-NUCLEO-COMMON and ST-INTERFACES

Dependents:   unh-hackathon-example unh-hackathon-example-raw

Fork of X_NUCLEO_IKS01A1 by ST

Files at this revision

API Documentation at this revision

Comitter:
Wolfgang Betz
Date:
Mon Jun 08 17:22:35 2015 +0200
Parent:
44:d757094f6229
Child:
47:a1c273278014
Child:
48:cb18488509a5
Commit message:
Add GenericSensor interface

Changed in this revision

Components/Interfaces/GenericSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/GyroSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/HumiditySensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/MagneticSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/MotionSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/PressureSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/TempSensor.h Show annotated file Show diff for this revision Revisions of this file
Components/hts221/hts221_class.h Show annotated file Show diff for this revision Revisions of this file
Components/lis3mdl/lis3mdl_class.h Show annotated file Show diff for this revision Revisions of this file
Components/lsm6ds0/lsm6ds0_class.h Show annotated file Show diff for this revision Revisions of this file
Components/lsm6ds3/lsm6ds3_class.h Show annotated file Show diff for this revision Revisions of this file
x_nucleo_iks01a1.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Components/Interfaces/GenericSensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -0,0 +1,93 @@
+/**
+ ******************************************************************************
+ * @file    GenericSensor.h
+ * @author  AST / EST
+ * @version V0.0.1
+ * @date    13-April-2015
+ * @brief   This file contains the abstract class describing in general
+ *          the interfaces of a generic sensor
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *   1. Redistributions of source code must retain the above copyright notice,
+ *      this list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *   3. Neither the name of STMicroelectronics nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent from recursive inclusion --------------------------------*/
+#ifndef __GENERIC_SENSOR_CLASS_H
+#define __GENERIC_SENSOR_CLASS_H
+
+/* Includes ------------------------------------------------------------------*/
+#include <stdint.h>
+
+/* Classes  ------------------------------------------------------------------*/
+/** An abstract class for Generic sensors
+ */
+class GenericSensor
+{
+ public:
+	/**
+	 * @brief       Initialization of sensor
+	 * @param[out]  ptr Pointer to device specific initalization structure
+	 * @return      0 in case of success, an error code otherwise
+	 */
+	virtual int Init(void *ptr) = 0;
+
+	/**
+	 * @brief       Enter sensor shutdown mode
+	 * @return      0 in case of success, an error code otherwise
+	 */
+	virtual int PowerOff(void) = 0;
+	
+	/**
+	 * @brief       Get ID of sensor
+	 * @param[out]  id Pointer to where to store the ID to
+	 * @return      0 in case of success, an error code otherwise
+	 */
+	virtual int ReadID(uint8_t *id) = 0;
+
+	/**
+	 * @brief       Reset sensor
+	 * @return      0 in case of success, an error code otherwise
+	 */
+	virtual int Reset(void) = 0;
+
+	/* Interrupt Interface */
+	/* betzw - TODO: WIP */
+	virtual void ConfigIT(uint16_t) = 0;
+	virtual void EnableIT(uint8_t) = 0;
+	virtual void DisableIT(uint8_t) = 0;
+	virtual uint8_t ITStatus(uint16_t, uint16_t) = 0;
+	virtual void ClearIT(uint16_t, uint16_t) = 0;
+
+	/**
+	 * @brief       Attach a function to be called when an interrupt occurs
+	 * @param[in]   fptr A pointer to a void function, or 0 to set as none
+	 */
+	virtual void AttachIT(void (*fptr)(void)) = 0;
+};
+
+#endif /* __GENERIC_SENSOR_CLASS_H */
--- a/Components/Interfaces/GyroSensor.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/Interfaces/GyroSensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -41,29 +41,15 @@
 #define __GYRO_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
-#include <stdint.h>
+#include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
 /** An abstract class for a Gyroscope
  */
-class GyroSensor
+class GyroSensor : public GenericSensor
 {
  public:
 	/**
-	 * @brief       Initialization of gyroscope
-	 * @param[out]  ptr Pointer to device specific initalization structure
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Init(void *ptr) = 0;
-	
-	/**
-	 * @brief       Get ID of gyroscope
-	 * @param[out]  id Pointer to where to store the ID to
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int ReadID(uint8_t *id) = 0;
-
-	/**
 	 * @brief       Get current gyroscope angular rate X/Y/Z-axes values 
 	 *              in standard data units [mdps]
 	 * @param[out]  pData Pointer to where to store angular rates to.
--- a/Components/Interfaces/HumiditySensor.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/Interfaces/HumiditySensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -41,58 +41,20 @@
 #define __HUMIDITY_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
-#include <stdint.h>
+#include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
 /** An abstract class for Humidity sensors
  */
-class HumiditySensor
+class HumiditySensor : public GenericSensor
 {
  public:
 	/**
-	 * @brief       Initialization of humidity sensor
-	 * @param[out]  ptr Pointer to device specific initalization structure
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Init(void *ptr) = 0;
-
-	/**
-	 * @brief       Enter sensor shutdown mode
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int PowerOff(void) = 0;
-	
-	/**
-	 * @brief       Get ID of humidity sensor
-	 * @param[out]  id Pointer to where to store the ID to
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int ReadID(uint8_t *id) = 0;
-
-	/**
-	 * @brief       Reset sensor
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Reset(void) = 0;
-
-	/**
 	 * @brief       Get current humidity [%]
 	 * @param[out]  pfData Pointer to where to store humidity to
 	 * @return      0 in case of success, an error code otherwise
 	 */
 	virtual int GetHumidity(float *pfData) = 0;
-
-	virtual void ConfigIT(uint16_t) = 0;
-	virtual void EnableIT(uint8_t) = 0;
-	virtual void DisableIT(uint8_t) = 0;
-	virtual uint8_t ITStatus(uint16_t, uint16_t) = 0;
-	virtual void ClearIT(uint16_t, uint16_t) = 0;
-
-	/**
-	 * @brief       Attach a function to be called when an interrupt occurs
-	 * @param[in]   fptr A pointer to a void function, or 0 to set as none
-	 */
-	virtual void AttachIT(void (*fptr)(void)) = 0;
 };
 
 #endif /* __HUMIDITY_SENSOR_CLASS_H */
--- a/Components/Interfaces/MagneticSensor.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/Interfaces/MagneticSensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -41,29 +41,15 @@
 #define __MAGNETIC_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
-#include <stdint.h>
+#include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
 /** An abstract class for a magnetometer
  */
-class MagneticSensor
+class MagneticSensor : public GenericSensor
 {
  public:
 	/**
-	 * @brief       Initialization of magnetometer
-	 * @param[out]  ptr Pointer to device specific initalization structure
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Init(void *ptr) = 0;
-	
-	/**
-	 * @brief       Get ID of magnetometer
-	 * @param[out]  id Pointer to where to store the ID to
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int ReadID(uint8_t *id) = 0;
-
-	/**
 	 * @brief       Get current magnetometer magnetic X/Y/Z-axes values 
 	 *              in standard data units [mgauss]
 	 * @param[out]  pData Pointer to where to store magnetic values to.
--- a/Components/Interfaces/MotionSensor.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/Interfaces/MotionSensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -41,29 +41,15 @@
 #define __MOTION_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
-#include <stdint.h>
+#include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
 /** An abstract class for an Accelerometer
  */
-class MotionSensor
+class MotionSensor : public GenericSensor
 {
  public:
 	/**
-	 * @brief       Initialization of accelerometer
-	 * @param[out]  ptr Pointer to device specific initalization structure
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Init(void *ptr) = 0;
-	
-	/**
-	 * @brief       Get ID of accelerometer
-	 * @param[out]  id Pointer to where to store the ID to
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int ReadID(uint8_t *id) = 0;
-
-	/**
 	 * @brief       Get current accelerometer linear acceleration X/Y/Z-axes values 
 	 *              in standard data units [mg]
 	 * @param[out]  pData Pointer to where to store linear accelerations to.
--- a/Components/Interfaces/PressureSensor.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/Interfaces/PressureSensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -41,7 +41,7 @@
 #define __PRESSURE_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
-#include <stdint.h>
+#include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
 /** An abstract class for a Pressure Sensor
@@ -50,49 +50,11 @@
 {
  public:
 	/**
-	 * @brief       Initialization of pressure sensor
-	 * @param[out]  ptr Pointer to device specific initalization structure
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Init(void *ptr) = 0;
-
-	/**
-	 * @brief       Enter sensor shutdown mode
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int PowerOff(void) = 0;
-	
-	/**
-	 * @brief       Get ID of pressure sensor
-	 * @param[out]  id Pointer to where to store the ID to
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int ReadID(uint8_t *id) = 0;
-
-	/**
-	 * @brief       Reset sensor
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Reset(void) = 0;
-
-	/**
 	 * @brief       Get current pressure [mbar]
 	 * @param[out]  pfData Pointer to where to store pressure to
 	 * @return      0 in case of success, an error code otherwise
 	 */
 	virtual int GetPressure(float *pfData) = 0;
-
-	virtual void ConfigIT(uint16_t) = 0;
-	virtual void EnableIT(uint8_t) = 0;
-	virtual void DisableIT(uint8_t) = 0;
-	virtual uint8_t ITStatus(uint16_t, uint16_t) = 0;
-	virtual void ClearIT(uint16_t, uint16_t) = 0;
-
-	/**
-	 * @brief       Attach a function to be called when an interrupt occurs
-	 * @param[in]   fptr A pointer to a void function, or 0 to set as none
-	 */
-	virtual void AttachIT(void (*fptr)(void)) = 0;
 };
 
 #endif /* __PRESSURE_SENSOR_CLASS_H */
--- a/Components/Interfaces/TempSensor.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/Interfaces/TempSensor.h	Mon Jun 08 17:22:35 2015 +0200
@@ -41,41 +41,15 @@
 #define __TEMP_SENSOR_CLASS_H
 
 /* Includes ------------------------------------------------------------------*/
-#include <stdint.h>
+#include <GenericSensor.h>
 
 /* Classes  ------------------------------------------------------------------*/
 /** An abstract class for Temperature sensors
  */
-class TempSensor
+class TempSensor : public GenericSensor
 {
  public:
 	/**
-	 * @brief       Initialization of temperature sensor
-	 * @param[out]  ptr Pointer to device specific initalization structure
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Init(void *ptr) = 0;
-
-	/**
-	 * @brief       Enter sensor shutdown mode
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int PowerOff(void) = 0;
-	
-	/**
-	 * @brief       Get ID of temperature sensor
-	 * @param[out]  id Pointer to where to store the ID to
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int ReadID(uint8_t *id) = 0;
-
-	/**
-	 * @brief       Reset sensor
-	 * @return      0 in case of success, an error code otherwise
-	 */
-	virtual int Reset(void) = 0;
-
-	/**
 	 * @brief       Get current temperature in degrees Celsius [°C]
 	 * @param[out]  pfData Pointer to where to store temperature to
 	 * @return      0 in case of success, an error code otherwise
@@ -97,18 +71,6 @@
 		*pfData = ((celsius * 1.8f) + 32.0f);
 		return 0;
 	}
-
-	virtual void ConfigIT(uint16_t) = 0;
-	virtual void EnableIT(uint8_t) = 0;
-	virtual void DisableIT(uint8_t) = 0;
-	virtual uint8_t ITStatus(uint16_t, uint16_t) = 0;
-	virtual void ClearIT(uint16_t, uint16_t) = 0;
-
-	/**
-	 * @brief       Attach a function to be called when an interrupt occurs
-	 * @param[in]   fptr A pointer to a void function, or 0 to set as none
-	 */
-	virtual void AttachIT(void (*fptr)(void)) = 0;
 };
 
 #endif /* __TEMP_SENSOR_CLASS_H */
--- a/Components/hts221/hts221_class.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/hts221/hts221_class.h	Mon Jun 08 17:22:35 2015 +0200
@@ -79,12 +79,6 @@
 		return HTS221_RebootCmd();
 	}
 
-	virtual void ConfigIT(uint16_t) { /* not yet implemented */ }
-	virtual void EnableIT(uint8_t) { /* not yet implemented */ }
-	virtual void DisableIT(uint8_t) { /* not yet implemented */ }
-	virtual uint8_t ITStatus(uint16_t, uint16_t) { /* not yet implemented */ return 0; }
-	virtual void ClearIT(uint16_t, uint16_t) { /* not yet implemented */ }
-
 	virtual int GetHumidity(float *pfData) {
 		return HTS221_GetHumidity(pfData);
 	}
@@ -93,6 +87,11 @@
 		return HTS221_GetTemperature(pfData);
 	}
 
+	virtual void ConfigIT(uint16_t) { /* not yet implemented */ }
+	virtual void EnableIT(uint8_t) { /* not yet implemented */ }
+	virtual void DisableIT(uint8_t) { /* not yet implemented */ }
+	virtual uint8_t ITStatus(uint16_t, uint16_t) { /* not yet implemented */ return 0; }
+	virtual void ClearIT(uint16_t, uint16_t) { /* not yet implemented */ }
 	virtual void AttachIT(void (*fptr)(void)) { /* not yet implemented */ }
 
  protected:
--- a/Components/lis3mdl/lis3mdl_class.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/lis3mdl/lis3mdl_class.h	Mon Jun 08 17:22:35 2015 +0200
@@ -76,6 +76,16 @@
 		return LIS3MDL_M_GetAxesRaw(pData);
 	}
 
+	virtual int PowerOff(void) { /* not yet implemented */ return 0; }
+	virtual int Reset(void) { /* not yet implemented */ return 0; }
+
+	virtual void ConfigIT(uint16_t) { /* not yet implemented */ }
+	virtual void EnableIT(uint8_t) { /* not yet implemented */ }
+	virtual void DisableIT(uint8_t) { /* not yet implemented */ }
+	virtual uint8_t ITStatus(uint16_t, uint16_t) { /* not yet implemented */ return 0; }
+	virtual void ClearIT(uint16_t, uint16_t) { /* not yet implemented */ }
+	virtual void AttachIT(void (*fptr)(void)) { /* not yet implemented */ }
+
  protected:
 	/*** Methods ***/
 	MAGNETO_StatusTypeDef LIS3MDL_Init(MAGNETO_InitTypeDef *LIS3MDL_Init);
--- a/Components/lsm6ds0/lsm6ds0_class.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/lsm6ds0/lsm6ds0_class.h	Mon Jun 08 17:22:35 2015 +0200
@@ -125,6 +125,16 @@
 		return LSM6DS0_G_Set_FS(fullScale);
 	}
 
+	virtual int PowerOff(void) { /* not yet implemented */ return 0; }
+	virtual int Reset(void) { /* not yet implemented */ return 0; }
+
+	virtual void ConfigIT(uint16_t) { /* not yet implemented */ }
+	virtual void EnableIT(uint8_t) { /* not yet implemented */ }
+	virtual void DisableIT(uint8_t) { /* not yet implemented */ }
+	virtual uint8_t ITStatus(uint16_t, uint16_t) { /* not yet implemented */ return 0; }
+	virtual void ClearIT(uint16_t, uint16_t) { /* not yet implemented */ }
+	virtual void AttachIT(void (*fptr)(void)) { /* not yet implemented */ }
+
  protected:
 	/*** Methods ***/
 	IMU_6AXES_StatusTypeDef LSM6DS0_Init(IMU_6AXES_InitTypeDef *LSM6DS0_Init);
--- a/Components/lsm6ds3/lsm6ds3_class.h	Mon Jun 08 15:36:36 2015 +0200
+++ b/Components/lsm6ds3/lsm6ds3_class.h	Mon Jun 08 17:22:35 2015 +0200
@@ -138,6 +138,16 @@
 		return LSM6DS3_Get_Status_Free_Fall_Detection(status);
 	}
 
+	virtual int PowerOff(void) { /* not yet implemented */ return 0; }
+	virtual int Reset(void) { /* not yet implemented */ return 0; }
+
+	virtual void ConfigIT(uint16_t) { /* not yet implemented */ }
+	virtual void EnableIT(uint8_t) { /* not yet implemented */ }
+	virtual void DisableIT(uint8_t) { /* not yet implemented */ }
+	virtual uint8_t ITStatus(uint16_t, uint16_t) { /* not yet implemented */ return 0; }
+	virtual void ClearIT(uint16_t, uint16_t) { /* not yet implemented */ }
+	virtual void AttachIT(void (*fptr)(void)) { /* not yet implemented */ }
+
  protected:
 	/*** Methods ***/
 	IMU_6AXES_StatusTypeDef LSM6DS3_Init(IMU_6AXES_InitTypeDef *LSM6DS3_Init);
--- a/x_nucleo_iks01a1.cpp	Mon Jun 08 15:36:36 2015 +0200
+++ b/x_nucleo_iks01a1.cpp	Mon Jun 08 17:22:35 2015 +0200
@@ -190,7 +190,7 @@
 	uint8_t xg_id = 0;
 
 	/* Check presence */
-	if((gyro_lsm6ds3 != NULL) ||
+	if((gyro_lsm6ds3 != NULL) || // by default do not instantiate two gyroscopes
 	   (gyro_lsm6ds0->ReadID(&xg_id) != IMU_6AXES_OK) ||
 	   (xg_id != I_AM_LSM6DS0_XG))
 		{