m2mb API docs  30.00.007
m2mb API sets documentation
m2mb_gpio.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
32 #ifndef M2M_M2MB_GPIO_API_H
33 #define M2M_M2MB_GPIO_API_H
34 
35 
36 /* Global declarations ==========================================================================*/
37 #ifndef NULL
38 #define NULL 0
39 #endif
40 
41 /* Global defines ==============================================================================*/
42 
43 
44 /*************************************************************************************************************/
45 /* use of gpio old interface is DEPRECATED for new project: enable it only for old already deployed project */
46 /* If an application from APPZONE is used, a good solution for using old GPIO is to create a */
47 /* makefile.in file and write in it the define: CPPFLAGS=-DENABLE_GPIO_OLD_INTERFACE */
48 /* instead of using the #define ENABLE_GPIO_OLD_INTERFACE below */
49 /*************************************************************************************************************/
50 /* #define ENABLE_GPIO_OLD_INTERFACE */
51 
52 
57 #define MAX_GPIO_PIN_NBR 11
58 
59 /* Global enums ==============================================================================*/
60 
61 typedef enum
62 {
81  ENUM_TO_INT( M2MB_GPIO_IOCTL_REQUEST_E )
83 
88 typedef enum
89 {
92  ENUM_TO_INT( M2MB_GPIO_DIRECTION_E )
94 
95 typedef enum
96 {
100  ENUM_TO_INT( M2MB_GPIO_TRIGGER_E )
102 
103 typedef enum
104 {
109  ENUM_TO_INT( M2MB_GPIO_PULL_MODE_E )
111 
118 typedef enum
119 {
123  ENUM_TO_INT( M2MB_GPIO_DRIVE_E )
124 
126 
131 typedef enum
132 {
135  ENUM_TO_INT( M2MB_GPIO_VALUE_E )
136 
138 
143 typedef enum
144 {
147  ENUM_TO_INT( M2M_GPIO_INTR_TYPE_E )
149 
150 
151 
160 typedef void ( *m2mb_gpio_intr_callback )( UINT32 fd, void *userdata );
161 
162 /* Global functions =============================================================================*/
163 
164 
165 /*-----------------------------------------------------------------------------------------------*/
187 /*-----------------------------------------------------------------------------------------------*/
188 
189 INT32 m2mb_gpio_open( const CHAR *path, INT32 flags, ... );
190 
191 
192 /*-----------------------------------------------------------------------------------------------*/
206 /*-----------------------------------------------------------------------------------------------*/
207 
208 
209 INT32 m2mb_gpio_close( INT32 fd );
210 
211 
212 /*-----------------------------------------------------------------------------------------------*/
252 
259 
298 /*-----------------------------------------------------------------------------------------------*/
299 
300 
301 INT32 m2mb_gpio_ioctl( INT32 fd, INT32 cmd, UINT32 arg);
302 
303 
304 /*-----------------------------------------------------------------------------------------------*/
358 /*-----------------------------------------------------------------------------------------------*/
359 
360 
361 INT32 m2mb_gpio_multi_ioctl( INT32 fd, UINT8 nCmds, ... );
362 
363 
364 /*-----------------------------------------------------------------------------------------------*/
392 /*-----------------------------------------------------------------------------------------------*/
393 
394 INT32 m2mb_gpio_read( INT32 fd, M2MB_GPIO_VALUE_E *value );
395 
396 
397 
398 /*-----------------------------------------------------------------------------------------------*/
419 /*-----------------------------------------------------------------------------------------------*/
420 
421 INT32 m2mb_gpio_write( INT32 fd, M2MB_GPIO_VALUE_E value );
422 
423 
424 #ifdef ENABLE_GPIO_OLD_INTERFACE
425 
426 /*************************************************************/
427 /* OLD GPIO INTERFACE */
428 /*************************************************************/
429 #warning "**** WARNING! ENABLE_GPIO_OLD_INTERFACE defined! "
430 
431 /* Global enums ==============================================================================*/
432 
433 enum M2MB_GPIO_IOCTL_REQUEST
434 {
435  M2MB_GPIO_IOCTL_SET_CFG, /* set gpio device configuration */
436  M2MB_GPIO_IOCTL_GET_CFG /* get gpio device configuration */
437 };
438 
439 /* Global typedefs ==============================================================================*/
440 
441 /* GPIO device configuration struct */
442 typedef struct
443 {
444  UINT8 direction;
445  UINT8 save_cfg;
446 } M2MB_GPIO_CNFG_T;
447 
448 
449 INT32 m2mb_gpio_ioctl_wrp( INT32 fd, INT32 request, ... );
450 
451 
452 SSIZE_T m2mb_gpio_read_wrp( INT32 fd, void *buf, SIZE_T nbyte );
453 
454 
455 SSIZE_T m2mb_gpio_write_wrp( INT32 fd, const void *buf, SIZE_T nbyte );
456 
457 
458 #define m2mb_gpio_read( fd, value, nbyte ) m2mb_gpio_read_wrp( fd, ( void * )value, nbyte )
459 #define m2mb_gpio_write( fd, value, nbyte ) m2mb_gpio_write_wrp( fd, ( void * )value, nbyte )
460 #define m2mb_gpio_ioctl( a... ) m2mb_gpio_ioctl_wrp( a )
461 #define M2MB_GPIO_CFG_T M2MB_GPIO_CNFG_T
462 
463 
464 
465 #endif /* ENABLE_GPIO_OLD_INTERFACE */
466 
467 
468 
469 #endif /* M2M_M2MB_GPIO_API_H */
470 
471 
M2MB_GPIO_IOCTL_SET_DRIVE
Definition: m2mb_gpio.h:67
M2MB_GPIO_LOW_DRIVE
Definition: m2mb_gpio.h:120
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:66
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:118
M2M_GPIO_INTR_TYPE_E
M2M_GPIO_INTR_TYPE_E
GPIO ISR type: callback or counter.
Definition: m2mb_gpio.h:143
M2MB_GPIO_PULL_KEEPER
Definition: m2mb_gpio.h:107
M2MB_GPIO_HIGH_DRIVE
Definition: m2mb_gpio.h:122
M2MB_GPIO_INTR_NEGEDGE
Definition: m2mb_gpio.h:98
M2MB_GPIO_IOCTL_GET_ISR_COUNTER
Definition: m2mb_gpio.h:80
M2MB_GPIO_IOCTL_SET_DIR
Definition: m2mb_gpio.h:63
INTR_COUNTER_SET
Definition: m2mb_gpio.h:146
M2MB_GPIO_IOCTL_INIT_INTR
Definition: m2mb_gpio.h:69
M2MB_GPIO_LOW_VALUE
Definition: m2mb_gpio.h:133
M2MB_GPIO_PULL_MODE_E
M2MB_GPIO_PULL_MODE_E
Definition: m2mb_gpio.h:103
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:74
M2MB_GPIO_IOCTL_REQUEST_E
M2MB_GPIO_IOCTL_REQUEST_E
Definition: m2mb_gpio.h:61
M2MB_GPIO_VALUE_E
M2MB_GPIO_VALUE_E
GPIO output state specification.
Definition: m2mb_gpio.h:131
M2MB_GPIO_PULL_UP
Definition: m2mb_gpio.h:108
M2MB_GPIO_IOCTL_GET_DRIVE
Definition: m2mb_gpio.h:68
M2MB_GPIO_HIGH_VALUE
Definition: m2mb_gpio.h:134
M2MB_GPIO_DIRECTION_E
M2MB_GPIO_DIRECTION_E
enum used for gpio direction
Definition: m2mb_gpio.h:88
M2MB_GPIO_IOCTL_SET_INTR_TRIGGER
Definition: m2mb_gpio.h:77
M2MB_GPIO_IOCTL_GET_INTR_TYPE
Definition: m2mb_gpio.h:72
M2MB_GPIO_MODE_INPUT
Definition: m2mb_gpio.h:90
M2MB_GPIO_IOCTL_SET_INTR_CB
Definition: m2mb_gpio.h:73
M2MB_GPIO_IOCTL_GET_INTR_ARG
Definition: m2mb_gpio.h:76
M2MB_GPIO_IOCTL_DEINIT_INTR
Definition: m2mb_gpio.h:70
M2MB_GPIO_IOCTL_SET_INTR_TYPE
Definition: m2mb_gpio.h:71
M2MB_GPIO_IOCTL_SET_INTR_ARG
Definition: m2mb_gpio.h:75
M2MB_GPIO_MEDIUM_DRIVE
Definition: m2mb_gpio.h:121
M2MB_GPIO_TRIGGER_E
M2MB_GPIO_TRIGGER_E
Definition: m2mb_gpio.h:95
M2MB_GPIO_PULL_DOWN
Definition: m2mb_gpio.h:106
M2MB_GPIO_NO_PULL
Definition: m2mb_gpio.h:105
m2mb_gpio_intr_callback
void(* m2mb_gpio_intr_callback)(UINT32 fd, void *userdata)
GPIO interrupt callback function definition.
Definition: m2mb_gpio.h:160
M2MB_GPIO_IOCTL_GET_INTR_TRIGGER
Definition: m2mb_gpio.h:78
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:91
INTR_CB_SET
Definition: m2mb_gpio.h:145
M2MB_GPIO_IOCTL_SET_PULL
Definition: m2mb_gpio.h:65
M2MB_GPIO_IOCTL_SET_ISR_COUNTER
Definition: m2mb_gpio.h:79
M2MB_GPIO_INTR_ANYEDGE
Definition: m2mb_gpio.h:99
M2MB_GPIO_INTR_POSEDGE
Definition: m2mb_gpio.h:97
M2MB_GPIO_IOCTL_GET_DIR
Definition: m2mb_gpio.h:64