summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2015-05-04 20:44:47 +0800
committerBernard Xiong <[email protected]>2015-05-04 20:44:47 +0800
commit452432a15b410797b0fd7a7fd6667bcc98c8a6db (patch)
treeb37442267cb86014d49fa4a03a53b01f02e24a7a /components
parent90e95eca54545cf1eeb8a163b83f8c2e2b24a891 (diff)
[Sensor] Fix the call back issue in sensor.
Diffstat (limited to 'components')
-rw-r--r--components/drivers/sensors/sensor.cpp10
-rw-r--r--components/drivers/sensors/sensor.h21
2 files changed, 16 insertions, 15 deletions
diff --git a/components/drivers/sensors/sensor.cpp b/components/drivers/sensors/sensor.cpp
index 18eb8eee18..abeecdb883 100644
--- a/components/drivers/sensors/sensor.cpp
+++ b/components/drivers/sensors/sensor.cpp
@@ -58,7 +58,7 @@ int SensorBase::getConfig(SensorConfig *config)
return 0;
}
-int SensorBase::subscribe(SensorEventHandler_t *handler, void *user_data)
+int SensorBase::subscribe(SensorEventHandler_t handler, void *user_data)
{
this->evtHandler = handler;
this->userData = user_data;
@@ -66,12 +66,12 @@ int SensorBase::subscribe(SensorEventHandler_t *handler, void *user_data)
return 0;
}
-int SensorBase::publish(sensors_event_t *event)
+int SensorBase::publish(void)
{
if (this->evtHandler != NULL)
{
/* invoke subscribed handler */
- (*evtHandler)(event, this->userData);
+ (*evtHandler)(this->userData);
}
return 0;
@@ -151,7 +151,7 @@ SensorBase *SensorManager::getDefaultSensor(int type)
return NULL;
}
-int SensorManager::subscribe(int type, SensorEventHandler_t *handler, void *user_data)
+int SensorManager::subscribe(int type, SensorEventHandler_t handler, void *user_data)
{
SensorBase *sensor;
@@ -194,7 +194,7 @@ rt_sensor_t rt_sensor_get_default(int type)
return (rt_sensor_t)SensorManager::getDefaultSensor(type);
}
-int rt_sensor_subscribe(rt_sensor_t sensor, SensorEventHandler_t *handler, void *user_data)
+int rt_sensor_subscribe(rt_sensor_t sensor, SensorEventHandler_t handler, void *user_data)
{
SensorBase *sensor_base;
if (sensor == NULL) return -1;
diff --git a/components/drivers/sensors/sensor.h b/components/drivers/sensors/sensor.h
index 2962b21a80..fd44611f5a 100644
--- a/components/drivers/sensors/sensor.h
+++ b/components/drivers/sensors/sensor.h
@@ -992,10 +992,10 @@ enum SensorAccelRange
SENSOR_ACCEL_RANGE_8G,
SENSOR_ACCEL_RANGE_16G,
};
-#define SENSOR_ACCEL_SENSITIVITY_2G (0.001F)
-#define SENSOR_ACCEL_SENSITIVITY_4G (0.002F)
-#define SENSOR_ACCEL_SENSITIVITY_8G (0.004F)
-#define SENSOR_ACCEL_SENSITIVITY_16G (0.012F)
+#define SENSOR_ACCEL_SENSITIVITY_2G ((float)2/32768)
+#define SENSOR_ACCEL_SENSITIVITY_4G ((float)4/32768)
+#define SENSOR_ACCEL_SENSITIVITY_8G ((float)8/32768)
+#define SENSOR_ACCEL_SENSITIVITY_16G ((float)16/32768)
enum SensorGyroRange
{
@@ -1040,12 +1040,13 @@ typedef struct SensorConfig
union range
{
+ int range;
enum SensorAccelRange accel_range;
enum SensorGyroRange gyro_range;
} range;
}SensorConfig;
-typedef void (*SensorEventHandler_t)(sensors_event_t *event, void *user_data);
+typedef void (*SensorEventHandler_t)(void *user_data);
#ifdef __cplusplus
class SensorBase;
@@ -1074,8 +1075,8 @@ public:
int setConfig(SensorConfig *config);
int getConfig(SensorConfig *config);
- int subscribe(SensorEventHandler_t *handler, void *user_data);
- int publish(sensors_event_t *event);
+ int subscribe(SensorEventHandler_t handler, void *user_data);
+ int publish(void);
protected:
SensorBase *next;
@@ -1084,7 +1085,7 @@ protected:
/* sensor configuration */
SensorConfig config;
- SensorEventHandler_t *evtHandler;
+ SensorEventHandler_t evtHandler;
void *userData;
friend class SensorManager;
@@ -1103,7 +1104,7 @@ public:
static int unregisterSensor(SensorBase *sensor);
static SensorBase *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);
static int sensorEventReady(SensorBase *sensor);
static int pollSensor(SensorBase *sensor, sensors_event_t *events, int number, int duration);
@@ -1120,7 +1121,7 @@ extern "C" {
rt_sensor_t rt_sensor_get_default(int type);
-int rt_sensor_subscribe(rt_sensor_t sensor, SensorEventHandler_t *handler, void *user_data);
+int rt_sensor_subscribe(rt_sensor_t sensor, SensorEventHandler_t handler, void *user_data);
int rt_sensor_activate (rt_sensor_t sensor, int enable);
int rt_sensor_configure(rt_sensor_t sensor, SensorConfig *config);
int rt_sensor_poll(rt_sensor_t sensor, sensors_event_t *event);