# Data definitions Source: [https://docs.qualcomm.com/doc/80-88500-4/topic/32_Data_definitions.html](https://docs.qualcomm.com/doc/80-88500-4/topic/32_Data_definitions.html) The trigger and interrupt service register (ISR) types are used when calling DAL GPIO interrupt APIs. The DAL GPIO interrupt data structure contains debug information about GPIO interrupts. ## Trigger and interrupt service register types The triggering type of an interrupt is defined as TRIGGER\_HIGH and TRIGGER\_LOW (which are level triggers with the corresponding polarity) and TRIGGER\_RISING, TRIGGERING\_FALLING, and TRIGGER\_DUAL\_EDGE (which are edge trigger types). Typedef enum{ GPIOINT_TRIGGER_HIGH, GPIOINT_TRIGGER_LOW, GPIOINT_TRIGGER_RISING, GPIOINT_TRIGGER_FALLING, GPIOINT_TRIGGER_DUAL_EDGE, GPIOINT_TRIGGER_INVALID, PLACEHOLDER_GPIOIntTriggerType = 0x7fffffff }GPIOIntTriggerType; Copy to clipboard The following defines a pointer to an ISR function that takes a given parameter as an argument (typically the interrupt request (IRQ) number): Typedef void * (*GPIOINTISR)(GPIOINTISRCtx);Copy to clipboard ## DAL GPIO interrupt data structure The most useful information for debugging is in the state and log. /* This is static GPIOInt state data. It can be accessed for debugging GPIOInterrupts to see what is the current registration state of the GPIO. */ static GPIOIntCntrlType GPIOIntData; Copy to clipboard The following data structure contains the GPIO interrupt information: /* GPIOIntCntrlType * Container for all local data. * initialized: Indicates if the driver has been started or not. Needed mostly because some compilers complain about empty structs. Table: Table of registered GPIO_INT handler functions. Wakeup_isr: ISR to invoke when a monitored GPIO interrupt triggers. Log: Log storage. */ typedef struct { /* GPIOInt Dev state can be added by developers here */ /* Flag to Initialize GPIOInt_Init is called first before anything else can attach */ uint8 GPIOInt_Init; /* interrupt_state Table of registered GPIO_INT handler functions */ GPIOIntDataType state[MAX_NUMBER_OF_GPIOS]; /* Interrupt Log storage.*/ GPIOIntLogType log; /* total number of GPIOs present on the target */ uint32 gpio_number; /* Number of direct connect interrupts. */ uint32 direct_intr_number; /* This tracks of the gpios that are configured as direct connect interrupts. */ HAL_gpioint_ProcessorType processor; DALSYSEventHandle summary_intr_event; DALSYSEventHandle default_event; uint32 default_param; uint32 summary_param; uint32 summary_intr_id; ifdef GPIOINT_USE_NPA npa_client_handle npa_client; uint32 non_mpm_interrupts; endif /* GPIOINT_USE_NPA*/ GPIOINTISR wakeup_isr; /* Configuration map for direct connect interrupts.*/ GPIOIntConfigMapType *gpioint_config_map; /* fake trigger flag for gpios that are triggered in software. */ uint32* gpioint_physical_address; uint32* gpioint_virtual_address; /* The main interrupt controller that GPIOInt connects to. */ uint8 interrupt_controller; uint8 is_initialized; } GPIOIntCntrlType; Copy to clipboard **Parent Topic:** [GPIO interrupt driver](https://docs.qualcomm.com/doc/80-88500-4/topic/31_GPIO_interrupt_driver.html) Last Published: Aug 18, 2023 [Previous Topic GPIO interrupt driver](https://docs.qualcomm.com/bundle/publicresource/80-88500-4/topics/31_GPIO_interrupt_driver.md) [Next Topic DAL GPIO interrupt APIs](https://docs.qualcomm.com/bundle/publicresource/80-88500-4/topics/33_DAL_GPIO_interrupt_APIs.md)