m2mb API docs  37.00.004.1
m2mb API sets documentation
m2mb_gpio.h
Go to the documentation of this file.
1 /* $version: 372135 */
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 #define m2mb_gpio_multi_ioctl_( fd, args... ) m2mb_gpio_multi_ioctl( fd, CMDS_ARGS( args ) )
64 
65 /* Global enums ==============================================================================*/
66 
67 typedef enum
68 {
94  ENUM_TO_INT( M2MB_GPIO_IOCTL_REQUEST_E )
96 
101 typedef enum
102 {
105  ENUM_TO_INT( M2MB_GPIO_DIRECTION_E )
107 
108 typedef enum
109 {
113  ENUM_TO_INT( M2MB_GPIO_TRIGGER_E )
115 
116 typedef enum
117 {
122  ENUM_TO_INT( M2MB_GPIO_PULL_MODE_E )
124 
131 typedef enum
132 {
136  ENUM_TO_INT( M2MB_GPIO_DRIVE_E )
137 
139 
144 typedef enum
145 {
148  ENUM_TO_INT( M2MB_GPIO_VALUE_E )
149 
151 
156 typedef enum
157 {
172  ENUM_TO_INT( M2M_GPIO_INTR_TYPE_E )
174 
175 
176 
185 typedef void ( *m2mb_gpio_intr_callback )( UINT32 fd, void *userdata );
186 
187 /* Global functions =============================================================================*/
188 
189 
190 /*-----------------------------------------------------------------------------------------------*/
213 /*-----------------------------------------------------------------------------------------------*/
214 
215 INT32 m2mb_gpio_open( const CHAR *path, INT32 flags, ... );
216 
217 
218 /*-----------------------------------------------------------------------------------------------*/
233 /*-----------------------------------------------------------------------------------------------*/
234 
235 
236 INT32 m2mb_gpio_close( INT32 fd );
237 
238 
239 /*-----------------------------------------------------------------------------------------------*/
284 
291 
330 /*-----------------------------------------------------------------------------------------------*/
331 
332 
333 INT32 m2mb_gpio_ioctl( INT32 fd, INT32 cmd, UINT32 arg);
334 
335 
336 /*-----------------------------------------------------------------------------------------------*/
413 /*-----------------------------------------------------------------------------------------------*/
414 
415 
416 INT32 m2mb_gpio_multi_ioctl( INT32 fd, UINT8 nCmds, ... );
417 
418 
419 /*-----------------------------------------------------------------------------------------------*/
447 /*-----------------------------------------------------------------------------------------------*/
448 
449 INT32 m2mb_gpio_read( INT32 fd, M2MB_GPIO_VALUE_E *value );
450 
451 
452 
453 /*-----------------------------------------------------------------------------------------------*/
474 /*-----------------------------------------------------------------------------------------------*/
475 
476 INT32 m2mb_gpio_write( INT32 fd, M2MB_GPIO_VALUE_E value );
477 
478 
479 #ifdef ENABLE_GPIO_OLD_INTERFACE
480 
481 /*************************************************************/
482 /* OLD GPIO INTERFACE */
483 /*************************************************************/
484 #warning "**** WARNING! ENABLE_GPIO_OLD_INTERFACE defined! "
485 
486 /* Global enums ==============================================================================*/
487 
488 enum M2MB_GPIO_IOCTL_REQUEST
489 {
490  M2MB_GPIO_IOCTL_SET_CFG, /* set gpio device configuration */
491  M2MB_GPIO_IOCTL_GET_CFG /* get gpio device configuration */
492 };
493 
494 /* Global typedefs ==============================================================================*/
495 
496 /* GPIO device configuration struct */
497 typedef struct
498 {
499  UINT8 direction;
500  UINT8 save_cfg;
501 } M2MB_GPIO_CNFG_T;
502 
503 
504 INT32 m2mb_gpio_ioctl_wrp( INT32 fd, INT32 request, ... );
505 
506 
507 SSIZE_T m2mb_gpio_read_wrp( INT32 fd, void *buf, SIZE_T nbyte );
508 
509 
510 SSIZE_T m2mb_gpio_write_wrp( INT32 fd, const void *buf, SIZE_T nbyte );
511 
512 
513 #define m2mb_gpio_read( fd, value, nbyte ) m2mb_gpio_read_wrp( fd, ( void * )value, nbyte )
514 #define m2mb_gpio_write( fd, value, nbyte ) m2mb_gpio_write_wrp( fd, ( void * )value, nbyte )
515 #define m2mb_gpio_ioctl( a... ) m2mb_gpio_ioctl_wrp( a )
516 #define M2MB_GPIO_CFG_T M2MB_GPIO_CNFG_T
517 
518 
519 
520 #endif /* ENABLE_GPIO_OLD_INTERFACE */
521 
522 
523 
524 #endif /* M2M_M2MB_GPIO_API_H */
525 
526 
M2MB_GPIO_IOCTL_SET_DRIVE
Definition: m2mb_gpio.h:73
M2MB_GPIO_LOW_DRIVE
Definition: m2mb_gpio.h:133
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:72
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:131
M2M_GPIO_INTR_TYPE_E
M2M_GPIO_INTR_TYPE_E
GPIO ISR type: callback or counter.
Definition: m2mb_gpio.h:156
INTR_COUNTER_SET_HP
Definition: m2mb_gpio.h:161
M2MB_GPIO_PULL_KEEPER
Definition: m2mb_gpio.h:120
M2MB_GPIO_HIGH_DRIVE
Definition: m2mb_gpio.h:135
M2MB_GPIO_INTR_NEGEDGE
Definition: m2mb_gpio.h:111
M2MB_GPIO_IOCTL_GET_ISR_COUNTER
Definition: m2mb_gpio.h:89
M2MB_GPIO_IOCTL_SET_DIR
Definition: m2mb_gpio.h:69
INTR_COUNTER_SET
Definition: m2mb_gpio.h:159
M2MB_GPIO_IOCTL_INIT_INTR
Definition: m2mb_gpio.h:75
M2MB_GPIO_IOCTL_GET_GPIO_N
Definition: m2mb_gpio.h:91
M2MB_GPIO_LOW_VALUE
Definition: m2mb_gpio.h:146
M2MB_GPIO_PULL_MODE_E
M2MB_GPIO_PULL_MODE_E
Definition: m2mb_gpio.h:116
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:81
M2MB_GPIO_IOCTL_REQUEST_E
M2MB_GPIO_IOCTL_REQUEST_E
Definition: m2mb_gpio.h:67
M2MB_GPIO_VALUE_E
M2MB_GPIO_VALUE_E
GPIO output state specification.
Definition: m2mb_gpio.h:144
M2MB_GPIO_PULL_UP
Definition: m2mb_gpio.h:121
M2MB_GPIO_IOCTL_GET_DRIVE
Definition: m2mb_gpio.h:74
M2MB_GPIO_HIGH_VALUE
Definition: m2mb_gpio.h:147
M2MB_GPIO_DIRECTION_E
M2MB_GPIO_DIRECTION_E
enum used for gpio direction
Definition: m2mb_gpio.h:101
M2MB_GPIO_IOCTL_SET_INTR_TRIGGER
Definition: m2mb_gpio.h:84
M2MB_GPIO_IOCTL_GET_INTR_TYPE
Definition: m2mb_gpio.h:79
M2MB_GPIO_MODE_INPUT
Definition: m2mb_gpio.h:103
M2MB_GPIO_IOCTL_SET_INTR_CB
Definition: m2mb_gpio.h:80
M2MB_GPIO_IOCTL_GET_INTR_ARG
Definition: m2mb_gpio.h:83
M2MB_GPIO_IOCTL_DEINIT_INTR
Definition: m2mb_gpio.h:76
M2MB_GPIO_IOCTL_SET_INTR_TYPE
Definition: m2mb_gpio.h:77
M2MB_GPIO_IOCTL_SET_INTR_ARG
Definition: m2mb_gpio.h:82
M2MB_GPIO_MEDIUM_DRIVE
Definition: m2mb_gpio.h:134
M2MB_GPIO_TRIGGER_E
M2MB_GPIO_TRIGGER_E
Definition: m2mb_gpio.h:108
M2MB_GPIO_PULL_DOWN
Definition: m2mb_gpio.h:119
M2MB_GPIO_NO_PULL
Definition: m2mb_gpio.h:118
m2mb_gpio_intr_callback
void(* m2mb_gpio_intr_callback)(UINT32 fd, void *userdata)
GPIO interrupt callback function definition.
Definition: m2mb_gpio.h:185
M2MB_GPIO_IOCTL_GET_INTR_TRIGGER
Definition: m2mb_gpio.h:86
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:104
INTR_CB_SET
Definition: m2mb_gpio.h:158
M2MB_GPIO_IOCTL_SET_PULL
Definition: m2mb_gpio.h:71
M2MB_GPIO_IOCTL_GET_INTR
Definition: m2mb_gpio.h:92
M2MB_GPIO_IOCTL_SET_ISR_COUNTER
Definition: m2mb_gpio.h:88
M2MB_GPIO_INTR_ANYEDGE
Definition: m2mb_gpio.h:112
M2MB_GPIO_INTR_POSEDGE
Definition: m2mb_gpio.h:110
M2MB_GPIO_IOCTL_GET_DIR
Definition: m2mb_gpio.h:70