Files
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

85 lines
3.1 KiB
C++

// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest
#include "state.hpp"
#include <chrono>
#include <cstdint>
#include <nlohmann/json_fwd.hpp>
#include <string>
namespace module::state {
using std::chrono::milliseconds;
using std::chrono::system_clock;
using std::chrono::time_point_cast;
TimeStamp::TimeStamp() :
time_stamp{time_point_cast<milliseconds>(system_clock::now()).time_since_epoch().count() / milliseconds_in_second} {
}
TimeStamp& TimeStamp::operator=(const double value) {
time_stamp = static_cast<int64_t>(value);
return *this;
}
TimeStamp::operator int64_t() const {
return time_stamp;
}
std::string state_to_string(const ModuleState& module_state) {
using state::State;
const auto pwm = module_state.pwm_running ? '2' : '1';
switch (module_state.current_state) {
case State::STATE_DISABLED:
return "Disabled";
case State::STATE_A:
return "A" + std::to_string(pwm);
case State::STATE_B:
return "B" + std::to_string(pwm);
case State::STATE_C:
return "C" + std::to_string(pwm);
case State::STATE_D:
return "D" + std::to_string(pwm);
case State::STATE_E:
return "E" + std::to_string(pwm);
case State::STATE_F:
return "F" + std::to_string(pwm);
default:
return "";
}
}
void to_json(nlohmann::json& json, const PowermeterData& powermeter_data) {
json = nlohmann::json{{"time_stamp", static_cast<uint64_t>(powermeter_data.time_stamp)},
{"total_importWattHr", powermeter_data.import_totalWattHr},
{"total_exportWattHr", powermeter_data.export_totalWattHr},
{"wattL1", powermeter_data.wattL1},
{"vrmsL1", powermeter_data.vrmsL1},
{"irmsL1", powermeter_data.irmsL1},
{"import_wattHrL1", powermeter_data.import_wattHrL1},
{"export_wattHrL1", powermeter_data.export_wattHrL1},
{"tempL1", powermeter_data.tempL1},
{"freqL1", powermeter_data.freqL1},
{"wattL2", powermeter_data.wattL2},
{"vrmsL2", powermeter_data.vrmsL2},
{"irmsL2", powermeter_data.irmsL2},
{"import_wattHrL2", powermeter_data.import_wattHrL2},
{"export_wattHrL2", powermeter_data.export_wattHrL2},
{"tempL2", powermeter_data.tempL2},
{"freqL2", powermeter_data.freqL2},
{"wattL3", powermeter_data.wattL3},
{"vrmsL3", powermeter_data.vrmsL3},
{"irmsL3", powermeter_data.irmsL3},
{"import_wattHrL3", powermeter_data.import_wattHrL3},
{"export_wattHrL3", powermeter_data.export_wattHrL3},
{"tempL3", powermeter_data.tempL3},
{"freqL3", powermeter_data.freqL3},
{"irmsN", powermeter_data.irmsN}};
}
} // namespace module::state