obu-firmware builds against the vanetza-idf C-ITS library, which until now came from the colleague's microbu-esp32c5 tree beside the repository and was not tracked here, so a clone of this repository could not build the firmware it ships. The library alone is now part of obu-firmware, as obu-firmware/external/vanetza-idf: their external/vanetza-idf at commit cf4b99f, unchanged (9775 files; see its PROVENANCE.md). CMake takes it from there by default; -DVANETZA_IDF_DIR still points the build elsewhere. The rest of the colleague's tree (their own VAM firmware, PKI tooling, station-link Python tools, the V2X2MAP bridge) stays out of this repository and gitignored; nothing is pushed to their repository. NOTES.md, docs/06, TODO.md and the pcap verifier's usage line point at the new location.
83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
#include "station_config_filesystem.hpp"
|
|
#include <fstream>
|
|
#include <stdexcept>
|
|
#include <system_error>
|
|
|
|
namespace vanetza
|
|
{
|
|
namespace pki
|
|
{
|
|
|
|
namespace
|
|
{
|
|
|
|
// Write text to a config file; on a write error remove the half-written file so a later
|
|
// read sees a clean "unset" state rather than a corrupt one.
|
|
void write_config(const std::filesystem::path& path, const std::string& content)
|
|
{
|
|
std::ofstream ofs(path);
|
|
ofs << content;
|
|
ofs.flush();
|
|
if (!ofs) {
|
|
std::error_code ec;
|
|
std::filesystem::remove(path, ec);
|
|
throw std::runtime_error("could not write station config file " + path.string());
|
|
}
|
|
}
|
|
|
|
} // namespace
|
|
|
|
StationConfigurationFilesystem::StationConfigurationFilesystem(const std::filesystem::path& root) : m_root(root)
|
|
{
|
|
std::filesystem::create_directories(m_root);
|
|
}
|
|
|
|
std::string StationConfigurationFilesystem::get_canonical_identifier() const
|
|
{
|
|
std::ifstream ifs(m_root / "identifier");
|
|
std::string identifier;
|
|
std::getline(ifs, identifier);
|
|
return identifier;
|
|
}
|
|
|
|
void StationConfigurationFilesystem::set_canonical_identifier(const std::string& identifier)
|
|
{
|
|
write_config(m_root / "identifier", identifier);
|
|
}
|
|
|
|
boost::optional<HashedId8> StationConfigurationFilesystem::get_ec_identifier() const
|
|
{
|
|
return get_hid8(m_root / "ec.hid8");
|
|
}
|
|
|
|
void StationConfigurationFilesystem::set_ec_identifier(const HashedId8& id)
|
|
{
|
|
set_hid8(m_root / "ec.hid8", id);
|
|
}
|
|
|
|
boost::optional<HashedId8> StationConfigurationFilesystem::get_root_ca() const
|
|
{
|
|
return get_hid8(m_root / "rootca.hid8");
|
|
}
|
|
|
|
void StationConfigurationFilesystem::set_root_ca(const HashedId8& id)
|
|
{
|
|
set_hid8(m_root / "rootca.hid8", id);
|
|
}
|
|
|
|
boost::optional<HashedId8> StationConfigurationFilesystem::get_hid8(const std::filesystem::path& path) const
|
|
{
|
|
std::ifstream ifs(path);
|
|
std::string hex;
|
|
std::getline(ifs, hex);
|
|
return HashedId8::from_hexstring(hex);
|
|
}
|
|
|
|
void StationConfigurationFilesystem::set_hid8(const std::filesystem::path& path, const HashedId8& id)
|
|
{
|
|
write_config(path, hexstring(id));
|
|
}
|
|
|
|
} // namespace pki
|
|
} // namespace vanetza
|