8#include "build/distributor.h"
9#include "lucidac/front_panel_signaling.h"
10#include "mode/counters.h"
11#include "nvmconfig/vendor.h"
12#include "protocol/handler.h"
13#include "protocol/jsonl_logging.h"
14#include "utils/hashflash.h"
15#include "utils/reboot.h"
24 msg_out[
"serial"] = nvmconfig::VendorOTP::get().serial_number;
25 msg_out[
"mac"] = net::StartupConfig::get().mac;
27 if (req.msg_in.containsKey(
"blink")) {
28 leds::indicate_error();
31 dist::write_to_json(msg_out.createNestedObject(
"fw_build"));
32 loader::flashimage::toJson(msg_out.createNestedObject(
"fw_image"));
33 return utils::status::success();
37#ifdef ANABRID_WRITE_EEPROM
40class WriteSystemIdent :
public MessageHandler {
42 utils::status replyWithObject(
const Request& req, JsonObject &msg_out)
override {
43 auto &persistent = nvmconfig::PersistentSettingsWriter::get();
44 auto &vendor = nvmconfig::VendorOTP::get();
45 persistent.read_from_eeprom();
46 if (req.msg_in.containsKey(
"vendor"))
47 vendor.fromJson(req.msg_in[
"vendor"], nvmconfig::Context::User);
48 bool valid = vendor.is_valid();
50 persistent.write_to_eeprom();
52 msg_out[
"valid"] = valid;
53 return utils::status::success();
58class ResetSystemIdent :
public MessageHandler {
60 utils::status replyWithObject(
const Request& req, JsonObject &msg_out)
override {
61 bool write_to_hardware = req.msg_in[
"write_to_hardware"];
62 auto &persistent = nvmconfig::PersistentSettingsWriter::get();
63 persistent.reset_defaults(write_to_hardware);
64 return utils::status::success();
70class ReadSystemIdent :
public MessageHandler {
72 utils::status replyWithObject(
const Request& req, JsonObject &msg_out)
override {
73 auto &persistent = nvmconfig::PersistentSettingsWriter::get();
74 if (req.msg_in.containsKey(
"read_from_eeprom"))
75 persistent.read_from_eeprom();
78 auto subsystems = msg_out.createNestedObject(
"subsystems");
79 for (
auto const &sys : nvmconfig::PersistentSettingsWriter::get().subsystems) {
80 auto sysout = subsystems.createNestedObject(sys->name());
81 sys->toJson(sysout, nvmconfig::Context::User);
84 return utils::status::success();
94 return utils::status::success();
102 msg::StreamingJsonResponse res(io);
103 res.begin_envelope(req);
104 msg::StartupLog::get().stream_to_json(res);
113 auto perf_counters = msg_out.createNestedObject(
"perf_counters");
114 mode::PerformanceCounter::get().to_json(perf_counters);
115 return utils::status::success();
utils::status replyWithObject(const Request &req, JsonObject &msg_out) override
utils::status replyWithObject(const Request &req, JsonObject &msg_out) override
bool replyStreaming(const Request &req, Stream &io) override
utils::status replyWithObject(const Request &req, JsonObject &msg_out) override
void reboot()
Just a little generic Teensy reboot routine.