new module
This commit is contained in:
18
components/scheduler/include/scheduler.h
Executable file
18
components/scheduler/include/scheduler.h
Executable file
@@ -0,0 +1,18 @@
|
||||
// components/scheduler/include/scheduler.h
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "scheduler_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void scheduler_init(void);
|
||||
void scheduler_set_config(const sched_config_t *cfg);
|
||||
sched_config_t scheduler_get_config(void);
|
||||
bool scheduler_is_allowed_now(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
17
components/scheduler/include/scheduler_events.h
Normal file
17
components/scheduler/include/scheduler_events.h
Normal file
@@ -0,0 +1,17 @@
|
||||
// scheduler_events.h
|
||||
#pragma once
|
||||
#include "esp_event.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
ESP_EVENT_DECLARE_BASE(SCHED_EVENTS);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SCHED_EVENT_INIT = 0, // envia estado inicial
|
||||
SCHED_EVENT_WINDOW_CHANGED, // allowed_now mudou
|
||||
} sched_event_id_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bool allowed_now;
|
||||
} sched_event_state_t;
|
||||
31
components/scheduler/include/scheduler_types.h
Normal file
31
components/scheduler/include/scheduler_types.h
Normal file
@@ -0,0 +1,31 @@
|
||||
// components/scheduler/include/scheduler_types.h
|
||||
#pragma once
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
SCHED_MODE_DISABLED = 0, // não faz gating
|
||||
SCHED_MODE_SIMPLE, // por ex: janela diária única
|
||||
SCHED_MODE_WEEKLY // por ex: janelas por dia da semana
|
||||
} sched_mode_t;
|
||||
|
||||
typedef struct {
|
||||
bool enabled; // gating ativo?
|
||||
sched_mode_t mode;
|
||||
|
||||
// exemplo bem simples: uma janela diária [start_min..end_min[
|
||||
// minutos desde meia-noite, 0..1439
|
||||
uint16_t start_min;
|
||||
uint16_t end_min;
|
||||
} sched_config_t;
|
||||
|
||||
const char *sched_mode_to_str(sched_mode_t mode);
|
||||
bool sched_mode_from_str(const char *s, sched_mode_t *out);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user