[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