[Sensor] code cleanup

This commit is contained in:
Bernard Xiong
2014-11-01 15:52:25 +08:00
parent c319182651
commit 0fa10629f7
2 changed files with 112 additions and 98 deletions

View File

@@ -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;
}