Self test boot program for testing icarus sensors

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_UARTConsole by Bluetooth Low Energy

Committer:
smigielski
Date:
Mon Jan 26 13:57:26 2015 +0000
Revision:
7:438b55fe8576
Child:
8:e9ae7a01d866
Simple sensor structure

Who changed what in which revision?

UserRevisionLine numberNew contents of line
smigielski 7:438b55fe8576 1 #ifndef MBED_BASE_SENSOR_H
smigielski 7:438b55fe8576 2 #define MBED_BASE_SENSOR_H
smigielski 7:438b55fe8576 3
smigielski 7:438b55fe8576 4 #include "mbed.h"
smigielski 7:438b55fe8576 5
smigielski 7:438b55fe8576 6 #include "BaseChannel.h"
smigielski 7:438b55fe8576 7
smigielski 7:438b55fe8576 8 /* Constants */
smigielski 7:438b55fe8576 9 #define SENSORS_GRAVITY_EARTH (9.80665F) /**< Earth's gravity in m/s^2 */
smigielski 7:438b55fe8576 10 #define SENSORS_GRAVITY_MOON (1.6F) /**< The moon's gravity in m/s^2 */
smigielski 7:438b55fe8576 11 #define SENSORS_GRAVITY_SUN (275.0F) /**< The sun's gravity in m/s^2 */
smigielski 7:438b55fe8576 12 #define SENSORS_GRAVITY_STANDARD (SENSORS_GRAVITY_EARTH)
smigielski 7:438b55fe8576 13 #define SENSORS_MAGFIELD_EARTH_MAX (60.0F) /**< Maximum magnetic field on Earth's surface */
smigielski 7:438b55fe8576 14 #define SENSORS_MAGFIELD_EARTH_MIN (30.0F) /**< Minimum magnetic field on Earth's surface */
smigielski 7:438b55fe8576 15 #define SENSORS_PRESSURE_SEALEVELHPA (1013.25F) /**< Average sea level pressure is 1013.25 hPa */
smigielski 7:438b55fe8576 16 #define SENSORS_DPS_TO_RADS (0.017453293F) /**< Degrees/s to rad/s multiplier */
smigielski 7:438b55fe8576 17 #define SENSORS_GAUSS_TO_MICROTESLA (100) /**< Gauss to micro-Tesla multiplier */
smigielski 7:438b55fe8576 18
smigielski 7:438b55fe8576 19 /** Sensor types */
smigielski 7:438b55fe8576 20 typedef enum
smigielski 7:438b55fe8576 21 {
smigielski 7:438b55fe8576 22 SENSOR_TYPE_ACCELEROMETER = (1), /**< Gravity + linear acceleration */
smigielski 7:438b55fe8576 23 SENSOR_TYPE_MAGNETIC_FIELD = (2),
smigielski 7:438b55fe8576 24 SENSOR_TYPE_ORIENTATION = (3),
smigielski 7:438b55fe8576 25 SENSOR_TYPE_GYROSCOPE = (4),
smigielski 7:438b55fe8576 26 SENSOR_TYPE_LIGHT = (5),
smigielski 7:438b55fe8576 27 SENSOR_TYPE_PRESSURE = (6),
smigielski 7:438b55fe8576 28 SENSOR_TYPE_PROXIMITY = (8),
smigielski 7:438b55fe8576 29 SENSOR_TYPE_GRAVITY = (9),
smigielski 7:438b55fe8576 30 SENSOR_TYPE_LINEAR_ACCELERATION = (10), /**< Acceleration not including gravity */
smigielski 7:438b55fe8576 31 SENSOR_TYPE_ROTATION_VECTOR = (11),
smigielski 7:438b55fe8576 32 SENSOR_TYPE_RELATIVE_HUMIDITY = (12),
smigielski 7:438b55fe8576 33 SENSOR_TYPE_AMBIENT_TEMPERATURE = (13),
smigielski 7:438b55fe8576 34 SENSOR_TYPE_VOLTAGE = (15),
smigielski 7:438b55fe8576 35 SENSOR_TYPE_CURRENT = (16),
smigielski 7:438b55fe8576 36 SENSOR_TYPE_COLOR = (17)
smigielski 7:438b55fe8576 37 } sensors_type_t;
smigielski 7:438b55fe8576 38
smigielski 7:438b55fe8576 39 /* Sensor details (40 bytes) */
smigielski 7:438b55fe8576 40 /** struct sensor_s is used to describe basic information about a specific sensor. */
smigielski 7:438b55fe8576 41 typedef struct
smigielski 7:438b55fe8576 42 {
smigielski 7:438b55fe8576 43 char name[12]; /**< sensor name */
smigielski 7:438b55fe8576 44 int32_t version; /**< version of the hardware + driver */
smigielski 7:438b55fe8576 45 int32_t sensor_id; /**< unique sensor identifier */
smigielski 7:438b55fe8576 46 int32_t type; /**< this sensor's type (ex. SENSOR_TYPE_LIGHT) */
smigielski 7:438b55fe8576 47 float max_value; /**< maximum value of this sensor's value in SI units */
smigielski 7:438b55fe8576 48 float min_value; /**< minimum value of this sensor's value in SI units */
smigielski 7:438b55fe8576 49 float resolution; /**< smallest difference between two values reported by this sensor */
smigielski 7:438b55fe8576 50 int32_t min_delay; /**< min delay in microseconds between events. zero = not a constant rate */
smigielski 7:438b55fe8576 51 } sensor_t;
smigielski 7:438b55fe8576 52
smigielski 7:438b55fe8576 53 class BaseSensor {
smigielski 7:438b55fe8576 54 public:
smigielski 7:438b55fe8576 55 //constructor
smigielski 7:438b55fe8576 56 BaseSensor(BaseChannel* );
smigielski 7:438b55fe8576 57 //get sensor details from actual implementation
smigielski 7:438b55fe8576 58 virtual char* getSimpleName();
smigielski 7:438b55fe8576 59 virtual void getSensorDetails(sensor_t*);
smigielski 7:438b55fe8576 60 //verify basic integrity of underlining hardware
smigielski 7:438b55fe8576 61 virtual int verifyIntegrity(int*);
smigielski 7:438b55fe8576 62
smigielski 7:438b55fe8576 63 private:
smigielski 7:438b55fe8576 64 BaseChannel* channel;
smigielski 7:438b55fe8576 65 };
smigielski 7:438b55fe8576 66
smigielski 7:438b55fe8576 67 #endif