mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 20:47:08 +03:00
initial refactoring
This commit is contained in:
107
components/platform_config/Configurator.h
Normal file
107
components/platform_config/Configurator.h
Normal file
@@ -0,0 +1,107 @@
|
||||
#pragma once
|
||||
#include "State.pb.h"
|
||||
#include "configuration.pb.h"
|
||||
#include "esp_log.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/event_groups.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include "freertos/timers.h"
|
||||
#include "status.pb.h"
|
||||
#include <strings.h>
|
||||
#include "accessors.h"
|
||||
#ifdef __cplusplus
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
extern "C" {
|
||||
#endif
|
||||
#define PLATFORM_GET_PTR(base, sname) \
|
||||
{ \
|
||||
(base && (base)->##has_##(sname) ? &(base)->sname : NULL)
|
||||
#define PLATFORM_DEVICES PLATFORM_GET_PTR(platform)
|
||||
void configurator_load();
|
||||
bool configurator_waitcommit();
|
||||
bool configurator_has_changes();
|
||||
bool configurator_lock();
|
||||
void configurator_unlock();
|
||||
void configurator_raise_changed();
|
||||
void configurator_raise_state_changed();
|
||||
bool configurator_has_changes();
|
||||
bool configurator_waitcommit();
|
||||
void* configurator_alloc_get_config(size_t* sz);
|
||||
bool configurator_parse_config(void* buffer, size_t buffer_size);
|
||||
void configurator_reset_configuration();
|
||||
pb_type_t configurator_get_field_type(const pb_msgdesc_t* desc, uint32_t tag);
|
||||
bool configurator_set_string(
|
||||
const pb_msgdesc_t* desc, uint32_t field_tag, void* message, const char* value);
|
||||
extern sys_Config* platform;
|
||||
extern sys_State* sys_state;
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
namespace PlatformConfig {
|
||||
|
||||
class Configurator {
|
||||
private:
|
||||
static const int MaxDelay;
|
||||
static const int LockMaxWait;
|
||||
|
||||
EXT_RAM_ATTR static TimerHandle_t _timer;
|
||||
EXT_RAM_ATTR static SemaphoreHandle_t _mutex;
|
||||
EXT_RAM_ATTR static SemaphoreHandle_t _state_mutex;
|
||||
EXT_RAM_ATTR static EventGroupHandle_t _group;
|
||||
bool SetGroupBit(int bit_num, bool flag);
|
||||
void ResetModified();
|
||||
void ResetStateModified();
|
||||
sys_Config _root;
|
||||
sys_State _sys_state;
|
||||
|
||||
public:
|
||||
sys_Config* Root() { return &_root; }
|
||||
sys_State* RootState() { return &_sys_state; }
|
||||
bool WaitForCommit();
|
||||
bool Lock();
|
||||
bool LockState();
|
||||
void Unlock();
|
||||
void UnlockState();
|
||||
|
||||
void* AllocGetConfigBuffer(size_t* sz);
|
||||
static void* AllocGetConfigBuffer(size_t* sz, sys_Config* config);
|
||||
static void ResetStructure(sys_Config* config);
|
||||
bool LoadDecodeState();
|
||||
|
||||
void CommitChanges();
|
||||
bool Commit();
|
||||
static bool Commit(sys_Config* config);
|
||||
|
||||
bool CommitState();
|
||||
static bool CommitState(sys_State* state);
|
||||
sys_Config* AllocDefaultStruct();
|
||||
|
||||
static bool ApplyTargetSettings(sys_Config* conf_root);
|
||||
bool ApplyTargetSettings();
|
||||
bool HasStateChanges();
|
||||
|
||||
bool LoadDecodeBuffer(void* buffer, size_t buffer_size);
|
||||
void InitLoadConfig(const char* filename);
|
||||
void InitLoadConfig(const char* filename, sys_Config* conf_root, bool noinit = false);
|
||||
static bool LoadDecode(
|
||||
void* buffer, size_t buffer_size, sys_Config* conf_root, bool noinit = false);
|
||||
|
||||
Configurator() {
|
||||
_mutex = xSemaphoreCreateMutex();
|
||||
_state_mutex = xSemaphoreCreateMutex();
|
||||
_group = xEventGroupCreate();
|
||||
}
|
||||
void RaiseStateModified();
|
||||
void RaiseModified();
|
||||
bool HasChanges();
|
||||
~Configurator() {}
|
||||
};
|
||||
} // namespace PlatformConfig
|
||||
extern PlatformConfig::Configurator configurator;
|
||||
#endif
|
||||
Reference in New Issue
Block a user