{
}
-void SensorTimer::init(GMainContext* mainContext)
+void SensorTimer::init()
{
- __timer = new Timer(mainContext);
+ __timer = new Timer();
}
void SensorTimer::release()
delete __timer;
}
-unsigned int SensorTimer::addIdle(GSourceFunc callback, gpointer userData)
-{
- return __timer->addIdle(callback, userData);
-}
-
unsigned int SensorTimer::addAlarm(unsigned int intervalMin, ITimerListener* listener)
{
return __timer->addAlarm(intervalMin, listener, NULL);
class SensorTimer {
public:
- static void init(GMainContext* mainContext);
+ static void init();
static void release();
- static unsigned int addIdle(GSourceFunc callback, gpointer userData);
static unsigned int addAlarm(unsigned int intervalMin, ITimerListener* listener);
static void cancel(unsigned int timerId);
using namespace ctx;
-struct SensorEvent {
- SensorProxy* listener;
- sensor_data_t* data;
-};
-
SensorProxy::SensorProxy() :
sensorHandle(-1),
sensorType(UNKNOWN_SENSOR),
void SensorProxy::__eventCb(sensor_t sensor, unsigned int eventType, sensor_data_t *eventData, void *cbData)
{
- SensorEvent* sensorEvent = new SensorEvent;
- sensorEvent->listener = static_cast<SensorProxy*>(cbData);
-
- if (sensorEvent->listener->sensorType == HUMAN_PEDOMETER_SENSOR) {
- sensorEvent->data = static_cast<sensor_data_t*>(g_memdup(eventData, sizeof(sensor_pedometer_data_t)));
- } else {
- sensorEvent->data = static_cast<sensor_data_t*>(g_memdup(eventData, sizeof(sensor_data_t)));
- }
-
- if (!sensorEvent->data) {
- _E_ALLOC;
- delete sensorEvent;
- return;
- }
-
- SensorTimer::addIdle(__threadSwitcher, sensorEvent);
-}
-
-gboolean SensorProxy::__threadSwitcher(gpointer data)
-{
- SensorEvent* sensorEvent = static_cast<SensorEvent*>(data);
-
- sensorEvent->listener->onEvent(sensorEvent->data);
-
- g_free(sensorEvent->data);
- delete sensorEvent;
-
- return G_SOURCE_REMOVE;
+ static_cast<SensorProxy*>(cbData)->onEvent(eventData);
}
private:
static void __eventCb(sensor_t sensor, unsigned int eventType, sensor_data_t *eventData, void *cbData);
- static gboolean __threadSwitcher(gpointer data);
};
}