m2mb API docs  25.30.004.0
m2mb API sets documentation
m2mb_gpio.h
Go to the documentation of this file.
1 /* $version: 252203 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
33 #ifndef M2M_M2MB_GPIO_API_H
34 #define M2M_M2MB_GPIO_API_H
35 
36 
37 /* Global declarations ==========================================================================*/
38 #ifndef NULL
39 #define NULL 0
40 #endif
41 
42 /* Global defines ==============================================================================*/
43 
44 
45 /*************************************************************************************************************/
46 /* use of gpio old interface is DEPRECATED for new project: enable it only for old already deployed project */
47 /* If an application from APPZONE is used, a good solution for using old GPIO is to create a */
48 /* makefile.in file and write in it the define: CPPFLAGS=-DENABLE_GPIO_OLD_INTERFACE */
49 /* instead of using the #define ENABLE_GPIO_OLD_INTERFACE below */
50 /*************************************************************************************************************/
51 /* #define ENABLE_GPIO_OLD_INTERFACE */
52 
53 
58 #define MAX_GPIO_PIN_NBR 11
59 
60 /* Global enums ==============================================================================*/
61 
62 typedef enum
63 {
86  ENUM_TO_INT( M2MB_GPIO_IOCTL_REQUEST_E )
88 
93 typedef enum
94 {
97  ENUM_TO_INT( M2MB_GPIO_DIRECTION_E )
99 
100 typedef enum
101 {
105  ENUM_TO_INT( M2MB_GPIO_TRIGGER_E )
107 
108 typedef enum
109 {
114  ENUM_TO_INT( M2MB_GPIO_PULL_MODE_E )
116 
123 typedef enum
124 {
128  ENUM_TO_INT( M2MB_GPIO_DRIVE_E )
129 
131 
136 typedef enum
137 {
140  ENUM_TO_INT( M2MB_GPIO_VALUE_E )
141 
143 
148 typedef enum
149 {
164  ENUM_TO_INT( M2M_GPIO_INTR_TYPE_E )
166 
167 
168 
177 typedef void ( *m2mb_gpio_intr_callback )( UINT32 fd, void *userdata );
178 
179 /* Global functions =============================================================================*/
180 
181 
182 /*-----------------------------------------------------------------------------------------------*/
205 /*-----------------------------------------------------------------------------------------------*/
206 
207 INT32 m2mb_gpio_open( const CHAR *path, INT32 flags, ... );
208 
209 
210 /*-----------------------------------------------------------------------------------------------*/
225 /*-----------------------------------------------------------------------------------------------*/
226 
227 
228 INT32 m2mb_gpio_close( INT32 fd );
229 
230 
231 /*-----------------------------------------------------------------------------------------------*/
276 
283 
322 /*-----------------------------------------------------------------------------------------------*/
323 
324 
325 INT32 m2mb_gpio_ioctl( INT32 fd, INT32 cmd, UINT32 arg);
326 
327 
328 /*-----------------------------------------------------------------------------------------------*/
405 /*-----------------------------------------------------------------------------------------------*/
406 
407 
408 INT32 m2mb_gpio_multi_ioctl( INT32 fd, UINT8 nCmds, ... );
409 
410 
411 /*-----------------------------------------------------------------------------------------------*/
439 /*-----------------------------------------------------------------------------------------------*/
440 
441 INT32 m2mb_gpio_read( INT32 fd, M2MB_GPIO_VALUE_E *value );
442 
443 
444 
445 /*-----------------------------------------------------------------------------------------------*/
466 /*-----------------------------------------------------------------------------------------------*/
467 
468 INT32 m2mb_gpio_write( INT32 fd, M2MB_GPIO_VALUE_E value );
469 
470 
471 #ifdef ENABLE_GPIO_OLD_INTERFACE
472 
473 /*************************************************************/
474 /* OLD GPIO INTERFACE */
475 /*************************************************************/
476 #warning "**** WARNING! ENABLE_GPIO_OLD_INTERFACE defined! "
477 
478 /* Global enums ==============================================================================*/
479 
480 enum M2MB_GPIO_IOCTL_REQUEST
481 {
482  M2MB_GPIO_IOCTL_SET_CFG, /* set gpio device configuration */
483  M2MB_GPIO_IOCTL_GET_CFG /* get gpio device configuration */
484 };
485 
486 /* Global typedefs ==============================================================================*/
487 
488 /* GPIO device configuration struct */
489 typedef struct
490 {
491  UINT8 direction;
492  UINT8 save_cfg;
493 } M2MB_GPIO_CNFG_T;
494 
495 
496 INT32 m2mb_gpio_ioctl_wrp( INT32 fd, INT32 request, ... );
497 
498 
499 SSIZE_T m2mb_gpio_read_wrp( INT32 fd, void *buf, SIZE_T nbyte );
500 
501 
502 SSIZE_T m2mb_gpio_write_wrp( INT32 fd, const void *buf, SIZE_T nbyte );
503 
504 
505 #define m2mb_gpio_read( fd, value, nbyte ) m2mb_gpio_read_wrp( fd, ( void * )value, nbyte )
506 #define m2mb_gpio_write( fd, value, nbyte ) m2mb_gpio_write_wrp( fd, ( void * )value, nbyte )
507 #define m2mb_gpio_ioctl( a... ) m2mb_gpio_ioctl_wrp( a )
508 #define M2MB_GPIO_CFG_T M2MB_GPIO_CNFG_T
509 
510 
511 
512 #endif /* ENABLE_GPIO_OLD_INTERFACE */
513 
514 
515 
516 #endif /* M2M_M2MB_GPIO_API_H */
517 
518 
M2MB_GPIO_IOCTL_SET_DRIVE
Definition: m2mb_gpio.h:68
M2MB_GPIO_LOW_DRIVE
Definition: m2mb_gpio.h:125
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:67
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:123
M2M_GPIO_INTR_TYPE_E
M2M_GPIO_INTR_TYPE_E
GPIO ISR type: callback or counter.
Definition: m2mb_gpio.h:148
INTR_COUNTER_SET_HP
Definition: m2mb_gpio.h:153
M2MB_GPIO_PULL_KEEPER
Definition: m2mb_gpio.h:112
M2MB_GPIO_HIGH_DRIVE
Definition: m2mb_gpio.h:127
M2MB_GPIO_INTR_NEGEDGE
Definition: m2mb_gpio.h:103
M2MB_GPIO_IOCTL_GET_ISR_COUNTER
Definition: m2mb_gpio.h:84
M2MB_GPIO_IOCTL_SET_DIR
Definition: m2mb_gpio.h:64
INTR_COUNTER_SET
Definition: m2mb_gpio.h:151
M2MB_GPIO_IOCTL_INIT_INTR
Definition: m2mb_gpio.h:70
M2MB_GPIO_LOW_VALUE
Definition: m2mb_gpio.h:138
M2MB_GPIO_PULL_MODE_E
M2MB_GPIO_PULL_MODE_E
Definition: m2mb_gpio.h:108
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:76
M2MB_GPIO_IOCTL_REQUEST_E
M2MB_GPIO_IOCTL_REQUEST_E
Definition: m2mb_gpio.h:62
M2MB_GPIO_VALUE_E
M2MB_GPIO_VALUE_E
GPIO output state specification.
Definition: m2mb_gpio.h:136
M2MB_GPIO_PULL_UP
Definition: m2mb_gpio.h:113
M2MB_GPIO_IOCTL_GET_DRIVE
Definition: m2mb_gpio.h:69
M2MB_GPIO_HIGH_VALUE
Definition: m2mb_gpio.h:139
M2MB_GPIO_DIRECTION_E
M2MB_GPIO_DIRECTION_E
enum used for gpio direction
Definition: m2mb_gpio.h:93
M2MB_GPIO_IOCTL_SET_INTR_TRIGGER
Definition: m2mb_gpio.h:79
M2MB_GPIO_IOCTL_GET_INTR_TYPE
Definition: m2mb_gpio.h:74
M2MB_GPIO_MODE_INPUT
Definition: m2mb_gpio.h:95
M2MB_GPIO_IOCTL_SET_INTR_CB
Definition: m2mb_gpio.h:75
M2MB_GPIO_IOCTL_GET_INTR_ARG
Definition: m2mb_gpio.h:78
M2MB_GPIO_IOCTL_DEINIT_INTR
Definition: m2mb_gpio.h:71
M2MB_GPIO_IOCTL_SET_INTR_TYPE
Definition: m2mb_gpio.h:72
M2MB_GPIO_IOCTL_SET_INTR_ARG
Definition: m2mb_gpio.h:77
M2MB_GPIO_MEDIUM_DRIVE
Definition: m2mb_gpio.h:126
M2MB_GPIO_TRIGGER_E
M2MB_GPIO_TRIGGER_E
Definition: m2mb_gpio.h:100
M2MB_GPIO_PULL_DOWN
Definition: m2mb_gpio.h:111
M2MB_GPIO_NO_PULL
Definition: m2mb_gpio.h:110
m2mb_gpio_intr_callback
void(* m2mb_gpio_intr_callback)(UINT32 fd, void *userdata)
GPIO interrupt callback function definition.
Definition: m2mb_gpio.h:177
M2MB_GPIO_IOCTL_GET_INTR_TRIGGER
Definition: m2mb_gpio.h:81
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:96
INTR_CB_SET
Definition: m2mb_gpio.h:150
M2MB_GPIO_IOCTL_SET_PULL
Definition: m2mb_gpio.h:66
M2MB_GPIO_IOCTL_SET_ISR_COUNTER
Definition: m2mb_gpio.h:83
M2MB_GPIO_INTR_ANYEDGE
Definition: m2mb_gpio.h:104
M2MB_GPIO_INTR_POSEDGE
Definition: m2mb_gpio.h:102
M2MB_GPIO_IOCTL_GET_DIR
Definition: m2mb_gpio.h:65