Converted servocontroller to protobufs + persistance defaults

This commit is contained in:
Niklas Jensen
2026-01-24 17:25:24 +01:00
committed by nikguin04
parent a4e900fb65
commit dbca9bd0b7
10 changed files with 96 additions and 76 deletions
@@ -22,13 +22,15 @@ class FSPersistencePB {
FSPersistencePB(ProtoStateReader stateReader, ProtoStateUpdater stateUpdater,
StatefulService<T> *statefulService, const char *filePath,
const pb_msgdesc_t *msgDescriptor, size_t maxSize)
const pb_msgdesc_t *msgDescriptor, size_t maxSize,
const T &defaultState)
: _stateReader(stateReader),
_stateUpdater(stateUpdater),
_statefulService(statefulService),
_filePath(filePath),
_msgDescriptor(msgDescriptor),
_maxSize(maxSize),
_defaultState(defaultState),
_updateHandlerId(0) {
enableUpdateHandler();
}
@@ -115,6 +117,7 @@ class FSPersistencePB {
const char *_filePath;
const pb_msgdesc_t *_msgDescriptor;
size_t _maxSize;
T _defaultState;
HandlerId _updateHandlerId;
void mkdirs() {
@@ -127,9 +130,8 @@ class FSPersistencePB {
}
protected:
virtual void applyDefaults() {
T defaultState = {};
void applyDefaults() {
_statefulService->updateWithoutPropagation(
[this, &defaultState](T &state) { return _stateUpdater(defaultState, state); });
[this](T &state) { return _stateUpdater(_defaultState, state); });
}
};
@@ -2,7 +2,7 @@
#include <esp_http_server.h>
#include <template/stateful_service.h>
#include <communication/native_server.h>
#include <communication/webserver.h>
#include <platform_shared/api.pb.h>
#include <pb_encode.h>
#include <pb_decode.h>
@@ -95,7 +95,7 @@ class StatefulProtoEndpoint {
_statefulService->read([this, &protoState](const T& settings) { _stateReader(settings, protoState); });
_responseAssigner(res, protoState);
return NativeServer::sendProto(request, 200, res, api_Response_fields);
return WebServer::sendProto(request, 200, res, api_Response_fields);
}
/** Sends error wrapped in Response */
@@ -103,7 +103,7 @@ class StatefulProtoEndpoint {
api_Response res = api_Response_init_zero;
res.status_code = statusCode;
res.error_message = (char*)message;
return NativeServer::sendProto(request, statusCode == 200 ? 200 : 400, res, api_Response_fields);
return WebServer::sendProto(request, statusCode == 200 ? 200 : 400, res, api_Response_fields);
}
};