# 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)