/*********************************************************************************
|
* Copyright: (C) 2019 LingYun IoT System Studio
|
* All rights reserved.
|
*
|
* Filename: gpio.h
|
* Description: This file is GPIO input/output functions
|
*
|
* Version: 1.0.0(2019年06月24日)
|
* Author: Guo Wenxue <guowenxue@gmail.com>
|
* ChangeLog: 1, Release initial version on "2019年06月24日 23时46分47秒"
|
*
|
********************************************************************************/
|
|
#ifndef _GPIO_H_
|
#define _GPIO_H_
|
|
#include <gpiod.h>
|
|
#define GPIO_MAXOUT 8
|
#define GPIO_MAXIN 4
|
|
typedef struct gpio_info_s
|
{
|
char name[32]; /* GPIO connected module name */
|
int pin; /* GPIO BCM pin number */
|
int active_level; /* active power level */
|
struct gpiod_line *line; /* gpiod line */
|
} gpio_info_t;
|
|
|
typedef struct gpio_s
|
{
|
gpio_info_t output[GPIO_MAXOUT]; /* GPIO output pins */
|
int outcnt; /* GPIO output numbers */
|
int light_intval; /* light on interval time */
|
|
gpio_info_t input[GPIO_MAXIN]; /* GPIO input pins */
|
int incnt; /* GPIO input numbers */
|
int infrared_enable; /* infrared enable or not */
|
} gpio_t;
|
|
extern int gpio_init(gpio_t *gpio);
|
extern void gpio_term(void);
|
|
/* turn which light on/off */
|
extern void gpio_out(char *name, char *cmd);
|
|
|
/*thread work body to turn light $name on for some seconds */
|
void *light_on_worker(void *arg);
|
|
/* Return value: 0(LOW): Nobody detected, !0: Which infrared detect incoming */
|
#define FLAG_INFRARED_INDOOR (1<<0)
|
#define FLAG_INFRARED_HALLWAY (1<<1)
|
extern int infrared_detect(void);
|
|
#endif /* ----- #ifndef _GPIO_H_ ----- */
|