Commit 43d40861 authored by schneider's avatar schneider
Browse files

feat(interrupts): Function to check if an int is enabled

parent 45f6d33f
...@@ -36,6 +36,7 @@ typedef _Bool bool; ...@@ -36,6 +36,7 @@ typedef _Bool bool;
#define API_INTERRUPT_ENABLE 0xA #define API_INTERRUPT_ENABLE 0xA
#define API_INTERRUPT_DISABLE 0xB #define API_INTERRUPT_DISABLE 0xB
#define API_INTERRUPT_IS_ENABLED 0xC
#define API_UART_WRITE_STR 0x10 #define API_UART_WRITE_STR 0x10
#define API_UART_READ_CHAR 0x11 #define API_UART_READ_CHAR 0x11
...@@ -184,6 +185,19 @@ API(API_INTERRUPT_ENABLE, int epic_interrupt_enable(api_int_id_t int_id)); ...@@ -184,6 +185,19 @@ API(API_INTERRUPT_ENABLE, int epic_interrupt_enable(api_int_id_t int_id));
*/ */
API(API_INTERRUPT_DISABLE, int epic_interrupt_disable(api_int_id_t int_id)); API(API_INTERRUPT_DISABLE, int epic_interrupt_disable(api_int_id_t int_id));
/**
* Check if an API interrupt is enabled.
*
* :param int int_id: The interrupt to be checked
* :param bool* enabled: ``true`` will be stored here if the interrupt is enabled.
* ``false`` otherwise.
*
* :return: 0 on success, ``-EINVAL`` if the interrupt is unknown.
*
* .. versionadded:: 1.16
*/
API(API_INTERRUPT_IS_ENABLED, int epic_interrupt_is_enabled(api_int_id_t int_id, bool *enabled));
/** /**
* The following interrupts are defined: * The following interrupts are defined:
*/ */
......
...@@ -78,6 +78,17 @@ static void interrupt_set_enabled(api_int_id_t id, bool enabled) ...@@ -78,6 +78,17 @@ static void interrupt_set_enabled(api_int_id_t id, bool enabled)
mutex_unlock(&interrupt_mutex); mutex_unlock(&interrupt_mutex);
} }
static bool interrupt_get_enabled(api_int_id_t id)
{
assert(id < EPIC_INT_NUM);
bool enabled;
mutex_lock(&interrupt_mutex);
enabled = interrupt_data.int_enabled[id];
mutex_unlock(&interrupt_mutex);
return enabled;
}
void interrupt_init(void) void interrupt_init(void)
{ {
if (interrupt_mutex.name == NULL) if (interrupt_mutex.name == NULL)
...@@ -114,6 +125,17 @@ int epic_interrupt_disable(api_int_id_t int_id) ...@@ -114,6 +125,17 @@ int epic_interrupt_disable(api_int_id_t int_id)
interrupt_set_enabled(int_id, false); interrupt_set_enabled(int_id, false);
return 0; return 0;
} }
int epic_interrupt_is_enabled(api_int_id_t int_id, bool *enabled)
{
if (int_id >= EPIC_INT_NUM) {
return -EINVAL;
}
*enabled = interrupt_get_enabled(int_id);
return 0;
}
/* }}} */ /* }}} */
void vInterruptsTask(void *pvParameters) void vInterruptsTask(void *pvParameters)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment