//#define PICO #ifndef JOBS_H #define JOBS_H #ifdef PICO #include "FreeRTOS.h" #include "task.h" #include "semphr.h" #else #include #endif typedef enum ACTION Action; enum ACTION {STOP, START}; typedef struct AppState AppState; struct AppState { Action action; double freq_multiplicator; #ifdef PICO TaskHandle_t* task; SemaphoreHandle_t lock; #else pthread_mutex_t lock; pthread_t* task; #endif }; typedef void (*FnJob)(void* params); typedef struct TaskParam TaskParam; struct TaskParam { AppState* s; FnJob f; }; int init_app_state(AppState *s); void check_btn_state(void* args); void check_acd_value(void* args); int lock(AppState *s); int release(AppState *s); int cancel_task(AppState *s); int launch_task(AppState *s, FnJob f); #endif