|
@@ -1,13 +1,13 @@
|
|
#include <stddef.h>
|
|
#include <stddef.h>
|
|
#include "sensor.h"
|
|
#include "sensor.h"
|
|
|
|
|
|
-/**
|
|
|
|
|
|
+/**
|
|
* Sensor
|
|
* Sensor
|
|
*/
|
|
*/
|
|
Sensor::Sensor()
|
|
Sensor::Sensor()
|
|
{
|
|
{
|
|
- this->next = this->prev = NULL;
|
|
|
|
- Subscribe(NULL, NULL);
|
|
|
|
|
|
+ this->next = this->prev = NULL;
|
|
|
|
+ Subscribe(NULL, NULL);
|
|
}
|
|
}
|
|
|
|
|
|
Sensor::~Sensor()
|
|
Sensor::~Sensor()
|
|
@@ -19,7 +19,7 @@ int Sensor::GetType(void)
|
|
return this->type;
|
|
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->evtHandler = handler;
|
|
this->userData = user_data;
|
|
this->userData = user_data;
|
|
@@ -27,13 +27,13 @@ int Sensor::Subscribe(SensorEventHandler_t *handler, void* user_data)
|
|
return 0;
|
|
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;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -46,89 +46,89 @@ static SensorManager _sensor_manager;
|
|
|
|
|
|
SensorManager::SensorManager()
|
|
SensorManager::SensorManager()
|
|
{
|
|
{
|
|
- sensorList = NULL;
|
|
|
|
|
|
+ sensorList = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
SensorManager::~SensorManager()
|
|
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);
|
|
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;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
Sensor *SensorManager::GetDefaultSensor(int type)
|
|
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;
|
|
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 = SensorManager::GetDefaultSensor(type);
|
|
|
|
- if (sensor != NULL)
|
|
|
|
- {
|
|
|
|
- sensor->Subscribe(handler, user_data);
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
|
|
+ Sensor *sensor;
|
|
|
|
+
|
|
|
|
+ sensor = SensorManager::GetDefaultSensor(type);
|
|
|
|
+ if (sensor != NULL)
|
|
|
|
+ {
|
|
|
|
+ sensor->Subscribe(handler, user_data);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|