summaryrefslogtreecommitdiff
path: root/cleopatre/application/managerd/inc/gpio_event.h
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/application/managerd/inc/gpio_event.h')
-rw-r--r--cleopatre/application/managerd/inc/gpio_event.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/cleopatre/application/managerd/inc/gpio_event.h b/cleopatre/application/managerd/inc/gpio_event.h
new file mode 100644
index 0000000000..422a52e3b8
--- /dev/null
+++ b/cleopatre/application/managerd/inc/gpio_event.h
@@ -0,0 +1,135 @@
+/*
+ * cleopatre/application/managerd/inc/gpio_event.h
+ *
+ * (C) Copyright 2010 SPiDCOM Technologies
+ *
+ * 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., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#ifndef GPIO_EVENT_H
+#define GPIO_EVENT_H
+
+#include "../../linux/autoconf.h"
+
+struct managerd_ctx;
+
+/** GPIO number for SC button and it associated LED */
+#define SC_BUT_GPIO_NUM 1
+
+/** LED GPIO numbers */
+#define LED_ATTACHMENT_GPIO_NUM 3
+#if (defined CONFIG_MACH_SPK300G || defined CONFIG_MACH_SPK300)
+# define LED1_GPIO_NUM 13
+# define LED2_GPIO_NUM 12
+#endif
+
+/** Blinking timers */
+#define LED_FAST_TIMER_US 100000
+#define LED_LOW_TIMER_US 500000
+
+/** name of the gpio device */
+#define GPIO_DEVICE_NAME "/dev/gpio"
+
+/**
+ * Simple Connect detection event.
+ *
+ * \param ctx managerd context
+ * \return error code
+ */
+int
+simple_connect_event (struct managerd_ctx *ctx);
+
+/**
+ * Open and set GPIO direction.
+ *
+ * \param ctx managerd context
+ * \return error code
+ */
+int
+simple_connect_init (struct managerd_ctx *ctx);
+
+/**
+ * Close gpio device.
+ *
+ * \param ctx managerd context
+ */
+void
+simple_connect_uninit (struct managerd_ctx *ctx);
+
+/**
+ * Handle SIGALRM reception.
+ *
+ * \param signal_nb signal identifier
+ */
+void
+led_signal_handler (int signal_nb);
+
+/**
+ * When timer expires, this function is called to invert current value of LED,
+ * in order to make it blink.
+ */
+void
+led_flashing (void);
+
+/**
+ * LED attachment event.
+ *
+ * \param ctx managerd context
+ * \param status current status value from hpav.info
+ * \param is_sc current Simple Connect value from hpav.info
+ * \return error code
+ */
+int
+led_attachment_event (struct managerd_ctx *ctx, const char *status,
+ libspid_boolean_t is_sc);
+
+/**
+ * LED1 event.
+ *
+ * \param ctx managerd context
+ * \param cco current CCo value from hpav.info
+ * \return error code
+ */
+int
+led1_event (struct managerd_ctx *ctx, const char *cco);
+
+/**
+ * LED2 event.
+ *
+ * \param ctx managerd context
+ * \param is_backup_cco current backup CCo value from hpav.info
+ * \return error code
+ */
+int
+led2_event (struct managerd_ctx *ctx, libspid_boolean_t is_backup_cco);
+
+/**
+ * Initialize LED-s: set GPIO direction and value.
+ *
+ * \param ctx managerd context
+ * \return error code
+ */
+int
+led_init (struct managerd_ctx *ctx);
+
+/**
+ * Uninitialize LED-s: reset GPIO value.
+ *
+ * \param ctx managerd context
+ */
+void
+led_uninit (struct managerd_ctx *ctx);
+
+#endif /* GPIO_EVENT_H */