OSDN Git Service

Reverse the default orientation of accelerometer
[android-x86/hardware-intel-libsensors.git] / control.c
index 48cea22..b366917 100644 (file)
--- a/control.c
+++ b/control.c
 #include "calibration.h"
 #include "description.h"
 #include "filtering.h"
+#ifndef __NO_EVENTS__
 #include <linux/iio/events.h>
+#include <linux/iio/types.h>
+#endif
+#include <errno.h>
+
 /* Currently active sensors count, per device */
 static int poll_sensors_per_dev[MAX_DEVICES];          /* poll-mode sensors                            */
 static int trig_sensors_per_dev[MAX_DEVICES];          /* trigger, event based                         */
@@ -591,7 +596,7 @@ static void* acquisition_routine (void* param)
                        ret = write(sensor[s].thread_data_fd[1], &data, sizeof(sensors_event_t));
 
                        if (ret != sizeof(sensors_event_t))
-                               ALOGE("S%d write failure: wrote %d, got %d\n", s, sizeof(sensors_event_t), ret);
+                               ALOGE("S%d write failure: wrote %zd, got %d\n", s, sizeof(sensors_event_t), ret);
                }
 
                /* Check and honor termination requests */
@@ -752,7 +757,6 @@ static float select_closest_available_rate(int s, float requested_rate)
        int j;
        float selected_rate = 0;
        float max_rate_from_prop = sensor_get_max_freq(s);
-       int dev_num = sensor[s].dev_num;
 
        if (!sensor[s].avail_freqs_count)
                return requested_rate;
@@ -1105,6 +1109,9 @@ int sensor_activate (int s, int enabled, int from_virtual)
                        }
 
                        /* Note: poll-mode fds are not readable */
+#ifdef __NO_EVENTS__
+               }
+#else
                } else if (sensor[s].mode == MODE_EVENT) {
                        event_fd = events_fd[dev_num];
 
@@ -1136,6 +1143,7 @@ int sensor_activate (int s, int enabled, int from_virtual)
                                device_fd[dev_num] = -1;
                        }
                }
+#endif
        }
 
        /* Ensure that on-change sensors send at least one event after enable */
@@ -1304,7 +1312,7 @@ static int integrate_device_report_from_dev(int dev_num, int fd)
                return 0;
        }
 
-       ALOGV("Driver timestamp on iio device %d: ts=%lld\n", dev_num, ts);
+       ALOGV("Driver timestamp on iio device %d: ts=%jd\n", dev_num, ts);
 
        boot_to_rt_delta = get_timestamp_boot() - get_timestamp_realtime();
 
@@ -1313,6 +1321,7 @@ static int integrate_device_report_from_dev(int dev_num, int fd)
        return 0;
 }
 
+#ifndef __NO_EVENTS__
 static int integrate_device_report_from_event(int dev_num, int fd)
 {
        int len, s;
@@ -1337,7 +1346,7 @@ static int integrate_device_report_from_event(int dev_num, int fd)
 
        ts = event.timestamp + boot_to_rt_delta;
 
-       ALOGV("Read event %lld from fd %d of iio device %d - ts %lld\n", event.id, fd, dev_num, ts);
+       ALOGV("Read event %lld from fd %d of iio device %d - ts %jd\n", event.id, fd, dev_num, ts);
 
        /* Map device report to sensor reports */
        for (s = 0; s < MAX_SENSORS; s++)
@@ -1351,6 +1360,7 @@ static int integrate_device_report_from_event(int dev_num, int fd)
                }
        return 0;
 }
+#endif
 
 static int integrate_device_report(int dev_num)
 {
@@ -1361,11 +1371,13 @@ static int integrate_device_report(int dev_num)
                return -1;
        }
 
+#ifndef __NO_EVENTS__
        if (events_fd[dev_num] != -1) {
                ret = integrate_device_report_from_event(dev_num, events_fd[dev_num]);
                if (ret < 0)
                        return ret;
        }
+#endif
 
        if (device_fd[dev_num] != -1)
                ret = integrate_device_report_from_dev(dev_num, device_fd[dev_num]);
@@ -1419,6 +1431,7 @@ static int propagate_sensor_report (int s, sensors_event_t *data)
        data->type      = sensor_desc[s].type;  /* sensor_desc[s].type can differ from sensor[s].type ; internal types are remapped */
        data->timestamp = sensor[s].report_ts;
 
+#ifndef __NO_EVENTS__
        if (sensor[s].mode == MODE_EVENT) {
                ALOGV("Reporting event\n");
                /* Android requires events to return 1.0 */
@@ -1439,6 +1452,7 @@ static int propagate_sensor_report (int s, sensors_event_t *data)
                data->data[2] = 0.0;
                return 1;
        }
+#endif
 
        /* Convert the data into the expected Android-level format */
 
@@ -1666,7 +1680,7 @@ int sensor_set_delay (int s, int64_t ns)
        float requested_sampling_rate;
 
        if (ns <= 0) {
-               ALOGE("Invalid delay requested on sensor %d: %lld\n", s, ns);
+               ALOGE("Invalid delay requested on sensor %d: %jd\n", s, ns);
                return -EINVAL;
        }