Compare commits

...

2 Commits

Author SHA1 Message Date
Roberto Viola
bdbf5ff1f6 wait for a packet before starting 2025-10-01 11:19:16 +02:00
Roberto Viola
45431315fd Update echelonconnectsport.cpp 2025-10-01 08:56:53 +02:00
2 changed files with 31 additions and 14 deletions

View File

@@ -252,6 +252,7 @@ void echelonconnectsport::characteristicChanged(const QLowEnergyCharacteristic &
qDebug() << " << " + newValue.toHex(' ');
lastPacket = newValue;
emit packetReceived();
// resistance value is in another frame
if (newValue.length() == 5 && ((unsigned char)newValue.at(0)) == 0xf0 && ((unsigned char)newValue.at(1)) == 0xd2) {
@@ -377,25 +378,38 @@ double echelonconnectsport::GetDistanceFromPacket(const QByteArray &packet) {
return data;
}
void echelonconnectsport::waitForAPacket() {
QEventLoop loop;
QTimer timeout;
connect(this, &echelonconnectsport::packetReceived, &loop, &QEventLoop::quit);
timeout.singleShot(3000, &loop, SLOT(quit()));
loop.exec();
}
void echelonconnectsport::btinit() {
uint8_t initData1[] = {0xf0, 0xa1, 0x00, 0x91};
uint8_t initData2[] = {0xf0, 0xa3, 0x00, 0x93};
uint8_t initData3[] = {0xf0, 0xb0, 0x01, 0x01, 0xa2};
// uint8_t initData4[] = { 0xf0, 0x60, 0x00, 0x50 }; // get sleep command
waitForAPacket();
waitForAPacket();
// useless i guess
// writeCharacteristic(initData4, sizeof(initData4), "get sleep", false, true);
uint8_t initData1[] = {0xf0, 0xa4, 0x00, 0x94};
uint8_t initData2[] = {0xf0, 0xe0, 0x1b, 0xb5, 0x81, 0x08, 0x33, 0x5c};
uint8_t initData3[] = {0xf0, 0xa1, 0x00, 0x91};
uint8_t initData4[] = {0xf0, 0xa3, 0x00, 0x93};
uint8_t initData5[] = {0xf0, 0xb0, 0x01, 0x01, 0xa2};
uint8_t initData6[] = {0xf0, 0xa5, 0x00, 0x95};
uint8_t initData7[] = {0xf0, 0x71, 0x03, 0x00, 0x00, 0xff, 0x63};
// in the snoof log it repeats this frame 4 times, i will have to analyze the response to understand if 4 times are
// enough
writeCharacteristic(initData1, sizeof(initData1), QStringLiteral("init"), false, true);
writeCharacteristic(initData1, sizeof(initData1), QStringLiteral("init"), false, true);
writeCharacteristic(initData1, sizeof(initData1), QStringLiteral("init"), false, true);
writeCharacteristic(initData1, sizeof(initData1), QStringLiteral("init"), false, true);
writeCharacteristic(initData2, sizeof(initData2), QStringLiteral("init"), false, true);
writeCharacteristic(initData1, sizeof(initData1), QStringLiteral("init"), false, false);
writeCharacteristic(initData2, sizeof(initData2), QStringLiteral("init"), false, false);
writeCharacteristic(initData1, sizeof(initData1), QStringLiteral("init"), false, true);
writeCharacteristic(initData3, sizeof(initData3), QStringLiteral("init"), false, true);
writeCharacteristic(initData3, sizeof(initData3), QStringLiteral("init"), false, true);
writeCharacteristic(initData3, sizeof(initData3), QStringLiteral("init"), false, true);
writeCharacteristic(initData3, sizeof(initData3), QStringLiteral("init"), false, true);
writeCharacteristic(initData4, sizeof(initData4), QStringLiteral("init"), false, true);
writeCharacteristic(initData5, sizeof(initData5), QStringLiteral("init"), false, true);
waitForAPacket();
writeCharacteristic(initData6, sizeof(initData6), QStringLiteral("init"), false, true);
writeCharacteristic(initData7, sizeof(initData7), QStringLiteral("init"), false, true);
initDone = true;

View File

@@ -80,6 +80,8 @@ class echelonconnectsport : public bike {
bool noWriteResistance = false;
bool noHeartService = false;
void waitForAPacket();
#ifdef Q_OS_IOS
lockscreen *h = 0;
lockscreen* iOS_echelonConnectSport = nullptr;
@@ -87,6 +89,7 @@ class echelonconnectsport : public bike {
Q_SIGNALS:
void disconnected();
void packetReceived();
public slots:
void deviceDiscovered(const QBluetoothDeviceInfo &device);