MCPcopy Create free account
hub / github.com/Zalafina/QKeyMapper / processForzaFormatData

Method processForzaFormatData

QKeyMapper/qkeymapper_worker.cpp:10467–10856  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10465}
10466
10467void QKeyMapper_Worker::processForzaFormatData(const QByteArray &forzadata)
10468{
10469 qsizetype data_length = forzadata.size();
10470 bool extra_data = false;
10471 qsizetype buffer_offset = 0;
10472
10473 if (data_length != FORZA_MOTOR_7_SLED_DATA_LENGTH
10474 && data_length != FORZA_MOTOR_7_DASH_DATA_LENGTH
10475 && data_length != FORZA_MOTOR_8_DASH_DATA_LENGTH
10476 && data_length != FORZA_HORIZON_DATA_LENGTH) {
10477 return;
10478 }
10479 else {
10480 if (data_length == FORZA_MOTOR_7_SLED_DATA_LENGTH) {
10481 extra_data = false;
10482 }
10483 else {
10484 extra_data = true;
10485 if (data_length == FORZA_HORIZON_DATA_LENGTH) {
10486 buffer_offset = FORZA_HORIZON_BUFFER_OFFSET;
10487 }
10488 }
10489 }
10490
10491#ifdef GRIP_VERBOSE_LOG
10492 QString dataformat_str;
10493 if (data_length == FORZA_MOTOR_7_SLED_DATA_LENGTH) {
10494 dataformat_str = "Forza Motorsport 7 Sled";
10495 }
10496 else if (data_length == FORZA_MOTOR_7_DASH_DATA_LENGTH) {
10497 dataformat_str = "Forza Motorsport 7 Dash";
10498 }
10499 else if (data_length == FORZA_MOTOR_8_DASH_DATA_LENGTH) {
10500 dataformat_str = "Forza Motorsport 8 Dash";
10501 }
10502 else {
10503 dataformat_str = "Forza Horizon";
10504 }
10505
10506 qDebug().nospace() << "[processForzaFormatData]" << dataformat_str << " data length = " << data_length;
10507#endif
10508
10509 QByteArray firstPartData = forzadata.left(FIRAT_PART_DATA_LENGTH);
10510 QByteArray secondPartData;
10511 if (extra_data) {
10512 secondPartData = forzadata.mid(FIRAT_PART_DATA_LENGTH + buffer_offset, SECOND_PART_DATA_LENGTH);
10513 }
10514
10515 QDataStream firstPartStream(firstPartData);
10516 firstPartStream.setByteOrder(QDataStream::LittleEndian);
10517 firstPartStream.setFloatingPointPrecision(QDataStream::SinglePrecision);
10518
10519 QDataStream secondPartStream(secondPartData);
10520 secondPartStream.setByteOrder(QDataStream::LittleEndian);
10521 secondPartStream.setFloatingPointPrecision(QDataStream::SinglePrecision);
10522
10523 /* First Part Data */
10524 qint32 is_race_on;

Callers

nothing calls this directly

Calls 7

maxAbsValueFunction · 0.85
averageTopTwoAbsValuesFunction · 0.85
hasForzaAutoGroupActiveFunction · 0.85
forzaAdjustDeltaSecondsFunction · 0.85
levelToTriggerValueFunction · 0.85
sizeMethod · 0.80

Tested by

no test coverage detected