mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 01:18:36 +02:00
Added the ability to get the baudrate for networks
This commit is contained in:
@@ -13,7 +13,7 @@ enum
|
||||
};
|
||||
|
||||
/* Baudrate in CAN_SETTINGS/CANFD_SETTINGS */
|
||||
enum
|
||||
enum CANBaudrate
|
||||
{
|
||||
BPS20,
|
||||
BPS33,
|
||||
@@ -282,6 +282,8 @@ class IDeviceSettings {
|
||||
public:
|
||||
static constexpr uint16_t GS_VERSION = 5;
|
||||
static uint16_t CalculateGSChecksum(const std::vector<uint8_t>& settings);
|
||||
static CANBaudrate GetEnumValueForBaudrate(int64_t baudrate);
|
||||
static int64_t GetBaudrateValueForEnum(CANBaudrate enumValue);
|
||||
|
||||
IDeviceSettings(std::shared_ptr<Communication> com, size_t size) : com(com), err(com->err), structSize(size) {}
|
||||
virtual ~IDeviceSettings() {}
|
||||
@@ -293,19 +295,29 @@ public:
|
||||
bool apply(bool temporary = false);
|
||||
bool applyDefaults(bool temporary = false);
|
||||
|
||||
virtual bool setBaudrateFor(Network net, uint32_t baudrate);
|
||||
virtual bool setFDBaudrateFor(Network net, uint32_t baudrate);
|
||||
virtual int64_t getBaudrateFor(Network net) const;
|
||||
virtual bool setBaudrateFor(Network net, int64_t baudrate);
|
||||
|
||||
virtual CAN_SETTINGS* getCANSettingsFor(Network net) { (void)net; return nullptr; }
|
||||
virtual CANFD_SETTINGS* getCANFDSettingsFor(Network net) { (void)net; return nullptr; }
|
||||
virtual int64_t getFDBaudrateFor(Network net) const;
|
||||
virtual bool setFDBaudrateFor(Network net, int64_t baudrate);
|
||||
|
||||
virtual const CAN_SETTINGS* getCANSettingsFor(Network net) const { (void)net; return nullptr; }
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) {
|
||||
return const_cast<CAN_SETTINGS*>(static_cast<const IDeviceSettings*>(this)->getCANSettingsFor(net));
|
||||
}
|
||||
|
||||
virtual const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const { (void)net; return nullptr; }
|
||||
CANFD_SETTINGS* getCANFDSettingsFor(Network net) {
|
||||
return const_cast<CANFD_SETTINGS*>(static_cast<const IDeviceSettings*>(this)->getCANFDSettingsFor(net));
|
||||
}
|
||||
|
||||
const void* getRawStructurePointer() const { return settings.data(); }
|
||||
void* getRawStructurePointer() { return settings.data(); }
|
||||
template<typename T> T* getStructurePointer() { return static_cast<T*>((void*)settings.data()); }
|
||||
template<typename T> T getStructureCopy() { return *getStructurePointer<T>(); }
|
||||
template<typename T> const T* getStructurePointer() const { return static_cast<const T*>(getRawStructurePointer()); }
|
||||
template<typename T> T* getStructurePointer() { return static_cast<T*>(getRawStructurePointer()); }
|
||||
template<typename T> T getStructureCopy() const { return *getStructurePointer<T>(); }
|
||||
template<typename T> bool setStructure(const T& newStructure);
|
||||
|
||||
uint8_t getEnumValueForBaudrate(uint32_t baudrate);
|
||||
|
||||
bool disabled = false;
|
||||
bool readonly = false;
|
||||
protected:
|
||||
|
||||
@@ -100,7 +100,7 @@ typedef struct {
|
||||
class NeoVIFIRESettings : public IDeviceSettings {
|
||||
public:
|
||||
NeoVIFIRESettings(std::shared_ptr<Communication> com) : IDeviceSettings(com, sizeof(neovifire_settings_t)) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<neovifire_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
@@ -114,7 +114,7 @@ typedef struct {
|
||||
class NeoVIFIRE2Settings : public IDeviceSettings {
|
||||
public:
|
||||
NeoVIFIRE2Settings(std::shared_ptr<Communication> com) : IDeviceSettings(com, sizeof(neovifire2_settings_t)) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<neovifire2_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
@@ -137,7 +137,7 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
CANFD_SETTINGS* getCANFDSettingsFor(Network net) override {
|
||||
const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<neovifire2_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
@@ -36,7 +36,7 @@ typedef struct {
|
||||
class ValueCAN3Settings : public IDeviceSettings {
|
||||
public:
|
||||
ValueCAN3Settings(std::shared_ptr<Communication> com) : IDeviceSettings(com, sizeof(valuecan3_settings_t)) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan3_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace icsneo {
|
||||
class ValueCAN4_1Settings : public ValueCAN4_1_2Settings {
|
||||
public:
|
||||
ValueCAN4_1Settings(std::shared_ptr<Communication> com) : ValueCAN4_1_2Settings(com) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_1_2_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace icsneo {
|
||||
class ValueCAN4_2ELSettings : public ValueCAN4_4_2ELSettings {
|
||||
public:
|
||||
ValueCAN4_2ELSettings(std::shared_ptr<Communication> com) : ValueCAN4_4_2ELSettings(com) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_4_2el_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
CANFD_SETTINGS* getCANFDSettingsFor(Network net) override {
|
||||
const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_4_2el_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace icsneo {
|
||||
class ValueCAN4_2Settings : public ValueCAN4_1_2Settings {
|
||||
public:
|
||||
ValueCAN4_2Settings(std::shared_ptr<Communication> com) : ValueCAN4_1_2Settings(com) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_1_2_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
CANFD_SETTINGS* getCANFDSettingsFor(Network net) override {
|
||||
const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_1_2_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace icsneo {
|
||||
class ValueCAN4_4Settings : public ValueCAN4_4_2ELSettings {
|
||||
public:
|
||||
ValueCAN4_4Settings(std::shared_ptr<Communication> com) : ValueCAN4_4_2ELSettings(com) {}
|
||||
CAN_SETTINGS* getCANSettingsFor(Network net) override {
|
||||
const CAN_SETTINGS* getCANSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_4_2el_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
CANFD_SETTINGS* getCANFDSettingsFor(Network net) override {
|
||||
const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override {
|
||||
auto cfg = getStructurePointer<valuecan4_4_2el_settings_t>();
|
||||
switch(net.getNetID()) {
|
||||
case Network::NetID::HSCAN:
|
||||
|
||||
Reference in New Issue
Block a user