temp/iio-sensor-proxy: upgrade libssc patches (MR 6040)
Libssc integration in iio-sensor-proxy has been heavily improved, sync the patches in pmaports.
This commit is contained in:
parent
5f4f465db0
commit
af17d8f3a7
11 changed files with 632 additions and 225 deletions
|
|
@ -1,7 +1,7 @@
|
|||
From e651b07633f5a9a3bd499a2e3aaf2f8b7e4f8cef Mon Sep 17 00:00:00 2001
|
||||
From 169b29cbb8232bb3ee82f8327a7ad5cdded0256c Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Sun, 23 Apr 2023 16:54:10 +0200
|
||||
Subject: [PATCH 1/8] iio-sensor-proxy: depend on libssc
|
||||
Subject: [PATCH 01/10] iio-sensor-proxy: depend on libssc
|
||||
|
||||
Add libssc library to iio-sensor-proxy and discover FastRPC
|
||||
devices as possible subsystems for sensors. The presence of
|
||||
|
|
@ -15,7 +15,7 @@ Core (SSC).
|
|||
4 files changed, 28 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 767e539..fe97a27 100644
|
||||
index 97270f8..0580d9e 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -46,6 +46,9 @@ gio_dep = dependency('gio-2.0')
|
||||
|
|
@ -23,7 +23,7 @@ index 767e539..fe97a27 100644
|
|||
polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.91')
|
||||
polkit_policy_directory = polkit_gobject_dep.get_pkgconfig_variable('policydir')
|
||||
+if get_option('ssc-support')
|
||||
+ libssc_dep = dependency('libssc-glib')
|
||||
+ libssc_dep = dependency('libssc')
|
||||
+endif
|
||||
|
||||
xmllint = find_program('xmllint', required: false)
|
||||
|
|
@ -44,10 +44,10 @@ index de5fbf4..2b60f82 100644
|
|||
type: 'boolean',
|
||||
value: false,
|
||||
diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c
|
||||
index 1884839..220dc71 100644
|
||||
index 02d9ba5..342023c 100644
|
||||
--- a/src/iio-sensor-proxy.c
|
||||
+++ b/src/iio-sensor-proxy.c
|
||||
@@ -124,6 +124,11 @@ find_sensors (GUdevClient *client,
|
||||
@@ -128,6 +128,11 @@ find_sensors (GUdevClient *client,
|
||||
platform = g_udev_client_query_by_subsystem (client, "platform");
|
||||
devices = g_list_concat (devices, input);
|
||||
devices = g_list_concat (devices, platform);
|
||||
|
|
@ -59,7 +59,7 @@ index 1884839..220dc71 100644
|
|||
|
||||
/* Find the devices */
|
||||
for (l = devices; l != NULL; l = l->next) {
|
||||
@@ -686,7 +691,15 @@ name_acquired_handler (GDBusConnection *connection,
|
||||
@@ -721,7 +726,15 @@ name_acquired_handler (GDBusConnection *connection,
|
||||
gpointer user_data)
|
||||
{
|
||||
SensorData *data = user_data;
|
||||
|
|
@ -101,5 +101,5 @@ index 4b822fc..3e503de 100644
|
|||
'iio-sensor-proxy-resources', 'iio-sensor-proxy.gresource.xml',
|
||||
c_name: 'iio_sensor_proxy',
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
From 27b5c9e0dba5601447b21816e8ee7063c6154268 Mon Sep 17 00:00:00 2001
|
||||
From 176a35a40b639be7d0cdbc4fd67eb681586978dc Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Sun, 23 Apr 2023 17:54:46 +0200
|
||||
Subject: [PATCH 2/8] proximity: support SSC proximity sensor
|
||||
Subject: [PATCH 02/10] proximity: support SSC proximity sensor
|
||||
|
||||
Add driver for the proximity sensor exposed by libssc.
|
||||
---
|
||||
src/drivers.h | 4 ++
|
||||
src/drv-ssc-proximity.c | 122 ++++++++++++++++++++++++++++++++++++++++
|
||||
src/drv-ssc-proximity.c | 128 ++++++++++++++++++++++++++++++++++++++++
|
||||
src/iio-sensor-proxy.c | 3 +
|
||||
src/meson.build | 6 ++
|
||||
4 files changed, 135 insertions(+)
|
||||
4 files changed, 141 insertions(+)
|
||||
create mode 100644 src/drv-ssc-proximity.c
|
||||
|
||||
diff --git a/src/drivers.h b/src/drivers.h
|
||||
|
|
@ -27,12 +27,12 @@ index 33ad667..464e801 100644
|
|||
gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name);
|
||||
diff --git a/src/drv-ssc-proximity.c b/src/drv-ssc-proximity.c
|
||||
new file mode 100644
|
||||
index 0000000..0ec8b08
|
||||
index 0000000..f4aa897
|
||||
--- /dev/null
|
||||
+++ b/src/drv-ssc-proximity.c
|
||||
@@ -0,0 +1,122 @@
|
||||
@@ -0,0 +1,128 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2023 Dylan Van Assche
|
||||
+ * Copyright (c) 2023-2025 Dylan Van Assche
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License version 3 as published by
|
||||
|
|
@ -70,8 +70,10 @@ index 0000000..0ec8b08
|
|||
+ if (!sensor)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!ssc_sensor_proximity_close_sync (sensor, NULL, NULL))
|
||||
+ if (!ssc_sensor_proximity_close_sync (sensor, NULL, NULL)) {
|
||||
+ g_clear_object (&sensor);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ g_clear_object (&sensor);
|
||||
+
|
||||
|
|
@ -103,7 +105,9 @@ index 0000000..0ec8b08
|
|||
+ /* Create sensor */
|
||||
+ drv_data->sensor = ssc_sensor_proximity_new_sync (NULL, &error);
|
||||
+ if (!drv_data->sensor) {
|
||||
+ g_warning ("Creating SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Creating SSC proximity sensor failed: %s", error->message);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ g_object_get (drv_data->sensor,
|
||||
|
|
@ -118,8 +122,10 @@ index 0000000..0ec8b08
|
|||
+
|
||||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_proximity_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ g_warning ("Opening SSC proximity sensor failed: %s", error->message);
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
|
|
@ -138,7 +144,7 @@ index 0000000..0ec8b08
|
|||
+
|
||||
+ /* Disable sensor */
|
||||
+ if (!ssc_sensor_proximity_close_sync (drv_data->sensor, NULL, &error))
|
||||
+ g_warning ("Closing SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Closing SSC proximity sensor failed: %s", error->message);
|
||||
+
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
|
|
@ -154,10 +160,10 @@ index 0000000..0ec8b08
|
|||
+ .close = ssc_proximity_close,
|
||||
+};
|
||||
diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c
|
||||
index 220dc71..257c822 100644
|
||||
index 342023c..18263c5 100644
|
||||
--- a/src/iio-sensor-proxy.c
|
||||
+++ b/src/iio-sensor-proxy.c
|
||||
@@ -75,6 +75,9 @@ static const SensorDriver * const drivers[] = {
|
||||
@@ -79,6 +79,9 @@ static const SensorDriver * const drivers[] = {
|
||||
&iio_buffer_compass,
|
||||
&iio_poll_proximity,
|
||||
&input_proximity,
|
||||
|
|
@ -185,5 +191,5 @@ index 3e503de..9a74481 100644
|
|||
sources,
|
||||
dependencies: deps,
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
From cfd4f19473145c3adfba06e2e44c2e6e773f30cc Mon Sep 17 00:00:00 2001
|
||||
From 43440a5ef95bccae67ca64f0abe060f194574da5 Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Mon, 24 Apr 2023 16:56:20 +0200
|
||||
Subject: [PATCH 3/8] light: support SSC light sensor
|
||||
Subject: [PATCH 03/10] light: support SSC light sensor
|
||||
|
||||
Add driver for the light sensor exposed by libssc.
|
||||
---
|
||||
src/drivers.h | 1 +
|
||||
src/drv-ssc-light.c | 123 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/drv-ssc-light.c | 129 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/iio-sensor-proxy.c | 1 +
|
||||
src/meson.build | 1 +
|
||||
4 files changed, 126 insertions(+)
|
||||
4 files changed, 132 insertions(+)
|
||||
create mode 100644 src/drv-ssc-light.c
|
||||
|
||||
diff --git a/src/drivers.h b/src/drivers.h
|
||||
|
|
@ -26,12 +26,12 @@ index 464e801..46df2fd 100644
|
|||
gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name);
|
||||
diff --git a/src/drv-ssc-light.c b/src/drv-ssc-light.c
|
||||
new file mode 100644
|
||||
index 0000000..e5ad8dd
|
||||
index 0000000..eb43d6c
|
||||
--- /dev/null
|
||||
+++ b/src/drv-ssc-light.c
|
||||
@@ -0,0 +1,123 @@
|
||||
@@ -0,0 +1,129 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2023 Dylan Van Assche
|
||||
+ * Copyright (c) 2023-2025 Dylan Van Assche
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License version 3 as published by
|
||||
|
|
@ -69,8 +69,10 @@ index 0000000..e5ad8dd
|
|||
+ if (!sensor)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!ssc_sensor_light_close_sync (sensor, NULL, NULL))
|
||||
+ if (!ssc_sensor_light_close_sync (sensor, NULL, NULL)) {
|
||||
+ g_clear_object (&sensor);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ g_clear_object (&sensor);
|
||||
+
|
||||
|
|
@ -103,7 +105,9 @@ index 0000000..e5ad8dd
|
|||
+ /* Create sensor */
|
||||
+ drv_data->sensor = ssc_sensor_light_new_sync (NULL, &error);
|
||||
+ if (!drv_data->sensor) {
|
||||
+ g_warning ("Creating SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Creating SSC light sensor failed: %s", error->message);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ g_object_get (drv_data->sensor,
|
||||
|
|
@ -118,8 +122,10 @@ index 0000000..e5ad8dd
|
|||
+
|
||||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_light_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ g_warning ("Opening SSC light sensor failed: %s", error->message);
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
|
|
@ -138,7 +144,7 @@ index 0000000..e5ad8dd
|
|||
+
|
||||
+ /* Disable sensor */
|
||||
+ if (!ssc_sensor_light_close_sync (drv_data->sensor, NULL, &error))
|
||||
+ g_warning ("Closing SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Closing SSC light sensor failed: %s", error->message);
|
||||
+
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
|
|
@ -154,10 +160,10 @@ index 0000000..e5ad8dd
|
|||
+ .close = ssc_light_close,
|
||||
+};
|
||||
diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c
|
||||
index 257c822..77a75ab 100644
|
||||
index 18263c5..b4eacc3 100644
|
||||
--- a/src/iio-sensor-proxy.c
|
||||
+++ b/src/iio-sensor-proxy.c
|
||||
@@ -77,6 +77,7 @@ static const SensorDriver * const drivers[] = {
|
||||
@@ -81,6 +81,7 @@ static const SensorDriver * const drivers[] = {
|
||||
&input_proximity,
|
||||
#ifdef HAS_LIBSSC
|
||||
&ssc_proximity,
|
||||
|
|
@ -178,5 +184,5 @@ index 9a74481..2f3c1e6 100644
|
|||
endif
|
||||
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
From cdc8a661bdeb7f0ada6b08beb6ceee40188d8843 Mon Sep 17 00:00:00 2001
|
||||
From 8c296891214b6b7ebbd3263550ef9296e9a9ff1f Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Mon, 24 Apr 2023 17:01:10 +0200
|
||||
Subject: [PATCH 4/8] accelerometer: support SSC accelerometer sensor
|
||||
Subject: [PATCH 04/10] accelerometer: support SSC accelerometer sensor
|
||||
|
||||
Add driver for the accelerometer sensor exposed by libssc.
|
||||
Mount matrix is supported through environment variables set
|
||||
|
|
@ -9,10 +9,10 @@ by udev rules because extracting the mount matrix from the
|
|||
Qualcomm Snapdragon Sensor Core (SSC) firmware is not possible yet.
|
||||
---
|
||||
src/drivers.h | 1 +
|
||||
src/drv-ssc-accel.c | 145 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/drv-ssc-accel.c | 153 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/iio-sensor-proxy.c | 1 +
|
||||
src/meson.build | 1 +
|
||||
4 files changed, 148 insertions(+)
|
||||
4 files changed, 156 insertions(+)
|
||||
create mode 100644 src/drv-ssc-accel.c
|
||||
|
||||
diff --git a/src/drivers.h b/src/drivers.h
|
||||
|
|
@ -29,12 +29,12 @@ index 46df2fd..40707ec 100644
|
|||
gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name);
|
||||
diff --git a/src/drv-ssc-accel.c b/src/drv-ssc-accel.c
|
||||
new file mode 100644
|
||||
index 0000000..26364db
|
||||
index 0000000..676303b
|
||||
--- /dev/null
|
||||
+++ b/src/drv-ssc-accel.c
|
||||
@@ -0,0 +1,145 @@
|
||||
@@ -0,0 +1,153 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2023 Dylan Van Assche
|
||||
+ * Copyright (c) 2023-2025 Dylan Van Assche
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License version 3 as published by
|
||||
|
|
@ -76,8 +76,10 @@ index 0000000..26364db
|
|||
+ if (!sensor)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!ssc_sensor_accelerometer_close_sync (sensor, NULL, NULL))
|
||||
+ if (!ssc_sensor_accelerometer_close_sync (sensor, NULL, NULL)) {
|
||||
+ g_clear_object (&sensor);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ g_clear_object (&sensor);
|
||||
+
|
||||
|
|
@ -127,7 +129,10 @@ index 0000000..26364db
|
|||
+ /* Create sensor */
|
||||
+ drv_data->sensor = ssc_sensor_accelerometer_new_sync (NULL, &error);
|
||||
+ if (!drv_data->sensor) {
|
||||
+ g_warning ("Creating SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Creating SSC accelerometer sensor failed: %s", error->message);
|
||||
+ g_clear_pointer (&drv_data->mount_matrix, g_free);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ g_object_get (drv_data->sensor,
|
||||
|
|
@ -142,8 +147,11 @@ index 0000000..26364db
|
|||
+
|
||||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_accelerometer_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ g_warning ("Opening SSC accelerometer sensor failed: %s", error->message);
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&drv_data->mount_matrix, g_free);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
|
|
@ -162,7 +170,7 @@ index 0000000..26364db
|
|||
+
|
||||
+ /* Disable sensor */
|
||||
+ if (!ssc_sensor_accelerometer_close_sync (drv_data->sensor, NULL, &error))
|
||||
+ g_warning ("Closing SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Closing SSC accelerometer sensor failed: %s", error->message);
|
||||
+
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&drv_data->mount_matrix, g_free);
|
||||
|
|
@ -179,10 +187,10 @@ index 0000000..26364db
|
|||
+ .close = ssc_accelerometer_close,
|
||||
+};
|
||||
diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c
|
||||
index 77a75ab..6c0e96f 100644
|
||||
index b4eacc3..e99f641 100644
|
||||
--- a/src/iio-sensor-proxy.c
|
||||
+++ b/src/iio-sensor-proxy.c
|
||||
@@ -78,6 +78,7 @@ static const SensorDriver * const drivers[] = {
|
||||
@@ -82,6 +82,7 @@ static const SensorDriver * const drivers[] = {
|
||||
#ifdef HAS_LIBSSC
|
||||
&ssc_proximity,
|
||||
&ssc_light,
|
||||
|
|
@ -203,5 +211,5 @@ index 2f3c1e6..d59cfdd 100644
|
|||
endif
|
||||
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
From 9f394846ebcd1cb0f052b239d16ceb9b9742c823 Mon Sep 17 00:00:00 2001
|
||||
From 861e0e9bcc1ba400648e1e4a990a331284fff6e0 Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Mon, 24 Apr 2023 18:29:15 +0200
|
||||
Subject: [PATCH 5/8] compass: support SSC compass sensor
|
||||
Subject: [PATCH 05/10] compass: support SSC compass sensor
|
||||
|
||||
Add driver for the compass sensor exposed by libssc.
|
||||
---
|
||||
src/drivers.h | 1 +
|
||||
src/drv-ssc-compass.c | 123 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/drv-ssc-compass.c | 129 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/iio-sensor-proxy.c | 1 +
|
||||
src/meson.build | 1 +
|
||||
4 files changed, 126 insertions(+)
|
||||
4 files changed, 132 insertions(+)
|
||||
create mode 100644 src/drv-ssc-compass.c
|
||||
|
||||
diff --git a/src/drivers.h b/src/drivers.h
|
||||
|
|
@ -26,12 +26,12 @@ index 40707ec..5e0347c 100644
|
|||
gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name);
|
||||
diff --git a/src/drv-ssc-compass.c b/src/drv-ssc-compass.c
|
||||
new file mode 100644
|
||||
index 0000000..5e65c15
|
||||
index 0000000..c6f11a9
|
||||
--- /dev/null
|
||||
+++ b/src/drv-ssc-compass.c
|
||||
@@ -0,0 +1,123 @@
|
||||
@@ -0,0 +1,129 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2023 Dylan Van Assche
|
||||
+ * Copyright (c) 2023-2025 Dylan Van Assche
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License version 3 as published by
|
||||
|
|
@ -69,8 +69,10 @@ index 0000000..5e65c15
|
|||
+ if (!sensor)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (!ssc_sensor_compass_close_sync (sensor, NULL, NULL))
|
||||
+ if (!ssc_sensor_compass_close_sync (sensor, NULL, NULL)) {
|
||||
+ g_clear_object(&sensor);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ g_clear_object(&sensor);
|
||||
+
|
||||
|
|
@ -103,7 +105,9 @@ index 0000000..5e65c15
|
|||
+ /* Create sensor */
|
||||
+ drv_data->sensor = ssc_sensor_compass_new_sync (NULL, &error);
|
||||
+ if (!drv_data->sensor) {
|
||||
+ g_warning ("Creating SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Creating SSC compass sensor failed: %s", error->message);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ g_object_get (drv_data->sensor,
|
||||
|
|
@ -118,8 +122,10 @@ index 0000000..5e65c15
|
|||
+
|
||||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_compass_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ g_warning ("Opening SSC compass sensor failed: %s", error->message);
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
+ g_free (sensor_device);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
|
|
@ -138,7 +144,7 @@ index 0000000..5e65c15
|
|||
+
|
||||
+ /* Disable sensor */
|
||||
+ if (!ssc_sensor_compass_close_sync (drv_data->sensor, NULL, &error))
|
||||
+ g_warning ("Closing SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_warning ("Closing SSC compass sensor failed: %s", error->message);
|
||||
+
|
||||
+ g_clear_object (&drv_data->sensor);
|
||||
+ g_clear_pointer (&sensor_device->priv, g_free);
|
||||
|
|
@ -154,10 +160,10 @@ index 0000000..5e65c15
|
|||
+ .close = ssc_compass_close,
|
||||
+};
|
||||
diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c
|
||||
index 6c0e96f..17858da 100644
|
||||
index e99f641..9e8760c 100644
|
||||
--- a/src/iio-sensor-proxy.c
|
||||
+++ b/src/iio-sensor-proxy.c
|
||||
@@ -79,6 +79,7 @@ static const SensorDriver * const drivers[] = {
|
||||
@@ -83,6 +83,7 @@ static const SensorDriver * const drivers[] = {
|
||||
&ssc_proximity,
|
||||
&ssc_light,
|
||||
&ssc_accel,
|
||||
|
|
@ -178,5 +184,5 @@ index d59cfdd..1e753cc 100644
|
|||
endif
|
||||
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
From 313d84bd57ba0bd240e6ac2d75ed3184212c9911 Mon Sep 17 00:00:00 2001
|
||||
From 630eab1d4a0773f1126a5e3dc56a95cece71a69d Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Wed, 26 Apr 2023 18:54:07 +0200
|
||||
Subject: [PATCH 6/8] data: add libssc udev rules
|
||||
Subject: [PATCH 06/10] data: add libssc udev rules
|
||||
|
||||
Add udev rules to indicate possible sensor types like
|
||||
ssc-accel, ssc-light, ssc-proximity, and ssc-compass
|
||||
|
|
@ -51,5 +51,5 @@ index 97dbc07..8b78125 100644
|
|||
)
|
||||
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
From cd0d6b7d9be8f256cef9acd502447619e751034c Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Fri, 24 May 2024 21:00:25 +0200
|
||||
Subject: [PATCH 7/8] CI: add libssc build
|
||||
|
||||
libssc support is behind a meson build flag which is disabled by default,
|
||||
add a separate build to CI.
|
||||
---
|
||||
.gitlab-ci.yml | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
|
||||
index 8e691b6..5efeb7c 100644
|
||||
--- a/.gitlab-ci.yml
|
||||
+++ b/.gitlab-ci.yml
|
||||
@@ -45,6 +45,28 @@ build_stable:
|
||||
- "${CI_PROJECT_DIR}/_build/meson-dist"
|
||||
- "${CI_PROJECT_DIR}/_build/docs/html/"
|
||||
|
||||
+build_libssc:
|
||||
+ before_script:
|
||||
+ # Undo delangification present in the Fedora Docker images
|
||||
+ - rm -f /etc/rpm/macros.image-language-conf
|
||||
+ - if [ -x /bin/dnf ]; then dnf update -y; else dnf5 update -y; fi
|
||||
+ - if [ -x /bin/dnf ]; then dnf install -y $DEPENDENCIES; else dnf5 install -y $DEPENDENCIES; fi
|
||||
+ - if [ -x /bin/dnf ]; then dnf install -y libqmi-devel protobuf-c-devel; else dnf5 install -y libqmi-devel protobuf-c-devel; fi
|
||||
+ - if [ -x /bin/dnf ]; then dnf reinstall -y glib2; else dnf5 reinstall -y glib2; fi
|
||||
+ - git clone "https://codeberg.org/DylanVanAssche/libssc.git"
|
||||
+ - cd libssc
|
||||
+ - mkdir _build
|
||||
+ - meson _build
|
||||
+ - meson compile -C _build
|
||||
+ - meson install --no-rebuild -C _build
|
||||
+ - cd ..
|
||||
+ script:
|
||||
+ - meson -Dssc-support=true _build
|
||||
+ - ninja -v -C _build
|
||||
+ - ninja -v -C _build install
|
||||
+ - ninja -v -C _build uninstall
|
||||
+ - ninja -v -C _build dist
|
||||
+
|
||||
pages:
|
||||
needs:
|
||||
- build_stable
|
||||
--
|
||||
2.45.1
|
||||
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From c70950f1e33aba5c58c337e8dfb73d40efed5b5d Mon Sep 17 00:00:00 2001
|
||||
From 4522c9a8e07e6645c0c460d93cd57c67768fae71 Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Sat, 1 Jun 2024 21:15:15 +0200
|
||||
Subject: [PATCH 8/8] data: iio-sensor-proxy.service.in: add AF_QIPCRTR
|
||||
Subject: [PATCH 07/10] data: iio-sensor-proxy.service.in: add AF_QIPCRTR
|
||||
|
||||
Allow AF_QIPCRTR in lockdown for libssc.
|
||||
Libssc uses the QMI protocol over QRTR in the kernel.
|
||||
|
|
@ -25,5 +25,5 @@ index 4bc921b..29ea3c0 100644
|
|||
MemoryDenyWriteExecute=true
|
||||
RestrictRealtime=true
|
||||
--
|
||||
2.45.1
|
||||
2.47.1
|
||||
|
||||
|
|
@ -1,34 +1,30 @@
|
|||
Patch-Source: https://gitlab.freedesktop.org/verdre/iio-sensor-proxy/-/commit/74a5860474b6e79cd6e3be13d1ff8dd9cd810b8b
|
||||
---
|
||||
From 7a7a5f3ea04ff4c134f3dbbbc005b8c26d0af300 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||
Date: Thu, 11 Jul 2024 23:19:34 +0200
|
||||
Subject: [PATCH] drivers/ssc: Implement set_polling function
|
||||
From 7a195b942cf59088a298f77b00e44291c8dc67d0 Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Sat, 11 Jan 2025 21:11:36 +0100
|
||||
Subject: [PATCH 08/10] drv-ssc-*: implement set_polling
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Seems like ssc doesn't like when ssc_sensor_*_open_sync() isn't called right
|
||||
after ssc_sensor_*_new_sync(), so move the call to new_sync() into
|
||||
set_polling(), too.
|
||||
set_polling method allows sensors to be enabled/disabled on demand
|
||||
of the consumers. If all consumers stop listen for a sensor,
|
||||
iio-sensor-proxy will use this method to disable the sensor hardware
|
||||
and the other way around.
|
||||
|
||||
Co-Developed-By: Jonas Dreßler <verdre@v0yd.nl>
|
||||
Co-Developed-By: Sicelo A. Mhlongo <absicsz@gmail.com>
|
||||
---
|
||||
src/drv-ssc-accel.c | 73 ++++++++++++++++++++-------------------
|
||||
src/drv-ssc-compass.c | 75 ++++++++++++++++++++++-------------------
|
||||
src/drv-ssc-light.c | 72 ++++++++++++++++++++-------------------
|
||||
src/drv-ssc-proximity.c | 73 ++++++++++++++++++++-------------------
|
||||
4 files changed, 155 insertions(+), 138 deletions(-)
|
||||
src/drv-ssc-accel.c | 65 ++++++++++++++++++----------------
|
||||
src/drv-ssc-compass.c | 77 +++++++++++++++++++++--------------------
|
||||
src/drv-ssc-light.c | 74 +++++++++++++++++++--------------------
|
||||
src/drv-ssc-proximity.c | 75 +++++++++++++++++++--------------------
|
||||
4 files changed, 146 insertions(+), 145 deletions(-)
|
||||
|
||||
diff --git a/src/drv-ssc-accel.c b/src/drv-ssc-accel.c
|
||||
index 26364db..be26308 100644
|
||||
index 676303b..745304c 100644
|
||||
--- a/src/drv-ssc-accel.c
|
||||
+++ b/src/drv-ssc-accel.c
|
||||
@@ -57,7 +57,7 @@ measurement_cb (SSCSensorAccelerometer *sensor, gfloat accel_x, gfloat accel_y,
|
||||
DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
AccelReadings readings;
|
||||
AccelVec3 tmp;
|
||||
-
|
||||
+ g_debug ("recvd measure from accel");
|
||||
tmp.x = accel_x;
|
||||
tmp.y = accel_y;
|
||||
tmp.z = accel_z;
|
||||
@@ -78,7 +78,6 @@ ssc_accelerometer_open (GUdevDevice *device)
|
||||
@@ -80,7 +80,6 @@ ssc_accelerometer_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
DrvData *drv_data;
|
||||
|
|
@ -36,14 +32,17 @@ index 26364db..be26308 100644
|
|||
|
||||
sensor_device = g_new0 (SensorDevice, 1);
|
||||
sensor_device->priv = g_new0 (DrvData, 1);
|
||||
@@ -89,45 +88,50 @@ ssc_accelerometer_open (GUdevDevice *device)
|
||||
@@ -91,38 +90,43 @@ ssc_accelerometer_open (GUdevDevice *device)
|
||||
drv_data->location = setup_accel_location (device);
|
||||
set_accel_scale (&drv_data->scale, 1.0);
|
||||
|
||||
- /* Create sensor */
|
||||
- drv_data->sensor = ssc_sensor_accelerometer_new_sync (NULL, &error);
|
||||
- if (!drv_data->sensor) {
|
||||
- g_warning ("Creating SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Creating SSC accelerometer sensor failed: %s", error->message);
|
||||
- g_clear_pointer (&drv_data->mount_matrix, g_free);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
- g_object_get (drv_data->sensor,
|
||||
|
|
@ -58,21 +57,21 @@ index 26364db..be26308 100644
|
|||
-
|
||||
- /* Enable sensor */
|
||||
- if (!ssc_sensor_accelerometer_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
- g_warning ("Opening SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_object_unref (sensor_device);
|
||||
- g_warning ("Opening SSC accelerometer sensor failed: %s", error->message);
|
||||
- g_clear_object (&drv_data->sensor);
|
||||
- g_clear_pointer (&drv_data->mount_matrix, g_free);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
return sensor_device;
|
||||
}
|
||||
|
||||
static void
|
||||
-ssc_accelerometer_close (SensorDevice *sensor_device)
|
||||
+ssc_accelerometer_set_polling (SensorDevice *sensor_device,
|
||||
+ gboolean state)
|
||||
{
|
||||
- g_autoptr (GError) error = NULL;
|
||||
DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
+static void
|
||||
+ssc_accelerometer_set_polling (SensorDevice *sensor_device, gboolean state)
|
||||
+{
|
||||
+ DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
+ g_autoptr (GError) error = NULL;
|
||||
+ if (state) {
|
||||
+ /* Create sensor */
|
||||
|
|
@ -87,11 +86,9 @@ index 26364db..be26308 100644
|
|||
+ "measurement",
|
||||
+ G_CALLBACK (measurement_cb),
|
||||
+ sensor_device);
|
||||
+
|
||||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_accelerometer_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ return;
|
||||
+ }
|
||||
+ } else {
|
||||
|
|
@ -104,22 +101,11 @@ index 26364db..be26308 100644
|
|||
+ g_warning ("Closing SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ }
|
||||
+}
|
||||
|
||||
- /* Stop listening for measurements */
|
||||
- g_warn_if_fail (drv_data->measurement_id > 0);
|
||||
- g_signal_handler_disconnect (drv_data->sensor, drv_data->measurement_id);
|
||||
-
|
||||
- /* Disable sensor */
|
||||
- if (!ssc_sensor_accelerometer_close_sync (drv_data->sensor, NULL, &error))
|
||||
- g_warning ("Closing SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+static void
|
||||
+ssc_accelerometer_close (SensorDevice *sensor_device)
|
||||
+{
|
||||
+ DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
|
||||
g_clear_object (&drv_data->sensor);
|
||||
g_clear_pointer (&drv_data->mount_matrix, g_free);
|
||||
@@ -141,5 +145,6 @@ SensorDriver ssc_accel = {
|
||||
+
|
||||
static void
|
||||
ssc_accelerometer_close (SensorDevice *sensor_device)
|
||||
{
|
||||
@@ -149,5 +153,6 @@ SensorDriver ssc_accel = {
|
||||
|
||||
.discover = ssc_accelerometer_discover,
|
||||
.open = ssc_accelerometer_open,
|
||||
|
|
@ -127,10 +113,10 @@ index 26364db..be26308 100644
|
|||
.close = ssc_accelerometer_close,
|
||||
};
|
||||
diff --git a/src/drv-ssc-compass.c b/src/drv-ssc-compass.c
|
||||
index 5e65c15..6dd032a 100644
|
||||
index c6f11a9..f4af37b 100644
|
||||
--- a/src/drv-ssc-compass.c
|
||||
+++ b/src/drv-ssc-compass.c
|
||||
@@ -61,52 +61,57 @@ static SensorDevice *
|
||||
@@ -63,56 +63,56 @@ static SensorDevice *
|
||||
ssc_compass_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
|
|
@ -144,7 +130,9 @@ index 5e65c15..6dd032a 100644
|
|||
- /* Create sensor */
|
||||
- drv_data->sensor = ssc_sensor_compass_new_sync (NULL, &error);
|
||||
- if (!drv_data->sensor) {
|
||||
- g_warning ("Creating SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Creating SSC compass sensor failed: %s", error->message);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
- g_object_get (drv_data->sensor,
|
||||
|
|
@ -159,8 +147,10 @@ index 5e65c15..6dd032a 100644
|
|||
-
|
||||
- /* Enable sensor */
|
||||
- if (!ssc_sensor_compass_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
- g_warning ("Opening SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_object_unref (sensor_device);
|
||||
- g_warning ("Opening SSC compass sensor failed: %s", error->message);
|
||||
- g_clear_object (&drv_data->sensor);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
|
||||
|
|
@ -169,12 +159,15 @@ index 5e65c15..6dd032a 100644
|
|||
|
||||
static void
|
||||
-ssc_compass_close (SensorDevice *sensor_device)
|
||||
+ssc_compass_set_polling (SensorDevice *sensor_device,
|
||||
+ gboolean state)
|
||||
+ssc_compass_set_polling (SensorDevice *sensor_device, gboolean state)
|
||||
{
|
||||
- g_autoptr (GError) error = NULL;
|
||||
DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
+ g_autoptr (GError) error = NULL;
|
||||
|
||||
- /* Stop listening for measurements */
|
||||
- g_warn_if_fail (drv_data->measurement_id > 0);
|
||||
- g_signal_handler_disconnect (drv_data->sensor, drv_data->measurement_id);
|
||||
+ if (state) {
|
||||
+ /* Create sensor */
|
||||
+ drv_data->sensor = ssc_sensor_compass_new_sync (NULL, &error);
|
||||
|
|
@ -195,7 +188,6 @@ index 5e65c15..6dd032a 100644
|
|||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_compass_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ return;
|
||||
+ }
|
||||
+ } else {
|
||||
|
|
@ -209,13 +201,9 @@ index 5e65c15..6dd032a 100644
|
|||
+ }
|
||||
+}
|
||||
|
||||
- /* Stop listening for measurements */
|
||||
- g_warn_if_fail (drv_data->measurement_id > 0);
|
||||
- g_signal_handler_disconnect (drv_data->sensor, drv_data->measurement_id);
|
||||
-
|
||||
- /* Disable sensor */
|
||||
- if (!ssc_sensor_compass_close_sync (drv_data->sensor, NULL, &error))
|
||||
- g_warning ("Closing SSC compass sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Closing SSC compass sensor failed: %s", error->message);
|
||||
+static void
|
||||
+ssc_compass_close (SensorDevice *sensor_device)
|
||||
+{
|
||||
|
|
@ -223,11 +211,18 @@ index 5e65c15..6dd032a 100644
|
|||
|
||||
g_clear_object (&drv_data->sensor);
|
||||
g_clear_pointer (&sensor_device->priv, g_free);
|
||||
@@ -125,5 +125,6 @@ SensorDriver ssc_compass = {
|
||||
|
||||
.discover = ssc_compass_discover,
|
||||
.open = ssc_compass_open,
|
||||
+ .set_polling = ssc_compass_set_polling,
|
||||
.close = ssc_compass_close,
|
||||
};
|
||||
diff --git a/src/drv-ssc-light.c b/src/drv-ssc-light.c
|
||||
index e5ad8dd..892b7d0 100644
|
||||
index eb43d6c..04d24dd 100644
|
||||
--- a/src/drv-ssc-light.c
|
||||
+++ b/src/drv-ssc-light.c
|
||||
@@ -61,53 +61,56 @@ static SensorDevice *
|
||||
@@ -63,57 +63,54 @@ static SensorDevice *
|
||||
ssc_light_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
|
|
@ -241,7 +236,9 @@ index e5ad8dd..892b7d0 100644
|
|||
- /* Create sensor */
|
||||
- drv_data->sensor = ssc_sensor_light_new_sync (NULL, &error);
|
||||
- if (!drv_data->sensor) {
|
||||
- g_warning ("Creating SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Creating SSC light sensor failed: %s", error->message);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
- g_object_get (drv_data->sensor,
|
||||
|
|
@ -256,8 +253,10 @@ index e5ad8dd..892b7d0 100644
|
|||
-
|
||||
- /* Enable sensor */
|
||||
- if (!ssc_sensor_light_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
- g_warning ("Opening SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_object_unref (sensor_device);
|
||||
- g_warning ("Opening SSC light sensor failed: %s", error->message);
|
||||
- g_clear_object (&drv_data->sensor);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
|
||||
|
|
@ -265,8 +264,7 @@ index e5ad8dd..892b7d0 100644
|
|||
}
|
||||
|
||||
+static void
|
||||
+ssc_light_set_polling (SensorDevice *sensor_device,
|
||||
+ gboolean state)
|
||||
+ssc_light_set_polling (SensorDevice *sensor_device, gboolean state)
|
||||
+{
|
||||
+ DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
+ g_autoptr (GError) error = NULL;
|
||||
|
|
@ -287,7 +285,6 @@ index e5ad8dd..892b7d0 100644
|
|||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_light_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ return;
|
||||
+ }
|
||||
+ } else {
|
||||
|
|
@ -313,12 +310,12 @@ index e5ad8dd..892b7d0 100644
|
|||
-
|
||||
- /* Disable sensor */
|
||||
- if (!ssc_sensor_light_close_sync (drv_data->sensor, NULL, &error))
|
||||
- g_warning ("Closing SSC light sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Closing SSC light sensor failed: %s", error->message);
|
||||
-
|
||||
g_clear_object (&drv_data->sensor);
|
||||
g_clear_pointer (&sensor_device->priv, g_free);
|
||||
g_free (sensor_device);
|
||||
@@ -119,5 +122,6 @@ SensorDriver ssc_light = {
|
||||
@@ -125,5 +122,6 @@ SensorDriver ssc_light = {
|
||||
|
||||
.discover = ssc_light_discover,
|
||||
.open = ssc_light_open,
|
||||
|
|
@ -326,10 +323,10 @@ index e5ad8dd..892b7d0 100644
|
|||
.close = ssc_light_close,
|
||||
};
|
||||
diff --git a/src/drv-ssc-proximity.c b/src/drv-ssc-proximity.c
|
||||
index 0ec8b08..32659fb 100644
|
||||
index f4aa897..12570ba 100644
|
||||
--- a/src/drv-ssc-proximity.c
|
||||
+++ b/src/drv-ssc-proximity.c
|
||||
@@ -60,52 +60,54 @@ static SensorDevice *
|
||||
@@ -62,56 +62,52 @@ static SensorDevice *
|
||||
ssc_proximity_open (GUdevDevice *device)
|
||||
{
|
||||
SensorDevice *sensor_device;
|
||||
|
|
@ -343,7 +340,9 @@ index 0ec8b08..32659fb 100644
|
|||
- /* Create sensor */
|
||||
- drv_data->sensor = ssc_sensor_proximity_new_sync (NULL, &error);
|
||||
- if (!drv_data->sensor) {
|
||||
- g_warning ("Creating SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Creating SSC proximity sensor failed: %s", error->message);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
- g_object_get (drv_data->sensor,
|
||||
|
|
@ -358,8 +357,10 @@ index 0ec8b08..32659fb 100644
|
|||
-
|
||||
- /* Enable sensor */
|
||||
- if (!ssc_sensor_proximity_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
- g_warning ("Opening SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_object_unref (sensor_device);
|
||||
- g_warning ("Opening SSC proximity sensor failed: %s", error->message);
|
||||
- g_clear_object (&drv_data->sensor);
|
||||
- g_clear_pointer (&sensor_device->priv, g_free);
|
||||
- g_free (sensor_device);
|
||||
- return NULL;
|
||||
- }
|
||||
|
||||
|
|
@ -368,8 +369,7 @@ index 0ec8b08..32659fb 100644
|
|||
|
||||
static void
|
||||
-ssc_proximity_close (SensorDevice *sensor_device)
|
||||
+ssc_proximity_set_polling (SensorDevice *sensor_device,
|
||||
+ gboolean state)
|
||||
+ssc_proximity_set_polling (SensorDevice *sensor_device, gboolean state)
|
||||
{
|
||||
- g_autoptr (GError) error = NULL;
|
||||
DrvData *drv_data = (DrvData *) sensor_device->priv;
|
||||
|
|
@ -391,7 +391,6 @@ index 0ec8b08..32659fb 100644
|
|||
+ /* Enable sensor */
|
||||
+ if (!ssc_sensor_proximity_open_sync (drv_data->sensor, NULL, &error)) {
|
||||
+ g_warning ("Opening SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
+ g_object_unref (sensor_device);
|
||||
+ return;
|
||||
+ }
|
||||
+ } else {
|
||||
|
|
@ -411,7 +410,7 @@ index 0ec8b08..32659fb 100644
|
|||
-
|
||||
- /* Disable sensor */
|
||||
- if (!ssc_sensor_proximity_close_sync (drv_data->sensor, NULL, &error))
|
||||
- g_warning ("Closing SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN");
|
||||
- g_warning ("Closing SSC proximity sensor failed: %s", error->message);
|
||||
+static void
|
||||
+ssc_proximity_close (SensorDevice *sensor_device)
|
||||
+{
|
||||
|
|
@ -419,7 +418,7 @@ index 0ec8b08..32659fb 100644
|
|||
|
||||
g_clear_object (&drv_data->sensor);
|
||||
g_clear_pointer (&sensor_device->priv, g_free);
|
||||
@@ -118,5 +120,6 @@ SensorDriver ssc_proximity = {
|
||||
@@ -124,5 +120,6 @@ SensorDriver ssc_proximity = {
|
||||
|
||||
.discover = ssc_proximity_discover,
|
||||
.open = ssc_proximity_open,
|
||||
|
|
@ -427,5 +426,5 @@ index 0ec8b08..32659fb 100644
|
|||
.close = ssc_proximity_close,
|
||||
};
|
||||
--
|
||||
GitLab
|
||||
2.47.1
|
||||
|
||||
|
|
@ -0,0 +1,429 @@
|
|||
From 15f095b67722ffdeb6d8f04d12b9f569d256aa2f Mon Sep 17 00:00:00 2001
|
||||
From: Dylan Van Assche <me@dylanvanassche.be>
|
||||
Date: Sun, 12 Jan 2025 20:59:16 +0100
|
||||
Subject: [PATCH 09/10] tests: integration-test: add SSC sensors
|
||||
|
||||
Test all 4 sensors provided by libssc.
|
||||
---
|
||||
tests/integration-test.py | 1 +
|
||||
tests/meson.build | 14 ++
|
||||
tests/ssc-test.py | 373 ++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 388 insertions(+)
|
||||
create mode 100755 tests/ssc-test.py
|
||||
|
||||
diff --git a/tests/integration-test.py b/tests/integration-test.py
|
||||
index 4751505..60bbd31 100755
|
||||
--- a/tests/integration-test.py
|
||||
+++ b/tests/integration-test.py
|
||||
@@ -56,6 +56,7 @@ class Tests(dbusmock.DBusTestCase):
|
||||
def setUpClass(cls):
|
||||
# run from local build tree if we are in one, otherwise use system instance
|
||||
builddir = os.getenv('top_builddir', '.')
|
||||
+ print(os.path.join(builddir, 'src', 'iio-sensor-proxy'))
|
||||
if os.access(os.path.join(builddir, 'src', 'iio-sensor-proxy'), os.X_OK):
|
||||
cls.daemon_path = os.path.join(builddir, 'src', 'iio-sensor-proxy')
|
||||
cls.monitor_sensor_path = os.path.join(builddir, 'src', 'monitor-sensor')
|
||||
diff --git a/tests/meson.build b/tests/meson.build
|
||||
index e51e90f..5c19964 100644
|
||||
--- a/tests/meson.build
|
||||
+++ b/tests/meson.build
|
||||
@@ -16,3 +16,17 @@ foreach ut: unit_tests
|
||||
env: envs,
|
||||
)
|
||||
endforeach
|
||||
+
|
||||
+if get_option('ssc-support')
|
||||
+ r = run_command(unittest_inspector, files('ssc-test.py'), check: true)
|
||||
+ unit_tests = r.stdout().strip().split('\n')
|
||||
+ foreach ut: unit_tests
|
||||
+ ut_args = files('ssc-test.py')
|
||||
+ ut_args += ut
|
||||
+ test(ut,
|
||||
+ python3,
|
||||
+ args: ut_args,
|
||||
+ env: envs,
|
||||
+ )
|
||||
+ endforeach
|
||||
+endif
|
||||
diff --git a/tests/ssc-test.py b/tests/ssc-test.py
|
||||
new file mode 100755
|
||||
index 0000000..72e24f0
|
||||
--- /dev/null
|
||||
+++ b/tests/ssc-test.py
|
||||
@@ -0,0 +1,373 @@
|
||||
+#!/usr/bin/python3
|
||||
+
|
||||
+# iio-sensor-proxy integration test suite
|
||||
+#
|
||||
+# Run in built tree to test local built binaries, or from anywhere else to test
|
||||
+# system installed binaries.
|
||||
+#
|
||||
+# Copyright: (C) 2011 Martin Pitt <martin.pitt@ubuntu.com>
|
||||
+# (C) 2021 Bastien Nocera <hadess@hadess.net>
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 2 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+
|
||||
+import os
|
||||
+import sys
|
||||
+import dbus
|
||||
+import dbusmock
|
||||
+import gi
|
||||
+import tempfile
|
||||
+import psutil
|
||||
+import subprocess
|
||||
+import unittest
|
||||
+import locale
|
||||
+import time
|
||||
+
|
||||
+try:
|
||||
+ from gi.repository import GLib
|
||||
+ from gi.repository import Gio
|
||||
+except ImportError as e:
|
||||
+ sys.stderr.write('PyGobject not available for Python 3, or missing GI typelibs: %s\n' % str(e))
|
||||
+ sys.exit(1)
|
||||
+
|
||||
+try:
|
||||
+ gi.require_version('UMockdev', '1.0')
|
||||
+ from gi.repository import UMockdev
|
||||
+except ImportError:
|
||||
+ sys.stderr.write('umockdev not available (https://github.com/martinpitt/umockdev)\n')
|
||||
+ sys.exit(1)
|
||||
+
|
||||
+
|
||||
+SP = 'net.hadess.SensorProxy'
|
||||
+SP_PATH = '/net/hadess/SensorProxy'
|
||||
+SP_COMPASS = 'net.hadess.SensorProxy.Compass'
|
||||
+SP_COMPASS_PATH = '/net/hadess/SensorProxy/Compass'
|
||||
+
|
||||
+class Tests(dbusmock.DBusTestCase):
|
||||
+
|
||||
+ @classmethod
|
||||
+ def setUpClass(cls):
|
||||
+ # run from local build tree if we are in one, otherwise use system instance
|
||||
+ builddir = os.getenv('top_builddir', '.')
|
||||
+ print(os.path.join(builddir, 'src', 'iio-sensor-proxy'))
|
||||
+ if os.access(os.path.join(builddir, 'src', 'iio-sensor-proxy'), os.X_OK):
|
||||
+ cls.daemon_path = os.path.join(builddir, 'src', 'iio-sensor-proxy')
|
||||
+ cls.monitor_sensor_path = os.path.join(builddir, 'src', 'monitor-sensor')
|
||||
+ print('Testing binaries from local build tree (%s)' % cls.daemon_path)
|
||||
+ elif os.environ.get('UNDER_JHBUILD', False):
|
||||
+ jhbuild_prefix = os.environ['JHBUILD_PREFIX']
|
||||
+ cls.daemon_path = os.path.join(jhbuild_prefix, 'libexec', 'iio-sensor-proxy')
|
||||
+ cls.monitor_sensor_path = os.path.join(jhbuild_prefix, 'bin', 'monitor-sensor')
|
||||
+ print('Testing binaries from JHBuild (%s)' % cls.daemon_path)
|
||||
+ else:
|
||||
+ cls.daemon_path = None
|
||||
+ with open('/usr/lib/systemd/system/iio-sensor-proxy.service') as f:
|
||||
+ for line in f:
|
||||
+ if line.startswith('ExecStart='):
|
||||
+ cls.daemon_path = line.split('=', 1)[1].strip()
|
||||
+ break
|
||||
+ assert cls.daemon_path, 'could not determine daemon path from systemd .service file'
|
||||
+ cls.monitor_sensor_path = '/usr/bin/monitor-sensor'
|
||||
+ print('Testing installed system binary (%s)' % cls.daemon_path)
|
||||
+
|
||||
+ # fail on CRITICALs on client and server side
|
||||
+ GLib.log_set_always_fatal(GLib.LogLevelFlags.LEVEL_WARNING |
|
||||
+ GLib.LogLevelFlags.LEVEL_ERROR |
|
||||
+ GLib.LogLevelFlags.LEVEL_CRITICAL)
|
||||
+ os.environ['G_DEBUG'] = 'fatal_warnings'
|
||||
+
|
||||
+ # set up a fake system D-BUS
|
||||
+ cls.test_bus = Gio.TestDBus.new(Gio.TestDBusFlags.NONE)
|
||||
+ cls.test_bus.up()
|
||||
+ try:
|
||||
+ del os.environ['DBUS_SESSION_BUS_ADDRESS']
|
||||
+ except KeyError:
|
||||
+ pass
|
||||
+ os.environ['DBUS_SYSTEM_BUS_ADDRESS'] = cls.test_bus.get_bus_address()
|
||||
+
|
||||
+ cls.dbus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None)
|
||||
+ cls.dbus_con = cls.get_dbus(True)
|
||||
+
|
||||
+ # Some test outputs require the daemon to run under the fr locale:
|
||||
+ # so check if that's available
|
||||
+ try:
|
||||
+ old_loc = locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
|
||||
+ locale.setlocale(locale.LC_ALL, old_loc)
|
||||
+ # We need to make sure the decimal point is correct as on musl libc the above
|
||||
+ # succeeds yet the tests just fail due to the output being in unexpected format
|
||||
+ cls.has_fr = locale.localeconv()["decimal_point"] == ","
|
||||
+ except:
|
||||
+ cls.has_fr = False
|
||||
+
|
||||
+ @classmethod
|
||||
+ def tearDownClass(cls):
|
||||
+ cls.test_bus.down()
|
||||
+ dbusmock.DBusTestCase.tearDownClass()
|
||||
+
|
||||
+ def setUp(self):
|
||||
+ '''Set up a local umockdev testbed.
|
||||
+
|
||||
+ The testbed is initially empty.
|
||||
+ '''
|
||||
+ self.testbed = UMockdev.Testbed.new()
|
||||
+ self.polkitd, obj_polkit = self.spawn_server_template(
|
||||
+ 'polkitd', {}, stdout=subprocess.PIPE)
|
||||
+ obj_polkit.SetAllowed(['net.hadess.SensorProxy.claim-sensor'])
|
||||
+
|
||||
+ self.proxy = None
|
||||
+ self.log = None
|
||||
+ self.daemon = None
|
||||
+
|
||||
+ def run(self, result=None):
|
||||
+ super(Tests, self).run(result)
|
||||
+ if result and len(result.errors) + len(result.failures) > 0 and self.log:
|
||||
+ with open(self.log.name) as f:
|
||||
+ sys.stderr.write('\n-------------- daemon log: ----------------\n')
|
||||
+ sys.stderr.write(f.read())
|
||||
+ sys.stderr.write('------------------------------\n')
|
||||
+
|
||||
+ def tearDown(self):
|
||||
+ del self.testbed
|
||||
+ self.stop_daemon()
|
||||
+
|
||||
+ if self.polkitd:
|
||||
+ try:
|
||||
+ self.polkitd.kill()
|
||||
+ except OSError:
|
||||
+ pass
|
||||
+ self.polkitd.wait()
|
||||
+ self.polkitd = None
|
||||
+
|
||||
+ #
|
||||
+ # Daemon control and D-BUS I/O
|
||||
+ #
|
||||
+
|
||||
+ def start_daemon(self, env = None, wrapper = None):
|
||||
+ '''Start daemon and create DBus proxy.
|
||||
+
|
||||
+ When done, this sets self.proxy as the Gio.DBusProxy for power-profiles-daemon.
|
||||
+ '''
|
||||
+ if not env:
|
||||
+ env = os.environ.copy()
|
||||
+ env['G_DEBUG'] = 'fatal-criticals'
|
||||
+ env['G_MESSAGES_DEBUG'] = 'all'
|
||||
+ env['UMOCKDEV_DEBUG'] = 'all'
|
||||
+ # note: Python doesn't propagate the setenv from Testbed.new(), so we
|
||||
+ # have to do that ourselves
|
||||
+ env['UMOCKDEV_DIR'] = self.testbed.get_root_dir()
|
||||
+ self.log = tempfile.NamedTemporaryFile()
|
||||
+ timeout_multiplier = 1
|
||||
+ if wrapper:
|
||||
+ daemon_path = wrapper + [ self.daemon_path ]
|
||||
+ else:
|
||||
+ daemon_path = [ self.daemon_path ]
|
||||
+ if os.getenv('VALGRIND') != None:
|
||||
+ daemon_path = ['valgrind'] + daemon_path + ['-v']
|
||||
+ timeout_multiplier = 10
|
||||
+ else:
|
||||
+ daemon_path = daemon_path + ['-v']
|
||||
+
|
||||
+ self.daemon = subprocess.Popen(daemon_path,
|
||||
+ env=env, stdout=self.log,
|
||||
+ stderr=subprocess.STDOUT)
|
||||
+
|
||||
+ # wait until the daemon gets online
|
||||
+ timeout = 100 * timeout_multiplier
|
||||
+ while timeout > 0:
|
||||
+ time.sleep(0.1)
|
||||
+ timeout -= 1
|
||||
+ try:
|
||||
+ self.get_dbus_property('HasAccelerometer')
|
||||
+ break
|
||||
+ except GLib.GError:
|
||||
+ pass
|
||||
+ else:
|
||||
+ self.fail('daemon did not start in 10 seconds')
|
||||
+
|
||||
+ self.proxy = Gio.DBusProxy.new_sync(
|
||||
+ self.dbus, Gio.DBusProxyFlags.DO_NOT_AUTO_START, None, SP,
|
||||
+ SP_PATH, SP, None)
|
||||
+
|
||||
+ self.assertEqual(self.daemon.poll(), None, 'daemon crashed')
|
||||
+
|
||||
+ def stop_daemon(self):
|
||||
+ '''Stop the daemon if it is running.'''
|
||||
+
|
||||
+ if self.daemon:
|
||||
+ try:
|
||||
+ for child in psutil.Process(self.daemon.pid).children(recursive=True):
|
||||
+ child.kill()
|
||||
+ self.daemon.kill()
|
||||
+ except OSError:
|
||||
+ pass
|
||||
+ self.daemon.wait()
|
||||
+ self.daemon = None
|
||||
+ self.proxy = None
|
||||
+
|
||||
+ def get_dbus_property(self, name):
|
||||
+ '''Get property value from daemon D-Bus interface.'''
|
||||
+
|
||||
+ proxy = Gio.DBusProxy.new_sync(
|
||||
+ self.dbus, Gio.DBusProxyFlags.DO_NOT_AUTO_START, None, SP,
|
||||
+ SP_PATH, 'org.freedesktop.DBus.Properties', None)
|
||||
+ return proxy.Get('(ss)', SP, name)
|
||||
+
|
||||
+ def get_compass_dbus_property(self, name):
|
||||
+ '''Get property value from daemon compass D-Bus interface.'''
|
||||
+
|
||||
+ proxy = Gio.DBusProxy.new_sync(
|
||||
+ self.dbus, Gio.DBusProxyFlags.DO_NOT_AUTO_START, None, SP,
|
||||
+ SP_COMPASS_PATH, 'org.freedesktop.DBus.Properties', None)
|
||||
+ return proxy.Get('(ss)', SP_COMPASS, name)
|
||||
+
|
||||
+ def have_text_in_log(self, text):
|
||||
+ return self.count_text_in_log(text) > 0
|
||||
+
|
||||
+ def count_text_in_log(self, text):
|
||||
+ with open(self.log.name) as f:
|
||||
+ return f.read().count(text)
|
||||
+
|
||||
+ def read_sysfs_attr(self, device, attribute):
|
||||
+ with open(os.path.join(self.testbed.get_root_dir() + device, attribute), 'rb') as f:
|
||||
+ return f.read()
|
||||
+ return None
|
||||
+
|
||||
+ def read_file(self, path):
|
||||
+ with open(path, 'rb') as f:
|
||||
+ return f.read()
|
||||
+ return None
|
||||
+
|
||||
+ def assertEventually(self, condition, message=None, timeout=50):
|
||||
+ '''Assert that condition function eventually returns True.
|
||||
+
|
||||
+ Timeout is in deciseconds, defaulting to 50 (5 seconds). message is
|
||||
+ printed on failure.
|
||||
+ '''
|
||||
+ while timeout >= 0:
|
||||
+ context = GLib.MainContext.default()
|
||||
+ while context.iteration(False):
|
||||
+ pass
|
||||
+ if condition():
|
||||
+ break
|
||||
+ timeout -= 1
|
||||
+ time.sleep(0.1)
|
||||
+ else:
|
||||
+ self.fail(message or 'timed out waiting for ' + str(condition))
|
||||
+
|
||||
+ #
|
||||
+ # Actual test cases
|
||||
+ #
|
||||
+
|
||||
+ def test_ssc_proximity(self):
|
||||
+ '''SSC proximity'''
|
||||
+ prox = self.testbed.add_device('misc', 'ssc-proximity', None,
|
||||
+ ['name', 'SSC Test Proximity Sensor'],
|
||||
+ ['NAME', '"SSC Proximity Sensor"',
|
||||
+ 'DEVNAME', '/dev/fastrpc-sdsp',
|
||||
+ 'IIO_SENSOR_PROXY_TYPE', 'ssc-proximity']
|
||||
+ )
|
||||
+ self.start_daemon()
|
||||
+ self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
|
||||
+ self.assertEqual(self.get_dbus_property('HasAccelerometer'), False)
|
||||
+ self.assertEqual(self.get_dbus_property('HasProximity'), True)
|
||||
+ self.assertEqual(self.get_compass_dbus_property('HasCompass'), False)
|
||||
+
|
||||
+ # Default values
|
||||
+ self.assertEqual(self.get_dbus_property('ProximityNear'), False)
|
||||
+
|
||||
+ self.proxy.ClaimProximity()
|
||||
+ self.assertEqual(self.get_dbus_property('ProximityNear'), True)
|
||||
+ self.assertEventually(lambda: self.get_dbus_property('ProximityNear') == False)
|
||||
+ self.assertEventually(lambda: self.get_dbus_property('ProximityNear') == True)
|
||||
+
|
||||
+ self.stop_daemon()
|
||||
+
|
||||
+ def test_ssc_accel(self):
|
||||
+ '''SSC accelerometer'''
|
||||
+ prox = self.testbed.add_device('misc', 'ssc-accel', None,
|
||||
+ ['name', 'SSC Test Accelerometer Sensor'],
|
||||
+ ['NAME', '"SSC Accelerometer Sensor"',
|
||||
+ 'DEVNAME', '/dev/fastrpc-sdsp',
|
||||
+ 'IIO_SENSOR_PROXY_TYPE', 'ssc-accel']
|
||||
+ )
|
||||
+ self.start_daemon()
|
||||
+ self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
|
||||
+ self.assertEqual(self.get_dbus_property('HasAccelerometer'), True)
|
||||
+ self.assertEqual(self.get_dbus_property('HasProximity'), False)
|
||||
+ self.assertEqual(self.get_compass_dbus_property('HasCompass'), False)
|
||||
+
|
||||
+ self.assertEqual(self.get_dbus_property('AccelerometerOrientation'), 'undefined')
|
||||
+
|
||||
+ self.proxy.ClaimAccelerometer()
|
||||
+ self.assertEqual(self.get_dbus_property('AccelerometerOrientation'), 'left-up')
|
||||
+
|
||||
+ self.stop_daemon()
|
||||
+
|
||||
+ def test_ssc_light(self):
|
||||
+ '''SSC light'''
|
||||
+ prox = self.testbed.add_device('misc', 'ssc-light', None,
|
||||
+ ['name', 'SSC Test Light Sensor'],
|
||||
+ ['NAME', '"SSC Light Sensor"',
|
||||
+ 'DEVNAME', '/dev/fastrpc-sdsp',
|
||||
+ 'IIO_SENSOR_PROXY_TYPE', 'ssc-light']
|
||||
+ )
|
||||
+ self.start_daemon()
|
||||
+ self.assertEqual(self.get_dbus_property('HasAmbientLight'), True)
|
||||
+ self.assertEqual(self.get_dbus_property('HasAccelerometer'), False)
|
||||
+ self.assertEqual(self.get_dbus_property('HasProximity'), False)
|
||||
+ self.assertEqual(self.get_compass_dbus_property('HasCompass'), False)
|
||||
+
|
||||
+ # Default values
|
||||
+ self.assertEqual(self.get_dbus_property('LightLevelUnit'), 'lux')
|
||||
+ self.assertEqual(self.get_dbus_property('LightLevel'), 0)
|
||||
+
|
||||
+ self.proxy.ClaimLight()
|
||||
+ self.assertEventually(lambda: self.get_dbus_property('LightLevel') == 7)
|
||||
+ self.assertEqual(self.get_dbus_property('LightLevelUnit'), 'lux')
|
||||
+
|
||||
+ self.stop_daemon()
|
||||
+
|
||||
+ def test_ssc_compass(self):
|
||||
+ '''SSC compass'''
|
||||
+ prox = self.testbed.add_device('misc', 'ssc-compass', None,
|
||||
+ ['name', 'SSC Test Compass Sensor'],
|
||||
+ ['NAME', '"SSC Compass Sensor"',
|
||||
+ 'DEVNAME', '/dev/fastrpc-sdsp',
|
||||
+ 'IIO_SENSOR_PROXY_TYPE', 'ssc-compass']
|
||||
+ )
|
||||
+ self.start_daemon()
|
||||
+ self.assertEqual(self.get_dbus_property('HasAmbientLight'), False)
|
||||
+ self.assertEqual(self.get_dbus_property('HasAccelerometer'), False)
|
||||
+ self.assertEqual(self.get_dbus_property('HasProximity'), False)
|
||||
+ self.assertEqual(self.get_compass_dbus_property('HasCompass'), True)
|
||||
+ self.assertEqual(int(self.get_compass_dbus_property('CompassHeading')), 0)
|
||||
+
|
||||
+ self.stop_daemon()
|
||||
+
|
||||
+ #
|
||||
+ # Helper methods
|
||||
+ #
|
||||
+
|
||||
+ @classmethod
|
||||
+ def _props_to_str(cls, properties):
|
||||
+ '''Convert a properties dictionary to uevent text representation.'''
|
||||
+
|
||||
+ prop_str = ''
|
||||
+ if properties:
|
||||
+ for k, v in properties.items():
|
||||
+ prop_str += '%s=%s\n' % (k, v)
|
||||
+ return prop_str
|
||||
+
|
||||
+if __name__ == '__main__':
|
||||
+ # run ourselves under umockdev
|
||||
+ if 'umockdev' not in os.environ.get('LD_PRELOAD', ''):
|
||||
+ os.execvp('umockdev-wrapper', ['umockdev-wrapper'] + sys.argv)
|
||||
+
|
||||
+ unittest.main()
|
||||
--
|
||||
2.47.1
|
||||
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
pkgname=iio-sensor-proxy
|
||||
pkgver=9999
|
||||
pkgrel=7
|
||||
pkgrel=8
|
||||
pkgdesc="IIO sensors to D-Bus proxy"
|
||||
url="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy"
|
||||
arch="aarch64"
|
||||
|
|
@ -14,10 +14,10 @@ makedepends="
|
|||
libgudev-dev
|
||||
meson
|
||||
polkit-dev
|
||||
libssc-dev>=0.1.6
|
||||
libssc-dev>=0.2.1
|
||||
"
|
||||
subpackages="$pkgname-openrc"
|
||||
_commit="fe56bdba1243cc5f6a652eb75d11ae1d1957ff7e"
|
||||
_commit="882879b14c3bf430d88bce558f47242d4e94ed5f"
|
||||
builddir="$srcdir/$pkgname-$_commit"
|
||||
source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_commit/iio-sensor-proxy-$_commit.tar.gz
|
||||
iio-sensor-proxy.initd
|
||||
|
|
@ -27,9 +27,9 @@ source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_commi
|
|||
0004-accelerometer-support-SSC-accelerometer-sensor.patch
|
||||
0005-compass-support-SSC-compass-sensor.patch
|
||||
0006-data-add-libssc-udev-rules.patch
|
||||
0007-CI-add-libssc-build.patch
|
||||
0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch
|
||||
0009-drivers-ssc-implement-set_polling-function.patch
|
||||
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
|
||||
"
|
||||
# tests fail on armv7 and armhf, and it seems to be due to some weird issue
|
||||
# with pmaports qemu CI (not reproducible locally with `pmb build --arch
|
||||
|
|
@ -56,15 +56,15 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
49b96fefbcfabb706fc6189d3f40e6e1a1e847ec6e4101398bf639db9e844c5c5057f2267f3e541d302d002d0042a84fdd56191207ed0e911f80342cd1d416c4 iio-sensor-proxy-fe56bdba1243cc5f6a652eb75d11ae1d1957ff7e.tar.gz
|
||||
94e1d990f7cd89803c75c8a831eb2db60b851c88566c46dc4478347e0d894a26ca8eac155f64d1a4fd9873cfbd7a4c20279fecf7687909fa327776960ae3a39e iio-sensor-proxy-882879b14c3bf430d88bce558f47242d4e94ed5f.tar.gz
|
||||
1efbd03f7ee8c1eac4695647aa9931a0b0806779fb96e1c8e03f7deb6e8507aa6092e66f8ef796c68beb0b16b8624ef70c59231884a0fbb3ffdf46db72959f23 iio-sensor-proxy.initd
|
||||
3d1be8e5a932ca6ca0b908caaa7f16dcdbbc6e48a75183c1b7c225689f309203f7008f53ed4276c93790dc7dc0b2cb3c9b3f00cef84305657f279369f1307d89 0001-iio-sensor-proxy-depend-on-libssc.patch
|
||||
bb8e1496411c030062eeb1bb919c9680c32d9571587540368c663b6739e3c506d21ab90836a4e83be526019e654af393dc849031ab81bb8aadff623873232d58 0002-proximity-support-SSC-proximity-sensor.patch
|
||||
465f4296778b3c0269b00badd11f841c2ea9dbc14b7489b21f2e4d8e45a628fa59327c91692f8e350c926776de05173e2abc9bef54e51bf0378866ace3891152 0003-light-support-SSC-light-sensor.patch
|
||||
4f6a3b76fc10eb42a4824cc49b063acc1c54a762637f7ff37a1ac42adb1410fbfe5e17b5277bb8fcb4d232b94971cf96c61925f4c207c9b4b56c78321b1b7d69 0004-accelerometer-support-SSC-accelerometer-sensor.patch
|
||||
80d59825dde8ff8bcc92b3d6d659968f88f82c8198e9576e1a77b2d38be074781926c45115e213e4c557a3dc7ba1c1391d67cb6f0c49d23aff2e0cdbfedefc87 0005-compass-support-SSC-compass-sensor.patch
|
||||
651d3281fe64fb72780bdfc4f3416af6f221c5c0aebf8b9a87d2cf6b5a31ebd0816199b45c97f24810807286a4a8839b6304a12cfc23b4191261a30efd3fbe2b 0006-data-add-libssc-udev-rules.patch
|
||||
bdb8831d89f389badd5de0eb52d9eca5dbdf045dbcfab18165d43798c9e329c3e68e3209b8ad1053916cfac6c54984dd47aa379c419d46f1c25ad6a57c2bd771 0007-CI-add-libssc-build.patch
|
||||
c778168de17f86e3d50b62a4905d3940e9d69bb919fe3b9b5fc8962d8fe9b7cdb48a57dd8128ded93ff08493f65a7f602e6e7ad295e6736c74c273a2c6399c35 0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch
|
||||
d7c0d67a664d900708a1a76edaac3fc05be567abe9c5d49b11d3181ebe932c3847de4f3f89291542fe7d7f0798bde2d5a504d23350a79d93a7afe57f959380ae 0009-drivers-ssc-implement-set_polling-function.patch
|
||||
d46eeb1deabb6ee6017b86f573fcb717d8b992979bfd447e52c6dabc95d9e6c986ab937f602c2f0a731d10d87d67578aa59930d7faff69b2f42a0eab25f4c60c 0001-iio-sensor-proxy-depend-on-libssc.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
|
||||
d4379f8e53eea02f53640752bef883870a44d0169cf821d3f5bb3245309cac1d1502a7848d5cce60d40bcdd484c9baa1f63f60d887613ad25a5ca88721d7c4c8 0005-compass-support-SSC-compass-sensor.patch
|
||||
4651572ada878fd07ba281426b4cf4b9baf19d8464fd3af1a1c1a98765bcf358d1d445bdef53acd3bf30b1d2c8c234489e96f728d9228e3681e5038f10059573 0006-data-add-libssc-udev-rules.patch
|
||||
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
|
||||
"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue