mirror of
https://github.com/BotChain-Robots/firmware.git
synced 2026-07-08 09:37:21 +02:00
Remote configuration
This commit is contained in:
51
main/RemoteConfig.cpp
Normal file
51
main/RemoteConfig.cpp
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
#include "RemoteConfig.h"
|
||||||
|
#include "ConfigManager.h"
|
||||||
|
|
||||||
|
void RemoteConfig::register_calls(MessagingInterface &messaging_interface, ConfigManager& config_manager) {
|
||||||
|
messaging_interface.register_function(8, [&config_manager](const uint8_t *parameters, size_t parameter_size, Writer& writer) {
|
||||||
|
uint16_t value;
|
||||||
|
if (parameter_size < sizeof(value)) {
|
||||||
|
std::vector<uint8_t> out{0};
|
||||||
|
writer.write(out);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::memcpy(&value, parameters, sizeof(value));
|
||||||
|
config_manager.set_module_id(value);
|
||||||
|
std::vector<uint8_t> out{0};
|
||||||
|
writer.write(out);
|
||||||
|
esp_restart();
|
||||||
|
});
|
||||||
|
messaging_interface.register_function(9, [&config_manager](const uint8_t *parameters, size_t parameter_size, Writer& writer) {
|
||||||
|
if (parameter_size < 1) {
|
||||||
|
std::vector<uint8_t> out{0};
|
||||||
|
writer.write(out);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
config_manager.set_module_type((ModuleType)parameters[0]);
|
||||||
|
std::vector<uint8_t> out{1};
|
||||||
|
writer.write(out);
|
||||||
|
esp_restart();
|
||||||
|
});
|
||||||
|
messaging_interface.register_function(10, [&config_manager](const uint8_t *parameters, size_t parameter_size, Writer& writer) {
|
||||||
|
config_manager.set_wifi_ssid((char*)parameters);
|
||||||
|
std::vector<uint8_t> out{1};
|
||||||
|
writer.write(out);
|
||||||
|
});
|
||||||
|
messaging_interface.register_function(11, [&config_manager](const uint8_t *parameters, size_t parameter_size, Writer& writer) {
|
||||||
|
config_manager.set_wifi_password((char*)parameters);
|
||||||
|
std::vector<uint8_t> out{1};
|
||||||
|
writer.write(out);
|
||||||
|
});
|
||||||
|
messaging_interface.register_function(12, [&config_manager](const uint8_t *parameters, size_t parameter_size, Writer& writer) {
|
||||||
|
if (parameter_size < 1) {
|
||||||
|
std::vector<uint8_t> out{0};
|
||||||
|
writer.write(out);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
config_manager.set_communication_method((CommunicationMethod)parameters[0]);
|
||||||
|
std::vector<uint8_t> out{1};
|
||||||
|
writer.write(out);
|
||||||
|
esp_restart();
|
||||||
|
});
|
||||||
|
}
|
||||||
18
main/include/RemoteConfig.h
Normal file
18
main/include/RemoteConfig.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef REMOTECONFIG_H
|
||||||
|
#define REMOTECONFIG_H
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "MessagingInterface.h"
|
||||||
|
#include "control/ActuatorFactory.h"
|
||||||
|
#include "control/IActuator.h"
|
||||||
|
#include "util/ring_buffer.h"
|
||||||
|
|
||||||
|
class RemoteConfig {
|
||||||
|
public:
|
||||||
|
static void register_calls(MessagingInterface &messaging_interface, ConfigManager& config_manager);
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // REMOTECONFIG_H
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
#include "RemoteDebugging.h"
|
|
||||||
#include "RemoteManagement.h"
|
|
||||||
#if !defined(RMT_TEST) || (defined(RMT_TEST) && RMT_TEST == 0)
|
#if !defined(RMT_TEST) || (defined(RMT_TEST) && RMT_TEST == 0)
|
||||||
// #include <cstdio>
|
// #include <cstdio>
|
||||||
// #include <memory>
|
// #include <memory>
|
||||||
@@ -9,6 +7,9 @@
|
|||||||
#include "ConfigManager.h"
|
#include "ConfigManager.h"
|
||||||
#include "LoopManager.h"
|
#include "LoopManager.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
|
#include "RemoteDebugging.h"
|
||||||
|
#include "RemoteManagement.h"
|
||||||
|
#include "RemoteConfig.h"
|
||||||
|
|
||||||
extern "C" [[noreturn]] void app_main(void) {
|
extern "C" [[noreturn]] void app_main(void) {
|
||||||
ESP_LOGI("MEM", "Free internal RAM: %d",
|
ESP_LOGI("MEM", "Free internal RAM: %d",
|
||||||
@@ -23,6 +24,7 @@ extern "C" [[noreturn]] void app_main(void) {
|
|||||||
|
|
||||||
RemoteDebugging::register_calls(loop_manager->get_messaging_interface());
|
RemoteDebugging::register_calls(loop_manager->get_messaging_interface());
|
||||||
RemoteManagement::register_calls(loop_manager->get_messaging_interface());
|
RemoteManagement::register_calls(loop_manager->get_messaging_interface());
|
||||||
|
RemoteConfig::register_calls(loop_manager->get_messaging_interface(), config_manager);
|
||||||
RemoteManagement::mark_ota_success();
|
RemoteManagement::mark_ota_success();
|
||||||
|
|
||||||
loop_manager->control_loop();
|
loop_manager->control_loop();
|
||||||
|
|||||||
Reference in New Issue
Block a user