61 lines
1.3 KiB
C
61 lines
1.3 KiB
C
// components/loadbalancer/include/loadbalancer_events.h
|
|
#pragma once
|
|
|
|
#include "esp_event.h"
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include "esp_timer.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
ESP_EVENT_DECLARE_BASE(LOADBALANCER_EVENTS);
|
|
|
|
typedef enum {
|
|
LOADBALANCER_EVENT_INIT = 0,
|
|
LOADBALANCER_EVENT_STATE_CHANGED,
|
|
LOADBALANCER_EVENT_GLOBAL_CURRENT_LIMIT,
|
|
|
|
// IMPORTANT: eventos separados e payloads diferentes
|
|
LOADBALANCER_EVENT_MASTER_CURRENT_LIMIT,
|
|
LOADBALANCER_EVENT_SLAVE_CURRENT_LIMIT,
|
|
|
|
LOADBALANCER_EVENT_SLAVE_STATUS
|
|
} loadbalancer_event_id_t;
|
|
|
|
typedef struct {
|
|
bool enabled;
|
|
int64_t timestamp_us;
|
|
} loadbalancer_state_event_t;
|
|
|
|
typedef struct {
|
|
float limit;
|
|
int64_t timestamp_us;
|
|
} loadbalancer_global_limit_event_t;
|
|
|
|
// MASTER: NÃO tem slave_id
|
|
typedef struct {
|
|
uint16_t max_current;
|
|
int64_t timestamp_us;
|
|
} loadbalancer_master_limit_event_t;
|
|
|
|
// SLAVE: tem slave_id
|
|
typedef struct {
|
|
uint8_t slave_id;
|
|
uint16_t max_current;
|
|
int64_t timestamp_us;
|
|
} loadbalancer_slave_limit_event_t;
|
|
|
|
typedef struct {
|
|
uint8_t slave_id;
|
|
bool charging;
|
|
float hw_max_current;
|
|
float runtime_current;
|
|
int64_t timestamp_us;
|
|
} loadbalancer_slave_status_event_t;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|