summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/drivers/sensors/sensor.cpp120
-rw-r--r--components/drivers/sensors/sensor.h90
2 files changed, 112 insertions, 98 deletions
diff --git a/components/drivers/sensors/sensor.cpp b/components/drivers/sensors/sensor.cpp
index f15ee3a3ca..52718183f3 100644
--- a/components/drivers/sensors/sensor.cpp
+++ b/components/drivers/sensors/sensor.cpp
@@ -1,13 +1,13 @@
#include <stddef.h>
#include "sensor.h"
-/**
+/**
* Sensor
*/
Sensor::Sensor()
{
- this->next = this->prev = NULL;
- Subscribe(NULL, NULL);
+ this->next = this->prev = NULL;
+ Subscribe(NULL, NULL);
}
Sensor::~Sensor()
@@ -19,7 +19,7 @@ int Sensor::GetType(void)
return this->type;
}
-int Sensor::Subscribe(SensorEventHandler_t *handler, void* user_data)
+int Sensor::Subscribe(SensorEventHandler_t *handler, void *user_data)
{
this->evtHandler = handler;
this->userData = user_data;
@@ -27,13 +27,13 @@ int Sensor::Subscribe(SensorEventHandler_t *handler, void* user_data)
return 0;
}
-int Sensor::Publish(sensors_event_t* event)
+int Sensor::Publish(sensors_event_t *event)
{
- if (this->evtHandler != NULL)
- {
- /* invoke subscribed handler */
- (*evtHandler)(this, event, this->userData);
- }
+ if (this->evtHandler != NULL)
+ {
+ /* invoke subscribed handler */
+ (*evtHandler)(this, event, this->userData);
+ }
return 0;
}
@@ -46,89 +46,89 @@ static SensorManager _sensor_manager;
SensorManager::SensorManager()
{
- sensorList = NULL;
+ sensorList = NULL;
}
SensorManager::~SensorManager()
{
}
-int SensorManager::RegisterSensor(Sensor* sensor)
+int SensorManager::RegisterSensor(Sensor *sensor)
{
- SensorManager* self = &_sensor_manager;
-
+ SensorManager *self = &_sensor_manager;
+
RT_ASSERT(sensor != RT_NULL);
- /* add sensor into the list */
- if (self->sensorList = NULL)
- {
- sensor->prev = sensor->next = sensor;
- }
- else
- {
- sensor->prev = self->sensorList;
- sensor->next = self->sensorList->next;
+ /* add sensor into the list */
+ if (self->sensorList = NULL)
+ {
+ sensor->prev = sensor->next = sensor;
+ }
+ else
+ {
+ sensor->prev = self->sensorList;
+ sensor->next = self->sensorList->next;
- self->sensorList->next->prev = sensor;
- self->sensorList->next = sensor;
- }
+ self->sensorList->next->prev = sensor;
+ self->sensorList->next = sensor;
+ }
- /* point the sensorList to this sensor */
- self->sensorList = sensor;
+ /* point the sensorList to this sensor */
+ self->sensorList = sensor;
- return 0;
+ return 0;
}
-int SensorManager::DeregisterSensor(Sensor* sensor)
+int SensorManager::DeregisterSensor(Sensor *sensor)
{
- SensorManager* self = &_sensor_manager;
+ SensorManager *self = &_sensor_manager;
- /* disconnect sensor list */
- sensor->next->prev = sensor->prev;
- sensor->prev->next = sensor->next;
+ /* disconnect sensor list */
+ sensor->next->prev = sensor->prev;
+ sensor->prev->next = sensor->next;
- /* check the sensorList */
- if (sensor == self->sensorList)
- {
- if (sensor->next == sensor) self->sensorList = NULL; /* empty list */
- else self->sensorList = sensor->next;
- }
+ /* check the sensorList */
+ if (sensor == self->sensorList)
+ {
+ if (sensor->next == sensor) self->sensorList = NULL; /* empty list */
+ else self->sensorList = sensor->next;
+ }
- /* re-initialize sensor node */
- sensor->next = sensor->prev = sensor;
+ /* re-initialize sensor node */
+ sensor->next = sensor->prev = sensor;
return 0;
}
Sensor *SensorManager::GetDefaultSensor(int type)
{
- SensorManager* self = &_sensor_manager;
- Sensor *sensor = self->sensorList;
+ SensorManager *self = &_sensor_manager;
+ Sensor *sensor = self->sensorList;
- if (sensor == NULL) return NULL;
+ if (sensor == NULL) return NULL;
- do
- {
- /* find the same type */
- if (sensor->GetType() == type) return sensor;
+ do
+ {
+ /* find the same type */
+ if (sensor->GetType() == type) return sensor;
- sensor = sensor->next;
- }
- while (sensor != self->sensorList);
+ sensor = sensor->next;
+ }
+ while (sensor != self->sensorList);
return NULL;
}
-int SensorManager::Subscribe(int type, SensorEventHandler_t *handler, void* user_data)
+int SensorManager::Subscribe(int type, SensorEventHandler_t *handler, void *user_data)
{
- Sensor *sensor;
+ Sensor *sensor;
- sensor = SensorManager::GetDefaultSensor(type);
- if (sensor != NULL)
- {
- sensor->Subscribe(handler, user_data);
- return 0;
- }
+ sensor = SensorManager::GetDefaultSensor(type);
+ if (sensor != NULL)
+ {
+ sensor->Subscribe(handler, user_data);
+ return 0;
+ }
return -1;
}
diff --git a/components/drivers/sensors/sensor.h b/components/drivers/sensors/sensor.h
index 199db8644b..09929d1b58 100644
--- a/components/drivers/sensors/sensor.h
+++ b/components/drivers/sensors/sensor.h
@@ -55,7 +55,8 @@
* Availability: SENSORS_DEVICE_API_VERSION_1_0
* see (*batch)() documentation for details
*/
-enum {
+enum
+{
SENSORS_BATCH_DRY_RUN = 0x00000001,
SENSORS_BATCH_WAKE_UPON_FIFO_FULL = 0x00000002
};
@@ -63,7 +64,8 @@ enum {
/*
* what field for meta_data_event_t
*/
-enum {
+enum
+{
/* a previous flush operation has completed */
META_DATA_FLUSH_COMPLETE = 1,
META_DATA_VERSION /* always last, leave auto-assigned */
@@ -749,14 +751,17 @@ enum {
*/
typedef struct
{
- union {
+ union
+ {
float v[3];
- struct {
+ struct
+ {
float x;
float y;
float z;
};
- struct {
+ struct
+ {
float azimuth;
float pitch;
float roll;
@@ -771,22 +776,26 @@ typedef struct
*/
typedef struct
{
- union {
- float uncalib[3];
- struct {
- float x_uncalib;
- float y_uncalib;
- float z_uncalib;
+ union
+ {
+ float uncalib[3];
+ struct
+ {
+ float x_uncalib;
+ float y_uncalib;
+ float z_uncalib;
+ };
};
- };
- union {
- float bias[3];
- struct {
- float x_bias;
- float y_bias;
- float z_bias;
+ union
+ {
+ float bias[3];
+ struct
+ {
+ float x_bias;
+ float y_bias;
+ float z_bias;
+ };
};
- };
} uncalibrated_event_t;
typedef struct meta_data_event
@@ -799,7 +808,8 @@ typedef struct meta_data_event
* Union of the various types of sensor data
* that can be returned.
*/
-typedef struct sensors_event_t {
+typedef struct sensors_event_t
+{
/* must be sizeof(struct sensors_event_t) */
int32_t version;
@@ -815,8 +825,10 @@ typedef struct sensors_event_t {
/* time is in nanosecond */
int64_t timestamp;
- union {
- union {
+ union
+ {
+ union
+ {
float data[16];
/* acceleration values are in meter per second per second (m/s^2) */
@@ -859,7 +871,8 @@ typedef struct sensors_event_t {
meta_data_event_t meta_data;
};
- union {
+ union
+ {
uint64_t data[8];
/* step-counter */
@@ -872,15 +885,16 @@ typedef struct sensors_event_t {
/* see SENSOR_TYPE_META_DATA */
typedef sensors_event_t sensors_meta_data_event_t;
-typedef struct sensor_t {
+typedef struct sensor_t
+{
/* Name of this sensor.
* All sensors of the same "type" must have a different "name".
*/
- const char* name;
+ const char *name;
/* vendor of the hardware part */
- const char* vendor;
+ const char *vendor;
/* version of the hardware part + driver. The value of this field
* must increase when the driver is updated in a way that changes the
@@ -929,7 +943,7 @@ typedef struct sensor_t {
uint32_t fifoMaxEventCount;
/* reserved fields, must be zero */
- void* reserved[6];
+ void *reserved[6];
} sensor_t;
class SensorConfigure
@@ -939,7 +953,7 @@ class SensorConfigure
class Sensor;
class SensorManager;
-typedef void (*SensorEventHandler_t)(Sensor* sensor, sensors_event_t* event, void* user_data);
+typedef void (*SensorEventHandler_t)(Sensor *sensor, sensors_event_t *event, void *user_data);
/**
* Sensor Base Class
@@ -961,17 +975,17 @@ public:
int GetType(void);
- int Subscribe(SensorEventHandler_t *handler, void* user_data);
- int Publish(sensors_event_t* event);
+ int Subscribe(SensorEventHandler_t *handler, void *user_data);
+ int Publish(sensors_event_t *event);
-protected:
+protected:
Sensor *next;
- Sensor *prev;
+ Sensor *prev;
SensorEventHandler_t *evtHandler;
void *userData;
- friend class SensorManager;
+ friend class SensorManager;
};
/**
@@ -982,15 +996,15 @@ class SensorManager
public:
SensorManager();
~SensorManager();
-
- static int RegisterSensor(Sensor* sensor);
- static int DeregisterSensor(Sensor* sensor);
+
+ static int RegisterSensor(Sensor *sensor);
+ static int DeregisterSensor(Sensor *sensor);
static Sensor *GetDefaultSensor(int type);
- static int Subscribe(int type, SensorEventHandler_t *handler, void* user_data);
+ static int Subscribe(int type, SensorEventHandler_t *handler, void *user_data);
private:
- Sensor* sensorList;
+ Sensor *sensorList;
};
#endif