7#include <condition_variable>
13#include "redux/canand/CanandAddress.h"
14#include "redux/canand/CanandFirmwareVersion.h"
15#include "units/time.h"
129 template<std::
size_t len>
requires(len < 8U)
135 std::mutex settingRecvLock;
136 std::optional<CanandFirmwareVersion> receivedFirmwareVersion{std::nullopt};
143 std::optional<units::second_t> lastMessageTs{std::nullopt};
156 static constexpr uint8_t kSettingCommand = 0x2;
158 static constexpr uint8_t kSetSetting = 0x3;
160 static constexpr uint8_t kReportSetting = 0x4;
162 static constexpr uint8_t kClearStickyFaults = 0x5;
164 static constexpr uint8_t kStatus = 0x6;
166 static constexpr uint8_t kPartyMode = 0x7;
170class SettingCommand {
173 static constexpr uint8_t kFetchSettings = 0x0;
175 static constexpr uint8_t kResetFactoryDefault = 0x1;
177 static constexpr uint8_t kFetchSettingValue = 0x2;
184 static constexpr uint8_t kStatusFramePeriod = 0x4;
186 static constexpr uint8_t kSerialNumber = 0x5;
188 static constexpr uint8_t kFirmwareVersion = 0x6;
192const std::vector<uint8_t> VDEP_SETTINGS = {
193 Setting::kStatusFramePeriod,
194 Setting::kSerialNumber,
195 Setting::kFirmwareVersion
Definition CanandAddress.h:62
bool SendCANMessage(uint16_t apiIndex, uint8_t *data, uint8_t length)
Definition CanandDevice.h:35
virtual void CheckReceivedFirmwareVersion()
virtual void PreHandleMessage(CanandMessage &msg)
bool IsConnected(units::second_t timeout=2_s)
virtual CanandAddress & GetAddress()=0
virtual CanandFirmwareVersion GetMinimumFirmwareVersion()
Definition CanandDevice.h:109
virtual void HandleMessage(CanandMessage &msg)=0
std::string GetDeviceName()
bool SendCANMessage(uint8_t apiIndex, uint8_t *data, uint8_t length)
Definition CanandDevice.h:119
virtual std::string GetDeviceClassName()
Definition CanandDevice.h:74
void SendCANMessage(uint8_t msgId, std::span< std::byte, len > data)
Definition CanandDevice.h:130
Definition CanandMessage.h:26
Definition Namespaces.h:17
Definition CanandFirmwareVersion.h:17