libwebsockets
Lightweight C library for HTML5 websockets
Toggle main menu visibility
Loading...
Searching...
No Matches
lws-gpio.h
Go to the documentation of this file.
1
/*
2
* Generic GPIO ops
3
*
4
* Copyright (C) 2019 - 2020 Andy Green <andy@warmcat.com>
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
* IN THE SOFTWARE.
23
*
24
* This is like an abstract class for gpio, a real implementation provides
25
* functions for the ops that use the underlying OS gpio arrangements.
26
*/
27
28
#if !defined(__LWS_GPIO_H__)
29
#define __LWS_GPIO_H__
30
31
typedef
int
_lws_plat_gpio_t
;
32
33
typedef
enum
{
34
LWSGGPIO_IRQ_NONE
,
35
LWSGGPIO_IRQ_RISING
,
36
LWSGGPIO_IRQ_FALLING
,
37
LWSGGPIO_IRQ_CHANGE
,
38
LWSGGPIO_IRQ_LOW
,
39
LWSGGPIO_IRQ_HIGH
40
}
lws_gpio_irq_t
;
41
42
enum
{
43
LWSGGPIO_FL_READ
= (1 << 0),
44
LWSGGPIO_FL_WRITE
= (1 << 1),
45
LWSGGPIO_FL_PULLUP
= (1 << 2),
46
LWSGGPIO_FL_PULLDOWN
= (1 << 3),
47
LWSGGPIO_FL_START_LOW
= (1 << 4),
48
};
49
50
typedef
void (*
lws_gpio_irq_cb_t
)(
void
*arg);
51
52
typedef
struct
lws_gpio_ops
{
53
void (*
mode
)(
_lws_plat_gpio_t
gpio,
int
flags);
54
int (*
read
)(
_lws_plat_gpio_t
gpio);
55
void (*
set
)(
_lws_plat_gpio_t
gpio,
int
val);
56
int (*
irq_mode
)(
_lws_plat_gpio_t
gpio,
lws_gpio_irq_t
irq,
57
lws_gpio_irq_cb_t
cb,
void
*arg);
58
}
lws_gpio_ops_t
;
59
60
#endif
lws_gpio_irq_t
lws_gpio_irq_t
Definition
lws-gpio.h:33
LWSGGPIO_IRQ_FALLING
@ LWSGGPIO_IRQ_FALLING
Definition
lws-gpio.h:36
LWSGGPIO_IRQ_RISING
@ LWSGGPIO_IRQ_RISING
Definition
lws-gpio.h:35
LWSGGPIO_IRQ_LOW
@ LWSGGPIO_IRQ_LOW
Definition
lws-gpio.h:38
LWSGGPIO_IRQ_NONE
@ LWSGGPIO_IRQ_NONE
Definition
lws-gpio.h:34
LWSGGPIO_IRQ_HIGH
@ LWSGGPIO_IRQ_HIGH
Definition
lws-gpio.h:39
LWSGGPIO_IRQ_CHANGE
@ LWSGGPIO_IRQ_CHANGE
Definition
lws-gpio.h:37
lws_gpio_ops_t
struct lws_gpio_ops lws_gpio_ops_t
LWSGGPIO_FL_READ
@ LWSGGPIO_FL_READ
Definition
lws-gpio.h:43
LWSGGPIO_FL_PULLUP
@ LWSGGPIO_FL_PULLUP
Definition
lws-gpio.h:45
LWSGGPIO_FL_START_LOW
@ LWSGGPIO_FL_START_LOW
Definition
lws-gpio.h:47
LWSGGPIO_FL_PULLDOWN
@ LWSGGPIO_FL_PULLDOWN
Definition
lws-gpio.h:46
LWSGGPIO_FL_WRITE
@ LWSGGPIO_FL_WRITE
Definition
lws-gpio.h:44
lws_gpio_irq_cb_t
void(* lws_gpio_irq_cb_t)(void *arg)
Definition
lws-gpio.h:50
_lws_plat_gpio_t
int _lws_plat_gpio_t
Definition
lws-gpio.h:31
lws_gpio_ops
Definition
lws-gpio.h:52
lws_gpio_ops::mode
void(* mode)(_lws_plat_gpio_t gpio, int flags)
Definition
lws-gpio.h:53
lws_gpio_ops::read
int(* read)(_lws_plat_gpio_t gpio)
Definition
lws-gpio.h:54
lws_gpio_ops::irq_mode
int(* irq_mode)(_lws_plat_gpio_t gpio, lws_gpio_irq_t irq, lws_gpio_irq_cb_t cb, void *arg)
Definition
lws-gpio.h:56
lws_gpio_ops::set
void(* set)(_lws_plat_gpio_t gpio, int val)
Definition
lws-gpio.h:55
include
libwebsockets
lws-gpio.h
Generated on
for libwebsockets by
1.18.0