summaryrefslogtreecommitdiff
path: root/cleopatre/application
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/application')
-rw-r--r--cleopatre/application/managerd/inc/gpio_event.h1
-rw-r--r--cleopatre/application/managerd/src/gpio_event.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/cleopatre/application/managerd/inc/gpio_event.h b/cleopatre/application/managerd/inc/gpio_event.h
index 8411c01290..280be84f0f 100644
--- a/cleopatre/application/managerd/inc/gpio_event.h
+++ b/cleopatre/application/managerd/inc/gpio_event.h
@@ -25,6 +25,7 @@ struct managerd_ctx;
/** GPIO number for SC button and it associated LED */
#define SC_BUT_GPIO_NUM 1
+#define SC_BUT_DEBOUNCE 1
/** Simple connect status */
#define SC_BUT_RELEASED 1
#define SC_BUT_PUSHED (!SC_BUT_RELEASED)
diff --git a/cleopatre/application/managerd/src/gpio_event.c b/cleopatre/application/managerd/src/gpio_event.c
index 33ace0a7d9..6798e2f6d0 100644
--- a/cleopatre/application/managerd/src/gpio_event.c
+++ b/cleopatre/application/managerd/src/gpio_event.c
@@ -87,6 +87,10 @@ simple_connect_init (struct managerd_ctx *ctx)
ctx->sc_it.gpioit.enable = 1;
ctx->sc_it.gpioit.mask = (1 << SC_BUT_GPIO_NUM);
+ struct gpio_debounce debounce;
+ debounce.num = SC_BUT_GPIO_NUM;
+ debounce.val = SC_BUT_DEBOUNCE;
+
/* Open GPIO device */
if (0 > (ctx->gpio_fd = open (GPIO_DEVICE_NAME, O_RDWR)))
{
@@ -104,6 +108,11 @@ simple_connect_init (struct managerd_ctx *ctx)
{
ctx->is_sc_available = 1;
}
+ if (0 > ioctl (ctx->gpio_fd, GPIOIOC_SETDEBOUNCE,
+ (unsigned long *) &debounce))
+ {
+ syslog (LOG_WARNING, "cannot call ioctl for SC gpio (%s)", strerror (errno));
+ }
/* Set GPIO interrupt for SC button */
if (0 > ioctl (ctx->gpio_fd, GPIOIOC_SETIT,