Self test boot program for testing icarus sensors

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_UARTConsole by Bluetooth Low Energy

Committer:
smigielski
Date:
Tue Jan 27 09:29:17 2015 +0000
Revision:
8:e9ae7a01d866
Parent:
7:438b55fe8576
Child:
9:ed3636e1873f
Add registers

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