temp/iio-sensor-proxy: upgrade to 3.8
I dropped 2 patches that seem to have been merged upstream. I also updated the pkgver format to follow what we do for other forked pkgs, so hopefully the upstream compat monitoring thing will detect when this pkg is out of date again This adds a new patch to fix #3787 Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7099>
This commit is contained in:
parent
c5ca2e756a
commit
6180adfdf2
5 changed files with 45 additions and 595 deletions
|
|
@ -0,0 +1,37 @@
|
|||
From c73bdbca1b4278ada24dde68e0d09c352dcaa004 Mon Sep 17 00:00:00 2001
|
||||
From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
|
||||
Date: Tue, 30 Sep 2025 13:17:16 +0200
|
||||
Subject: [PATCH] WIP: iio-sensor-proxy.c: Do not exit based on sensor events
|
||||
|
||||
...
|
||||
---
|
||||
src/iio-sensor-proxy.c | 6 +-----
|
||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c
|
||||
index 5f26d3d..7505783 100644
|
||||
--- a/src/iio-sensor-proxy.c
|
||||
+++ b/src/iio-sensor-proxy.c
|
||||
@@ -766,8 +766,7 @@ name_acquired_handler (GDBusConnection *connection,
|
||||
|
||||
bail:
|
||||
data->ret = 0;
|
||||
- g_debug ("No sensors or missing kernel drivers for the sensors");
|
||||
- g_main_loop_quit (data->loop);
|
||||
+ g_debug ("No sensors or missing kernel drivers for the sensors. Waiting for hotplug sensors");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1050,9 +1049,6 @@ sensor_changes (GUdevClient *client,
|
||||
send_driver_changed_dbus_event (data, i);
|
||||
}
|
||||
}
|
||||
-
|
||||
- if (!any_sensors_left (data))
|
||||
- g_main_loop_quit (data->loop);
|
||||
} else if (g_strcmp0 (action, "add") == 0) {
|
||||
for (i = 0; i < G_N_ELEMENTS(drivers); i++) {
|
||||
SensorDriver *driver = (SensorDriver *) drivers[i];
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
From f35d293e65841a3b9c0de778300c7fa58b181fd0 Mon Sep 17 00:00:00 2001
|
||||
From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
|
||||
Date: Sun, 25 May 2025 17:44:29 +0200
|
||||
Subject: [PATCH 1/4] drv-iio-buffer-*: relocate the .discover method to bring
|
||||
the .open and .close methods into scope
|
||||
|
||||
To fix #411 [0], the .discover method will now attempt to read from the sensor
|
||||
buffer. Therefore, it will need to call .open and .close. Relocate the method
|
||||
to ensure the former are within scope. There is no functional change in the
|
||||
.discover method.
|
||||
|
||||
[0] https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/411
|
||||
---
|
||||
src/drv-iio-buffer-accel.c | 26 +++++++++++++-------------
|
||||
src/drv-iio-buffer-compass.c | 26 +++++++++++++-------------
|
||||
src/drv-iio-buffer-light.c | 26 +++++++++++++-------------
|
||||
3 files changed, 39 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/src/drv-iio-buffer-accel.c b/src/drv-iio-buffer-accel.c
|
||||
index 90747a6..931d5cb 100644
|
||||
--- a/src/drv-iio-buffer-accel.c
|
||||
+++ b/src/drv-iio-buffer-accel.c
|
||||
@@ -120,19 +120,6 @@ read_orientation (gpointer user_data)
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
-static gboolean
|
||||
-iio_buffer_accel_discover (GUdevDevice *device)
|
||||
-{
|
||||
- if (!drv_check_udev_sensor_type (device, "iio-buffer-accel", NULL))
|
||||
- return FALSE;
|
||||
-
|
||||
- if (!is_buffer_usable (device))
|
||||
- return FALSE;
|
||||
-
|
||||
- g_debug ("Found IIO buffer accelerometer at %s", g_udev_device_get_sysfs_path (device));
|
||||
- return TRUE;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
iio_buffer_accel_set_polling (SensorDevice *sensor_device,
|
||||
gboolean state)
|
||||
@@ -205,6 +192,19 @@ iio_buffer_accel_close (SensorDevice *sensor_device)
|
||||
g_free (sensor_device);
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+iio_buffer_accel_discover (GUdevDevice *device)
|
||||
+{
|
||||
+ if (!drv_check_udev_sensor_type (device, "iio-buffer-accel", NULL))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!is_buffer_usable (device))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ g_debug ("Found IIO buffer accelerometer at %s", g_udev_device_get_sysfs_path (device));
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
SensorDriver iio_buffer_accel = {
|
||||
.driver_name = "IIO Buffer accelerometer",
|
||||
.type = DRIVER_TYPE_ACCEL,
|
||||
diff --git a/src/drv-iio-buffer-compass.c b/src/drv-iio-buffer-compass.c
|
||||
index f0399f4..cfe8f4f 100644
|
||||
--- a/src/drv-iio-buffer-compass.c
|
||||
+++ b/src/drv-iio-buffer-compass.c
|
||||
@@ -103,19 +103,6 @@ read_heading (gpointer user_data)
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
-static gboolean
|
||||
-iio_buffer_compass_discover (GUdevDevice *device)
|
||||
-{
|
||||
- if (!drv_check_udev_sensor_type (device, "iio-buffer-compass", NULL))
|
||||
- return FALSE;
|
||||
-
|
||||
- if (!is_buffer_usable (device))
|
||||
- return FALSE;
|
||||
-
|
||||
- g_debug ("Found IIO buffer compass at %s", g_udev_device_get_sysfs_path (device));
|
||||
- return TRUE;
|
||||
-}
|
||||
-
|
||||
static SensorDevice *
|
||||
iio_buffer_compass_open (GUdevDevice *device)
|
||||
{
|
||||
@@ -188,6 +175,19 @@ iio_buffer_compass_close (SensorDevice *sensor_device)
|
||||
g_free (sensor_device);
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+iio_buffer_compass_discover (GUdevDevice *device)
|
||||
+{
|
||||
+ if (!drv_check_udev_sensor_type (device, "iio-buffer-compass", NULL))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!is_buffer_usable (device))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ g_debug ("Found IIO buffer compass at %s", g_udev_device_get_sysfs_path (device));
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
SensorDriver iio_buffer_compass = {
|
||||
.driver_name = "IIO Buffer Compass",
|
||||
.type = DRIVER_TYPE_COMPASS,
|
||||
diff --git a/src/drv-iio-buffer-light.c b/src/drv-iio-buffer-light.c
|
||||
index 4be2398..6046dc3 100644
|
||||
--- a/src/drv-iio-buffer-light.c
|
||||
+++ b/src/drv-iio-buffer-light.c
|
||||
@@ -108,19 +108,6 @@ read_light (gpointer user_data)
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
-static gboolean
|
||||
-iio_buffer_light_discover (GUdevDevice *device)
|
||||
-{
|
||||
- if (!drv_check_udev_sensor_type (device, "iio-buffer-als", NULL))
|
||||
- return FALSE;
|
||||
-
|
||||
- if (!is_buffer_usable (device))
|
||||
- return FALSE;
|
||||
-
|
||||
- g_debug ("Found IIO buffer ALS at %s", g_udev_device_get_sysfs_path (device));
|
||||
- return TRUE;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
iio_buffer_light_set_polling (SensorDevice *sensor_device,
|
||||
gboolean state)
|
||||
@@ -192,6 +179,19 @@ iio_buffer_light_close (SensorDevice *sensor_device)
|
||||
g_free (sensor_device);
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+iio_buffer_light_discover (GUdevDevice *device)
|
||||
+{
|
||||
+ if (!drv_check_udev_sensor_type (device, "iio-buffer-als", NULL))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!is_buffer_usable (device))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ g_debug ("Found IIO buffer ALS at %s", g_udev_device_get_sysfs_path (device));
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
SensorDriver iio_buffer_light = {
|
||||
.driver_name = "IIO Buffer Light sensor",
|
||||
.type = DRIVER_TYPE_LIGHT,
|
||||
--
|
||||
2.50.0
|
||||
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
From 7416edf4da98d8e3b75f9eddb7e5c488ac4a4c54 Mon Sep 17 00:00:00 2001
|
||||
From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
|
||||
Date: Sun, 25 May 2025 19:17:51 +0200
|
||||
Subject: [PATCH 2/4] buffer_drv_data_new: rework trigger_name handling
|
||||
|
||||
In each buffer driver, the get_trigger_name() call is always immediately
|
||||
followed by a call to buffer_drv_data_new(). To simplify the code,
|
||||
buffer_drv_data_new() now calls get_trigger_name(). Incidentally,
|
||||
iio-sensor-proxy does not actually use the buffer sensor's trigger for
|
||||
anything.
|
||||
---
|
||||
src/drv-iio-buffer-accel.c | 6 +-----
|
||||
src/drv-iio-buffer-compass.c | 10 +---------
|
||||
src/drv-iio-buffer-light.c | 9 +--------
|
||||
src/iio-buffer-utils.c | 9 ++++-----
|
||||
src/iio-buffer-utils.h | 3 +--
|
||||
5 files changed, 8 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/src/drv-iio-buffer-accel.c b/src/drv-iio-buffer-accel.c
|
||||
index 931d5cb..06db1aa 100644
|
||||
--- a/src/drv-iio-buffer-accel.c
|
||||
+++ b/src/drv-iio-buffer-accel.c
|
||||
@@ -151,13 +151,9 @@ iio_buffer_accel_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
DrvData *drv_data;
|
||||
- g_autofree char *trigger_name = NULL;
|
||||
BufferDrvData *buffer_data;
|
||||
|
||||
- /* Get the trigger name, and build the channels from that */
|
||||
- trigger_name = get_trigger_name (device);
|
||||
-
|
||||
- buffer_data = buffer_drv_data_new (device, trigger_name);
|
||||
+ buffer_data = buffer_drv_data_new (device);
|
||||
if (!buffer_data)
|
||||
return NULL;
|
||||
|
||||
diff --git a/src/drv-iio-buffer-compass.c b/src/drv-iio-buffer-compass.c
|
||||
index cfe8f4f..2ae0ccd 100644
|
||||
--- a/src/drv-iio-buffer-compass.c
|
||||
+++ b/src/drv-iio-buffer-compass.c
|
||||
@@ -108,17 +108,9 @@ iio_buffer_compass_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
DrvData *drv_data;
|
||||
- g_autofree char *trigger_name = NULL;
|
||||
BufferDrvData *buffer_data;
|
||||
|
||||
- /* Get the trigger name, and build the channels from that */
|
||||
- trigger_name = get_trigger_name (device);
|
||||
- if (!trigger_name) {
|
||||
- g_debug ("Could not find trigger for %s", g_udev_device_get_sysfs_path (device));
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- buffer_data = buffer_drv_data_new (device, trigger_name);
|
||||
+ buffer_data = buffer_drv_data_new (device);
|
||||
if (!buffer_data)
|
||||
return NULL;
|
||||
|
||||
diff --git a/src/drv-iio-buffer-light.c b/src/drv-iio-buffer-light.c
|
||||
index 6046dc3..2a524c6 100644
|
||||
--- a/src/drv-iio-buffer-light.c
|
||||
+++ b/src/drv-iio-buffer-light.c
|
||||
@@ -139,16 +139,9 @@ iio_buffer_light_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
DrvData *drv_data;
|
||||
- g_autofree char *trigger_name = NULL;
|
||||
BufferDrvData *buffer_data;
|
||||
|
||||
- /* Get the trigger name, and build the channels from that */
|
||||
- trigger_name = get_trigger_name (device);
|
||||
- if (!trigger_name) {
|
||||
- g_debug ("Could not find trigger for %s", g_udev_device_get_sysfs_path (device));
|
||||
- return NULL;
|
||||
- }
|
||||
- buffer_data = buffer_drv_data_new (device, trigger_name);
|
||||
+ buffer_data = buffer_drv_data_new (device);
|
||||
if (!buffer_data)
|
||||
return NULL;
|
||||
|
||||
diff --git a/src/iio-buffer-utils.c b/src/iio-buffer-utils.c
|
||||
index 7a627d3..bc74e4c 100644
|
||||
--- a/src/iio-buffer-utils.c
|
||||
+++ b/src/iio-buffer-utils.c
|
||||
@@ -880,13 +880,14 @@ buffer_drv_data_free (BufferDrvData *buffer_data)
|
||||
}
|
||||
|
||||
BufferDrvData *
|
||||
-buffer_drv_data_new (GUdevDevice *device,
|
||||
- const char *trigger_name)
|
||||
+buffer_drv_data_new (GUdevDevice *device)
|
||||
{
|
||||
BufferDrvData *buffer_data;
|
||||
+ g_autofree char *trigger_name = NULL;
|
||||
|
||||
buffer_data = g_new0 (BufferDrvData, 1);
|
||||
buffer_data->dev_dir_name = g_udev_device_get_sysfs_path (device);
|
||||
+ trigger_name = get_trigger_name (device);
|
||||
if (trigger_name)
|
||||
buffer_data->trigger_name = g_strdup (trigger_name);
|
||||
buffer_data->device = g_object_ref (device);
|
||||
@@ -909,10 +910,8 @@ is_buffer_usable (GUdevDevice *device)
|
||||
g_autofree char *trigger_name = NULL;
|
||||
BufferDrvData *buffer_data;
|
||||
|
||||
- trigger_name = get_trigger_name (device);
|
||||
-
|
||||
/* Temporarily enable the buffer to ensure the kernel driver is buffer-capable */
|
||||
- buffer_data = buffer_drv_data_new (device, trigger_name);
|
||||
+ buffer_data = buffer_drv_data_new (device);
|
||||
if (!buffer_data)
|
||||
return FALSE;
|
||||
|
||||
diff --git a/src/iio-buffer-utils.h b/src/iio-buffer-utils.h
|
||||
index 597177a..9c5e6db 100644
|
||||
--- a/src/iio-buffer-utils.h
|
||||
+++ b/src/iio-buffer-utils.h
|
||||
@@ -43,8 +43,7 @@ gboolean iio_fixup_sampling_frequency (GUdevDevice *dev);
|
||||
char *get_trigger_name (GUdevDevice *device);
|
||||
|
||||
void buffer_drv_data_free (BufferDrvData *buffer_data);
|
||||
-BufferDrvData *buffer_drv_data_new (GUdevDevice *device,
|
||||
- const char *trigger_name);
|
||||
+BufferDrvData *buffer_drv_data_new (GUdevDevice *device);
|
||||
void disable_ring_buffer (BufferDrvData *data);
|
||||
gboolean enable_ring_buffer (BufferDrvData *data);
|
||||
gboolean is_buffer_usable (GUdevDevice *device);
|
||||
--
|
||||
2.50.0
|
||||
|
||||
|
|
@ -1,298 +0,0 @@
|
|||
From d00109194422a4fe3e9a7bc1235ffc492459c61a Mon Sep 17 00:00:00 2001
|
||||
From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
|
||||
Date: Mon, 26 May 2025 09:11:59 +0200
|
||||
Subject: [PATCH 3/4] iio-buffer: attempt to read from buffer during sensor
|
||||
discovery
|
||||
|
||||
The kernel drivers for some sensors report support for buffer mode, and allow
|
||||
the buffer to be enabled, but never return any data in the buffer. Since
|
||||
59c29aca616f ("drivers: accel: Remove trigger requirement on
|
||||
iio-buffer-accel"), these sensors fail silently. iio-sensor-proxy must use the
|
||||
polling method on these sensors.
|
||||
|
||||
To achieve this, during sensor discovery, enable the sensor in buffer mode,
|
||||
then attempt to read data off the buffer. Modify tests in order for the data
|
||||
file to be opened before startDaemon() is called, since this is now necessary
|
||||
for sensor discovery.
|
||||
|
||||
Fixes: #411 [0]
|
||||
[0] https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/411
|
||||
---
|
||||
src/drv-iio-buffer-accel.c | 20 +++++++++++++++++++-
|
||||
src/drv-iio-buffer-compass.c | 24 +++++++++++++++++++++---
|
||||
src/drv-iio-buffer-light.c | 24 +++++++++++++++++++++---
|
||||
src/iio-buffer-utils.c | 32 +++++++++++++++++++++-----------
|
||||
src/iio-buffer-utils.h | 2 +-
|
||||
tests/integration-test.py | 16 ++++++++++++++--
|
||||
6 files changed, 97 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/src/drv-iio-buffer-accel.c b/src/drv-iio-buffer-accel.c
|
||||
index 06db1aa..5900ac5 100644
|
||||
--- a/src/drv-iio-buffer-accel.c
|
||||
+++ b/src/drv-iio-buffer-accel.c
|
||||
@@ -191,12 +191,30 @@ iio_buffer_accel_close (SensorDevice *sensor_device)
|
||||
static gboolean
|
||||
iio_buffer_accel_discover (GUdevDevice *device)
|
||||
{
|
||||
+ SensorDevice *sensor_device;
|
||||
+ DrvData *drv_data;
|
||||
+ gboolean buffer_usable = FALSE;
|
||||
+
|
||||
if (!drv_check_udev_sensor_type (device, "iio-buffer-accel", NULL))
|
||||
return FALSE;
|
||||
|
||||
- if (!is_buffer_usable (device))
|
||||
+ sensor_device = iio_buffer_accel_open (device);
|
||||
+ if (!sensor_device)
|
||||
return FALSE;
|
||||
|
||||
+ /* Attempt to read from the sensor */
|
||||
+ drv_data = (DrvData *) sensor_device->priv;
|
||||
+ enable_ring_buffer (drv_data->buffer_data);
|
||||
+
|
||||
+ buffer_usable = is_buffer_usable(drv_data->dev_path);
|
||||
+
|
||||
+ /* Close the sensor until it has been claimed */
|
||||
+ disable_ring_buffer (drv_data->buffer_data);
|
||||
+ iio_buffer_accel_close (sensor_device);
|
||||
+
|
||||
+ if (!buffer_usable)
|
||||
+ return FALSE;
|
||||
+
|
||||
g_debug ("Found IIO buffer accelerometer at %s", g_udev_device_get_sysfs_path (device));
|
||||
return TRUE;
|
||||
}
|
||||
diff --git a/src/drv-iio-buffer-compass.c b/src/drv-iio-buffer-compass.c
|
||||
index 2ae0ccd..4638134 100644
|
||||
--- a/src/drv-iio-buffer-compass.c
|
||||
+++ b/src/drv-iio-buffer-compass.c
|
||||
@@ -20,7 +20,7 @@ typedef struct {
|
||||
guint timeout_id;
|
||||
|
||||
GUdevDevice *dev;
|
||||
- const char *dev_path;
|
||||
+ char *dev_path;
|
||||
int device_id;
|
||||
BufferDrvData *buffer_data;
|
||||
} DrvData;
|
||||
@@ -125,7 +125,7 @@ iio_buffer_compass_open (GUdevDevice *device)
|
||||
drv_data = (DrvData *) sensor_device->priv;
|
||||
drv_data->dev = g_object_ref (device);
|
||||
drv_data->buffer_data = buffer_data;
|
||||
- drv_data->dev_path = g_udev_device_get_device_file (device);
|
||||
+ drv_data->dev_path = get_device_file (device);
|
||||
|
||||
return sensor_device;
|
||||
}
|
||||
@@ -170,10 +170,28 @@ iio_buffer_compass_close (SensorDevice *sensor_device)
|
||||
static gboolean
|
||||
iio_buffer_compass_discover (GUdevDevice *device)
|
||||
{
|
||||
+ SensorDevice *sensor_device;
|
||||
+ DrvData *drv_data;
|
||||
+ gboolean buffer_usable = FALSE;
|
||||
+
|
||||
if (!drv_check_udev_sensor_type (device, "iio-buffer-compass", NULL))
|
||||
return FALSE;
|
||||
|
||||
- if (!is_buffer_usable (device))
|
||||
+ sensor_device = iio_buffer_compass_open (device);
|
||||
+ if (!sensor_device)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ /* Attempt to read from the sensor */
|
||||
+ drv_data = (DrvData *) sensor_device->priv;
|
||||
+ enable_ring_buffer (drv_data->buffer_data);
|
||||
+
|
||||
+ buffer_usable = is_buffer_usable(drv_data->dev_path);
|
||||
+
|
||||
+ /* Close the sensor until it has been claimed */
|
||||
+ disable_ring_buffer (drv_data->buffer_data);
|
||||
+ iio_buffer_compass_close (sensor_device);
|
||||
+
|
||||
+ if (!buffer_usable)
|
||||
return FALSE;
|
||||
|
||||
g_debug ("Found IIO buffer compass at %s", g_udev_device_get_sysfs_path (device));
|
||||
diff --git a/src/drv-iio-buffer-light.c b/src/drv-iio-buffer-light.c
|
||||
index 2a524c6..7a423c5 100644
|
||||
--- a/src/drv-iio-buffer-light.c
|
||||
+++ b/src/drv-iio-buffer-light.c
|
||||
@@ -20,7 +20,7 @@ typedef struct {
|
||||
guint timeout_id;
|
||||
|
||||
GUdevDevice *dev;
|
||||
- const char *dev_path;
|
||||
+ char *dev_path;
|
||||
int device_id;
|
||||
BufferDrvData *buffer_data;
|
||||
} DrvData;
|
||||
@@ -156,7 +156,7 @@ iio_buffer_light_open (GUdevDevice *device)
|
||||
drv_data = (DrvData *) sensor_device->priv;
|
||||
drv_data->dev = g_object_ref (device);
|
||||
drv_data->buffer_data = buffer_data;
|
||||
- drv_data->dev_path = g_udev_device_get_device_file (device);
|
||||
+ drv_data->dev_path = get_device_file (device);
|
||||
|
||||
return sensor_device;
|
||||
}
|
||||
@@ -175,10 +175,28 @@ iio_buffer_light_close (SensorDevice *sensor_device)
|
||||
static gboolean
|
||||
iio_buffer_light_discover (GUdevDevice *device)
|
||||
{
|
||||
+ SensorDevice *sensor_device;
|
||||
+ DrvData *drv_data;
|
||||
+ gboolean buffer_usable = FALSE;
|
||||
+
|
||||
if (!drv_check_udev_sensor_type (device, "iio-buffer-als", NULL))
|
||||
return FALSE;
|
||||
|
||||
- if (!is_buffer_usable (device))
|
||||
+ sensor_device = iio_buffer_light_open (device);
|
||||
+ if (!sensor_device)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ /* Attempt to read from the sensor */
|
||||
+ drv_data = (DrvData *) sensor_device->priv;
|
||||
+ enable_ring_buffer (drv_data->buffer_data);
|
||||
+
|
||||
+ buffer_usable = is_buffer_usable(drv_data->dev_path);
|
||||
+
|
||||
+ /* Close the sensor until it has been claimed */
|
||||
+ disable_ring_buffer (drv_data->buffer_data);
|
||||
+ iio_buffer_light_close (sensor_device);
|
||||
+
|
||||
+ if (!buffer_usable)
|
||||
return FALSE;
|
||||
|
||||
g_debug ("Found IIO buffer ALS at %s", g_udev_device_get_sysfs_path (device));
|
||||
diff --git a/src/iio-buffer-utils.c b/src/iio-buffer-utils.c
|
||||
index bc74e4c..29163ee 100644
|
||||
--- a/src/iio-buffer-utils.c
|
||||
+++ b/src/iio-buffer-utils.c
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
+#include <glib/gstdio.h>
|
||||
|
||||
#define IIO_MIN_SAMPLING_FREQUENCY 10 /* Hz */
|
||||
|
||||
@@ -905,19 +906,28 @@ buffer_drv_data_new (GUdevDevice *device)
|
||||
}
|
||||
|
||||
gboolean
|
||||
-is_buffer_usable (GUdevDevice *device)
|
||||
+is_buffer_usable (char *path)
|
||||
{
|
||||
- g_autofree char *trigger_name = NULL;
|
||||
- BufferDrvData *buffer_data;
|
||||
-
|
||||
- /* Temporarily enable the buffer to ensure the kernel driver is buffer-capable */
|
||||
- buffer_data = buffer_drv_data_new (device);
|
||||
- if (!buffer_data)
|
||||
- return FALSE;
|
||||
+ gboolean buffer_usable = FALSE;
|
||||
+ g_autofd int fp = -1;
|
||||
+ GPollFD fds;
|
||||
+
|
||||
+ /* Attempt to read from the sensor buffer */
|
||||
+ fp = g_open (path, O_RDONLY | O_NONBLOCK);
|
||||
+ if (fp == -1) {
|
||||
+ g_warning ("Failed to open '%s': %s", path, g_strerror (errno));
|
||||
+ } else {
|
||||
+ fds.fd = fp;
|
||||
+ fds.events = G_IO_IN | G_IO_ERR;
|
||||
+ g_poll (&fds, 1, 500);
|
||||
+
|
||||
+ if (fds.revents & G_IO_IN)
|
||||
+ buffer_usable = TRUE;
|
||||
+ else
|
||||
+ g_warning ("Buffer '%s' did not have data within 0.5s", path);
|
||||
+ }
|
||||
|
||||
- /* Destroy buffer information until actually needed (in the .open call) */
|
||||
- g_clear_pointer (&buffer_data, buffer_drv_data_free);
|
||||
- return TRUE;
|
||||
+ return buffer_usable;
|
||||
}
|
||||
|
||||
IIOSensorData *
|
||||
diff --git a/src/iio-buffer-utils.h b/src/iio-buffer-utils.h
|
||||
index 9c5e6db..2b95625 100644
|
||||
--- a/src/iio-buffer-utils.h
|
||||
+++ b/src/iio-buffer-utils.h
|
||||
@@ -46,4 +46,4 @@ void buffer_drv_data_free (BufferDrvData *buffer_data);
|
||||
BufferDrvData *buffer_drv_data_new (GUdevDevice *device);
|
||||
void disable_ring_buffer (BufferDrvData *data);
|
||||
gboolean enable_ring_buffer (BufferDrvData *data);
|
||||
-gboolean is_buffer_usable (GUdevDevice *device);
|
||||
+gboolean is_buffer_usable (char *path);
|
||||
diff --git a/tests/integration-test.py b/tests/integration-test.py
|
||||
index 8910539..b596eaa 100755
|
||||
--- a/tests/integration-test.py
|
||||
+++ b/tests/integration-test.py
|
||||
@@ -555,6 +555,9 @@ class Tests(dbusmock.DBusTestCase):
|
||||
['name', 'accel_3d-dev0'],
|
||||
[]
|
||||
)
|
||||
+ data = self.read_file(top_srcdir + '/tests/iio-buffer-accel-data/orientation-normal.bin')
|
||||
+ with open(mock_dev_data,'wb') as mock_file:
|
||||
+ mock_file.write(data)
|
||||
self.start_daemon()
|
||||
self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
|
||||
self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
|
||||
@@ -566,7 +569,6 @@ class Tests(dbusmock.DBusTestCase):
|
||||
self.assertEqual(self.read_sysfs_attr(accel, 'scan_elements/in_accel_y_en'), b'1')
|
||||
self.assertEqual(self.read_sysfs_attr(accel, 'scan_elements/in_accel_z_en'), b'1')
|
||||
|
||||
- data = self.read_file(top_srcdir + '/tests/iio-buffer-accel-data/orientation-normal.bin')
|
||||
with open(mock_dev_data,'wb') as mock_file:
|
||||
mock_file.write(data)
|
||||
self.proxy.ClaimAccelerometer()
|
||||
@@ -595,6 +597,8 @@ class Tests(dbusmock.DBusTestCase):
|
||||
|
||||
def test_driver_buffer_without_trigger(self):
|
||||
'''buffer driver picking without trigger'''
|
||||
+ top_srcdir = os.getenv('top_srcdir', '.')
|
||||
+ mock_dev_data = self.testbed.get_root_dir() + '/iio-dev-data.bin'
|
||||
accel = self.testbed.add_device('iio', 'iio-buffer-accel0', None,
|
||||
['name', 'IIO Test Accelerometer',
|
||||
'buffer/enable', '0',
|
||||
@@ -615,6 +619,9 @@ class Tests(dbusmock.DBusTestCase):
|
||||
'IIO_SENSOR_PROXY_TYPE', 'iio-buffer-accel']
|
||||
)
|
||||
|
||||
+ data = self.read_file(top_srcdir + '/tests/iio-buffer-accel-data/orientation-normal.bin')
|
||||
+ with open(mock_dev_data,'wb') as mock_file:
|
||||
+ mock_file.write(data)
|
||||
self.start_daemon()
|
||||
|
||||
self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
|
||||
@@ -696,10 +703,12 @@ class Tests(dbusmock.DBusTestCase):
|
||||
)
|
||||
env = os.environ.copy()
|
||||
env['LC_NUMERIC'] = 'fr_FR.UTF-8'
|
||||
+ data = self.read_file(top_srcdir + '/tests/iio-buffer-accel-data/orientation-normal.bin')
|
||||
+ with open(mock_dev_data,'wb') as mock_file:
|
||||
+ mock_file.write(data)
|
||||
self.start_daemon(env=env)
|
||||
|
||||
self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
|
||||
- data = self.read_file(top_srcdir + '/tests/iio-buffer-accel-data/orientation-normal.bin')
|
||||
with open(mock_dev_data,'wb') as mock_file:
|
||||
mock_file.write(data)
|
||||
self.proxy.ClaimAccelerometer()
|
||||
@@ -742,6 +751,9 @@ class Tests(dbusmock.DBusTestCase):
|
||||
)
|
||||
env = os.environ.copy()
|
||||
env['LC_NUMERIC'] = 'fr_FR.UTF-8'
|
||||
+ data = self.read_file(top_srcdir + '/tests/iio-buffer-accel-data/orientation-normal.bin')
|
||||
+ with open(mock_dev_data,'wb') as mock_file:
|
||||
+ mock_file.write(data)
|
||||
self.start_daemon(env=env)
|
||||
|
||||
self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
|
||||
--
|
||||
2.50.0
|
||||
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
# Forked from Alpine to add Qualcomm SSC support with libssc
|
||||
|
||||
pkgname=iio-sensor-proxy
|
||||
pkgver=9999
|
||||
pkgrel=11
|
||||
pkgver=99993.8
|
||||
_pkgver=3.8
|
||||
pkgrel=0
|
||||
pkgdesc="IIO sensors to D-Bus proxy"
|
||||
url="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy"
|
||||
arch="aarch64"
|
||||
|
|
@ -17,11 +18,11 @@ makedepends="
|
|||
libssc-dev>=0.2.1
|
||||
"
|
||||
subpackages="$pkgname-openrc"
|
||||
_commit="bfcf0c867bbba90ef26138c99da5780a76d9b99b"
|
||||
builddir="$srcdir/$pkgname-$_commit"
|
||||
source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_commit/iio-sensor-proxy-$_commit.tar.gz
|
||||
builddir="$srcdir/$pkgname-$_pkgver"
|
||||
source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_pkgver/iio-sensor-proxy-$_pkgver.tar.gz
|
||||
iio-sensor-proxy.initd
|
||||
0001-iio-sensor-proxy-depend-on-libssc.patch
|
||||
0001-WIP-iio-sensor-proxy.c-Do-not-exit-based-on-sensor-e.patch
|
||||
0002-proximity-support-SSC-proximity-sensor.patch
|
||||
0003-light-support-SSC-light-sensor.patch
|
||||
0004-accelerometer-support-SSC-accelerometer-sensor.patch
|
||||
|
|
@ -30,9 +31,6 @@ source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_commi
|
|||
0007-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch
|
||||
0008-drv-ssc-implement-set_polling.patch
|
||||
0009-tests-integration-test-add-SSC-sensors.patch
|
||||
0010-drv-iio-buffer-relocate-the-.discover-method-to-brin.patch
|
||||
0011-buffer_drv_data_new-rework-trigger_name-handling.patch
|
||||
0012-iio-buffer-attempt-to-read-from-buffer-during-sensor.patch
|
||||
0013-integration-test-add-test-for-sensors-that-report-no.patch
|
||||
"
|
||||
|
||||
|
|
@ -57,9 +55,10 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
610bafa3d4899100ce40fd6f71cb947e849059274e8b81da0e20c73f9e75c35aadbf7069236e9f5852a26df35d8594e5efe69b6ea627f8c90fc2259b5a943d50 iio-sensor-proxy-bfcf0c867bbba90ef26138c99da5780a76d9b99b.tar.gz
|
||||
9cca8d706c531c9a2e34dfebdc8673a1765b615533e3f7776118c74cb1ce145e472203c6c7804d35701c22cc93755609829bc3817c5920d5961249d7e8de87c6 iio-sensor-proxy-3.8.tar.gz
|
||||
b25df94e249ca46fe96926e5a866c20dc913fa52a2d9259fb7a3594861c6b2f246fc7fef8a21f5b021f3a71401f734ae27210137b0b1917a7daaffb5e3221f2e iio-sensor-proxy.initd
|
||||
d46eeb1deabb6ee6017b86f573fcb717d8b992979bfd447e52c6dabc95d9e6c986ab937f602c2f0a731d10d87d67578aa59930d7faff69b2f42a0eab25f4c60c 0001-iio-sensor-proxy-depend-on-libssc.patch
|
||||
4b43ea53b71c9be29367897a3c9ba349e9fdb71185300aafc00be69f923d7f27aa02bb7f0f5c5be800f0d494035992e046c010fd70a1754f8a47701b17666926 0001-WIP-iio-sensor-proxy.c-Do-not-exit-based-on-sensor-e.patch
|
||||
59800fbd73abd77c6cf86ab1bcdce85abefb07e3cd28d58c3e91a4b3cdd9d893a9671e8f0f3dc212064d5744a62b0b24c54fa91ce8f3ac84e361f7ba8cc64ded 0002-proximity-support-SSC-proximity-sensor.patch
|
||||
7cdcd1d78629f662fa588c90e657c6abed7e43f1462c43f0d14e7756933ea927435077e193429d069b7360ba2d1c16b608226e1707858e56460c82595f054080 0003-light-support-SSC-light-sensor.patch
|
||||
a956d28d55ee0e0a03bea63caf06881ead7511ac60000a5def61d482b3575006575edd6b0b30ae7874ffd9b2268fd8008a273d6ede561cc44aad46f18233d789 0004-accelerometer-support-SSC-accelerometer-sensor.patch
|
||||
|
|
@ -68,8 +67,5 @@ d4379f8e53eea02f53640752bef883870a44d0169cf821d3f5bb3245309cac1d1502a7848d5cce60
|
|||
376999144da2c5a6374de73bfaaf0eb605c5c686640f4de8cbcabbe3e78f3fce4675d5bfdc2dd60dacaa84447a039cf22cc4e5fcda478ea77a00001f052a3d85 0007-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch
|
||||
bf0ea8a078eb168937645a661fea5b979bf1747ee0c1cd556a238c25f4f26eefd6b2f7a1da1eb0b7d66dcafe24ce31521d71e1a188a324671b08178b392206af 0008-drv-ssc-implement-set_polling.patch
|
||||
2a208aa064e4f3d6cb24701f65c5cdc5d35a99f61489ac0ab5f336aa8229bc1aa7571b6d7e928a3a28e53b8e35a07655ec3e8b432d7295d82606f8b1f206e7af 0009-tests-integration-test-add-SSC-sensors.patch
|
||||
f697507221c83e32012e1cfd4f08525791bdae6c3c4ac2d23cb532bf70820f7cebfba3e10c84d0a464dea7da93a3eb64d4d30dc6e5e3771fb9d6c2bcf7b47866 0010-drv-iio-buffer-relocate-the-.discover-method-to-brin.patch
|
||||
74170846478fcd1cbe5738ae00174f0aa3783afa003f6afb1a19267d847c6685d237ab9e0ece53ea598be4b5fd9a28826179e61a52a97074c945a2bf2d4afe34 0011-buffer_drv_data_new-rework-trigger_name-handling.patch
|
||||
d4ba829d8a8032bea72598d065e67f4cd3a58eaab7a0f942f4e5019236696aa4f5071318ca6eddc08c20c0681907de907a805582447422bc0e8017a53ef8e700 0012-iio-buffer-attempt-to-read-from-buffer-during-sensor.patch
|
||||
9273f01d35e0f45ddc943808326d87f3a2e678ea29e607d3d70cabc9ea321db761cc170a86b3093553a4c3dfae1d81c5057d146b9a90ff490c85641f02b040df 0013-integration-test-add-test-for-sensors-that-report-no.patch
|
||||
"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue