no-OS
Loading...
Searching...
No Matches
pico_irq.c File Reference

Implementation of external irq driver. More...

#include "no_os_irq.h"
#include "no_os_list.h"
#include "no_os_uart.h"
#include "no_os_util.h"
#include "no_os_error.h"
#include "no_os_timer.h"
#include "no_os_alloc.h"
#include "pico_irq.h"
#include "pico_uart.h"
#include "pico_timer.h"
#include "pico/stdlib.h"
#include "hardware/irq.h"
Include dependency graph for pico_irq.c:

Classes

struct  irq_action
 Struct used to store a (peripheral, callback) pair. More...
 
struct  event_list
 Struct that stores all the actions for a specific event. More...
 

Macros

#define PICO_IRQ_NB   26u
 

Functions

void on_uart0_rx (void)
 UART0 RX interrupt handler.
 
void on_uart1_rx (void)
 UART1 RX interrupt handler.
 
int32_t irq_action_cmp (void *data1, void *data2)
 Action comparator function.
 
int pico_irq_ctrl_init (struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
 Initialized the controller for pico external interrupts.
 
int pico_irq_ctrl_remove (struct no_os_irq_ctrl_desc *desc)
 Free the resources allocated by irq_ctrl_init().
 
int pico_trigger_level_set (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level level)
 Unused.
 
int pico_irq_register_callback (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *cb)
 Register a callback.
 
int pico_irq_unregister_callback (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *cb)
 Unregister a callback.
 
int pico_irq_global_enable (struct no_os_irq_ctrl_desc *desc)
 Enable all interrupts.
 
int pico_irq_global_disable (struct no_os_irq_ctrl_desc *desc)
 Disable all interrupts.
 
int pico_irq_enable (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Enable a specific interrupt.
 
int pico_irq_disable (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Disable a specific interrupt.
 

Variables

const struct no_os_irq_platform_ops pico_irq_ops
 pico specific IRQ platform ops structure
 

Detailed Description

Implementation of external irq driver.

Author
RBolboac (ramon.nosp@m.a.bo.nosp@m.lboac.nosp@m.a@an.nosp@m.alog..nosp@m.com)

Copyright 2022(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ PICO_IRQ_NB

#define PICO_IRQ_NB   26u

Function Documentation

◆ irq_action_cmp()

int32_t irq_action_cmp ( void * data1,
void * data2 )

Action comparator function.

irq_action compare function

Parameters
data1- List element.
data2- Key.
Returns
0 if the two are equal, any other integer otherwise.

◆ on_uart0_rx()

void on_uart0_rx ( void )

UART0 RX interrupt handler.

◆ on_uart1_rx()

void on_uart1_rx ( void )

UART1 RX interrupt handler.

◆ pico_irq_ctrl_init()

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

Initialized the controller for pico external interrupts.

Parameters
desc- Pointer where the configured instance is stored.
param- Configuration information for the instance.
Returns
0 in case of success, error code otherwise.

◆ pico_irq_ctrl_remove()

int pico_irq_ctrl_remove ( struct no_os_irq_ctrl_desc * desc)

Free the resources allocated by irq_ctrl_init().

Parameters
desc- Interrupt controller descriptor.
Returns
0 in case of success, error code otherwise.

◆ pico_irq_disable()

int pico_irq_disable ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Disable a specific interrupt.

Parameters
desc- Interrupt controller descriptor.
irq_id- Interrupt identifier.
Returns
0 if successful, error code otherwise.

◆ pico_irq_enable()

int pico_irq_enable ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Enable a specific interrupt.

Parameters
desc- Interrupt controller descriptor.
irq_id- Interrupt identifier.
Returns
0 if successful, error code otherwise.

◆ pico_irq_global_disable()

int pico_irq_global_disable ( struct no_os_irq_ctrl_desc * desc)

Disable all interrupts.

Parameters
desc- Interrupt controller descriptor.
Returns
0

◆ pico_irq_global_enable()

int pico_irq_global_enable ( struct no_os_irq_ctrl_desc * desc)

Enable all interrupts.

Parameters
desc- Interrupt controller descriptor.
Returns
0

◆ pico_irq_register_callback()

int pico_irq_register_callback ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
struct no_os_callback_desc * cb )

Register a callback.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
cb- Descriptor of the callback.
Returns
0 if successful, error code otherwise.

◆ pico_irq_unregister_callback()

int pico_irq_unregister_callback ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
struct no_os_callback_desc * cb )

Unregister a callback.

Parameters
desc- Interrupt controller descriptor.
irq_id- Id of the interrupt.
cb- Descriptor of the callback.
Returns
0 if successful, error code otherwise.

◆ pico_trigger_level_set()

int pico_trigger_level_set ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
enum no_os_irq_trig_level level )

Unused.

Parameters
desc- Irq descriptor.
irq_id- The interrupt vector entry id of the peripheral.
level- The trigger condition.
Returns
-ENOSYS

Variable Documentation

◆ pico_irq_ops

const struct no_os_irq_platform_ops pico_irq_ops
Initial value:
= {
.trigger_level_set = &pico_trigger_level_set,
.register_callback = &pico_irq_register_callback,
.unregister_callback = &pico_irq_unregister_callback,
.global_enable = &pico_irq_global_enable,
.global_disable = &pico_irq_global_disable,
.enable = &pico_irq_enable,
.disable = &pico_irq_disable,
.set_priority = &pico_irq_set_priority,
}
int pico_irq_unregister_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *cb)
Unregister a callback.
Definition pico_irq.c:270
int pico_trigger_level_set(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level level)
Unused.
Definition pico_irq.c:171
int pico_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Initialized the controller for pico external interrupts.
Definition pico_irq.c:126
int pico_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Disable a specific interrupt.
Definition pico_irq.c:340
int pico_irq_register_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *cb)
Register a callback.
Definition pico_irq.c:185
int pico_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc)
Free the resources allocated by irq_ctrl_init().
Definition pico_irq.c:154
int pico_irq_global_disable(struct no_os_irq_ctrl_desc *desc)
Disable all interrupts.
Definition pico_irq.c:306
int pico_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable all interrupts.
Definition pico_irq.c:293
int pico_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Enable a specific interrupt.
Definition pico_irq.c:324

pico specific IRQ platform ops structure

pico platform specific irq platform ops structure