Merge remote-tracking branch 'ofw/dev' into mntm-dev

This commit is contained in:
Willy-JL
2024-08-05 01:50:20 +02:00
109 changed files with 1115 additions and 1860 deletions

View File

@@ -107,10 +107,13 @@ void furi_event_loop_run(FuriEventLoop* instance) {
furi_check(instance);
furi_check(instance->thread_id == furi_thread_get_current_id());
furi_event_loop_init_tick(instance);
// Set the default signal callback if none was previously set
if(furi_thread_get_signal_callback(instance->thread_id) == NULL) {
furi_thread_set_signal_callback(
instance->thread_id, furi_event_loop_signal_callback, instance);
}
furi_thread_set_signal_callback(
instance->thread_id, furi_event_loop_signal_callback, instance);
furi_event_loop_init_tick(instance);
while(true) {
instance->state = FuriEventLoopStateIdle;
@@ -177,7 +180,10 @@ void furi_event_loop_run(FuriEventLoop* instance) {
}
}
furi_thread_set_signal_callback(instance->thread_id, NULL, NULL);
// Disable the default signal callback
if(furi_thread_get_signal_callback(instance->thread_id) == furi_event_loop_signal_callback) {
furi_thread_set_signal_callback(instance->thread_id, NULL, NULL);
}
}
void furi_event_loop_stop(FuriEventLoop* instance) {

View File

@@ -278,6 +278,12 @@ void furi_thread_set_signal_callback(
thread->signal_context = context;
}
FuriThreadSignalCallback furi_thread_get_signal_callback(const FuriThread* thread) {
furi_check(thread);
return thread->signal_callback;
}
bool furi_thread_signal(const FuriThread* thread, uint32_t signal, void* arg) {
furi_check(thread);

View File

@@ -270,7 +270,7 @@ FuriThreadState furi_thread_get_state(FuriThread* thread);
/**
* @brief Set a signal handler callback for a FuriThread instance.
*
* The thread MUST be stopped when calling this function.
* The thread MUST be stopped when calling this function if calling it from another thread.
*
* @param[in,out] thread pointer to the FuriThread instance to be modified
* @param[in] callback pointer to a user-specified callback function
@@ -281,6 +281,14 @@ void furi_thread_set_signal_callback(
FuriThreadSignalCallback callback,
void* context);
/**
* @brief Get a signal callback for a FuriThread instance.
*
* @param[in] thread pointer to the FuriThread instance to be queried
* @return pointer to the callback function or NULL if none has been set
*/
FuriThreadSignalCallback furi_thread_get_signal_callback(const FuriThread* thread);
/**
* @brief Send a signal to a FuriThread instance.
*