lkml.org 
[lkml]   [2020]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v9 20/20] tools: gpio: add debounce support to gpio-event-mon
    Date
    Add support for debouncing monitored lines to gpio-event-mon.

    Signed-off-by: Kent Gibson <warthog618@gmail.com>
    ---
    tools/gpio/gpio-event-mon.c | 20 +++++++++++++++++---
    1 file changed, 17 insertions(+), 3 deletions(-)

    diff --git a/tools/gpio/gpio-event-mon.c b/tools/gpio/gpio-event-mon.c
    index 0c34f18f511c..90c3155f05b1 100644
    --- a/tools/gpio/gpio-event-mon.c
    +++ b/tools/gpio/gpio-event-mon.c
    @@ -148,11 +148,12 @@ void print_usage(void)
    " -s Set line as open source\n"
    " -r Listen for rising edges\n"
    " -f Listen for falling edges\n"
    + " -b <n> Debounce the line with period n microseconds\n"
    " [-c <n>] Do <n> loops (optional, infinite loop if not stated)\n"
    " -? This helptext\n"
    "\n"
    "Example:\n"
    - "gpio-event-mon -n gpiochip0 -o 4 -r -f\n"
    + "gpio-event-mon -n gpiochip0 -o 4 -r -f -b 10000\n"
    );
    }

    @@ -167,11 +168,12 @@ int main(int argc, char **argv)
    unsigned int num_lines = 0;
    unsigned int loops = 0;
    struct gpio_v2_line_config config;
    - int c;
    + int c, attr, i;
    + unsigned long debounce_period_us = 0;

    memset(&config, 0, sizeof(config));
    config.flags = GPIO_V2_LINE_FLAG_INPUT;
    - while ((c = getopt(argc, argv, "c:n:o:dsrf?")) != -1) {
    + while ((c = getopt(argc, argv, "c:n:o:b:dsrf?")) != -1) {
    switch (c) {
    case 'c':
    loops = strtoul(optarg, NULL, 10);
    @@ -187,6 +189,9 @@ int main(int argc, char **argv)
    lines[num_lines] = strtoul(optarg, NULL, 10);
    num_lines++;
    break;
    + case 'b':
    + debounce_period_us = strtoul(optarg, NULL, 10);
    + break;
    case 'd':
    config.flags |= GPIO_V2_LINE_FLAG_OPEN_DRAIN;
    break;
    @@ -205,6 +210,15 @@ int main(int argc, char **argv)
    }
    }

    + if (debounce_period_us) {
    + attr = config.num_attrs;
    + config.num_attrs++;
    + for (i = 0; i < num_lines; i++)
    + gpiotools_set_bit(&config.attrs[attr].mask, i);
    + config.attrs[attr].attr.id = GPIO_V2_LINE_ATTR_ID_DEBOUNCE;
    + config.attrs[attr].attr.debounce_period_us = debounce_period_us;
    + }
    +
    if (!device_name || num_lines == 0) {
    print_usage();
    return -1;
    --
    2.28.0
    \
     
     \ /
      Last update: 2020-09-22 04:37    [W:2.492 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site