#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 */
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 */
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;
}
/* Note: poll-mode fds are not readable */
+#ifdef __NO_EVENTS__
+ }
+#else
} else if (sensor[s].mode == MODE_EVENT) {
event_fd = events_fd[dev_num];
device_fd[dev_num] = -1;
}
}
+#endif
}
/* Ensure that on-change sensors send at least one event after enable */
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();
return 0;
}
+#ifndef __NO_EVENTS__
static int integrate_device_report_from_event(int dev_num, int fd)
{
int len, s;
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++)
}
return 0;
}
+#endif
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]);
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 */
data->data[2] = 0.0;
return 1;
}
+#endif
/* Convert the data into the expected Android-level format */
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;
}