1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-14 17:10:16 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/messages/FitRecordDataFactory.java
José Rebelo 09c44f05f8 Garmin: Improve fit parsing
* Remove the dependency on PredefinedLocalMessage from generic fit parsing code
* Standardize toString methods, omit types for known fields
* Return null on unknown field number or names, instead of crashing
* Map more Global FIT messages (device info, monitoring, sleep stages, sleep stats, stress level)
* Prioritize "timestamp" over "253_timestamp" if specified explicitly in the global message definition
* Introduce RecordData wrappers for each global message, allowing us to have proper types when getting data. If missing or unknown, the getter returns null. All classes are auto-generated by the FitCodeGen.
* Persist a list of RecordData, instead of a Map from RecordDefinition
* Fix parsing of compressed timestamps - keep them in computedTimestamp on each data record
* Use timestamp16 if available in Monitoring records
2024-05-01 23:35:16 +01:00

61 lines
2.6 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.RecordData;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.RecordDefinition;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.RecordHeader;
//
// WARNING: This class was auto-generated, please avoid modifying it directly.
// See nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen
//
public class FitRecordDataFactory {
private FitRecordDataFactory() {
// use create
}
public static RecordData create(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
switch (recordDefinition.getGlobalFITMessage().getNumber()) {
case 0:
return new FitFileId(recordDefinition, recordHeader);
case 2:
return new FitDeviceSettings(recordDefinition, recordHeader);
case 3:
return new FitUserProfile(recordDefinition, recordHeader);
case 7:
return new FitZonesTarget(recordDefinition, recordHeader);
case 12:
return new FitSport(recordDefinition, recordHeader);
case 15:
return new FitGoals(recordDefinition, recordHeader);
case 20:
return new FitRecord(recordDefinition, recordHeader);
case 23:
return new FitDeviceInfo(recordDefinition, recordHeader);
case 49:
return new FitFileCreator(recordDefinition, recordHeader);
case 55:
return new FitMonitoring(recordDefinition, recordHeader);
case 127:
return new FitConnectivity(recordDefinition, recordHeader);
case 128:
return new FitWeather(recordDefinition, recordHeader);
case 159:
return new FitWatchfaceSettings(recordDefinition, recordHeader);
case 206:
return new FitFieldDescription(recordDefinition, recordHeader);
case 207:
return new FitDeveloperData(recordDefinition, recordHeader);
case 222:
return new FitAlarmSettings(recordDefinition, recordHeader);
case 227:
return new FitStressLevel(recordDefinition, recordHeader);
case 275:
return new FitSleepStage(recordDefinition, recordHeader);
case 346:
return new FitSleepStats(recordDefinition, recordHeader);
}
return new RecordData(recordDefinition, recordHeader);
}
}