m2mb API docs  25.30.006.0
m2mb API sets documentation
m2mb_gpio.h
Go to the documentation of this file.
1 /* $version: 252304 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
34 #ifndef M2M_M2MB_GPIO_API_H
35 #define M2M_M2MB_GPIO_API_H
36 
37 
38 /* Global declarations ==========================================================================*/
39 #ifndef NULL
40 #define NULL 0
41 #endif
42 
43 /* Global defines ==============================================================================*/
44 
45 
46 /*************************************************************************************************************/
47 /* use of gpio old interface is DEPRECATED for new project: enable it only for old already deployed project */
48 /* If an application from APPZONE is used, a good solution for using old GPIO is to create a */
49 /* makefile.in file and write in it the define: CPPFLAGS=-DENABLE_GPIO_OLD_INTERFACE */
50 /* instead of using the #define ENABLE_GPIO_OLD_INTERFACE below */
51 /*************************************************************************************************************/
52 /* #define ENABLE_GPIO_OLD_INTERFACE */
53 
54 
59 #define MAX_GPIO_PIN_NBR 11
60 #define M2MB_GPIO_ISR_IS_ENABLED 1
61 #define M2MB_GPIO_ISR_IS_DISABLED 0
62 
63 
64 #define m2mb_gpio_multi_ioctl_( fd, args... ) m2mb_gpio_multi_ioctl( fd, CMDS_ARGS( args ) )
65 
66 /* Global enums ==============================================================================*/
67 
68 typedef enum
69 {
95  ENUM_TO_INT( M2MB_GPIO_IOCTL_REQUEST_E )
97 
102 typedef enum
103 {
106  ENUM_TO_INT( M2MB_GPIO_DIRECTION_E )
108 
109 typedef enum
110 {
114  ENUM_TO_INT( M2MB_GPIO_TRIGGER_E )
116 
117 typedef enum
118 {
123  ENUM_TO_INT( M2MB_GPIO_PULL_MODE_E )
125 
132 typedef enum
133 {
137  ENUM_TO_INT( M2MB_GPIO_DRIVE_E )
138 
140 
145 typedef enum
146 {
149  ENUM_TO_INT( M2MB_GPIO_VALUE_E )
150 
152 
157 typedef enum
158 {
173  ENUM_TO_INT( M2M_GPIO_INTR_TYPE_E )
175 
176 
177 
186 typedef void ( *m2mb_gpio_intr_callback )( UINT32 fd, void *userdata );
187 
188 /* Global functions =============================================================================*/
189 
190 
191 /*-----------------------------------------------------------------------------------------------*/
228 
235 
255 /*-----------------------------------------------------------------------------------------------*/
256 
257 INT32 m2mb_gpio_open( const CHAR *path, INT32 flags, ... );
258 
259 
260 /*-----------------------------------------------------------------------------------------------*/
275 /*-----------------------------------------------------------------------------------------------*/
276 
277 
278 INT32 m2mb_gpio_close( INT32 fd );
279 
280 
281 /*-----------------------------------------------------------------------------------------------*/
326 
333 
376 
386 
391 /*-----------------------------------------------------------------------------------------------*/
392 
393 
394 INT32 m2mb_gpio_ioctl( INT32 fd, INT32 cmd, UINT32 arg);
395 
396 
397 /*-----------------------------------------------------------------------------------------------*/
474 /*-----------------------------------------------------------------------------------------------*/
475 
476 
477 INT32 m2mb_gpio_multi_ioctl( INT32 fd, UINT8 nCmds, ... );
478 
479 
480 /*-----------------------------------------------------------------------------------------------*/
513 /*-----------------------------------------------------------------------------------------------*/
514 
515 INT32 m2mb_gpio_read( INT32 fd, M2MB_GPIO_VALUE_E *value );
516 
517 
518 
519 /*-----------------------------------------------------------------------------------------------*/
540 /*-----------------------------------------------------------------------------------------------*/
541 
542 INT32 m2mb_gpio_write( INT32 fd, M2MB_GPIO_VALUE_E value );
543 
544 
545 #ifdef ENABLE_GPIO_OLD_INTERFACE
546 
547 /*************************************************************/
548 /* OLD GPIO INTERFACE */
549 /*************************************************************/
550 #warning "**** WARNING! ENABLE_GPIO_OLD_INTERFACE defined! "
551 
552 /* Global enums ==============================================================================*/
553 
554 enum M2MB_GPIO_IOCTL_REQUEST
555 {
556  M2MB_GPIO_IOCTL_SET_CFG, /* set gpio device configuration */
557  M2MB_GPIO_IOCTL_GET_CFG /* get gpio device configuration */
558 };
559 
560 /* Global typedefs ==============================================================================*/
561 
562 /* GPIO device configuration struct */
563 typedef struct
564 {
565  UINT8 direction;
566  UINT8 save_cfg;
567 } M2MB_GPIO_CNFG_T;
568 
569 
570 INT32 m2mb_gpio_ioctl_wrp( INT32 fd, INT32 request, ... );
571 
572 
573 SSIZE_T m2mb_gpio_read_wrp( INT32 fd, void *buf, SIZE_T nbyte );
574 
575 
576 SSIZE_T m2mb_gpio_write_wrp( INT32 fd, const void *buf, SIZE_T nbyte );
577 
578 
579 #define m2mb_gpio_read( fd, value, nbyte ) m2mb_gpio_read_wrp( fd, ( void * )value, nbyte )
580 #define m2mb_gpio_write( fd, value, nbyte ) m2mb_gpio_write_wrp( fd, ( void * )value, nbyte )
581 #define m2mb_gpio_ioctl( a... ) m2mb_gpio_ioctl_wrp( a )
582 #define M2MB_GPIO_CFG_T M2MB_GPIO_CNFG_T
583 
584 
585 
586 #endif /* ENABLE_GPIO_OLD_INTERFACE */
587 
588 
589 
590 #endif /* M2M_M2MB_GPIO_API_H */
591 
592 
M2MB_GPIO_IOCTL_SET_DRIVE
Definition: m2mb_gpio.h:74
M2MB_GPIO_LOW_DRIVE
Definition: m2mb_gpio.h:134
m2mb_gpio_multi_ioctl
INT32 m2mb_gpio_multi_ioctl(INT32 fd, UINT8 nCmds,...)
: multiple configuration of a GPIO device.
M2MB_GPIO_IOCTL_GET_PULL
Definition: m2mb_gpio.h:73
m2mb_gpio_open
INT32 m2mb_gpio_open(const CHAR *path, INT32 flags,...)
open a GPIO device
m2mb_gpio_ioctl
INT32 m2mb_gpio_ioctl(INT32 fd, INT32 cmd, UINT32 arg)
configure a GPIO device
M2MB_GPIO_DRIVE_E
M2MB_GPIO_DRIVE_E
GPIO pin drive strength.
Definition: m2mb_gpio.h:132
M2M_GPIO_INTR_TYPE_E
M2M_GPIO_INTR_TYPE_E
GPIO ISR type: callback or counter.
Definition: m2mb_gpio.h:157
INTR_COUNTER_SET_HP
Definition: m2mb_gpio.h:162
M2MB_GPIO_PULL_KEEPER
Definition: m2mb_gpio.h:121
M2MB_GPIO_HIGH_DRIVE
Definition: m2mb_gpio.h:136
M2MB_GPIO_INTR_NEGEDGE
Definition: m2mb_gpio.h:112
M2MB_GPIO_IOCTL_GET_ISR_COUNTER
Definition: m2mb_gpio.h:90
M2MB_GPIO_IOCTL_SET_DIR
Definition: m2mb_gpio.h:70
INTR_COUNTER_SET
Definition: m2mb_gpio.h:160
M2MB_GPIO_IOCTL_INIT_INTR
Definition: m2mb_gpio.h:76
M2MB_GPIO_IOCTL_GET_GPIO_N
Definition: m2mb_gpio.h:92
M2MB_GPIO_LOW_VALUE
Definition: m2mb_gpio.h:147
M2MB_GPIO_PULL_MODE_E
M2MB_GPIO_PULL_MODE_E
Definition: m2mb_gpio.h:117
m2mb_gpio_read
INT32 m2mb_gpio_read(INT32 fd, M2MB_GPIO_VALUE_E *value)
Reads the state of a GPIO pin.
M2MB_GPIO_IOCTL_GET_INTR_CB
Definition: m2mb_gpio.h:82
M2MB_GPIO_IOCTL_REQUEST_E
M2MB_GPIO_IOCTL_REQUEST_E
Definition: m2mb_gpio.h:68
M2MB_GPIO_VALUE_E
M2MB_GPIO_VALUE_E
GPIO output state specification.
Definition: m2mb_gpio.h:145
M2MB_GPIO_PULL_UP
Definition: m2mb_gpio.h:122
M2MB_GPIO_IOCTL_GET_DRIVE
Definition: m2mb_gpio.h:75
M2MB_GPIO_HIGH_VALUE
Definition: m2mb_gpio.h:148
M2MB_GPIO_DIRECTION_E
M2MB_GPIO_DIRECTION_E
enum used for gpio direction
Definition: m2mb_gpio.h:102
M2MB_GPIO_IOCTL_SET_INTR_TRIGGER
Definition: m2mb_gpio.h:85
M2MB_GPIO_IOCTL_GET_INTR_TYPE
Definition: m2mb_gpio.h:80
M2MB_GPIO_MODE_INPUT
Definition: m2mb_gpio.h:104
M2MB_GPIO_IOCTL_SET_INTR_CB
Definition: m2mb_gpio.h:81
M2MB_GPIO_IOCTL_GET_INTR_ARG
Definition: m2mb_gpio.h:84
M2MB_GPIO_IOCTL_DEINIT_INTR
Definition: m2mb_gpio.h:77
M2MB_GPIO_IOCTL_SET_INTR_TYPE
Definition: m2mb_gpio.h:78
M2MB_GPIO_IOCTL_SET_INTR_ARG
Definition: m2mb_gpio.h:83
M2MB_GPIO_MEDIUM_DRIVE
Definition: m2mb_gpio.h:135
M2MB_GPIO_TRIGGER_E
M2MB_GPIO_TRIGGER_E
Definition: m2mb_gpio.h:109
M2MB_GPIO_PULL_DOWN
Definition: m2mb_gpio.h:120
M2MB_GPIO_NO_PULL
Definition: m2mb_gpio.h:119
m2mb_gpio_intr_callback
void(* m2mb_gpio_intr_callback)(UINT32 fd, void *userdata)
GPIO interrupt callback function definition.
Definition: m2mb_gpio.h:186
M2MB_GPIO_IOCTL_GET_INTR_TRIGGER
Definition: m2mb_gpio.h:87
m2mb_gpio_write
INT32 m2mb_gpio_write(INT32 fd, M2MB_GPIO_VALUE_E value)
write the value of a GPIO device
m2mb_gpio_close
INT32 m2mb_gpio_close(INT32 fd)
close a GPIO device
M2MB_GPIO_MODE_OUTPUT
Definition: m2mb_gpio.h:105
INTR_CB_SET
Definition: m2mb_gpio.h:159
M2MB_GPIO_IOCTL_SET_PULL
Definition: m2mb_gpio.h:72
M2MB_GPIO_IOCTL_GET_INTR
Definition: m2mb_gpio.h:93
M2MB_GPIO_IOCTL_SET_ISR_COUNTER
Definition: m2mb_gpio.h:89
M2MB_GPIO_INTR_ANYEDGE
Definition: m2mb_gpio.h:113
M2MB_GPIO_INTR_POSEDGE
Definition: m2mb_gpio.h:111
M2MB_GPIO_IOCTL_GET_DIR
Definition: m2mb_gpio.h:71