Self test boot program for testing icarus sensors
Dependencies: BLE_API mbed nRF51822
Fork of BLE_UARTConsole by
BaseSensor.h
- Committer:
- smigielski
- Date:
- 2015-04-15
- Revision:
- 14:cb369746225d
- Parent:
- 13:ef0ce8fa871f
File content as of revision 14:cb369746225d:
#ifndef MBED_BASE_SENSOR_H #define MBED_BASE_SENSOR_H #include "mbed.h" #define LOG(...) do { if (debug) { debug( __VA_ARGS__); } } while (0) /* Constants */ #define SENSORS_GRAVITY_EARTH (9.80665F) /**< Earth's gravity in m/s^2 */ #define SENSORS_GRAVITY_MOON (1.6F) /**< The moon's gravity in m/s^2 */ #define SENSORS_GRAVITY_SUN (275.0F) /**< The sun's gravity in m/s^2 */ #define SENSORS_GRAVITY_STANDARD (SENSORS_GRAVITY_EARTH) #define SENSORS_MAGFIELD_EARTH_MAX (60.0F) /**< Maximum magnetic field on Earth's surface */ #define SENSORS_MAGFIELD_EARTH_MIN (30.0F) /**< Minimum magnetic field on Earth's surface */ #define SENSORS_PRESSURE_SEALEVELHPA (1013.25F) /**< Average sea level pressure is 1013.25 hPa */ #define SENSORS_DPS_TO_RADS (0.017453293F) /**< Degrees/s to rad/s multiplier */ #define SENSORS_GAUSS_TO_MICROTESLA (100) /**< Gauss to micro-Tesla multiplier */ #define DOWN 0 #define UP 1 /* Errors */ #define ERROR_WRONG_DEVICE_ID 1 #define ERROR_WRONG_DEVICE_STATE 2 #define ERROR_DEVICE_SLEEPING 3 #define ERROR_ACCE_SELF_TEST_FAILED 4 #define ERROR_GYRO_SELF_TEST_FAILED 5 #define ERROR_MAGN_SELF_TEST_FAILED 6 /** Sensor types */ typedef enum { SENSOR_TYPE_ACCELEROMETER = (1), /**< Gravity + linear acceleration */ SENSOR_TYPE_MAGNETIC_FIELD = (2), SENSOR_TYPE_ORIENTATION = (3), SENSOR_TYPE_GYROSCOPE = (4), SENSOR_TYPE_LIGHT = (5), SENSOR_TYPE_PRESSURE = (6), SENSOR_TYPE_PROXIMITY = (8), SENSOR_TYPE_GRAVITY = (9), SENSOR_TYPE_LINEAR_ACCELERATION = (10), /**< Acceleration not including gravity */ SENSOR_TYPE_ROTATION_VECTOR = (11), SENSOR_TYPE_RELATIVE_HUMIDITY = (12), SENSOR_TYPE_AMBIENT_TEMPERATURE = (13), SENSOR_TYPE_VOLTAGE = (15), SENSOR_TYPE_CURRENT = (16), SENSOR_TYPE_COLOR = (17) } sensors_type_t; /* Sensor details (40 bytes) */ /** struct sensor_s is used to describe basic information about a specific sensor. */ typedef struct { char name[12]; /**< sensor name */ int32_t version; /**< version of the hardware + driver */ int32_t sensor_id; /**< unique sensor identifier */ int32_t type; /**< this sensor's type (ex. SENSOR_TYPE_LIGHT) */ float max_value; /**< maximum value of this sensor's value in SI units */ float min_value; /**< minimum value of this sensor's value in SI units */ float resolution; /**< smallest difference between two values reported by this sensor */ int32_t min_delay; /**< min delay in microseconds between events. zero = not a constant rate */ } sensor_t; class BaseSensor { public: //constructor BaseSensor(void (*debug_)(const char* format, ...)=0); //get sensor details from actual implementation virtual char* getSimpleName() = 0; virtual void getSensorDetails(sensor_t*) = 0; //verify basic integrity of underlining hardware virtual uint32_t verifyIntegrity(uint32_t*) = 0; void (*debug)(const char* format, ...); private: }; #endif