qtmobility/plugins/sensors/n900/n900accelerometer.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
equal deleted inserted replaced
11:06b8e2af4411 14:6fbed849b4f4
    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: