mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-06-14 17:10:16 +02:00
09c44f05f8
* 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
61 lines
2.6 KiB
Java
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);
|
|
}
|
|
}
|