RaspberrPi project source code
Guo Wenxue
2024-12-29 e30a4c8103e221201e5bfc1e3f9b19e7a86f68d4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*********************************************************************************
 *      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_  ----- */