From eeb821fa6846e84c9fe3e80d58f41b7a5a418e70 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 21 Apr 2021 22:27:56 +0800 Subject: [PATCH] update hal.x --- iotd/hal/gpio.c | 47 +++++++++++++++++++++++++++-------------------- 1 files changed, 27 insertions(+), 20 deletions(-) diff --git a/iotd/hal/gpio.c b/iotd/hal/gpio.c index a5532a5..80c699d 100644 --- a/iotd/hal/gpio.c +++ b/iotd/hal/gpio.c @@ -24,9 +24,7 @@ int i; gpio_info_t *gpioinfo; - s_gpio = gpio; - if( !gpio ) { @@ -40,7 +38,6 @@ log_warn("WARNNING: No GPIO pins configured\n"); return 0; } - /* gpiod open chip */ s_chip = gpiod_chip_open_by_name(RPI_GPIONAME); @@ -150,30 +147,40 @@ } -#if 0 /* Return value: 1(HIGH): Sombody detected 0(LOW): Nobody detected */ int infrared_detect(void) { + int i; + int rv; struct gpiod_line_event event; - /* This function will block, must call it to setup */ - if( gpiod_line_event_wait(s_infrared_lines, NULL) < 0 ) + for(i=0; i<s_gpio->incnt; i++) { - //log_err("infrared gpiod line wait event failure!\n"); - return 0; - } + if( strstr(s_gpio->input[i].name, "infrared")) + { + log_dbg("Start detect '%s' on pin[#%d]\n", s_gpio->input[i].name, s_gpio->input[i].pin); - /* This function will block, must read to clear the event */ - if (gpiod_line_event_read(s_infrared_lines, &event) < 0) - { - log_err("gpiod line event read failure!\n"); - return 0; - } + /* This function will block, must call it to setup */ + rv = gpiod_line_event_wait(s_gpio->input[i].line, NULL) ; + if( rv< 0 ) + { + log_err("infrared gpiod line wait event failure!\n"); + return 0; + } + log_err("infrared gpiod line wait event rv=%d!\n", rv); - if (event.event_type == GPIOD_LINE_EVENT_RISING_EDGE) - return 1; - else - return 0; + /* This function will block, must read to clear the event */ + if (gpiod_line_event_read(s_gpio->input[i].line, &event) < 0) + { + log_err("gpiod line event read failure!\n"); + return 0; + } + + if (event.event_type == GPIOD_LINE_EVENT_RISING_EDGE) + return 1; + else + return 0; + } + } } -#endif -- Gitblit v1.9.1