bool readRideInformationBlock(RideFile* rideFile, const QByteArray& block) { // year = block[0-2] qint16 year = readShortFromByteArray(block); qint16 month = readShortFromByteArray(block.mid(2)); qint16 day = readShortFromByteArray(block.mid(6)); qint16 hour = readShortFromByteArray(block.mid(8)); qint16 minute = readShortFromByteArray(block.mid(10)); qint16 second = readShortFromByteArray(block.mid(12)); rideFile->setStartTime(QDateTime(QDate(year, month, day), QTime(hour, minute, second))); rideFile->setRecIntSecs(readFloatFromByteArray(block.mid(16))); return true; }
struct RideFilePoint readSinglePoint(const QByteArray& record, const double& timeInSeconds, const double& recordingIntervalInSeconds, const float& startDistance = 0.0f, const float& lastDistance = 0.0f) { float distance = readFloatFromByteArray(record); float relativeDistance = distance - startDistance; quint8 heartRate = readByteFromByteArray(record.mid(4)); quint8 cadence = readByteFromByteArray(record.mid(5)); quint16 powerX10 = readUnsignedShortFromByteArray(record.mid(6)); double power = powerX10 / 10.0; double speed = (relativeDistance - lastDistance) / recordingIntervalInSeconds; struct RideFilePoint point(timeInSeconds, cadence, heartRate, relativeDistance / 1000.0, speed * 3.6, 0.0, power, 0.0, 0.0, 0.0, 0.0, 0.0, RideFile::noTemp, 0.0, 0); return point; }