[systemd-devel] [PATCH] Remove accelerometer helper
Tom Gundersen
teg at jklm.no
Fri May 22 08:00:41 PDT 2015
On Fri, May 22, 2015 at 3:42 PM, Bastien Nocera <hadess at hadess.net> wrote:
> It's moved to the iio-sensor-proxy D-Bus service.
Nice! When was this released? Should we expect all distros to have
picked up this yet?
> ---
> .gitignore | 1 -
> Makefile.am | 15 --
> rules/61-accelerometer.rules | 3 -
> src/udev/accelerometer/Makefile | 1 -
> src/udev/accelerometer/accelerometer.c | 303 ------------------------
> ---------
> 5 files changed, 323 deletions(-)
> delete mode 100644 rules/61-accelerometer.rules
> delete mode 120000 src/udev/accelerometer/Makefile
> delete mode 100644 src/udev/accelerometer/accelerometer.c
>
> diff --git a/.gitignore b/.gitignore
> index d2f1a1f..0eaa65f 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -26,7 +26,6 @@
> /GRTAGS
> /GSYMS
> /GTAGS
> -/accelerometer
> /ata_id
> /bootctl
> /build-aux
> diff --git a/Makefile.am b/Makefile.am
> index f84a28d..90a78a9 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -4087,21 +4087,6 @@ dist_udevrules_DATA += \
> rules/60-persistent-v4l.rules
>
> # -------------------------------------------------------------------
> -----------
> -accelerometer_SOURCES = \
> - src/udev/accelerometer/accelerometer.c
> -
> -accelerometer_LDADD = \
> - libudev-internal.la \
> - libsystemd-internal.la \
> - libsystemd-shared.la
> -
> -udevlibexec_PROGRAMS += \
> - accelerometer
> -
> -dist_udevrules_DATA += \
> - rules/61-accelerometer.rules
> -
> -# -------------------------------------------------------------------
> -----------
> if ENABLE_GUDEV
> if ENABLE_GTK_DOC
> SUBDIRS += \
> diff --git a/rules/61-accelerometer.rules b/rules/61
> -accelerometer.rules
> deleted file mode 100644
> index a6a2bfd..0000000
> --- a/rules/61-accelerometer.rules
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -# do not edit this file, it will be overwritten on update
> -
> -SUBSYSTEM=="input", ACTION!="remove",
> ENV{ID_INPUT_ACCELEROMETER}=="1", IMPORT{program}="accelerometer %p"
> diff --git a/src/udev/accelerometer/Makefile
> b/src/udev/accelerometer/Makefile
> deleted file mode 120000
> index d0b0e8e..0000000
> --- a/src/udev/accelerometer/Makefile
> +++ /dev/null
> @@ -1 +0,0 @@
> -../Makefile
> \ No newline at end of file
> diff --git a/src/udev/accelerometer/accelerometer.c
> b/src/udev/accelerometer/accelerometer.c
> deleted file mode 100644
> index 9e2c590..0000000
> --- a/src/udev/accelerometer/accelerometer.c
> +++ /dev/null
> @@ -1,303 +0,0 @@
> -/*
> - * accelerometer - exports device orientation through property
> - *
> - * When an "change" event is received on an accelerometer,
> - * open its device node, and from the value, as well as the previous
> - * value of the property, calculate the device's new orientation,
> - * and export it as ID_INPUT_ACCELEROMETER_ORIENTATION.
> - *
> - * Possible values are:
> - * undefined
> - * * normal
> - * * bottom-up
> - * * left-up
> - * * right-up
> - *
> - * The property will be persistent across sessions, and the new
> - * orientations can be deducted from the previous one (it allows
> - * for a threshold for switching between opposite ends of the
> - * orientation).
> - *
> - * Copyright (C) 2011 Red Hat, Inc.
> - * Author:
> - * Bastien Nocera <hadess at hadess.net>
> - *
> - * orientation_calc() from the sensorfw package
> - * Copyright (C) 2009-2010 Nokia Corporation
> - * Authors:
> - * Üstün Ergenoglu <ext-ustun.ergenoglu at nokia.com>
> - * Timo Rongas <ext-timo.2.rongas at nokia.com>
> - * Lihan Guo <lihan.guo at digia.com>
> - *
> - * 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.
> - *
> - * You should have received a copy of the GNU General Public License
> along
> - * with this program; if not, write to the Free Software Foundation,
> Inc.,
> - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> - */
> -
> -#include <stdio.h>
> -#include <string.h>
> -#include <math.h>
> -#include <stdlib.h>
> -#include <getopt.h>
> -#include <limits.h>
> -#include <linux/input.h>
> -
> -#include "libudev.h"
> -#include "libudev-private.h"
> -
> -/* we must use this kernel-compatible implementation */
> -#define BITS_PER_LONG (sizeof(unsigned long) * 8)
> -#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
> -#define OFF(x) ((x)%BITS_PER_LONG)
> -#define BIT(x) (1UL<<OFF(x))
> -#define LONG(x) ((x)/BITS_PER_LONG)
> -#define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1)
> -
> -typedef enum {
> - ORIENTATION_UNDEFINED,
> - ORIENTATION_NORMAL,
> - ORIENTATION_BOTTOM_UP,
> - ORIENTATION_LEFT_UP,
> - ORIENTATION_RIGHT_UP
> -} OrientationUp;
> -
> -static const char *orientations[] = {
> - "undefined",
> - "normal",
> - "bottom-up",
> - "left-up",
> - "right-up",
> - NULL
> -};
> -
> -#define ORIENTATION_UP_UP ORIENTATION_NORMAL
> -
> -#define DEFAULT_THRESHOLD 250
> -#define RADIANS_TO_DEGREES 180.0/M_PI
> -#define SAME_AXIS_LIMIT 5
> -
> -#define THRESHOLD_LANDSCAPE 25
> -#define THRESHOLD_PORTRAIT 20
> -
> -static const char *
> -orientation_to_string (OrientationUp o)
> -{
> - return orientations[o];
> -}
> -
> -static OrientationUp
> -string_to_orientation (const char *orientation)
> -{
> - int i;
> -
> - if (orientation == NULL)
> - return ORIENTATION_UNDEFINED;
> - for (i = 0; orientations[i] != NULL; i++) {
> - if (streq (orientation, orientations[i]))
> - return i;
> - }
> - return ORIENTATION_UNDEFINED;
> -}
> -
> -static OrientationUp
> -orientation_calc (OrientationUp prev,
> - int x, int y, int z)
> -{
> - int rotation;
> - OrientationUp ret = prev;
> -
> - /* Portrait check */
> - rotation = round(atan((double) x / sqrt(y * y + z * z)) *
> RADIANS_TO_DEGREES);
> -
> - if (abs(rotation) > THRESHOLD_PORTRAIT) {
> - ret = (rotation < 0) ? ORIENTATION_LEFT_UP :
> ORIENTATION_RIGHT_UP;
> -
> - /* Some threshold to switching between portrait modes
> */
> - if (prev == ORIENTATION_LEFT_UP || prev ==
> ORIENTATION_RIGHT_UP) {
> - if (abs(rotation) < SAME_AXIS_LIMIT) {
> - ret = prev;
> - }
> - }
> -
> - } else {
> - /* Landscape check */
> - rotation = round(atan((double) y / sqrt(x * x + z *
> z)) * RADIANS_TO_DEGREES);
> -
> - if (abs(rotation) > THRESHOLD_LANDSCAPE) {
> - ret = (rotation < 0) ? ORIENTATION_BOTTOM_UP
> : ORIENTATION_NORMAL;
> -
> - /* Some threshold to switching between
> landscape modes */
> - if (prev == ORIENTATION_BOTTOM_UP || prev ==
> ORIENTATION_NORMAL) {
> - if (abs(rotation) < SAME_AXIS_LIMIT) {
> - ret = prev;
> - }
> - }
> - }
> - }
> -
> - return ret;
> -}
> -
> -static OrientationUp
> -get_prev_orientation(struct udev_device *dev)
> -{
> - const char *value;
> -
> - value = udev_device_get_property_value(dev,
> "ID_INPUT_ACCELEROMETER_ORIENTATION");
> - if (value == NULL)
> - return ORIENTATION_UNDEFINED;
> - return string_to_orientation(value);
> -}
> -
> -#define READ_AXIS(axis, var) { memzero(&abs_info, sizeof(abs_info));
> r = ioctl(fd, EVIOCGABS(axis), &abs_info); if (r < 0) return; var =
> abs_info.value; }
> -
> -/* accelerometers */
> -static void test_orientation(struct udev *udev,
> - struct udev_device *dev,
> - const char *devpath)
> -{
> - OrientationUp old, new;
> - _cleanup_close_ int fd = -1;
> - struct input_absinfo abs_info;
> - int x = 0, y = 0, z = 0;
> - int r;
> - char text[64];
> -
> - old = get_prev_orientation(dev);
> -
> - fd = open(devpath, O_RDONLY|O_CLOEXEC);
> - if (fd < 0)
> - return;
> -
> - READ_AXIS(ABS_X, x);
> - READ_AXIS(ABS_Y, y);
> - READ_AXIS(ABS_Z, z);
> -
> - new = orientation_calc(old, x, y, z);
> - snprintf(text, sizeof(text),
> - "ID_INPUT_ACCELEROMETER_ORIENTATION=%s",
> orientation_to_string(new));
> - puts(text);
> -}
> -
> -static void help(void) {
> -
> - printf("%s [options] <device path>\n\n"
> - "Accelerometer device identification.\n\n"
> - " -h --help Print this message\n"
> - " -d --debug Debug to stderr\n"
> - , program_invocation_short_name);
> -}
> -
> -int main (int argc, char** argv)
> -{
> - struct udev *udev;
> - struct udev_device *dev;
> -
> - static const struct option options[] = {
> - { "debug", no_argument, NULL, 'd' },
> - { "help", no_argument, NULL, 'h' },
> - {}
> - };
> -
> - char devpath[PATH_MAX];
> - char *devnode;
> - struct udev_enumerate *enumerate;
> - struct udev_list_entry *list_entry;
> -
> - log_parse_environment();
> - log_open();
> -
> - udev = udev_new();
> - if (udev == NULL)
> - return 1;
> -
> - /* CLI argument parsing */
> - while (1) {
> - int option;
> -
> - option = getopt_long(argc, argv, "dh", options, NULL);
> - if (option == -1)
> - break;
> -
> - switch (option) {
> - case 'd':
> - log_set_target(LOG_TARGET_CONSOLE);
> - log_set_max_level(LOG_DEBUG);
> - log_open();
> - break;
> - case 'h':
> - help();
> - exit(0);
> - default:
> - exit(1);
> - }
> - }
> -
> - if (argv[optind] == NULL) {
> - help();
> - exit(1);
> - }
> -
> - /* get the device */
> - snprintf(devpath, sizeof(devpath), "/sys/%s", argv[optind]);
> - dev = udev_device_new_from_syspath(udev, devpath);
> - if (dev == NULL) {
> - fprintf(stderr, "unable to access '%s'\n", devpath);
> - return 1;
> - }
> -
> - /* Get the children devices and find the devnode */
> - devnode = NULL;
> - enumerate = udev_enumerate_new(udev);
> - udev_enumerate_add_match_parent(enumerate, dev);
> - udev_enumerate_scan_devices(enumerate);
> - udev_list_entry_foreach(list_entry,
> udev_enumerate_get_list_entry(enumerate)) {
> - struct udev_device *device;
> - const char *node;
> -
> - device =
> udev_device_new_from_syspath(udev_enumerate_get_udev(enumerate),
> -
> udev_list_entry_get_name(list_entry));
> - if (device == NULL)
> - continue;
> - /* Already found it */
> - if (devnode != NULL) {
> - udev_device_unref(device);
> - continue;
> - }
> -
> - node = udev_device_get_devnode(device);
> - if (node == NULL) {
> - udev_device_unref(device);
> - continue;
> - }
> - /* Use the event sub-device */
> - if (strstr(node, "/event") == NULL) {
> - udev_device_unref(device);
> - continue;
> - }
> -
> - devnode = strdup(node);
> - udev_device_unref(device);
> - }
> -
> - if (devnode == NULL) {
> - fprintf(stderr, "unable to get device node for
> '%s'\n", devpath);
> - return 0;
> - }
> -
> - log_debug("opening accelerometer device %s", devnode);
> - test_orientation(udev, dev, devnode);
> - free(devnode);
> - log_close();
> - return 0;
> -}
> --
> 2.4.1
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
More information about the systemd-devel
mailing list