CAN FD baudrate settings

This commit is contained in:
Paul Hollinsky
2018-10-30 15:38:15 -04:00
parent 92d98f8bd5
commit 1a9c907fea
9 changed files with 100 additions and 9 deletions
+24
View File
@@ -192,6 +192,9 @@ bool IDeviceSettings::setBaudrateFor(Network net, uint32_t baudrate) {
switch(net.getType()) {
case Network::Type::CAN: {
if(baudrate > 1000000) // This is an FD baudrate. Use setFDBaudrateFor instead.
return false;
CAN_SETTINGS* cfg = getCANSettingsFor(net);
if(cfg == nullptr)
return false;
@@ -209,6 +212,27 @@ bool IDeviceSettings::setBaudrateFor(Network net, uint32_t baudrate) {
}
}
bool IDeviceSettings::setFDBaudrateFor(Network net, uint32_t baudrate) {
if(disabled || readonly)
return false;
switch(net.getType()) {
case Network::Type::CAN: {
CANFD_SETTINGS* cfg = getCANFDSettingsFor(net);
if(cfg == nullptr)
return false;
uint8_t newBaud = getEnumValueForBaudrate(baudrate);
if(newBaud == 0xFF)
return false;
cfg->FDBaudrate = newBaud;
return true;
}
default:
return false;
}
}
template<typename T> bool IDeviceSettings::setStructure(const T& newStructure) {
if(disabled || readonly)
return false;