#include "../headers/ScStw.hpp" const char *ScStw::SOCKET_MESSAGE_START_KEY = ""; const char *ScStw::SOCKET_MESSAGE_END_KEY = ""; const QMap ScStw::baseStationSettings = { {"ReadySoundEnable", ScStw::ReadySoundEnableSetting}, {"ReadySoundDelay", ScStw::ReadySoundDelaySetting}, {"AtYourMarksSoundEnable", ScStw::AtYourMarksSoundEnableSetting}, {"AtYourMarksSoundDelay", ScStw::AtYourMarksSoundDelaySetting}, {"SoundVolume", ScStw::SoundVolumeSetting} }; ScStw::BaseStationSetting ScStw::baseStationSettingFromString(QString s) { if(!ScStw::baseStationSettings.contains(s)) return ScStw::InvalidSetting; return ScStw::baseStationSettings[s]; } QString ScStw::baseStationSettingToString(ScStw::BaseStationSetting s) { for(QString key: ScStw::baseStationSettings.keys()) { if(ScStw::baseStationSettings[key] == s) return key; } return "Invalid"; } ScStw::BaseStationSetting ScStw::baseStationSettingfromInt(int i) { bool ok; BaseStationSetting s = ScStw::toEnumValue(i, &ok); if(!ok) return InvalidSetting; else return s; } ScStw::SignalKey ScStw::signalKeyFromInt(int i) { bool ok; ScStw::SignalKey k = ScStw::toEnumValue(i, &ok); if(!ok) return InvalidSignal; else return k; } ScStw::SocketCommand ScStw::socketCommandFromInt(int i) { bool ok; SocketCommand c = ScStw::toEnumValue(i, &ok); if(!ok) return InvalidCommand; else return c; } int ScStw::firmwareCompare(QString a, QString b) { /* * * \return -3: major of a is lower than b * -2: minor of a is lower than b * -1: patch of a is lower than b * 0: a and b are identical * 1: patch b is lower than a * 2: minor of b is lower than a * 3: major of b is lower than a */ if(a.count(".") != 2 || a.length() != 5) return -4; int aMajor = a.split(".")[0].toInt(); int aMinor = a.split(".")[1].toInt(); int aPatch = a.split(".")[2].toInt(); if(b.count(".") != 2 || a.length() != 5) return 4; int bMajor = b.split(".")[0].toInt(); int bMinor = b.split(".")[1].toInt(); int bPatch = b.split(".")[2].toInt(); if(a == b) return 0; if(aMajor < bMajor) return -3; else return 3; if(aMinor < bMinor) return -2; else return 2; if(aPatch < bPatch) return -1; else return 1; }