Self test boot program for testing icarus sensors
Dependencies: BLE_API mbed nRF51822
Fork of BLE_UARTConsole by
BaseSensor.h@8:e9ae7a01d866, 2015-01-27 (annotated)
- 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?
User | Revision | Line number | New 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 |