/********************************************************************************* * 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 * ChangeLog: 1, Release initial version on "2019年06月24日 23时46分47秒" * ********************************************************************************/ #ifndef _GPIO_H_ #define _GPIO_H_ #include #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_ ----- */