OSDN Git Service

Fix type of recently introduced semi arbitrated sampling rate
[android-x86/hardware-intel-libsensors.git] / control.c
index dfd9292..b8fdeab 100644 (file)
--- a/control.c
+++ b/control.c
 #include "description.h"
 #include "filtering.h"
 
-/* Couple of temporary defines until we get a suitable linux/iio/events.h include */
-
-struct iio_event_data {
-         __u64   id;
-         __s64   timestamp;
-};
-
-#define IIO_GET_EVENT_FD_IOCTL _IOR('i', 0x90, int)
-
 /* 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                         */
@@ -843,13 +834,17 @@ static int sensor_set_rate (int s, float requested_rate)
                arb_sampling_rate = sensor[s].max_supported_rate;
        }
 
+       /* Record the rate that was agreed upon with the sensor taken in isolation ; this avoid uncontrolled ripple effects between colocated sensor rates */
+       sensor[s].semi_arbitrated_rate = arb_sampling_rate;
+
        /* Coordinate with others active sensors on the same device, if any */
        if (per_device_sampling_rate)
                for (n=0; n<sensor_count; n++)
-                       if (n != s && sensor[n].dev_num == dev_num && sensor[n].num_channels && is_enabled(n) && sensor[n].sampling_rate > arb_sampling_rate) {
+                       if (n != s && sensor[n].dev_num == dev_num && sensor[n].num_channels && is_enabled(n) &&
+                               sensor[n].semi_arbitrated_rate > arb_sampling_rate) {
                                ALOGV("Sampling rate shared between %s and %s, using %g instead of %g\n", sensor[s].friendly_name, sensor[n].friendly_name,
-                                                                                                         sensor[n].sampling_rate, arb_sampling_rate);
-                               arb_sampling_rate = sensor[n].sampling_rate;
+                                                                                                         sensor[n].semi_arbitrated_rate, arb_sampling_rate);
+                               arb_sampling_rate = sensor[n].semi_arbitrated_rate;
                        }
 
        sensor[s].sampling_rate = arb_sampling_rate;
@@ -1164,7 +1159,7 @@ static void stamp_reports (int dev_num, int64_t ts)
 
        for (s=0; s<MAX_SENSORS; s++)
                if (sensor[s].dev_num == dev_num && is_enabled(s) && sensor[s].mode != MODE_POLL)
-                       sensor[s].report_ts = ts;
+                       set_report_ts(s, ts);
 }
 
 
@@ -1259,6 +1254,7 @@ static int integrate_device_report_from_dev(int dev_num, int fd)
        boot_to_rt_delta = get_timestamp_boot() - get_timestamp_realtime();
 
        stamp_reports(dev_num, ts + boot_to_rt_delta);
+
        return 0;
 }