summaryrefslogtreecommitdiff
path: root/components/drivers/sensors/sensor.cpp
diff options
context:
space:
mode:
authorguozhanxin <[email protected]>2019-02-12 10:15:26 +0800
committerguozhanxin <[email protected]>2019-02-12 14:09:34 +0800
commit64813b6b07f32bbee1a5f0743c5ea08458294d13 (patch)
treee1b40fdb61e1d7a872f0e06421175a7a9907f231 /components/drivers/sensors/sensor.cpp
parent821c81e21a5dbe2b229fae5fafbcfb4fc6758343 (diff)
add first version
Diffstat (limited to 'components/drivers/sensors/sensor.cpp')
-rw-r--r--components/drivers/sensors/sensor.cpp228
1 files changed, 0 insertions, 228 deletions
diff --git a/components/drivers/sensors/sensor.cpp b/components/drivers/sensors/sensor.cpp
deleted file mode 100644
index f986510f63..0000000000
--- a/components/drivers/sensors/sensor.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2014-08-03 Bernard the first version
- */
-
-#include <stddef.h>
-#include <string.h>
-
-#include "sensor.h"
-
-/**
- * SensorBase
- */
-SensorBase::SensorBase(int type)
-{
- memset(&(this->config), 0x0, sizeof(SensorConfig));
-
- this->type = type;
- this->next = this->prev = NULL;
- subscribe(NULL, NULL);
-}
-
-SensorBase::~SensorBase()
-{
-}
-
-int SensorBase::getType(void)
-{
- return this->type;
-}
-
-int SensorBase::setConfig(SensorConfig *config)
-{
- int result;
-
- /* configure to the low level sensor */
- result = this->configure(config);
- if (result == 0)
- {
- this->config = *config;
- }
-
- return result;
-}
-
-int SensorBase::getConfig(SensorConfig *config)
-{
- *config = this->config;
- return 0;
-}
-
-int SensorBase::subscribe(SensorEventHandler_t handler, void *user_data)
-{
- this->evtHandler = handler;
- this->userData = user_data;
-
- return 0;
-}
-
-int SensorBase::publish(void)
-{
- if (this->evtHandler != NULL)
- {
- /* invoke subscribed handler */
- (*evtHandler)(this->userData);
- }
-
- return 0;
-}
-
-/**
- * Sensor Manager
- */
-/* sensors list */
-static SensorBase *sensor_list = NULL;
-
-SensorManager::SensorManager()
-{
-}
-
-SensorManager::~SensorManager()
-{
-}
-
-int SensorManager::registerSensor(SensorBase *sensor)
-{
- RT_ASSERT(sensor != RT_NULL);
-
- /* add sensor into the list */
- if (sensor_list == NULL)
- {
- sensor->prev = sensor->next = sensor;
- }
- else
- {
- sensor_list->prev->next = sensor;
- sensor->prev = sensor_list->prev;
-
- sensor_list->prev = sensor;
- sensor->next = sensor_list;
- }
-
- /* point the sensorList to this sensor */
- sensor_list = sensor;
-
- return 0;
-}
-
-int SensorManager::unregisterSensor(SensorBase *sensor)
-{
- /* disconnect sensor list */
- sensor->next->prev = sensor->prev;
- sensor->prev->next = sensor->next;
-
- /* check the sensorList */
- if (sensor == sensor_list)
- {
- if (sensor->next == sensor) sensor_list = NULL; /* empty list */
- else sensor_list = sensor->next;
- }
-
- /* re-initialize sensor node */
- sensor->next = sensor->prev = sensor;
-
- return 0;
-}
-
-SensorBase *SensorManager::getDefaultSensor(int type)
-{
- SensorBase *sensor = sensor_list;
-
- if (sensor == NULL) return NULL;
-
- do
- {
- /* find the same type */
- if (sensor->getType() == type) return sensor;
-
- sensor = sensor->next;
- }while (sensor != sensor_list);
-
- return NULL;
-}
-
-int SensorManager::subscribe(int type, SensorEventHandler_t handler, void *user_data)
-{
- SensorBase *sensor;
-
- sensor = SensorManager::getDefaultSensor(type);
- if (sensor != NULL)
- {
- sensor->subscribe(handler, user_data);
- return 0;
- }
-
- return -1;
-}
-
-int SensorManager::sensorEventReady(SensorBase *sensor)
-{
- return 0;
-}
-
-int SensorManager::pollSensor(SensorBase *sensor, sensors_event_t *events, int number, int duration)
-{
- rt_tick_t tick;
- int result, index;
-
- if (sensor == NULL) return -1;
-
- tick = rt_tick_get();
- for (index = 0; index < number; index ++)
- {
- result = sensor->poll(&events[index]);
- if (result < 0) break;
-
- if (rt_tick_get() - tick > duration) break;
- }
-
- return index;
-}
-
-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)
-{
- SensorBase *sensor_base;
- if (sensor == NULL) return -1;
-
- sensor_base = (SensorBase*)sensor;
-
- return sensor_base->subscribe(handler, user_data);
-}
-
-int rt_sensor_poll(rt_sensor_t sensor, sensors_event_t *event)
-{
- SensorBase *sensor_base;
- if (sensor == NULL || event == NULL) return -1;
-
- sensor_base = (SensorBase*)sensor;
- return sensor_base->poll(event);
-}
-
-int rt_sensor_configure(rt_sensor_t sensor, SensorConfig *config)
-{
- SensorBase *sensor_base;
- if (sensor == NULL || config == NULL) return -1;
-
- sensor_base = (SensorBase*)sensor;
- return sensor_base->setConfig(config);
-}
-
-int rt_sensor_activate(rt_sensor_t sensor, int enable)
-{
- SensorBase *sensor_base;
- if (sensor == NULL) return -1;
-
- sensor_base = (SensorBase*)sensor;
- return sensor_base->activate(enable);
-}