Files
cariflex/tools/EVerest-main/lib/everest/slac/include/slac/channel.hpp
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

57 lines
1.3 KiB
C++

// SPDX-License-Identifier: Apache-2.0
// Copyright 2022 - 2022 Pionix GmbH and Contributors to EVerest
#ifndef SLAC_CHANNEL_HPP
#define SLAC_CHANNEL_HPP
#include <memory>
#include <string>
// SPDX-License-Identifier: Apache-2.0
// Copyright 2020 - 2021 Pionix GmbH and Contributors to EVerest
#include <slac/slac.hpp>
namespace utils {
class PacketSocket;
}
namespace slac {
// TODO (aw):
// - do we need to handle VLAN tags?
// - probably we need to handle different sessions ...
// - channel could own the interface handle and pass it to the packet
// socket
class Channel {
public:
Channel();
// Channel(const std::string& interface_name);
~Channel();
bool open(const std::string& interface_name);
bool read(slac::messages::HomeplugMessage& msg, int timeout);
bool write(slac::messages::HomeplugMessage& msg, int timeout);
const std::string& get_error() const {
return error;
}
bool got_timeout() const {
return did_timeout;
}
const uint8_t* get_mac_addr();
private:
// for debugging only, should be removed
std::unique_ptr<::utils::PacketSocket> socket;
uint8_t orig_if_mac[ETH_ALEN];
std::string error;
bool did_timeout{false};
};
} // namespace slac
#endif // SLAC_CHANNEL_HPP