m2mb API docs  37.00.006.0
m2mb API sets documentation
m2mb_gpio.h
Go to the documentation of this file.
1 /* $version: 372317T2_R1 */
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 
58 #define M2MB_GPIO_ISR_IS_ENABLED 1
59 #define M2MB_GPIO_ISR_IS_DISABLED 0
60 
61 #ifndef ATP_TEST_DEFINE
62 #define m2mb_gpio_multi_ioctl_( fd, args... ) m2mb_gpio_multi_ioctl( fd, CMDS_ARGS( args ) )
63 #endif
64 /* Global enums ==============================================================================*/
65 
66 typedef enum
67 {
93  ENUM_TO_INT( M2MB_GPIO_IOCTL_REQUEST_E )
95 
100 typedef enum
101 {
104  ENUM_TO_INT( M2MB_GPIO_DIRECTION_E )
106 
107 typedef enum
108 {
112  ENUM_TO_INT( M2MB_GPIO_TRIGGER_E )
114 
115 typedef enum
116 {
121  ENUM_TO_INT( M2MB_GPIO_PULL_MODE_E )
123 
130 typedef enum
131 {
135  ENUM_TO_INT( M2MB_GPIO_DRIVE_E )
136 
138 
143 typedef enum
144 {
147  ENUM_TO_INT( M2MB_GPIO_VALUE_E )
148 
150 
155 typedef enum
156 {
171  ENUM_TO_INT( M2M_GPIO_INTR_TYPE_E )
173 
174 
175 
184 typedef void ( *m2mb_gpio_intr_callback )( UINT32 fd, void *userdata );
185 
186 /* Global functions =============================================================================*/
187 
188 
189 /*-----------------------------------------------------------------------------------------------*/
212 /*-----------------------------------------------------------------------------------------------*/
213 
214 INT32 m2mb_gpio_open( const CHAR *path, INT32 flags, ... );
215 
216 
217 /*-----------------------------------------------------------------------------------------------*/
232 /*-----------------------------------------------------------------------------------------------*/
233 
234 
235 INT32 m2mb_gpio_close( INT32 fd );
236 
237 
238 /*-----------------------------------------------------------------------------------------------*/
283 
290 
329 /*-----------------------------------------------------------------------------------------------*/
330 
331 
332 INT32 m2mb_gpio_ioctl( INT32 fd, INT32 cmd, UINT32 arg );
333 
334 
335 /*-----------------------------------------------------------------------------------------------*/
412 /*-----------------------------------------------------------------------------------------------*/
413 
414 
415 INT32 m2mb_gpio_multi_ioctl( INT32 fd, UINT8 nCmds, ... );
416 
417 
418 /*-----------------------------------------------------------------------------------------------*/
446 /*-----------------------------------------------------------------------------------------------*/
447 
448 INT32 m2mb_gpio_read( INT32 fd, M2MB_GPIO_VALUE_E *value );
449 
450 
451 
452 /*-----------------------------------------------------------------------------------------------*/
473 /*-----------------------------------------------------------------------------------------------*/
474 
475 INT32 m2mb_gpio_write( INT32 fd, M2MB_GPIO_VALUE_E value );
476 
477 
478 #ifdef ENABLE_GPIO_OLD_INTERFACE
479 
480 /*************************************************************/
481 /* OLD GPIO INTERFACE */
482 /*************************************************************/
483 #warning "**** WARNING! ENABLE_GPIO_OLD_INTERFACE defined! "
484 
485 /* Global enums ==============================================================================*/
486 
487 enum M2MB_GPIO_IOCTL_REQUEST
488 {
489  M2MB_GPIO_IOCTL_SET_CFG, /* set gpio device configuration */
490  M2MB_GPIO_IOCTL_GET_CFG /* get gpio device configuration */
491 };
492 
493 /* Global typedefs ==============================================================================*/
494 
495 /* GPIO device configuration struct */
496 typedef struct
497 {
498  UINT8 direction;
499  UINT8 save_cfg;
500 } M2MB_GPIO_CNFG_T;
501 
502 INT32 m2mb_gpio_ioctl_wrp( INT32 fd, INT32 request, ... );
503 
504 SSIZE_T m2mb_gpio_read_wrp( INT32 fd, void *buf, SIZE_T nbyte );
505 
506 SSIZE_T m2mb_gpio_write_wrp( INT32 fd, const void *buf, SIZE_T nbyte );
507 
508 #define m2mb_gpio_read( fd, value, nbyte ) m2mb_gpio_read_wrp( fd, ( void * )value, nbyte )
509 #define m2mb_gpio_write( fd, value, nbyte ) m2mb_gpio_write_wrp( fd, ( void * )value, nbyte )
510 #define m2mb_gpio_ioctl( a... ) m2mb_gpio_ioctl_wrp( a )
511 #define M2MB_GPIO_CFG_T M2MB_GPIO_CNFG_T
512 
513 #endif /* ENABLE_GPIO_OLD_INTERFACE */
514 
515 
516 #endif /* M2M_M2MB_GPIO_API_H */
517 
518 
M2MB_GPIO_IOCTL_SET_DRIVE
Definition: m2mb_gpio.h:72
M2MB_GPIO_LOW_DRIVE
Definition: m2mb_gpio.h:132
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:71
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:130
M2M_GPIO_INTR_TYPE_E
M2M_GPIO_INTR_TYPE_E
GPIO ISR type: callback or counter.
Definition: m2mb_gpio.h:155
INTR_COUNTER_SET_HP
Definition: m2mb_gpio.h:160
M2MB_GPIO_PULL_KEEPER
Definition: m2mb_gpio.h:119
M2MB_GPIO_HIGH_DRIVE
Definition: m2mb_gpio.h:134
M2MB_GPIO_INTR_NEGEDGE
Definition: m2mb_gpio.h:110
M2MB_GPIO_IOCTL_GET_ISR_COUNTER
Definition: m2mb_gpio.h:88
M2MB_GPIO_IOCTL_SET_DIR
Definition: m2mb_gpio.h:68
INTR_COUNTER_SET
Definition: m2mb_gpio.h:158
M2MB_GPIO_IOCTL_INIT_INTR
Definition: m2mb_gpio.h:74
M2MB_GPIO_IOCTL_GET_GPIO_N
Definition: m2mb_gpio.h:90
M2MB_GPIO_LOW_VALUE
Definition: m2mb_gpio.h:145
M2MB_GPIO_PULL_MODE_E
M2MB_GPIO_PULL_MODE_E
Definition: m2mb_gpio.h:115
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:80
M2MB_GPIO_IOCTL_REQUEST_E
M2MB_GPIO_IOCTL_REQUEST_E
Definition: m2mb_gpio.h:66
M2MB_GPIO_VALUE_E
M2MB_GPIO_VALUE_E
GPIO output state specification.
Definition: m2mb_gpio.h:143
M2MB_GPIO_PULL_UP
Definition: m2mb_gpio.h:120
M2MB_GPIO_IOCTL_GET_DRIVE
Definition: m2mb_gpio.h:73
M2MB_GPIO_HIGH_VALUE
Definition: m2mb_gpio.h:146
M2MB_GPIO_DIRECTION_E
M2MB_GPIO_DIRECTION_E
enum used for gpio direction
Definition: m2mb_gpio.h:100
M2MB_GPIO_IOCTL_SET_INTR_TRIGGER
Definition: m2mb_gpio.h:83
M2MB_GPIO_IOCTL_GET_INTR_TYPE
Definition: m2mb_gpio.h:78
M2MB_GPIO_MODE_INPUT
Definition: m2mb_gpio.h:102
M2MB_GPIO_IOCTL_SET_INTR_CB
Definition: m2mb_gpio.h:79
M2MB_GPIO_IOCTL_GET_INTR_ARG
Definition: m2mb_gpio.h:82
M2MB_GPIO_IOCTL_DEINIT_INTR
Definition: m2mb_gpio.h:75
M2MB_GPIO_IOCTL_SET_INTR_TYPE
Definition: m2mb_gpio.h:76
M2MB_GPIO_IOCTL_SET_INTR_ARG
Definition: m2mb_gpio.h:81
M2MB_GPIO_MEDIUM_DRIVE
Definition: m2mb_gpio.h:133
M2MB_GPIO_TRIGGER_E
M2MB_GPIO_TRIGGER_E
Definition: m2mb_gpio.h:107
M2MB_GPIO_PULL_DOWN
Definition: m2mb_gpio.h:118
M2MB_GPIO_NO_PULL
Definition: m2mb_gpio.h:117
m2mb_gpio_intr_callback
void(* m2mb_gpio_intr_callback)(UINT32 fd, void *userdata)
GPIO interrupt callback function definition.
Definition: m2mb_gpio.h:184
M2MB_GPIO_IOCTL_GET_INTR_TRIGGER
Definition: m2mb_gpio.h:85
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:103
INTR_CB_SET
Definition: m2mb_gpio.h:157
M2MB_GPIO_IOCTL_SET_PULL
Definition: m2mb_gpio.h:70
M2MB_GPIO_IOCTL_GET_INTR
Definition: m2mb_gpio.h:91
M2MB_GPIO_IOCTL_SET_ISR_COUNTER
Definition: m2mb_gpio.h:87
M2MB_GPIO_INTR_ANYEDGE
Definition: m2mb_gpio.h:111
M2MB_GPIO_INTR_POSEDGE
Definition: m2mb_gpio.h:109
M2MB_GPIO_IOCTL_GET_DIR
Definition: m2mb_gpio.h:69