43 #include <QFile> |
43 #include <QFile> |
44 #include <QDebug> |
44 #include <QDebug> |
45 #include <time.h> |
45 #include <time.h> |
46 #include <stdio.h> |
46 #include <stdio.h> |
47 |
47 |
48 const char *n900accelerometer::id("n900.accelerometer"); |
48 char const * const n900accelerometer::id("n900.accelerometer"); |
49 const char *n900accelerometer::filename("/sys/class/i2c-adapter/i2c-3/3-001d/coord"); |
49 char const * const n900accelerometer::filename("/sys/class/i2c-adapter/i2c-3/3-001d/coord"); |
50 const char *n900accelerometer::range("/sys/class/i2c-adapter/i2c-3/3-001d/scale"); |
50 char const * const n900accelerometer::range("/sys/class/i2c-adapter/i2c-3/3-001d/scale"); |
51 const char *n900accelerometer::rate("/sys/class/i2c-adapter/i2c-3/3-001d/rate"); |
51 char const * const n900accelerometer::rate("/sys/class/i2c-adapter/i2c-3/3-001d/rate"); |
52 |
52 |
53 n900accelerometer::n900accelerometer(QSensor *sensor) |
53 n900accelerometer::n900accelerometer(QSensor *sensor) |
54 : n900filebasedsensor(sensor) |
54 : n900filebasedsensor(sensor) |
55 { |
55 { |
56 setReading<QAccelerometerReading>(&m_reading); |
56 setReading<QAccelerometerReading>(&m_reading); |
57 // Details derived from the kernel driver |
57 // Details derived from the kernel driver |
58 addDataRate(100, 100); // 100Hz |
58 addDataRate(100, 100); // 100Hz |
59 addDataRate(400, 400); // 400Hz |
59 addDataRate(400, 400); // 400Hz |
60 sensor->setDataRate(100); // default is 100Hz |
|
61 addOutputRange(-22.418, 22.418, 0.17651); // 2G |
60 addOutputRange(-22.418, 22.418, 0.17651); // 2G |
62 addOutputRange(-89.672, 89.672, 0.70608); // 8G |
61 addOutputRange(-89.672, 89.672, 0.70608); // 8G |
63 setDescription(QLatin1String("lis302dl")); |
62 setDescription(QLatin1String("lis302dl")); |
64 } |
63 } |
65 |
64 |
69 |
68 |
70 if (!QFile::exists(QLatin1String(filename))) |
69 if (!QFile::exists(QLatin1String(filename))) |
71 goto error; |
70 goto error; |
72 |
71 |
73 // Configure the range |
72 // Configure the range |
74 fd = fopen(range, "w"); |
73 if (sensor()->outputRange() != -1) { |
75 if (!fd) goto error; |
74 fd = fopen(range, "w"); |
76 if (sensor()->outputRange() == 0) |
75 if (!fd) goto error; |
77 fprintf(fd, "normal\n"); |
76 if (sensor()->outputRange() == 0) |
78 else |
77 fprintf(fd, "normal\n"); |
79 fprintf(fd, "full\n"); |
78 else |
80 fclose(fd); |
79 fprintf(fd, "full\n"); |
|
80 fclose(fd); |
|
81 } |
81 |
82 |
82 // Configure the rate |
83 // Configure the rate |
83 fd = fopen(rate, "w"); |
84 if (sensor()->dataRate() != 0) { |
84 if (!fd) goto error; |
85 fd = fopen(rate, "w"); |
85 fprintf(fd, "%d\n", sensor()->dataRate()); |
86 if (!fd) goto error; |
86 fclose(fd); |
87 fprintf(fd, "%d\n", sensor()->dataRate()); |
|
88 fclose(fd); |
|
89 } |
87 |
90 |
88 n900filebasedsensor::start(); |
91 n900filebasedsensor::start(); |
89 return; |
92 return; |
90 |
93 |
91 error: |
94 error: |