39 ** |
39 ** |
40 ****************************************************************************/ |
40 ****************************************************************************/ |
41 |
41 |
42 #include "maemo6accelerometer.h" |
42 #include "maemo6accelerometer.h" |
43 |
43 |
44 const char *maemo6accelerometer::id("maemo6.accelerometer"); |
44 char const * const maemo6accelerometer::id("maemo6.accelerometer"); |
45 bool maemo6accelerometer::m_initDone = false; |
45 bool maemo6accelerometer::m_initDone = false; |
46 |
46 |
47 maemo6accelerometer::maemo6accelerometer(QSensor *sensor) |
47 maemo6accelerometer::maemo6accelerometer(QSensor *sensor) |
48 : maemo6sensorbase(sensor) |
48 : maemo6sensorbase(sensor) |
49 { |
49 { |
|
50 const QString sensorName = "accelerometersensor"; |
|
51 initSensor<AccelerometerSensorChannelInterface>(sensorName, m_initDone); |
|
52 |
|
53 |
|
54 if (m_sensorInterface){ |
|
55 if (!(QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(const XYZ&)), |
|
56 this, SLOT(slotDataAvailable(const XYZ&))))) |
|
57 qWarning() << "Unable to connect "<< sensorName; |
|
58 } |
|
59 else |
|
60 qWarning() << "Unable to initialize "<<sensorName; |
|
61 |
50 setReading<QAccelerometerReading>(&m_reading); |
62 setReading<QAccelerometerReading>(&m_reading); |
|
63 // adding metadata |
|
64 addDataRate(1, 130); // 130 Hz |
|
65 //addDataRate(400, 400); // 400Hz |
51 |
66 |
52 if (!m_initDone) { |
67 // accuracy - or resolution??? |
53 qDBusRegisterMetaType<XYZ>(); |
68 // 2^8 = 256 256/2 - 1 = 127 |
54 |
69 addOutputRange(-2*GRAVITY_EARTH, 2*GRAVITY_EARTH, 2*GRAVITY_EARTH/127); // 2G |
55 initSensor<AccelerometerSensorChannelInterface>("accelerometersensor"); |
70 //addOutputRange(-8*GRAVITY_EARTH, 8*GRAVITY_EARTH, 8*GRAVITY_EARTH/127); // 8G |
56 |
71 setDescription(QLatin1String("Measures x, y, and z axes accelerations in m/s^2")); |
57 if (m_sensorInterface) |
|
58 QObject::connect(static_cast<AccelerometerSensorChannelInterface*>(m_sensorInterface), SIGNAL(dataAvailable(const XYZ&)), this, SLOT(slotDataAvailable(const XYZ&))); |
|
59 else |
|
60 qWarning() << "Unable to initialize accelerometer sensor."; |
|
61 |
|
62 // adding metadata |
|
63 addDataRate(142, 142); // 142Hz |
|
64 sensor->setDataRate(142); |
|
65 //addDataRate(400, 400); // 400Hz |
|
66 |
|
67 // accuracy - or resolution??? |
|
68 // 2^8 = 256 256/2 - 1 = 127 |
|
69 addOutputRange(-2*GRAVITY_EARTH, 2*GRAVITY_EARTH, 2*GRAVITY_EARTH/127); // 2G |
|
70 addOutputRange(-8*GRAVITY_EARTH, 8*GRAVITY_EARTH, 8*GRAVITY_EARTH/127); // 8G |
|
71 setDescription(QLatin1String("Measures x, y, and z axes accelerations in m/s^2")); |
|
72 |
|
73 m_initDone = true; |
|
74 } |
|
75 } |
72 } |
76 |
73 |
77 void maemo6accelerometer::slotDataAvailable(const XYZ& data) |
74 void maemo6accelerometer::slotDataAvailable(const XYZ& data) |
78 { |
75 { |
79 // Convert from milli-Gs to meters per second per second |
76 // Convert from milli-Gs to meters per second per second |