no-OS
Loading...
Searching...
No Matches
no_os_irq.h File Reference

Header file of IRQ interface. More...

#include <stdint.h>
Include dependency graph for no_os_irq.h:

Classes

struct  no_os_irq_init_param
 Structure holding the initial parameters for Interrupt Request. More...
 
struct  no_os_irq_ctrl_desc
 
struct  no_os_callback_desc
 Structure describing a callback to be registered. More...
 
struct  no_os_irq_platform_ops
 Structure holding IRQ function pointers that point to the platform specific function. More...
 

Enumerations

enum  no_os_irq_uart_event_e {
  NO_OS_IRQ_WRITE_DONE ,
  NO_OS_IRQ_READ_DONE ,
  NO_OS_IRQ_ERROR
}
 Possible events for uart interrupt. More...
 
enum  no_os_irq_event {
  NO_OS_EVT_GPIO ,
  NO_OS_EVT_UART_TX_COMPLETE ,
  NO_OS_EVT_UART_RX_COMPLETE ,
  NO_OS_EVT_UART_ERROR ,
  NO_OS_EVT_RTC ,
  NO_OS_EVT_XINT ,
  NO_OS_EVT_TIM_ELAPSED ,
  NO_OS_EVT_TIM_PWM_PULSE_FINISHED ,
  NO_OS_EVT_LPTIM_PWM_PULSE_FINISHED ,
  NO_OS_EVT_DMA_RX_COMPLETE ,
  NO_OS_EVT_DMA_RX_HALF_COMPLETE ,
  NO_OS_EVT_DMA_TX_COMPLETE ,
  NO_OS_EVT_USB
}
 
enum  no_os_irq_trig_level {
  NO_OS_IRQ_LEVEL_LOW ,
  NO_OS_IRQ_LEVEL_HIGH ,
  NO_OS_IRQ_EDGE_FALLING ,
  NO_OS_IRQ_EDGE_RISING ,
  NO_OS_IRQ_EDGE_BOTH
}
 
enum  no_os_irq_peripheral {
  NO_OS_GPIO_IRQ ,
  NO_OS_UART_IRQ ,
  NO_OS_RTC_IRQ ,
  NO_OS_TIM_IRQ ,
  NO_OS_LPTIM_IRQ ,
  NO_OS_TDM_DMA_IRQ ,
  NO_OS_TIM_DMA_IRQ ,
  NO_OS_SPI_DMA_IRQ ,
  NO_OS_DMA_IRQ ,
  NO_OS_USB_IRQ
}
 

Functions

