m2mb API docs  25.30.003
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 {
85  ENUM_TO_INT( M2MB_GPIO_IOCTL_REQUEST_E )
87 
92 typedef enum
93 {
96  ENUM_TO_INT( M2MB_GPIO_DIRECTION_E )
98 
99 typedef enum
100 {
104  ENUM_TO_INT( M2MB_GPIO_TRIGGER_E )
106 
107 typedef enum
108 {
113  ENUM_TO_INT( M2MB_GPIO_PULL_MODE_E )
115 
122 typedef enum
123 {
127  ENUM_TO_INT( M2MB_GPIO_DRIVE_E )
128 
130 
135 typedef enum
136 {
139  ENUM_TO_INT( M2MB_GPIO_VALUE_E )
140 
142 
147 typedef enum
148 {
163  ENUM_TO_INT( M2M_GPIO_INTR_TYPE_E )
165 
166 
167 
176 typedef void ( *m2mb_gpio_intr_callback )( UINT32 fd, void *userdata );
177 
178 /* Global functions =============================================================================*/
179 
180 
181 /*-----------------------------------------------------------------------------------------------*/
204 /*-----------------------------------------------------------------------------------------------*/
205 
206 INT32 m2mb_gpio_open( const CHAR *path, INT32 flags, ... );
207 
208 
209 /*-----------------------------------------------------------------------------------------------*/
224 /*-----------------------------------------------------------------------------------------------*/
225 
226 
227 INT32 m2mb_gpio_close( INT32 fd );
228 
229 
230 /*-----------------------------------------------------------------------------------------------*/
275 
282 
321 /*-----------------------------------------------------------------------------------------------*/
322 
323 
324 INT32 m2mb_gpio_ioctl( INT32 fd, INT32 cmd, UINT32 arg);
325 
326 
327 /*-----------------------------------------------------------------------------------------------*/
404 /*-----------------------------------------------------------------------------------------------*/
405 
406 
407 INT32 m2mb_gpio_multi_ioctl( INT32 fd, UINT8 nCmds, ... );
408 
409 
410 /*-----------------------------------------------------------------------------------------------*/
438 /*-----------------------------------------------------------------------------------------------*/
439 
440 INT32 m2mb_gpio_read( INT32 fd, M2MB_GPIO_VALUE_E *value );
441 
442 
443 
444 /*-----------------------------------------------------------------------------------------------*/
465 /*-----------------------------------------------------------------------------------------------*/
466 
467 INT32 m2mb_gpio_write( INT32 fd, M2MB_GPIO_VALUE_E value );
468 
469 
470 #ifdef ENABLE_GPIO_OLD_INTERFACE
471 
472 /*************************************************************/
473 /* OLD GPIO INTERFACE */
474 /*************************************************************/
475 #warning "**** WARNING! ENABLE_GPIO_OLD_INTERFACE defined! "
476 
477 /* Global enums ==============================================================================*/
478 
479 enum M2MB_GPIO_IOCTL_REQUEST
480 {
481  M2MB_GPIO_IOCTL_SET_CFG, /* set gpio device configuration */
482  M2MB_GPIO_IOCTL_GET_CFG /* get gpio device configuration */
483 };
484 
485 /* Global typedefs ==============================================================================*/
486 
487 /* GPIO device configuration struct */
488 typedef struct
489 {
490  UINT8 direction;
491  UINT8 save_cfg;
492 } M2MB_GPIO_CNFG_T;
493 
494 
495 INT32 m2mb_gpio_ioctl_wrp( INT32 fd, INT32 request, ... );
496 
497 
498 SSIZE_T m2mb_gpio_read_wrp( INT32 fd, void *buf, SIZE_T nbyte );
499 
500 
501 SSIZE_T m2mb_gpio_write_wrp( INT32 fd, const void *buf, SIZE_T nbyte );
502 
503 
504 #define m2mb_gpio_read( fd, value, nbyte ) m2mb_gpio_read_wrp( fd, ( void * )value, nbyte )
505 #define m2mb_gpio_write( fd, value, nbyte ) m2mb_gpio_write_wrp( fd, ( void * )value, nbyte )
506 #define m2mb_gpio_ioctl( a... ) m2mb_gpio_ioctl_wrp( a )
507 #define M2MB_GPIO_CFG_T M2MB_GPIO_CNFG_T
508 
509 
510 
511 #endif /* ENABLE_GPIO_OLD_INTERFACE */
512 
513 
514 
515 #endif /* M2M_M2MB_GPIO_API_H */
516 
517 
M2MB_GPIO_IOCTL_SET_DRIVE
Definition: m2mb_gpio.h:67
M2MB_GPIO_LOW_DRIVE
Definition: m2mb_gpio.h:124
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:122
M2M_GPIO_INTR_TYPE_E
M2M_GPIO_INTR_TYPE_E
GPIO ISR type: callback or counter.
Definition: m2mb_gpio.h:147
INTR_COUNTER_SET_HP
Definition: m2mb_gpio.h:152
M2MB_GPIO_PULL_KEEPER
Definition: m2mb_gpio.h:111
M2MB_GPIO_HIGH_DRIVE
Definition: m2mb_gpio.h:126
M2MB_GPIO_INTR_NEGEDGE
Definition: m2mb_gpio.h:102
M2MB_GPIO_IOCTL_GET_ISR_COUNTER
Definition: m2mb_gpio.h:83
M2MB_GPIO_IOCTL_SET_DIR
Definition: m2mb_gpio.h:63
INTR_COUNTER_SET
Definition: m2mb_gpio.h:150
M2MB_GPIO_IOCTL_INIT_INTR
Definition: m2mb_gpio.h:69
M2MB_GPIO_LOW_VALUE
Definition: m2mb_gpio.h:137
M2MB_GPIO_PULL_MODE_E
M2MB_GPIO_PULL_MODE_E
Definition: m2mb_gpio.h:107
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:75
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:135
M2MB_GPIO_PULL_UP
Definition: m2mb_gpio.h:112
M2MB_GPIO_IOCTL_GET_DRIVE
Definition: m2mb_gpio.h:68
M2MB_GPIO_HIGH_VALUE
Definition: m2mb_gpio.h:138
M2MB_GPIO_DIRECTION_E
M2MB_GPIO_DIRECTION_E
enum used for gpio direction
Definition: m2mb_gpio.h:92
M2MB_GPIO_IOCTL_SET_INTR_TRIGGER
Definition: m2mb_gpio.h:78
M2MB_GPIO_IOCTL_GET_INTR_TYPE
Definition: m2mb_gpio.h:73
M2MB_GPIO_MODE_INPUT
Definition: m2mb_gpio.h:94
M2MB_GPIO_IOCTL_SET_INTR_CB
Definition: m2mb_gpio.h:74
M2MB_GPIO_IOCTL_GET_INTR_ARG
Definition: m2mb_gpio.h:77
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:76
M2MB_GPIO_MEDIUM_DRIVE
Definition: m2mb_gpio.h:125
M2MB_GPIO_TRIGGER_E
M2MB_GPIO_TRIGGER_E
Definition: m2mb_gpio.h:99
M2MB_GPIO_PULL_DOWN
Definition: m2mb_gpio.h:110
M2MB_GPIO_NO_PULL
Definition: m2mb_gpio.h:109
m2mb_gpio_intr_callback
void(* m2mb_gpio_intr_callback)(UINT32 fd, void *userdata)
GPIO interrupt callback function definition.
Definition: m2mb_gpio.h:176
M2MB_GPIO_IOCTL_GET_INTR_TRIGGER
Definition: m2mb_gpio.h:80
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:95
INTR_CB_SET
Definition: m2mb_gpio.h:149
M2MB_GPIO_IOCTL_SET_PULL
Definition: m2mb_gpio.h:65
M2MB_GPIO_IOCTL_SET_ISR_COUNTER
Definition: m2mb_gpio.h:82
M2MB_GPIO_INTR_ANYEDGE
Definition: m2mb_gpio.h:103
M2MB_GPIO_INTR_POSEDGE
Definition: m2mb_gpio.h:101
M2MB_GPIO_IOCTL_GET_DIR
Definition: m2mb_gpio.h:64