예제 #1
0
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;
}
예제 #2
0
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;
}