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 12:30:51 2015 +0000
Revision:
9:ed3636e1873f
Parent:
8:e9ae7a01d866
Child:
10:3a24c970db40
ADXL362 is compiling

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 9:ed3636e1873f 17 /* Errors */
smigielski 9:ed3636e1873f 18 #define ERROR_WRONG_DEVICE_ID 1
smigielski 9:ed3636e1873f 19 #define ERROR_SEU_ERROR_DETECT 2
smigielski 9:ed3636e1873f 20 #define ERROR_DEVICE_SLEEPING 3
smigielski 9:ed3636e1873f 21 #define ERROR_SELF_TEST_FAILED 4
smigielski 7:438b55fe8576 22 /** Sensor types */
smigielski 7:438b55fe8576 23 typedef enum
smigielski 7:438b55fe8576 24 {
smigielski 7:438b55fe8576 25 SENSOR_TYPE_ACCELEROMETER = (1), /**< Gravity + linear acceleration */
smigielski 7:438b55fe8576 26 SENSOR_TYPE_MAGNETIC_FIELD = (2),
smigielski 7:438b55fe8576 27 SENSOR_TYPE_ORIENTATION = (3),
smigielski 7:438b55fe8576 28 SENSOR_TYPE_GYROSCOPE = (4),
smigielski 7:438b55fe8576 29 SENSOR_TYPE_LIGHT = (5),
smigielski 7:438b55fe8576 30 SENSOR_TYPE_PRESSURE = (6),
smigielski 7:438b55fe8576 31 SENSOR_TYPE_PROXIMITY = (8),
smigielski 7:438b55fe8576 32 SENSOR_TYPE_GRAVITY = (9),
smigielski 7:438b55fe8576 33 SENSOR_TYPE_LINEAR_ACCELERATION = (10), /**< Acceleration not including gravity */
smigielski 7:438b55fe8576 34 SENSOR_TYPE_ROTATION_VECTOR = (11),
smigielski 7:438b55fe8576 35 SENSOR_TYPE_RELATIVE_HUMIDITY = (12),
smigielski 7:438b55fe8576 36 SENSOR_TYPE_AMBIENT_TEMPERATURE = (13),
smigielski 7:438b55fe8576 37 SENSOR_TYPE_VOLTAGE = (15),
smigielski 7:438b55fe8576 38 SENSOR_TYPE_CURRENT = (16),
smigielski 7:438b55fe8576 39 SENSOR_TYPE_COLOR = (17)
smigielski 7:438b55fe8576 40 } sensors_type_t;
smigielski 7:438b55fe8576 41
smigielski 7:438b55fe8576 42 /* Sensor details (40 bytes) */
smigielski 7:438b55fe8576 43 /** struct sensor_s is used to describe basic information about a specific sensor. */
smigielski 7:438b55fe8576 44 typedef struct
smigielski 7:438b55fe8576 45 {
smigielski 7:438b55fe8576 46 char name[12]; /**< sensor name */
smigielski 7:438b55fe8576 47 int32_t version; /**< version of the hardware + driver */
smigielski 7:438b55fe8576 48 int32_t sensor_id; /**< unique sensor identifier */
smigielski 7:438b55fe8576 49 int32_t type; /**< this sensor's type (ex. SENSOR_TYPE_LIGHT) */
smigielski 7:438b55fe8576 50 float max_value; /**< maximum value of this sensor's value in SI units */
smigielski 7:438b55fe8576 51 float min_value; /**< minimum value of this sensor's value in SI units */
smigielski 7:438b55fe8576 52 float resolution; /**< smallest difference between two values reported by this sensor */
smigielski 7:438b55fe8576 53 int32_t min_delay; /**< min delay in microseconds between events. zero = not a constant rate */
smigielski 7:438b55fe8576 54 } sensor_t;
smigielski 7:438b55fe8576 55
smigielski 7:438b55fe8576 56 class BaseSensor {
smigielski 7:438b55fe8576 57 public:
smigielski 7:438b55fe8576 58 //constructor
smigielski 8:e9ae7a01d866 59 BaseSensor();
smigielski 7:438b55fe8576 60 //get sensor details from actual implementation
smigielski 8:e9ae7a01d866 61 virtual char* getSimpleName() = 0;
smigielski 8:e9ae7a01d866 62 virtual void getSensorDetails(sensor_t*) = 0;
smigielski 7:438b55fe8576 63 //verify basic integrity of underlining hardware
smigielski 9:ed3636e1873f 64 virtual uint32_t verifyIntegrity(uint32_t*) = 0;
smigielski 7:438b55fe8576 65
smigielski 7:438b55fe8576 66 private:
smigielski 7:438b55fe8576 67 };
smigielski 7:438b55fe8576 68
smigielski 7:438b55fe8576 69 #endif