int no_os_irq_ctrl_init (struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
 Initialize the IRQ interrupts.
 
int no_os_irq_ctrl_remove (struct no_os_irq_ctrl_desc *desc)
 Free the resources allocated by no_os_irq_ctrl_init().
 
int no_os_irq_register_callback (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
 Register a callback to handle the irq events.
 
int no_os_irq_unregister_callback (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
 Unregisters a generic IRQ handling function.
 
int no_os_irq_global_enable (struct no_os_irq_ctrl_desc *desc)
 Enable global interrupts.
 
int no_os_irq_global_disable (struct no_os_irq_ctrl_desc *desc)
 Disable global interrupts.
 
int no_os_irq_trigger_level_set (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level trig)
 Set interrupt trigger level.
 
int no_os_irq_enable (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Enable specific interrupt.
 
int no_os_irq_disable (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Disable specific interrupt.
 
int no_os_irq_set_priority (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
 Set the priority for an interrupt.
 
int no_os_irq_get_priority (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t *priority_level)
 Get the priority for an interrupt.
 
int no_os_irq_clear_pending (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Clear the pending interrupt.
 
int no_os_irq_set_pending (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Set pending interrupt.
 

Detailed Description

Header file of IRQ interface.

Author
Cristian Pop (crist.nosp@m.ian..nosp@m.pop@a.nosp@m.nalo.nosp@m.g.com)

Copyright 2019(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Enumeration Type Documentation

◆ no_os_irq_event

Enumerator
NO_OS_EVT_GPIO 
NO_OS_EVT_UART_TX_COMPLETE 
NO_OS_EVT_UART_RX_COMPLETE 
NO_OS_EVT_UART_ERROR 
NO_OS_EVT_RTC 
NO_OS_EVT_XINT 
NO_OS_EVT_TIM_ELAPSED 
NO_OS_EVT_TIM_PWM_PULSE_FINISHED 
NO_OS_EVT_LPTIM_PWM_PULSE_FINISHED 
NO_OS_EVT_DMA_RX_COMPLETE 
NO_OS_EVT_DMA_RX_HALF_COMPLETE 
NO_OS_EVT_DMA_TX_COMPLETE 
NO_OS_EVT_USB 

◆ no_os_irq_peripheral

Enumerator
NO_OS_GPIO_IRQ 
NO_OS_UART_IRQ 
NO_OS_RTC_IRQ 
NO_OS_TIM_IRQ 
NO_OS_LPTIM_IRQ 
NO_OS_TDM_DMA_IRQ 
NO_OS_TIM_DMA_IRQ 
NO_OS_SPI_DMA_IRQ 
NO_OS_DMA_IRQ 
NO_OS_USB_IRQ 

◆ no_os_irq_trig_level

Enumerator
NO_OS_IRQ_LEVEL_LOW 
NO_OS_IRQ_LEVEL_HIGH 
NO_OS_IRQ_EDGE_FALLING 
NO_OS_IRQ_EDGE_RISING 
NO_OS_IRQ_EDGE_BOTH 

◆ no_os_irq_uart_event_e

Possible events for uart interrupt.

Todo
replace this with enum no_os_irq_event
Enumerator
NO_OS_IRQ_WRITE_DONE 

Write operation finalized

NO_OS_IRQ_READ_DONE 

Read operation finalized

NO_OS_IRQ_ERROR 

An error occurred

Function Documentation

◆ no_os_irq_clear_pending()

int no_os_irq_clear_pending ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Clear the pending interrupt.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
Returns
0 in case of success, negative errno error codes.

◆ no_os_irq_ctrl_init()

int no_os_irq_ctrl_init ( struct no_os_irq_ctrl_desc ** desc,
const struct no_os_irq_init_param * param )

Initialize the IRQ interrupts.

Parameters
desc- The IRQ descriptor.
param- The structure that contains the IRQ parameters.
Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_ctrl_remove()

int no_os_irq_ctrl_remove ( struct no_os_irq_ctrl_desc * desc)

Free the resources allocated by no_os_irq_ctrl_init().

Parameters
desc- The SPI descriptor.
Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_disable()

int no_os_irq_disable ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Disable specific interrupt.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_enable()

int no_os_irq_enable ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Enable specific interrupt.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_get_priority()

int no_os_irq_get_priority ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
uint32_t * priority_level )

Get the priority for an interrupt.

Get the priority level for a specific interrupt

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
priority_level- The priority level of the interrupt.
Returns
0 in case of success, negative errno error codes.

◆ no_os_irq_global_disable()

int no_os_irq_global_disable ( struct no_os_irq_ctrl_desc * desc)

Disable global interrupts.

Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_global_enable()

int no_os_irq_global_enable ( struct no_os_irq_ctrl_desc * desc)

Enable global interrupts.

Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_register_callback()

int no_os_irq_register_callback ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
struct no_os_callback_desc * callback )

Register a callback to handle the irq events.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
callback- Callback descriptor - platform specific type.
Returns
SUCCESS in case of success, FAILURE otherwise.

◆ no_os_irq_set_pending()

int no_os_irq_set_pending ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Set pending interrupt.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
Returns
0 in case of success, negative errno error codes.

◆ no_os_irq_set_priority()

int no_os_irq_set_priority ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
uint32_t priority_level )

Set the priority for an interrupt.

Set the priority level for a specific interrupt

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
priority_level- The priority level of the interrupt.
Returns
0 in case of success, negative errno error codes.

◆ no_os_irq_trigger_level_set()

int no_os_irq_trigger_level_set ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
enum no_os_irq_trig_level trig )

Set interrupt trigger level.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
trig- New trigger level for the interrupt.
Returns
0 in case of success, -1 otherwise.

◆ no_os_irq_unregister_callback()

int no_os_irq_unregister_callback ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
struct no_os_callback_desc * callback )

Unregisters a generic IRQ handling function.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
callback- Callback descriptor - platform specific type.
Returns
SUCCESS in case of success, FAILURE otherwise.