picoco/buzzer/jobs.h
2025-03-03 15:36:32 +01:00

47 lines
782 B
C

//#define PICO
#ifndef JOBS_H
#define JOBS_H
#ifdef PICO
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#else
#include <pthread.h>
#endif
typedef enum ACTION Action;
enum ACTION {STOP, START};
typedef struct AppState AppState;
struct AppState {
Action action;
#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);
int lock(AppState *s);
int release(AppState *s);
int cancel_task(AppState *s);
int launch_task(AppState *s, FnJob f);
#endif