mirror of
https://github.com/cagnulein/qdomyos-zwift.git
synced 2026-02-18 00:17:41 +01:00
Compare commits
2 Commits
Mobi-Rower
...
build-853
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5396959e9a | ||
|
|
91635e2a9d |
@@ -4046,7 +4046,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 852;
|
||||
CURRENT_PROJECT_VERSION = 853;
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "ADB_HOST=1";
|
||||
@@ -4237,7 +4237,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 852;
|
||||
CURRENT_PROJECT_VERSION = 853;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = NO;
|
||||
@@ -4464,7 +4464,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 852;
|
||||
CURRENT_PROJECT_VERSION = 853;
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@@ -4560,7 +4560,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 852;
|
||||
CURRENT_PROJECT_VERSION = 853;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = YES;
|
||||
@@ -4652,7 +4652,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 852;
|
||||
CURRENT_PROJECT_VERSION = 853;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
|
||||
ENABLE_BITCODE = YES;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -4766,7 +4766,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 852;
|
||||
CURRENT_PROJECT_VERSION = 853;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
|
||||
ENABLE_BITCODE = YES;
|
||||
|
||||
@@ -41,12 +41,7 @@ void trxappgateusbtreadmill::writeCharacteristic(uint8_t *data, uint8_t data_len
|
||||
}
|
||||
writeBuffer = new QByteArray((const char *)data, data_len);
|
||||
|
||||
if (gattWriteCharacteristic.properties() & QLowEnergyCharacteristic::WriteNoResponse) {
|
||||
gattCommunicationChannelService->writeCharacteristic(gattWriteCharacteristic, *writeBuffer,
|
||||
QLowEnergyService::WriteWithoutResponse);
|
||||
} else {
|
||||
gattCommunicationChannelService->writeCharacteristic(gattWriteCharacteristic, *writeBuffer);
|
||||
}
|
||||
gattCommunicationChannelService->writeCharacteristic(gattWriteCharacteristic, *writeBuffer);
|
||||
|
||||
if (!disable_log) {
|
||||
emit debug(QStringLiteral(" >> ") + writeBuffer->toHex(' ') + QStringLiteral(" // ") + info);
|
||||
@@ -72,13 +67,7 @@ void trxappgateusbtreadmill::forceIncline(double requestIncline) {
|
||||
|
||||
if (requestIncline < 0)
|
||||
requestIncline = 0;
|
||||
if (treadmill_type == TYPE::ADIDAS) {
|
||||
uint8_t write[] = {0xf0, 0xac, 0x5b, 0xd3, 0x08, 0x64, 0x64, 0x9a};
|
||||
write[4] = (requestIncline + 1);
|
||||
write[7] = write[4] + 0x92;
|
||||
|
||||
writeCharacteristic(write, sizeof(write), QStringLiteral("forceIncline"), false, true);
|
||||
} else if (!reebok_fr30_treadmill) {
|
||||
if (!reebok_fr30_treadmill) {
|
||||
uint8_t write[] = {0xf0, 0xac, 0x01, 0xd3, 0x03, 0x64, 0x64, 0x3b};
|
||||
write[4] = (requestIncline + 1);
|
||||
write[7] = write[4] + 0x38;
|
||||
@@ -128,16 +117,13 @@ void trxappgateusbtreadmill::update() {
|
||||
}
|
||||
|
||||
bool toorx30 = settings.value(QZSettings::toorx_3_0, QZSettings::default_toorx_3_0).toBool();
|
||||
if (treadmill_type == TYPE::REEBOK || treadmill_type == TYPE::REEBOK_2) {
|
||||
if (treadmill_type == TYPE::REEBOK) {
|
||||
const uint8_t noOpData[] = {0xf0, 0xa2, 0x32, 0xd3, 0x97};
|
||||
writeCharacteristic((uint8_t *)noOpData, sizeof(noOpData), QStringLiteral("noOp"), false, true);
|
||||
} else if (treadmill_type == TYPE::DKN_2) {
|
||||
const uint8_t noOpData[] = {0xf0, 0xa2, 0x04, 0x01, 0x97};
|
||||
writeCharacteristic((uint8_t *)noOpData, sizeof(noOpData), QStringLiteral("noOp"), false, true);
|
||||
} else if (treadmill_type == TYPE::ADIDAS) {
|
||||
const uint8_t noOpData[] = {0xf0, 0xa2, 0x5b, 0xd3, 0xc0};
|
||||
writeCharacteristic((uint8_t *)noOpData, sizeof(noOpData), QStringLiteral("noOp"), false, true);
|
||||
} else if (treadmill_type == TYPE::DKN || treadmill_type == TYPE::DKN_2 || treadmill_type == TYPE::DKN_3 || toorx30 == false ||
|
||||
} else if (treadmill_type == TYPE::DKN || treadmill_type == TYPE::DKN_2 || toorx30 == false ||
|
||||
jtx_fitness_sprint_treadmill) {
|
||||
const uint8_t noOpData[] = {0xf0, 0xa2, 0x01, 0xd3, 0x66};
|
||||
writeCharacteristic((uint8_t *)noOpData, sizeof(noOpData), QStringLiteral("noOp"), false, true);
|
||||
@@ -167,16 +153,12 @@ void trxappgateusbtreadmill::update() {
|
||||
if (requestStart != -1) {
|
||||
emit debug(QStringLiteral("starting..."));
|
||||
// btinit(true);
|
||||
if (treadmill_type == TYPE::REEBOK || treadmill_type == TYPE::REEBOK_2) {
|
||||
if (treadmill_type == TYPE::REEBOK) {
|
||||
const uint8_t startTape[] = {0xf0, 0xa5, 0x32, 0xd3, 0x02, 0x9c};
|
||||
writeCharacteristic((uint8_t *)startTape, sizeof(startTape), QStringLiteral("startTape"), false, true);
|
||||
} else if (treadmill_type == TYPE::DKN || treadmill_type == TYPE::DKN_2 || toorx30 == false) {
|
||||
const uint8_t startTape[] = {0xf0, 0xa5, 0x01, 0xd3, 0x02, 0x6b};
|
||||
writeCharacteristic((uint8_t *)startTape, sizeof(startTape), QStringLiteral("startTape"), false, true);
|
||||
} else if (treadmill_type == TYPE::ADIDAS) {
|
||||
const uint8_t startTape[] = {0xf0, 0xa5, 0x5b, 0xd3, 0x02, 0xc5};
|
||||
writeCharacteristic((uint8_t *)startTape, sizeof(startTape), QStringLiteral("startTape"), false, true);
|
||||
writeCharacteristic((uint8_t *)startTape, sizeof(startTape), QStringLiteral("startTape"), false, true);
|
||||
} else {
|
||||
const uint8_t startTape[] = {0xf0, 0xa5, 0x23, 0xd3, 0x02, 0x8d};
|
||||
writeCharacteristic((uint8_t *)startTape, sizeof(startTape), QStringLiteral("startTape"), false, true);
|
||||
@@ -188,12 +170,6 @@ void trxappgateusbtreadmill::update() {
|
||||
if (requestStop != -1) {
|
||||
emit debug(QStringLiteral("stopping..."));
|
||||
// writeCharacteristic(initDataF0C800B8, sizeof(initDataF0C800B8), "stop tape");
|
||||
|
||||
if (treadmill_type == TYPE::ADIDAS) {
|
||||
const uint8_t stopTape[] = {0xf0, 0xa5, 0x5b, 0xd3, 0x04, 0xc7};
|
||||
writeCharacteristic((uint8_t *)stopTape, sizeof(stopTape), QStringLiteral("stopTape"), false, true);
|
||||
}
|
||||
|
||||
requestStop = -1;
|
||||
}
|
||||
if (requestIncreaseFan != -1) {
|
||||
@@ -223,43 +199,28 @@ void trxappgateusbtreadmill::characteristicChanged(const QLowEnergyCharacteristi
|
||||
|
||||
emit debug(QStringLiteral(" << ") + newValue.toHex(' '));
|
||||
|
||||
lastPacket.append(newValue);
|
||||
|
||||
qDebug() << "actual lastPacket" << lastPacket.toHex(' ');
|
||||
|
||||
// Focus Fitness Senator 54 iplus #1790
|
||||
if((newValue.length() < 18 && lastPacket.length() > 2 && (((uint8_t)lastPacket.at(0)) != 0xf0 || ((uint8_t)lastPacket.at(1)) != 0xb2)) || lastPacket.length() > 19) {
|
||||
if(lastPacket.length() == 3 && ((uint8_t)lastPacket.at(1)) == 0xf0 && ((uint8_t)lastPacket.at(2)) == 0xb2) {
|
||||
lastPacket.clear();
|
||||
lastPacket.append(0xf0);
|
||||
lastPacket.append(0xb2);
|
||||
return;
|
||||
}
|
||||
lastPacket.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
if ((lastPacket.length() != 19 && treadmill_type != TYPE::DKN_2) ||
|
||||
(lastPacket.length() != 18 && treadmill_type == TYPE::DKN_2)) {
|
||||
lastPacket = newValue;
|
||||
if ((newValue.length() != 19 && treadmill_type != TYPE::DKN_2) ||
|
||||
(newValue.length() != 18 && treadmill_type == TYPE::DKN_2)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (treadmill_type == TYPE::IRUNNING || treadmill_type == TYPE::IRUNNING_2) {
|
||||
if (lastPacket.at(15) == 0x03 && lastPacket.at(16) == 0x02 && readyToStart == false) {
|
||||
if (newValue.at(15) == 0x03 && newValue.at(16) == 0x02 && readyToStart == false) {
|
||||
readyToStart = true;
|
||||
requestStart = 1;
|
||||
}
|
||||
} else if (treadmill_type != TYPE::REEBOK && treadmill_type != TYPE::REEBOK_2 && treadmill_type != TYPE::DKN && treadmill_type != TYPE::DKN_2) {
|
||||
if (lastPacket.at(16) == 0x04 && lastPacket.at(17) == 0x03 && readyToStart == false) {
|
||||
} else if (treadmill_type != TYPE::REEBOK && treadmill_type != TYPE::DKN && treadmill_type != TYPE::DKN_2) {
|
||||
if (newValue.at(16) == 0x04 && newValue.at(17) == 0x03 && readyToStart == false) {
|
||||
readyToStart = true;
|
||||
requestStart = 1;
|
||||
}
|
||||
}
|
||||
|
||||
double speed = GetSpeedFromPacket(lastPacket);
|
||||
double incline = GetInclinationFromPacket(lastPacket);
|
||||
double kcal = GetKcalFromPacket(lastPacket);
|
||||
double distance = GetDistanceFromPacket(lastPacket);
|
||||
double speed = GetSpeedFromPacket(newValue);
|
||||
double incline = GetInclinationFromPacket(newValue);
|
||||
double kcal = GetKcalFromPacket(newValue);
|
||||
double distance = GetDistanceFromPacket(newValue);
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
if (settings.value(QZSettings::ant_heart, QZSettings::default_ant_heart).toBool())
|
||||
@@ -287,7 +248,7 @@ void trxappgateusbtreadmill::characteristicChanged(const QLowEnergyCharacteristi
|
||||
emit debug(QStringLiteral("Current KCal: ") + QString::number(kcal));
|
||||
emit debug(QStringLiteral("Current Distance: ") + QString::number(distance));
|
||||
emit debug(QStringLiteral("Current Elapsed from the treadmill (not used): ") +
|
||||
QString::number(GetElapsedFromPacket(lastPacket)));
|
||||
QString::number(GetElapsedFromPacket(newValue)));
|
||||
emit debug(QStringLiteral("Current Distance Calculated: ") + QString::number(DistanceCalculated));
|
||||
|
||||
if (m_control->error() != QLowEnergyController::NoError) {
|
||||
@@ -300,8 +261,6 @@ void trxappgateusbtreadmill::characteristicChanged(const QLowEnergyCharacteristi
|
||||
Distance = distance;
|
||||
|
||||
firstCharChanged = false;
|
||||
|
||||
lastPacket.clear();
|
||||
}
|
||||
|
||||
uint16_t trxappgateusbtreadmill::GetElapsedFromPacket(const QByteArray &packet) {
|
||||
@@ -311,7 +270,7 @@ uint16_t trxappgateusbtreadmill::GetElapsedFromPacket(const QByteArray &packet)
|
||||
}
|
||||
|
||||
double trxappgateusbtreadmill::GetSpeedFromPacket(const QByteArray &packet) {
|
||||
uint16_t convertedData = (uint16_t)((packet.at(13) - 1)) + (((uint16_t)((uint8_t)packet.at(12) - 1)) * 100);
|
||||
uint16_t convertedData = (packet.at(13) - 1) + ((packet.at(12) - 1) * 100);
|
||||
double data = (double)(convertedData) / 10.0f;
|
||||
return data;
|
||||
}
|
||||
@@ -352,7 +311,7 @@ void trxappgateusbtreadmill::btinit(bool startTape) {
|
||||
settings.value(QZSettings::jtx_fitness_sprint_treadmill, QZSettings::default_jtx_fitness_sprint_treadmill)
|
||||
.toBool();
|
||||
|
||||
if (treadmill_type == TYPE::DKN || treadmill_type == TYPE::DKN_3) {
|
||||
if (treadmill_type == TYPE::DKN) {
|
||||
const uint8_t initData1[] = {0xf0, 0xa0, 0x02, 0x02, 0x94};
|
||||
const uint8_t initData2[] = {0xf0, 0xa0, 0x01, 0xd3, 0x64};
|
||||
const uint8_t initData3[] = {0xf0, 0xa5, 0x01, 0xd3, 0x04, 0x6d};
|
||||
@@ -390,45 +349,7 @@ void trxappgateusbtreadmill::btinit(bool startTape) {
|
||||
writeCharacteristic((uint8_t *)initData3, sizeof(initData3), QStringLiteral("init"), false, false);
|
||||
QThread::msleep(400);
|
||||
|
||||
} else if (treadmill_type == TYPE::ADIDAS) {
|
||||
const uint8_t initData1[] = {0xf0, 0xa0, 0x02, 0x02, 0x94};
|
||||
const uint8_t initData2[] = {0xf0, 0xa0, 0x5b, 0xd3, 0xbe};
|
||||
const uint8_t initData3[] = {0xf0, 0xa5, 0x5b, 0xd3, 0x04, 0xc7};
|
||||
const uint8_t initData4[] = {0xf0, 0xa1, 0x5b, 0xd3, 0xbf};
|
||||
const uint8_t initData5[] = {0xf0, 0xa3, 0x5b, 0xd3, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x47, 0x11};
|
||||
const uint8_t initData6[] = {0xf0, 0xac, 0x5b, 0xd3, 0x01, 0x64, 0x64, 0x93};
|
||||
const uint8_t initData7[] = {0xf0, 0xa4, 0x5b, 0xd3, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x0b, 0x01, 0x01, 0xd7};
|
||||
const uint8_t initData8[] = {0xf0, 0xaf, 0x5b, 0xd3, 0x02, 0xcf};
|
||||
|
||||
writeCharacteristic((uint8_t *)initData1, sizeof(initData1), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData2, sizeof(initData2), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData3, sizeof(initData3), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData3, sizeof(initData3), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData3, sizeof(initData3), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData4, sizeof(initData4), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData5, sizeof(initData5), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData6, sizeof(initData6), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData6, sizeof(initData6), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData6, sizeof(initData6), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData7, sizeof(initData7), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData8, sizeof(initData8), QStringLiteral("init"), false, true);
|
||||
QThread::msleep(400);
|
||||
writeCharacteristic((uint8_t *)initData3, sizeof(initData3), QStringLiteral("init"), false, false);
|
||||
QThread::msleep(400);
|
||||
|
||||
} else if (treadmill_type == TYPE::REEBOK || treadmill_type == TYPE::REEBOK_2) {
|
||||
} else if (treadmill_type == TYPE::REEBOK) {
|
||||
const uint8_t initData1[] = {0xf0, 0xa0, 0x01, 0x01, 0x92};
|
||||
const uint8_t initData2[] = {0xf0, 0xa0, 0x32, 0xd3, 0x95};
|
||||
const uint8_t initData3[] = {0xf0, 0xa1, 0x32, 0xd3, 0x96};
|
||||
@@ -584,7 +505,7 @@ void trxappgateusbtreadmill::stateChanged(QLowEnergyService::ServiceState state)
|
||||
QString uuidNotify = QStringLiteral("0000fff1-0000-1000-8000-00805f9b34fb");
|
||||
QString uuidNotify2 = QStringLiteral("49535343-ACA3-481C-91EC-D85E28A60318");
|
||||
|
||||
if (treadmill_type == TYPE::IRUNNING || treadmill_type == TYPE::REEBOK || treadmill_type == TYPE::DKN_2 || treadmill_type == TYPE::DKN_3) {
|
||||
if (treadmill_type == TYPE::IRUNNING || treadmill_type == TYPE::REEBOK || treadmill_type == TYPE::DKN_2) {
|
||||
uuidWrite = QStringLiteral("49535343-8841-43f4-a8d4-ecbe34729bb3");
|
||||
uuidNotify = QStringLiteral("49535343-1E4D-4BD9-BA61-23C647249616");
|
||||
}
|
||||
@@ -676,28 +597,6 @@ void trxappgateusbtreadmill::serviceScanDone(void) {
|
||||
treadmill_type = TYPE::IRUNNING_2;
|
||||
qDebug() << QStringLiteral("treadmill_type IRUNNING_2");
|
||||
}
|
||||
} else if (treadmill_type == TYPE::REEBOK) {
|
||||
uuid = QStringLiteral("0000fff0-0000-1000-8000-00805f9b34fb");
|
||||
QBluetoothUuid _gattCommunicationChannelServiceId2((QString)uuid);
|
||||
gattCommunicationChannelService = m_control->createServiceObject(_gattCommunicationChannelServiceId2);
|
||||
if (gattCommunicationChannelService == nullptr) {
|
||||
qDebug() << QStringLiteral("invalid service") << uuid;
|
||||
return;
|
||||
} else {
|
||||
treadmill_type = TYPE::REEBOK_2;
|
||||
qDebug() << QStringLiteral("treadmill_type REEBOK_2");
|
||||
}
|
||||
} else if (treadmill_type == TYPE::DKN) {
|
||||
uuid = QStringLiteral("49535343-fe7d-4ae5-8fa9-9fafd205e455");
|
||||
QBluetoothUuid _gattCommunicationChannelServiceId2((QString)uuid);
|
||||
gattCommunicationChannelService = m_control->createServiceObject(_gattCommunicationChannelServiceId2);
|
||||
if (gattCommunicationChannelService == nullptr) {
|
||||
qDebug() << QStringLiteral("invalid service") << uuid;
|
||||
return;
|
||||
} else {
|
||||
treadmill_type = TYPE::DKN_3;
|
||||
qDebug() << QStringLiteral("treadmill_type DKN_3");
|
||||
}
|
||||
} else {
|
||||
qDebug() << QStringLiteral("invalid service") << uuid;
|
||||
return;
|
||||
@@ -739,7 +638,6 @@ void trxappgateusbtreadmill::deviceDiscovered(const QBluetoothDeviceInfo &device
|
||||
device.name().toUpper().startsWith(QStringLiteral("DKN RUN")) ||
|
||||
device.name().toUpper().startsWith(QStringLiteral("K80_")) ||
|
||||
device.name().toUpper().startsWith(QStringLiteral("XT900")) ||
|
||||
device.name().toUpper().startsWith(QStringLiteral("ADIDAS ")) ||
|
||||
device.name().toUpper().startsWith(QStringLiteral("XT485"))) {
|
||||
if (dkn_endurun_treadmill) {
|
||||
treadmill_type = TYPE::DKN;
|
||||
@@ -755,8 +653,6 @@ void trxappgateusbtreadmill::deviceDiscovered(const QBluetoothDeviceInfo &device
|
||||
treadmill_type = TYPE::IRUNNING;
|
||||
} else if (device.name().toUpper().startsWith(QStringLiteral("REEBOK"))) {
|
||||
treadmill_type = TYPE::REEBOK;
|
||||
} else if (device.name().toUpper().startsWith(QStringLiteral("ADIDAS "))) {
|
||||
treadmill_type = TYPE::ADIDAS;
|
||||
} else {
|
||||
treadmill_type = TYPE::TRXAPPGATE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user