garmin: extend FIT file parsing (#5339)

This updates the parser to interpret more FIT information and display it in the FIT file viewer.
Actually using the available information isn't part of this PR.
This commit is contained in:
Thomas Kuehne
2025-09-16 20:12:52 +02:00
committed by José Rebelo
parent e51aeb9216
commit 80aeaead1a
77 changed files with 9465 additions and 12 deletions
@@ -48,9 +48,13 @@ public class FileType {
COURSES(128, 6), COURSES(128, 6),
SCHEDULES(128, 7), SCHEDULES(128, 7),
LOCATION(128, 8), LOCATION(128, 8),
WEIGHT(128, 9),
TOTALS(128, 10), TOTALS(128, 10),
GOALS(128, 11), GOALS(128, 11),
BLOOD_PRESSURE(128, 14),
MONITOR_A(128, 15),
SUMMARY(128, 20), SUMMARY(128, 20),
MONITOR_DAILY(128, 28),
RECORDS(128, 29), RECORDS(128, 29),
UNKNOWN_31(128, 31), // sent by HRM Pro Plus UNKNOWN_31(128, 31), // sent by HRM Pro Plus
MONITOR(128, 32), MONITOR(128, 32),
@@ -78,6 +82,7 @@ public class FileType {
FBT_BACKUP(128, 72), FBT_BACKUP(128, 72),
SKIN_TEMP(128, 73), SKIN_TEMP(128, 73),
FBT_PTD_BACKUP(128, 74), FBT_PTD_BACKUP(128, 74),
SCHEDULE(128, 77),
UNKNOWN_79(128, 79), // sent by instinct 3 UNKNOWN_79(128, 79), // sent by instinct 3
// Other files // Other files
@@ -33,7 +33,13 @@ public class FieldDefinitionGoalType extends FieldDefinition {
} }
public enum Type { public enum Type {
time(0),
distance(1),
calories(2),
frequency(3),
steps(4), steps(4),
ascent(5),
active_minutes(6)
; ;
private final int id; private final int id;
@@ -34,7 +34,43 @@ public class FieldDefinitionLanguage extends FieldDefinition {
public enum Language { public enum Language {
english(0), english(0),
french(1),
italian(2), italian(2),
german(3),
spanish(4),
croatian(5),
czech(6),
danish(7),
dutch(8),
finnish(9),
greek(10),
hungarian(11),
norwegian(12),
polish(13),
portuguese(14),
slovakian(15),
slovenian(16),
swedish(17),
russian(18),
turkish(19),
latvian(20),
ukrainian(21),
arabic(22),
farsi(23),
bulgarian(24),
romanian(25),
chinese(26),
japanese(27),
korean(28),
taiwanese(29),
thai(30),
hebrew(31),
brazilian_portuguese(32),
indonesian(33),
malaysian(34),
vietnamese(35),
burmese(36),
mongolian(37)
; ;
private final int id; private final int id;
@@ -34,6 +34,7 @@ public class FieldDefinitionMeasurementSystem extends FieldDefinition {
public enum Type { public enum Type {
metric, metric,
imperial, imperial,
nautical
; ;
public static Type fromId(int id) { public static Type fromId(int id) {
@@ -0,0 +1,3 @@
# nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegenFitCodeGen
# is hard coded to uses \n
*.java text eol=lf
@@ -68,6 +68,11 @@ public class FitActivity extends RecordData {
return (Long) getFieldByNumber(5); return (Long) getFieldByNumber(5);
} }
@Nullable
public Integer getEventGroup() {
return (Integer) getFieldByNumber(6);
}
@Nullable @Nullable
public Long getTimestamp() { public Long getTimestamp() {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
@@ -111,6 +116,11 @@ public class FitActivity extends RecordData {
return this; return this;
} }
public Builder setEventGroup(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setTimestamp(final Long value) { public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value); setFieldByNumber(253, value);
return this; return this;
@@ -0,0 +1,108 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitBarometerData extends RecordData {
public FitBarometerData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 209) {
throw new IllegalArgumentException("FitBarometerData expects global messages of " + 209 + ", got " + globalNumber);
}
}
@Nullable
public Integer getTimestampMs() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getSampleTimeOffset() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getBaroPres() {
final Object[] objectsArray = (Object[]) getFieldByNumber(2);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(209);
}
public Builder setTimestampMs(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSampleTimeOffset(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setBaroPres(final Number[] value) {
setFieldByNumber(2, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitBarometerData build() {
return (FitBarometerData) super.build();
}
}
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitBeatIntervals extends RecordData {
public FitBeatIntervals(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 290) {
throw new IllegalArgumentException("FitBeatIntervals expects global messages of " + 290 + ", got " + globalNumber);
}
}
@Nullable
public Integer getTimestampMs() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getTime() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(290);
}
public Builder setTimestampMs(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setTime(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitBeatIntervals build() {
return (FitBeatIntervals) super.build();
}
}
}
@@ -0,0 +1,64 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 FitBeatsInterval extends RecordData {
public FitBeatsInterval(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 290) {
throw new IllegalArgumentException("FitBeatsInterval expects global messages of " + 290 + ", got " + globalNumber);
}
}
@Nullable
public Integer getTimestampMs() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getTime() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(290);
}
public Builder setTimestampMs(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setTime(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitBeatsInterval build() {
return (FitBeatsInterval) super.build();
}
}
}
@@ -0,0 +1,388 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitBikeProfile extends RecordData {
public FitBikeProfile(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 6) {
throw new IllegalArgumentException("FitBikeProfile expects global messages of " + 6 + ", got " + globalNumber);
}
}
@Nullable
public String getName() {
return (String) getFieldByNumber(0);
}
@Nullable
public Integer getSport() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getSubSport() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Double getOdometer() {
return (Double) getFieldByNumber(3);
}
@Nullable
public Integer getBikeSpdAntId() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Integer getBikeCadAntId() {
return (Integer) getFieldByNumber(5);
}
@Nullable
public Integer getBikeSpdcadAntId() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Integer getBikePowerAntId() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public Float getCustomWheelsize() {
return (Float) getFieldByNumber(8);
}
@Nullable
public Float getAutoWheelsize() {
return (Float) getFieldByNumber(9);
}
@Nullable
public Float getBikeWeight() {
return (Float) getFieldByNumber(10);
}
@Nullable
public Float getPowerCalFactor() {
return (Float) getFieldByNumber(11);
}
@Nullable
public Integer getAutoWheelCal() {
return (Integer) getFieldByNumber(12);
}
@Nullable
public Integer getAutoPowerZero() {
return (Integer) getFieldByNumber(13);
}
@Nullable
public Integer getId() {
return (Integer) getFieldByNumber(14);
}
@Nullable
public Integer getSpdEnabled() {
return (Integer) getFieldByNumber(15);
}
@Nullable
public Integer getCadEnabled() {
return (Integer) getFieldByNumber(16);
}
@Nullable
public Integer getSpdcadEnabled() {
return (Integer) getFieldByNumber(17);
}
@Nullable
public Integer getPowerEnabled() {
return (Integer) getFieldByNumber(18);
}
@Nullable
public Float getCrankLength() {
return (Float) getFieldByNumber(19);
}
@Nullable
public Integer getEnabled() {
return (Integer) getFieldByNumber(20);
}
@Nullable
public Integer getBikeSpdAntIdTransType() {
return (Integer) getFieldByNumber(21);
}
@Nullable
public Integer getBikeCadAntIdTransType() {
return (Integer) getFieldByNumber(22);
}
@Nullable
public Integer getBikeSpdcadAntIdTransType() {
return (Integer) getFieldByNumber(23);
}
@Nullable
public Integer getBikePowerAntIdTransType() {
return (Integer) getFieldByNumber(24);
}
@Nullable
public Integer getOdometerRollover() {
return (Integer) getFieldByNumber(37);
}
@Nullable
public Integer getFrontGearNum() {
return (Integer) getFieldByNumber(38);
}
@Nullable
public Number[] getFrontGear() {
final Object[] objectsArray = (Object[]) getFieldByNumber(39);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Integer getRearGearNum() {
return (Integer) getFieldByNumber(40);
}
@Nullable
public Number[] getRearGear() {
final Object[] objectsArray = (Object[]) getFieldByNumber(41);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Integer getShimanoDi2Enabled() {
return (Integer) getFieldByNumber(44);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(6);
}
public Builder setName(final String value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSport(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setSubSport(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setOdometer(final Double value) {
setFieldByNumber(3, value);
return this;
}
public Builder setBikeSpdAntId(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setBikeCadAntId(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setBikeSpdcadAntId(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setBikePowerAntId(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setCustomWheelsize(final Float value) {
setFieldByNumber(8, value);
return this;
}
public Builder setAutoWheelsize(final Float value) {
setFieldByNumber(9, value);
return this;
}
public Builder setBikeWeight(final Float value) {
setFieldByNumber(10, value);
return this;
}
public Builder setPowerCalFactor(final Float value) {
setFieldByNumber(11, value);
return this;
}
public Builder setAutoWheelCal(final Integer value) {
setFieldByNumber(12, value);
return this;
}
public Builder setAutoPowerZero(final Integer value) {
setFieldByNumber(13, value);
return this;
}
public Builder setId(final Integer value) {
setFieldByNumber(14, value);
return this;
}
public Builder setSpdEnabled(final Integer value) {
setFieldByNumber(15, value);
return this;
}
public Builder setCadEnabled(final Integer value) {
setFieldByNumber(16, value);
return this;
}
public Builder setSpdcadEnabled(final Integer value) {
setFieldByNumber(17, value);
return this;
}
public Builder setPowerEnabled(final Integer value) {
setFieldByNumber(18, value);
return this;
}
public Builder setCrankLength(final Float value) {
setFieldByNumber(19, value);
return this;
}
public Builder setEnabled(final Integer value) {
setFieldByNumber(20, value);
return this;
}
public Builder setBikeSpdAntIdTransType(final Integer value) {
setFieldByNumber(21, value);
return this;
}
public Builder setBikeCadAntIdTransType(final Integer value) {
setFieldByNumber(22, value);
return this;
}
public Builder setBikeSpdcadAntIdTransType(final Integer value) {
setFieldByNumber(23, value);
return this;
}
public Builder setBikePowerAntIdTransType(final Integer value) {
setFieldByNumber(24, value);
return this;
}
public Builder setOdometerRollover(final Integer value) {
setFieldByNumber(37, value);
return this;
}
public Builder setFrontGearNum(final Integer value) {
setFieldByNumber(38, value);
return this;
}
public Builder setFrontGear(final Number[] value) {
setFieldByNumber(39, (Object[]) value);
return this;
}
public Builder setRearGearNum(final Integer value) {
setFieldByNumber(40, value);
return this;
}
public Builder setRearGear(final Number[] value) {
setFieldByNumber(41, (Object[]) value);
return this;
}
public Builder setShimanoDi2Enabled(final Integer value) {
setFieldByNumber(44, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitBikeProfile build() {
return (FitBikeProfile) super.build();
}
}
}
@@ -0,0 +1,164 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitBloodPressure extends RecordData {
public FitBloodPressure(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 51) {
throw new IllegalArgumentException("FitBloodPressure expects global messages of " + 51 + ", got " + globalNumber);
}
}
@Nullable
public Integer getSystolicPressure() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getDiastolicPressure() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getMeanArterialPressure() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getMap3SampleMean() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Integer getMapMorningValues() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Integer getMapEveningValues() {
return (Integer) getFieldByNumber(5);
}
@Nullable
public Integer getHeartRate() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Integer getHeartRateType() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public Integer getStatus() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Integer getUserProfileIndex() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(51);
}
public Builder setSystolicPressure(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setDiastolicPressure(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setMeanArterialPressure(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setMap3SampleMean(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setMapMorningValues(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setMapEveningValues(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setHeartRate(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setHeartRateType(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setStatus(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setUserProfileIndex(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitBloodPressure build() {
return (FitBloodPressure) super.build();
}
}
}
@@ -0,0 +1,74 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitCadenceZone extends RecordData {
public FitCadenceZone(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 131) {
throw new IllegalArgumentException("FitCadenceZone expects global messages of " + 131 + ", got " + globalNumber);
}
}
@Nullable
public Integer getHighValue() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public String getName() {
return (String) getFieldByNumber(1);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(131);
}
public Builder setHighValue(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setName(final String value) {
setFieldByNumber(1, value);
return this;
}
@Override
public FitCadenceZone build() {
return (FitCadenceZone) super.build();
}
}
}
@@ -0,0 +1,108 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitCapabilities extends RecordData {
public FitCapabilities(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 1) {
throw new IllegalArgumentException("FitCapabilities expects global messages of " + 1 + ", got " + globalNumber);
}
}
@Nullable
public Number[] getLanguages() {
final Object[] objectsArray = (Object[]) getFieldByNumber(0);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getSports() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getWorkoutsSupported() {
return (Long) getFieldByNumber(21);
}
@Nullable
public Long getConnectivitySupported() {
return (Long) getFieldByNumber(23);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(1);
}
public Builder setLanguages(final Number[] value) {
setFieldByNumber(0, (Object[]) value);
return this;
}
public Builder setSports(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setWorkoutsSupported(final Long value) {
setFieldByNumber(21, value);
return this;
}
public Builder setConnectivitySupported(final Long value) {
setFieldByNumber(23, value);
return this;
}
@Override
public FitCapabilities build() {
return (FitCapabilities) super.build();
}
}
}
@@ -43,6 +43,16 @@ public class FitConnectivity extends RecordData {
return (Integer) getFieldByNumber(0); return (Integer) getFieldByNumber(0);
} }
@Nullable
public Integer getBluetoothLeEnabled() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getAntEnabled() {
return (Integer) getFieldByNumber(2);
}
@Nullable @Nullable
public String getName() { public String getName() {
return (String) getFieldByNumber(3); return (String) getFieldByNumber(3);
@@ -83,6 +93,16 @@ public class FitConnectivity extends RecordData {
return (Integer) getFieldByNumber(10); return (Integer) getFieldByNumber(10);
} }
@Nullable
public Integer getIncidentDetectionEnabled() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Integer getGrouptrackEnabled() {
return (Integer) getFieldByNumber(12);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -96,6 +116,16 @@ public class FitConnectivity extends RecordData {
return this; return this;
} }
public Builder setBluetoothLeEnabled(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setAntEnabled(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setName(final String value) { public Builder setName(final String value) {
setFieldByNumber(3, value); setFieldByNumber(3, value);
return this; return this;
@@ -136,6 +166,16 @@ public class FitConnectivity extends RecordData {
return this; return this;
} }
public Builder setIncidentDetectionEnabled(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setGrouptrackEnabled(final Integer value) {
setFieldByNumber(12, value);
return this;
}
@Override @Override
public FitConnectivity build() { public FitConnectivity build() {
return (FitConnectivity) super.build(); return (FitConnectivity) super.build();
@@ -0,0 +1,94 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitCpeStatus extends RecordData {
public FitCpeStatus(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 394) {
throw new IllegalArgumentException("FitCpeStatus expects global messages of " + 394 + ", got " + globalNumber);
}
}
@Nullable
public Integer getStatus() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Long getStartTime() {
return (Long) getFieldByNumber(1);
}
@Nullable
public Long getEndTime() {
return (Long) getFieldByNumber(2);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(394);
}
public Builder setStatus(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setStartTime(final Long value) {
setFieldByNumber(1, value);
return this;
}
public Builder setEndTime(final Long value) {
setFieldByNumber(2, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitCpeStatus build() {
return (FitCpeStatus) super.build();
}
}
}
@@ -38,16 +38,31 @@ public class FitDeveloperData extends RecordData {
} }
} }
@Nullable
public Integer getDeveloperId() {
return (Integer) getFieldByNumber(0);
}
@Nullable @Nullable
public Integer getApplicationId() { public Integer getApplicationId() {
return (Integer) getFieldByNumber(1); return (Integer) getFieldByNumber(1);
} }
@Nullable
public Integer getManufacturerId() {
return (Integer) getFieldByNumber(2);
}
@Nullable @Nullable
public Integer getDeveloperDataIndex() { public Integer getDeveloperDataIndex() {
return (Integer) getFieldByNumber(3); return (Integer) getFieldByNumber(3);
} }
@Nullable
public Long getApplicationVersion() {
return (Long) getFieldByNumber(4);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -56,16 +71,31 @@ public class FitDeveloperData extends RecordData {
super(207); super(207);
} }
public Builder setDeveloperId(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setApplicationId(final Integer value) { public Builder setApplicationId(final Integer value) {
setFieldByNumber(1, value); setFieldByNumber(1, value);
return this; return this;
} }
public Builder setManufacturerId(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setDeveloperDataIndex(final Integer value) { public Builder setDeveloperDataIndex(final Integer value) {
setFieldByNumber(3, value); setFieldByNumber(3, value);
return this; return this;
} }
public Builder setApplicationVersion(final Long value) {
setFieldByNumber(4, value);
return this;
}
@Override @Override
public FitDeveloperData build() { public FitDeveloperData build() {
return (FitDeveloperData) super.build(); return (FitDeveloperData) super.build();
@@ -0,0 +1,104 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitDeviceAuxBatteryInfo extends RecordData {
public FitDeviceAuxBatteryInfo(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 375) {
throw new IllegalArgumentException("FitDeviceAuxBatteryInfo expects global messages of " + 375 + ", got " + globalNumber);
}
}
@Nullable
public Integer getDeviceIndex() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Float getBatteryVoltage() {
return (Float) getFieldByNumber(1);
}
@Nullable
public Integer getBatteryStatus() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getBatteryIdentifier() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(375);
}
public Builder setDeviceIndex(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setBatteryVoltage(final Float value) {
setFieldByNumber(1, value);
return this;
}
public Builder setBatteryStatus(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setBatteryIdentifier(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitDeviceAuxBatteryInfo build() {
return (FitDeviceAuxBatteryInfo) super.build();
}
}
}
@@ -38,6 +38,16 @@ public class FitDeviceInfo extends RecordData {
} }
} }
@Nullable
public Integer getDeviceIndex() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getDeviceType() {
return (Integer) getFieldByNumber(1);
}
@Nullable @Nullable
public Integer getManufacturer() { public Integer getManufacturer() {
return (Integer) getFieldByNumber(2); return (Integer) getFieldByNumber(2);
@@ -58,6 +68,71 @@ public class FitDeviceInfo extends RecordData {
return (Integer) getFieldByNumber(5); return (Integer) getFieldByNumber(5);
} }
@Nullable
public Integer getHardwareVersion() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Long getCumOperatingTime() {
return (Long) getFieldByNumber(7);
}
@Nullable
public Float getBatteryVoltage() {
return (Float) getFieldByNumber(10);
}
@Nullable
public Integer getBatteryStatus() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Integer getSensorPosition() {
return (Integer) getFieldByNumber(18);
}
@Nullable
public String getDescriptor() {
return (String) getFieldByNumber(19);
}
@Nullable
public Integer getAntTransmissionType() {
return (Integer) getFieldByNumber(20);
}
@Nullable
public Integer getAntDeviceNumber() {
return (Integer) getFieldByNumber(21);
}
@Nullable
public Integer getAntNetwork() {
return (Integer) getFieldByNumber(22);
}
@Nullable
public Long getAntId() {
return (Long) getFieldByNumber(24);
}
@Nullable
public Integer getSourceType() {
return (Integer) getFieldByNumber(25);
}
@Nullable
public String getProductName() {
return (String) getFieldByNumber(27);
}
@Nullable
public Integer getBatteryLevel() {
return (Integer) getFieldByNumber(32);
}
@Nullable @Nullable
public Long getTimestamp() { public Long getTimestamp() {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
@@ -71,6 +146,16 @@ public class FitDeviceInfo extends RecordData {
super(23); super(23);
} }
public Builder setDeviceIndex(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setDeviceType(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setManufacturer(final Integer value) { public Builder setManufacturer(final Integer value) {
setFieldByNumber(2, value); setFieldByNumber(2, value);
return this; return this;
@@ -91,6 +176,71 @@ public class FitDeviceInfo extends RecordData {
return this; return this;
} }
public Builder setHardwareVersion(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setCumOperatingTime(final Long value) {
setFieldByNumber(7, value);
return this;
}
public Builder setBatteryVoltage(final Float value) {
setFieldByNumber(10, value);
return this;
}
public Builder setBatteryStatus(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setSensorPosition(final Integer value) {
setFieldByNumber(18, value);
return this;
}
public Builder setDescriptor(final String value) {
setFieldByNumber(19, value);
return this;
}
public Builder setAntTransmissionType(final Integer value) {
setFieldByNumber(20, value);
return this;
}
public Builder setAntDeviceNumber(final Integer value) {
setFieldByNumber(21, value);
return this;
}
public Builder setAntNetwork(final Integer value) {
setFieldByNumber(22, value);
return this;
}
public Builder setAntId(final Long value) {
setFieldByNumber(24, value);
return this;
}
public Builder setSourceType(final Integer value) {
setFieldByNumber(25, value);
return this;
}
public Builder setProductName(final String value) {
setFieldByNumber(27, value);
return this;
}
public Builder setBatteryLevel(final Integer value) {
setFieldByNumber(32, value);
return this;
}
public Builder setTimestamp(final Long value) { public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value); setFieldByNumber(253, value);
return this; return this;
@@ -109,6 +109,23 @@ public class FitDeviceSettings extends RecordData {
return (Integer) getFieldByNumber(36); return (Integer) getFieldByNumber(36);
} }
@Nullable
public Long getClockTime() {
return (Long) getFieldByNumber(39);
}
@Nullable
public Number[] getPagesEnabled() {
final Object[] objectsArray = (Object[]) getFieldByNumber(40);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable @Nullable
public Integer getMoveAlertEnabled() { public Integer getMoveAlertEnabled() {
return (Integer) getFieldByNumber(46); return (Integer) getFieldByNumber(46);
@@ -144,11 +161,21 @@ public class FitDeviceSettings extends RecordData {
return (Integer) getFieldByNumber(59); return (Integer) getFieldByNumber(59);
} }
@Nullable
public Integer getLactateThresholdAutodetectEnabled() {
return (Integer) getFieldByNumber(80);
}
@Nullable @Nullable
public Integer getBleAutoUploadEnabled() { public Integer getBleAutoUploadEnabled() {
return (Integer) getFieldByNumber(86); return (Integer) getFieldByNumber(86);
} }
@Nullable
public Integer getAutoSyncFrequency() {
return (Integer) getFieldByNumber(89);
}
@Nullable @Nullable
public Long getAutoActivityDetect() { public Long getAutoActivityDetect() {
return (Long) getFieldByNumber(90); return (Long) getFieldByNumber(90);
@@ -166,6 +193,26 @@ public class FitDeviceSettings extends RecordData {
return ret; return ret;
} }
@Nullable
public Integer getNumberOfScreens() {
return (Integer) getFieldByNumber(94);
}
@Nullable
public Integer getSmartNotificationDisplayOrientation() {
return (Integer) getFieldByNumber(95);
}
@Nullable
public Integer getTapInterface() {
return (Integer) getFieldByNumber(134);
}
@Nullable
public Integer getTapSensitivity() {
return (Integer) getFieldByNumber(174);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -224,6 +271,16 @@ public class FitDeviceSettings extends RecordData {
return this; return this;
} }
public Builder setClockTime(final Long value) {
setFieldByNumber(39, value);
return this;
}
public Builder setPagesEnabled(final Number[] value) {
setFieldByNumber(40, (Object[]) value);
return this;
}
public Builder setMoveAlertEnabled(final Integer value) { public Builder setMoveAlertEnabled(final Integer value) {
setFieldByNumber(46, value); setFieldByNumber(46, value);
return this; return this;
@@ -259,11 +316,21 @@ public class FitDeviceSettings extends RecordData {
return this; return this;
} }
public Builder setLactateThresholdAutodetectEnabled(final Integer value) {
setFieldByNumber(80, value);
return this;
}
public Builder setBleAutoUploadEnabled(final Integer value) { public Builder setBleAutoUploadEnabled(final Integer value) {
setFieldByNumber(86, value); setFieldByNumber(86, value);
return this; return this;
} }
public Builder setAutoSyncFrequency(final Integer value) {
setFieldByNumber(89, value);
return this;
}
public Builder setAutoActivityDetect(final Long value) { public Builder setAutoActivityDetect(final Long value) {
setFieldByNumber(90, value); setFieldByNumber(90, value);
return this; return this;
@@ -274,6 +341,26 @@ public class FitDeviceSettings extends RecordData {
return this; return this;
} }
public Builder setNumberOfScreens(final Integer value) {
setFieldByNumber(94, value);
return this;
}
public Builder setSmartNotificationDisplayOrientation(final Integer value) {
setFieldByNumber(95, value);
return this;
}
public Builder setTapInterface(final Integer value) {
setFieldByNumber(134, value);
return this;
}
public Builder setTapSensitivity(final Integer value) {
setFieldByNumber(174, value);
return this;
}
@Override @Override
public FitDeviceSettings build() { public FitDeviceSettings build() {
return (FitDeviceSettings) super.build(); return (FitDeviceSettings) super.build();
@@ -0,0 +1,94 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitDeviceStatus extends RecordData {
public FitDeviceStatus(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 104) {
throw new IllegalArgumentException("FitDeviceStatus expects global messages of " + 104 + ", got " + globalNumber);
}
}
@Nullable
public Float getBatteryVoltage() {
return (Float) getFieldByNumber(0);
}
@Nullable
public Integer getBatteryLevel() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getTemperature() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(104);
}
public Builder setBatteryVoltage(final Float value) {
setFieldByNumber(0, value);
return this;
}
public Builder setBatteryLevel(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setTemperature(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitDeviceStatus build() {
return (FitDeviceStatus) super.build();
}
}
}
@@ -0,0 +1,124 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitDeviceUsed extends RecordData {
public FitDeviceUsed(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 22) {
throw new IllegalArgumentException("FitDeviceUsed expects global messages of " + 22 + ", got " + globalNumber);
}
}
@Nullable
public Integer getSpeed() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getDistance() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getCadence() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getElevation() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Integer getHeartRate() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Integer getPower() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(22);
}
public Builder setSpeed(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setDistance(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setCadence(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setElevation(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setHeartRate(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setPower(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitDeviceUsed build() {
return (FitDeviceUsed) super.build();
}
}
}
@@ -53,6 +53,11 @@ public class FitDiveGas extends RecordData {
return (Integer) getFieldByNumber(2); return (Integer) getFieldByNumber(2);
} }
@Nullable
public Integer getMode() {
return (Integer) getFieldByNumber(3);
}
@Nullable @Nullable
public Integer getMessageIndex() { public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254); return (Integer) getFieldByNumber(254);
@@ -81,6 +86,11 @@ public class FitDiveGas extends RecordData {
return this; return this;
} }
public Builder setMode(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setMessageIndex(final Integer value) { public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value); setFieldByNumber(254, value);
return this; return this;
@@ -0,0 +1,404 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitDiveSettings extends RecordData {
public FitDiveSettings(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 258) {
throw new IllegalArgumentException("FitDiveSettings expects global messages of " + 258 + ", got " + globalNumber);
}
}
@Nullable
public String getName() {
return (String) getFieldByNumber(0);
}
@Nullable
public Integer getModel() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getGfLow() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getGfHigh() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Integer getWaterType() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Float getWaterDensity() {
return (Float) getFieldByNumber(5);
}
@Nullable
public Float getPo2Warn() {
return (Float) getFieldByNumber(6);
}
@Nullable
public Float getPo2Critical() {
return (Float) getFieldByNumber(7);
}
@Nullable
public Float getPo2Deco() {
return (Float) getFieldByNumber(8);
}
@Nullable
public Integer getSafetyStopEnabled() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Float getBottomDepth() {
return (Float) getFieldByNumber(10);
}
@Nullable
public Long getBottomTime() {
return (Long) getFieldByNumber(11);
}
@Nullable
public Integer getApneaCountdownEnabled() {
return (Integer) getFieldByNumber(12);
}
@Nullable
public Long getApneaCountdownTime() {
return (Long) getFieldByNumber(13);
}
@Nullable
public Integer getBacklightMode() {
return (Integer) getFieldByNumber(14);
}
@Nullable
public Integer getBacklightBrightness() {
return (Integer) getFieldByNumber(15);
}
@Nullable
public Integer getBacklightTimeout() {
return (Integer) getFieldByNumber(16);
}
@Nullable
public Integer getRepeatDiveInterval() {
return (Integer) getFieldByNumber(17);
}
@Nullable
public Integer getSafetyStopTime() {
return (Integer) getFieldByNumber(18);
}
@Nullable
public Integer getHeartRateSourceType() {
return (Integer) getFieldByNumber(19);
}
@Nullable
public Integer getHeartRateSource() {
return (Integer) getFieldByNumber(20);
}
@Nullable
public Integer getTravelGas() {
return (Integer) getFieldByNumber(21);
}
@Nullable
public Integer getCcrLowSetpointSwitchMode() {
return (Integer) getFieldByNumber(22);
}
@Nullable
public Float getCcrLowSetpoint() {
return (Float) getFieldByNumber(23);
}
@Nullable
public Double getCcrLowSetpointDepth() {
return (Double) getFieldByNumber(24);
}
@Nullable
public Integer getCcrHighSetpointSwitchMode() {
return (Integer) getFieldByNumber(25);
}
@Nullable
public Float getCcrHighSetpoint() {
return (Float) getFieldByNumber(26);
}
@Nullable
public Double getCcrHighSetpointDepth() {
return (Double) getFieldByNumber(27);
}
@Nullable
public Integer getGasConsumptionDisplay() {
return (Integer) getFieldByNumber(29);
}
@Nullable
public Integer getUpKeyEnabled() {
return (Integer) getFieldByNumber(30);
}
@Nullable
public Integer getDiveSounds() {
return (Integer) getFieldByNumber(35);
}
@Nullable
public Float getLastStopMultiple() {
return (Float) getFieldByNumber(36);
}
@Nullable
public Integer getNoFlyTimeMode() {
return (Integer) getFieldByNumber(37);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(258);
}
public Builder setName(final String value) {
setFieldByNumber(0, value);
return this;
}
public Builder setModel(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setGfLow(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setGfHigh(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setWaterType(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setWaterDensity(final Float value) {
setFieldByNumber(5, value);
return this;
}
public Builder setPo2Warn(final Float value) {
setFieldByNumber(6, value);
return this;
}
public Builder setPo2Critical(final Float value) {
setFieldByNumber(7, value);
return this;
}
public Builder setPo2Deco(final Float value) {
setFieldByNumber(8, value);
return this;
}
public Builder setSafetyStopEnabled(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setBottomDepth(final Float value) {
setFieldByNumber(10, value);
return this;
}
public Builder setBottomTime(final Long value) {
setFieldByNumber(11, value);
return this;
}
public Builder setApneaCountdownEnabled(final Integer value) {
setFieldByNumber(12, value);
return this;
}
public Builder setApneaCountdownTime(final Long value) {
setFieldByNumber(13, value);
return this;
}
public Builder setBacklightMode(final Integer value) {
setFieldByNumber(14, value);
return this;
}
public Builder setBacklightBrightness(final Integer value) {
setFieldByNumber(15, value);
return this;
}
public Builder setBacklightTimeout(final Integer value) {
setFieldByNumber(16, value);
return this;
}
public Builder setRepeatDiveInterval(final Integer value) {
setFieldByNumber(17, value);
return this;
}
public Builder setSafetyStopTime(final Integer value) {
setFieldByNumber(18, value);
return this;
}
public Builder setHeartRateSourceType(final Integer value) {
setFieldByNumber(19, value);
return this;
}
public Builder setHeartRateSource(final Integer value) {
setFieldByNumber(20, value);
return this;
}
public Builder setTravelGas(final Integer value) {
setFieldByNumber(21, value);
return this;
}
public Builder setCcrLowSetpointSwitchMode(final Integer value) {
setFieldByNumber(22, value);
return this;
}
public Builder setCcrLowSetpoint(final Float value) {
setFieldByNumber(23, value);
return this;
}
public Builder setCcrLowSetpointDepth(final Double value) {
setFieldByNumber(24, value);
return this;
}
public Builder setCcrHighSetpointSwitchMode(final Integer value) {
setFieldByNumber(25, value);
return this;
}
public Builder setCcrHighSetpoint(final Float value) {
setFieldByNumber(26, value);
return this;
}
public Builder setCcrHighSetpointDepth(final Double value) {
setFieldByNumber(27, value);
return this;
}
public Builder setGasConsumptionDisplay(final Integer value) {
setFieldByNumber(29, value);
return this;
}
public Builder setUpKeyEnabled(final Integer value) {
setFieldByNumber(30, value);
return this;
}
public Builder setDiveSounds(final Integer value) {
setFieldByNumber(35, value);
return this;
}
public Builder setLastStopMultiple(final Float value) {
setFieldByNumber(36, value);
return this;
}
public Builder setNoFlyTimeMode(final Integer value) {
setFieldByNumber(37, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitDiveSettings build() {
return (FitDiveSettings) super.build();
}
}
}
@@ -98,6 +98,56 @@ public class FitDiveSummary extends RecordData {
return (Double) getFieldByNumber(11); return (Double) getFieldByNumber(11);
} }
@Nullable
public Float getAvgPressureSac() {
return (Float) getFieldByNumber(12);
}
@Nullable
public Float getAvgVolumeSac() {
return (Float) getFieldByNumber(13);
}
@Nullable
public Float getAvgRmv() {
return (Float) getFieldByNumber(14);
}
@Nullable
public Double getDescentTime() {
return (Double) getFieldByNumber(15);
}
@Nullable
public Double getAscentTime() {
return (Double) getFieldByNumber(16);
}
@Nullable
public Double getAvgAscentRate() {
return (Double) getFieldByNumber(17);
}
@Nullable
public Double getAvgDescentRate() {
return (Double) getFieldByNumber(22);
}
@Nullable
public Double getMaxAscentRate() {
return (Double) getFieldByNumber(23);
}
@Nullable
public Double getMaxDescentRate() {
return (Double) getFieldByNumber(24);
}
@Nullable
public Double getHangTime() {
return (Double) getFieldByNumber(25);
}
@Nullable @Nullable
public Long getTimestamp() { public Long getTimestamp() {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
@@ -171,6 +221,56 @@ public class FitDiveSummary extends RecordData {
return this; return this;
} }
public Builder setAvgPressureSac(final Float value) {
setFieldByNumber(12, value);
return this;
}
public Builder setAvgVolumeSac(final Float value) {
setFieldByNumber(13, value);
return this;
}
public Builder setAvgRmv(final Float value) {
setFieldByNumber(14, value);
return this;
}
public Builder setDescentTime(final Double value) {
setFieldByNumber(15, value);
return this;
}
public Builder setAscentTime(final Double value) {
setFieldByNumber(16, value);
return this;
}
public Builder setAvgAscentRate(final Double value) {
setFieldByNumber(17, value);
return this;
}
public Builder setAvgDescentRate(final Double value) {
setFieldByNumber(22, value);
return this;
}
public Builder setMaxAscentRate(final Double value) {
setFieldByNumber(23, value);
return this;
}
public Builder setMaxDescentRate(final Double value) {
setFieldByNumber(24, value);
return this;
}
public Builder setHangTime(final Double value) {
setFieldByNumber(25, value);
return this;
}
public Builder setTimestamp(final Long value) { public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value); setFieldByNumber(253, value);
return this; return this;
@@ -0,0 +1,94 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitEpoStatus extends RecordData {
public FitEpoStatus(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 141) {
throw new IllegalArgumentException("FitEpoStatus expects global messages of " + 141 + ", got " + globalNumber);
}
}
@Nullable
public Integer getStatus() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Long getStartTime() {
return (Long) getFieldByNumber(1);
}
@Nullable
public Long getEndTime() {
return (Long) getFieldByNumber(2);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(141);
}
public Builder setStatus(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setStartTime(final Long value) {
setFieldByNumber(1, value);
return this;
}
public Builder setEndTime(final Long value) {
setFieldByNumber(2, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitEpoStatus build() {
return (FitEpoStatus) super.build();
}
}
}
@@ -48,6 +48,11 @@ public class FitEvent extends RecordData {
return (Integer) getFieldByNumber(1); return (Integer) getFieldByNumber(1);
} }
@Nullable
public Integer getData16() {
return (Integer) getFieldByNumber(2);
}
@Nullable @Nullable
public Long getData() { public Long getData() {
return (Long) getFieldByNumber(3); return (Long) getFieldByNumber(3);
@@ -81,6 +86,11 @@ public class FitEvent extends RecordData {
return this; return this;
} }
public Builder setData16(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setData(final Long value) { public Builder setData(final Long value) {
setFieldByNumber(3, value); setFieldByNumber(3, value);
return this; return this;
@@ -0,0 +1,94 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitExerciseTitle extends RecordData {
public FitExerciseTitle(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 264) {
throw new IllegalArgumentException("FitExerciseTitle expects global messages of " + 264 + ", got " + globalNumber);
}
}
@Nullable
public Integer getExerciseCategory() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getExerciseName() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public String getWktStepName() {
return (String) getFieldByNumber(2);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(264);
}
public Builder setExerciseCategory(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setExerciseName(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setWktStepName(final String value) {
setFieldByNumber(2, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitExerciseTitle build() {
return (FitExerciseTitle) super.build();
}
}
}
@@ -58,11 +58,56 @@ public class FitFieldDescription extends RecordData {
return (String) getFieldByNumber(3); return (String) getFieldByNumber(3);
} }
@Nullable
public Integer getArray() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public String getComponents() {
return (String) getFieldByNumber(5);
}
@Nullable
public Integer getScale() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Integer getOffset() {
return (Integer) getFieldByNumber(7);
}
@Nullable @Nullable
public String getUnits() { public String getUnits() {
return (String) getFieldByNumber(8); return (String) getFieldByNumber(8);
} }
@Nullable
public String getBits() {
return (String) getFieldByNumber(9);
}
@Nullable
public String getAccumulate() {
return (String) getFieldByNumber(10);
}
@Nullable
public Integer getFitBaseUnitId() {
return (Integer) getFieldByNumber(13);
}
@Nullable
public Integer getNativeMesgNum() {
return (Integer) getFieldByNumber(14);
}
@Nullable
public Integer getNativeFieldNum() {
return (Integer) getFieldByNumber(15);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -91,11 +136,56 @@ public class FitFieldDescription extends RecordData {
return this; return this;
} }
public Builder setArray(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setComponents(final String value) {
setFieldByNumber(5, value);
return this;
}
public Builder setScale(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setOffset(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setUnits(final String value) { public Builder setUnits(final String value) {
setFieldByNumber(8, value); setFieldByNumber(8, value);
return this; return this;
} }
public Builder setBits(final String value) {
setFieldByNumber(9, value);
return this;
}
public Builder setAccumulate(final String value) {
setFieldByNumber(10, value);
return this;
}
public Builder setFitBaseUnitId(final Integer value) {
setFieldByNumber(13, value);
return this;
}
public Builder setNativeMesgNum(final Integer value) {
setFieldByNumber(14, value);
return this;
}
public Builder setNativeFieldNum(final Integer value) {
setFieldByNumber(15, value);
return this;
}
@Override @Override
public FitFieldDescription build() { public FitFieldDescription build() {
return (FitFieldDescription) super.build(); return (FitFieldDescription) super.build();
@@ -40,16 +40,61 @@ public class FitGoals extends RecordData {
} }
} }
@Nullable
public Integer getSport() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getSubSport() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Long getStartDate() {
return (Long) getFieldByNumber(2);
}
@Nullable
public Long getEndDate() {
return (Long) getFieldByNumber(3);
}
@Nullable @Nullable
public Type getType() { public Type getType() {
return (Type) getFieldByNumber(4); return (Type) getFieldByNumber(4);
} }
@Nullable
public Long getValue() {
return (Long) getFieldByNumber(5);
}
@Nullable
public Integer getRepeat() {
return (Integer) getFieldByNumber(6);
}
@Nullable @Nullable
public Long getTargetValue() { public Long getTargetValue() {
return (Long) getFieldByNumber(7); return (Long) getFieldByNumber(7);
} }
@Nullable
public Integer getRecurrence() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Integer getRecurrenceValue() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Integer getEnabled() {
return (Integer) getFieldByNumber(10);
}
@Nullable @Nullable
public Source getSource() { public Source getSource() {
return (Source) getFieldByNumber(11); return (Source) getFieldByNumber(11);
@@ -63,16 +108,61 @@ public class FitGoals extends RecordData {
super(15); super(15);
} }
public Builder setSport(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSubSport(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setStartDate(final Long value) {
setFieldByNumber(2, value);
return this;
}
public Builder setEndDate(final Long value) {
setFieldByNumber(3, value);
return this;
}
public Builder setType(final Type value) { public Builder setType(final Type value) {
setFieldByNumber(4, value); setFieldByNumber(4, value);
return this; return this;
} }
public Builder setValue(final Long value) {
setFieldByNumber(5, value);
return this;
}
public Builder setRepeat(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setTargetValue(final Long value) { public Builder setTargetValue(final Long value) {
setFieldByNumber(7, value); setFieldByNumber(7, value);
return this; return this;
} }
public Builder setRecurrence(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setRecurrenceValue(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setEnabled(final Integer value) {
setFieldByNumber(10, value);
return this;
}
public Builder setSource(final Source value) { public Builder setSource(final Source value) {
setFieldByNumber(11, value); setFieldByNumber(11, value);
return this; return this;
@@ -0,0 +1,84 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitGpsEvent extends RecordData {
public FitGpsEvent(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 326) {
throw new IllegalArgumentException("FitGpsEvent expects global messages of " + 326 + ", got " + globalNumber);
}
}
@Nullable
public Long getEventType() {
return (Long) getFieldByNumber(0);
}
@Nullable
public Long getData() {
return (Long) getFieldByNumber(1);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(326);
}
public Builder setEventType(final Long value) {
setFieldByNumber(0, value);
return this;
}
public Builder setData(final Long value) {
setFieldByNumber(1, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitGpsEvent build() {
return (FitGpsEvent) super.build();
}
}
}
@@ -0,0 +1,135 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHr extends RecordData {
public FitHr(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 132) {
throw new IllegalArgumentException("FitHr expects global messages of " + 132 + ", got " + globalNumber);
}
}
@Nullable
public Float getFractionalTimestamp() {
return (Float) getFieldByNumber(0);
}
@Nullable
public Float getTime256() {
return (Float) getFieldByNumber(1);
}
@Nullable
public Number[] getFilteredBpm() {
final Object[] objectsArray = (Object[]) getFieldByNumber(6);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getEventTimestamp() {
final Object[] objectsArray = (Object[]) getFieldByNumber(9);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getEventTimestamp12() {
final Object[] objectsArray = (Object[]) getFieldByNumber(10);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(132);
}
public Builder setFractionalTimestamp(final Float value) {
setFieldByNumber(0, value);
return this;
}
public Builder setTime256(final Float value) {
setFieldByNumber(1, value);
return this;
}
public Builder setFilteredBpm(final Number[] value) {
setFieldByNumber(6, (Object[]) value);
return this;
}
public Builder setEventTimestamp(final Number[] value) {
setFieldByNumber(9, (Object[]) value);
return this;
}
public Builder setEventTimestamp12(final Number[] value) {
setFieldByNumber(10, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHr build() {
return (FitHr) super.build();
}
}
}
@@ -0,0 +1,84 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHrZone extends RecordData {
public FitHrZone(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 8) {
throw new IllegalArgumentException("FitHrZone expects global messages of " + 8 + ", got " + globalNumber);
}
}
@Nullable
public Integer getHighBpm() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public String getName() {
return (String) getFieldByNumber(2);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(8);
}
public Builder setHighBpm(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setName(final String value) {
setFieldByNumber(2, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitHrZone build() {
return (FitHrZone) super.build();
}
}
}
@@ -0,0 +1,104 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHrmProfile extends RecordData {
public FitHrmProfile(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 4) {
throw new IllegalArgumentException("FitHrmProfile expects global messages of " + 4 + ", got " + globalNumber);
}
}
@Nullable
public Integer getEnabled() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getHrmAntId() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getLogHrv() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getHrmAntIdTransType() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(4);
}
public Builder setEnabled(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setHrmAntId(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setLogHrv(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setHrmAntIdTransType(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitHrmProfile build() {
return (FitHrmProfile) super.build();
}
}
}
@@ -0,0 +1,71 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHrv extends RecordData {
public FitHrv(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 78) {
throw new IllegalArgumentException("FitHrv expects global messages of " + 78 + ", got " + globalNumber);
}
}
@Nullable
public Number[] getTime() {
final Object[] objectsArray = (Object[]) getFieldByNumber(0);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(78);
}
public Builder setTime(final Number[] value) {
setFieldByNumber(0, (Object[]) value);
return this;
}
@Override
public FitHrv build() {
return (FitHrv) super.build();
}
}
}
@@ -0,0 +1,125 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaBodyBatteryData extends RecordData {
public FitHsaBodyBatteryData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 314) {
throw new IllegalArgumentException("FitHsaBodyBatteryData expects global messages of " + 314 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getLevel() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getCharged() {
final Object[] objectsArray = (Object[]) getFieldByNumber(2);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getUncharged() {
final Object[] objectsArray = (Object[]) getFieldByNumber(3);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(314);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setLevel(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setCharged(final Number[] value) {
setFieldByNumber(2, (Object[]) value);
return this;
}
public Builder setUncharged(final Number[] value) {
setFieldByNumber(3, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaBodyBatteryData build() {
return (FitHsaBodyBatteryData) super.build();
}
}
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaConfigurationData extends RecordData {
public FitHsaConfigurationData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 389) {
throw new IllegalArgumentException("FitHsaConfigurationData expects global messages of " + 389 + ", got " + globalNumber);
}
}
@Nullable
public Number[] getData() {
final Object[] objectsArray = (Object[]) getFieldByNumber(0);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Integer getDataSize() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(389);
}
public Builder setData(final Number[] value) {
setFieldByNumber(0, (Object[]) value);
return this;
}
public Builder setDataSize(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaConfigurationData build() {
return (FitHsaConfigurationData) super.build();
}
}
}
@@ -0,0 +1,74 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaEvent extends RecordData {
public FitHsaEvent(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 315) {
throw new IllegalArgumentException("FitHsaEvent expects global messages of " + 315 + ", got " + globalNumber);
}
}
@Nullable
public Integer getEventId() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(315);
}
public Builder setEventId(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaEvent build() {
return (FitHsaEvent) super.build();
}
}
}
@@ -0,0 +1,101 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaHeartRateData extends RecordData {
public FitHsaHeartRateData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 308) {
throw new IllegalArgumentException("FitHsaHeartRateData expects global messages of " + 308 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getStatus() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Number[] getHeartRate() {
final Object[] objectsArray = (Object[]) getFieldByNumber(2);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(308);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setStatus(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setHeartRate(final Number[] value) {
setFieldByNumber(2, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaHeartRateData build() {
return (FitHsaHeartRateData) super.build();
}
}
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaRespirationData extends RecordData {
public FitHsaRespirationData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 307) {
throw new IllegalArgumentException("FitHsaRespirationData expects global messages of " + 307 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getRespirationRate() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(307);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setRespirationRate(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaRespirationData build() {
return (FitHsaRespirationData) super.build();
}
}
}
@@ -0,0 +1,108 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaSpo2Data extends RecordData {
public FitHsaSpo2Data(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 305) {
throw new IllegalArgumentException("FitHsaSpo2Data expects global messages of " + 305 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getReadingSpo2() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getConfidence() {
final Object[] objectsArray = (Object[]) getFieldByNumber(2);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(305);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setReadingSpo2(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setConfidence(final Number[] value) {
setFieldByNumber(2, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaSpo2Data build() {
return (FitHsaSpo2Data) super.build();
}
}
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaStepData extends RecordData {
public FitHsaStepData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 304) {
throw new IllegalArgumentException("FitHsaStepData expects global messages of " + 304 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getSteps() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(304);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSteps(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaStepData build() {
return (FitHsaStepData) super.build();
}
}
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaStressData extends RecordData {
public FitHsaStressData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 306) {
throw new IllegalArgumentException("FitHsaStressData expects global messages of " + 306 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getStressLevel() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(306);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setStressLevel(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaStressData build() {
return (FitHsaStressData) super.build();
}
}
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitHsaWristTemperatureData extends RecordData {
public FitHsaWristTemperatureData(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 409) {
throw new IllegalArgumentException("FitHsaWristTemperatureData expects global messages of " + 409 + ", got " + globalNumber);
}
}
@Nullable
public Integer getProcessingInterval() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Number[] getValue() {
final Object[] objectsArray = (Object[]) getFieldByNumber(1);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(409);
}
public Builder setProcessingInterval(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setValue(final Number[] value) {
setFieldByNumber(1, (Object[]) value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitHsaWristTemperatureData build() {
return (FitHsaWristTemperatureData) super.build();
}
}
}
@@ -95,10 +95,25 @@ public class FitLap extends RecordData {
} }
@Nullable @Nullable
public Integer getTotalCalores() { public Integer getTotalCalories() {
return (Integer) getFieldByNumber(11); return (Integer) getFieldByNumber(11);
} }
@Nullable
public Integer getTotalFatCalories() {
return (Integer) getFieldByNumber(12);
}
@Nullable
public Float getAvgSpeed() {
return (Float) getFieldByNumber(13);
}
@Nullable
public Float getMaxSpeed() {
return (Float) getFieldByNumber(14);
}
@Nullable @Nullable
public Integer getAvgHeartRate() { public Integer getAvgHeartRate() {
return (Integer) getFieldByNumber(15); return (Integer) getFieldByNumber(15);
@@ -114,6 +129,21 @@ public class FitLap extends RecordData {
return (Integer) getFieldByNumber(17); return (Integer) getFieldByNumber(17);
} }
@Nullable
public Integer getMaxCadence() {
return (Integer) getFieldByNumber(18);
}
@Nullable
public Integer getAvgPower() {
return (Integer) getFieldByNumber(19);
}
@Nullable
public Integer getMaxPower() {
return (Integer) getFieldByNumber(20);
}
@Nullable @Nullable
public Integer getTotalAscent() { public Integer getTotalAscent() {
return (Integer) getFieldByNumber(21); return (Integer) getFieldByNumber(21);
@@ -124,6 +154,11 @@ public class FitLap extends RecordData {
return (Integer) getFieldByNumber(22); return (Integer) getFieldByNumber(22);
} }
@Nullable
public Integer getIntensity() {
return (Integer) getFieldByNumber(23);
}
@Nullable @Nullable
public Integer getLapTrigger() { public Integer getLapTrigger() {
return (Integer) getFieldByNumber(24); return (Integer) getFieldByNumber(24);
@@ -134,11 +169,26 @@ public class FitLap extends RecordData {
return (Integer) getFieldByNumber(25); return (Integer) getFieldByNumber(25);
} }
@Nullable
public Integer getEventGroup() {
return (Integer) getFieldByNumber(26);
}
@Nullable @Nullable
public Integer getNumLengths() { public Integer getNumLengths() {
return (Integer) getFieldByNumber(32); return (Integer) getFieldByNumber(32);
} }
@Nullable
public Integer getNormalizedPower() {
return (Integer) getFieldByNumber(33);
}
@Nullable
public Integer getLeftRightBalance() {
return (Integer) getFieldByNumber(34);
}
@Nullable @Nullable
public Integer getFirstLengthIndex() { public Integer getFirstLengthIndex() {
return (Integer) getFieldByNumber(35); return (Integer) getFieldByNumber(35);
@@ -164,11 +214,161 @@ public class FitLap extends RecordData {
return (Integer) getFieldByNumber(40); return (Integer) getFieldByNumber(40);
} }
@Nullable
public Long getTotalWork() {
return (Long) getFieldByNumber(41);
}
@Nullable
public Float getAvgAltitude() {
return (Float) getFieldByNumber(42);
}
@Nullable
public Float getMaxAltitude() {
return (Float) getFieldByNumber(43);
}
@Nullable
public Integer getGpsAccuracy() {
return (Integer) getFieldByNumber(44);
}
@Nullable
public Float getAvgGrade() {
return (Float) getFieldByNumber(45);
}
@Nullable
public Float getAvgPosGrade() {
return (Float) getFieldByNumber(46);
}
@Nullable
public Float getAvgNegGrade() {
return (Float) getFieldByNumber(47);
}
@Nullable
public Float getMaxPosGrade() {
return (Float) getFieldByNumber(48);
}
@Nullable
public Float getMaxNegGrade() {
return (Float) getFieldByNumber(49);
}
@Nullable
public Integer getAvgTemperature() {
return (Integer) getFieldByNumber(50);
}
@Nullable
public Integer getMaxTemperature() {
return (Integer) getFieldByNumber(51);
}
@Nullable
public Double getTotalMovingTime() {
return (Double) getFieldByNumber(52);
}
@Nullable
public Float getAvgPosVerticalSpeed() {
return (Float) getFieldByNumber(53);
}
@Nullable
public Float getAvgNegVerticalSpeed() {
return (Float) getFieldByNumber(54);
}
@Nullable
public Float getMaxPosVerticalSpeed() {
return (Float) getFieldByNumber(55);
}
@Nullable
public Float getMaxNegVerticalSpeed() {
return (Float) getFieldByNumber(56);
}
@Nullable
public Double getTimeInHrZone() {
return (Double) getFieldByNumber(57);
}
@Nullable
public Integer getWktStepIndex() {
return (Integer) getFieldByNumber(71);
}
@Nullable @Nullable
public Integer getAvgSwolf() { public Integer getAvgSwolf() {
return (Integer) getFieldByNumber(73); return (Integer) getFieldByNumber(73);
} }
@Nullable
public Float getAvgFractionalCadence() {
return (Float) getFieldByNumber(80);
}
@Nullable
public Float getMaxFractionalCadence() {
return (Float) getFieldByNumber(81);
}
@Nullable
public Integer getAvgLeftPco() {
return (Integer) getFieldByNumber(100);
}
@Nullable
public Integer getAvgRightPco() {
return (Integer) getFieldByNumber(101);
}
@Nullable
public Integer getAvgLeftPowerPhase() {
return (Integer) getFieldByNumber(102);
}
@Nullable
public Integer getAvgLeftPowerPhasePeak() {
return (Integer) getFieldByNumber(103);
}
@Nullable
public Integer getAvgRightPowerPhase() {
return (Integer) getFieldByNumber(104);
}
@Nullable
public Integer getAvgRightPowerPhasePeak() {
return (Integer) getFieldByNumber(105);
}
@Nullable
public Integer getAvgPowerPosition() {
return (Integer) getFieldByNumber(106);
}
@Nullable
public Integer getMaxPowerPosition() {
return (Integer) getFieldByNumber(107);
}
@Nullable
public Integer getAvgCadencePosition() {
return (Integer) getFieldByNumber(108);
}
@Nullable
public Integer getMaxCadencePosition() {
return (Integer) getFieldByNumber(109);
}
@Nullable @Nullable
public Double getEnhancedAvgSpeed() { public Double getEnhancedAvgSpeed() {
return (Double) getFieldByNumber(110); return (Double) getFieldByNumber(110);
@@ -184,6 +384,11 @@ public class FitLap extends RecordData {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
} }
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -247,11 +452,26 @@ public class FitLap extends RecordData {
return this; return this;
} }
public Builder setTotalCalores(final Integer value) { public Builder setTotalCalories(final Integer value) {
setFieldByNumber(11, value); setFieldByNumber(11, value);
return this; return this;
} }
public Builder setTotalFatCalories(final Integer value) {
setFieldByNumber(12, value);
return this;
}
public Builder setAvgSpeed(final Float value) {
setFieldByNumber(13, value);
return this;
}
public Builder setMaxSpeed(final Float value) {
setFieldByNumber(14, value);
return this;
}
public Builder setAvgHeartRate(final Integer value) { public Builder setAvgHeartRate(final Integer value) {
setFieldByNumber(15, value); setFieldByNumber(15, value);
return this; return this;
@@ -267,6 +487,21 @@ public class FitLap extends RecordData {
return this; return this;
} }
public Builder setMaxCadence(final Integer value) {
setFieldByNumber(18, value);
return this;
}
public Builder setAvgPower(final Integer value) {
setFieldByNumber(19, value);
return this;
}
public Builder setMaxPower(final Integer value) {
setFieldByNumber(20, value);
return this;
}
public Builder setTotalAscent(final Integer value) { public Builder setTotalAscent(final Integer value) {
setFieldByNumber(21, value); setFieldByNumber(21, value);
return this; return this;
@@ -277,6 +512,11 @@ public class FitLap extends RecordData {
return this; return this;
} }
public Builder setIntensity(final Integer value) {
setFieldByNumber(23, value);
return this;
}
public Builder setLapTrigger(final Integer value) { public Builder setLapTrigger(final Integer value) {
setFieldByNumber(24, value); setFieldByNumber(24, value);
return this; return this;
@@ -287,11 +527,26 @@ public class FitLap extends RecordData {
return this; return this;
} }
public Builder setEventGroup(final Integer value) {
setFieldByNumber(26, value);
return this;
}
public Builder setNumLengths(final Integer value) { public Builder setNumLengths(final Integer value) {
setFieldByNumber(32, value); setFieldByNumber(32, value);
return this; return this;
} }
public Builder setNormalizedPower(final Integer value) {
setFieldByNumber(33, value);
return this;
}
public Builder setLeftRightBalance(final Integer value) {
setFieldByNumber(34, value);
return this;
}
public Builder setFirstLengthIndex(final Integer value) { public Builder setFirstLengthIndex(final Integer value) {
setFieldByNumber(35, value); setFieldByNumber(35, value);
return this; return this;
@@ -317,11 +572,161 @@ public class FitLap extends RecordData {
return this; return this;
} }
public Builder setTotalWork(final Long value) {
setFieldByNumber(41, value);
return this;
}
public Builder setAvgAltitude(final Float value) {
setFieldByNumber(42, value);
return this;
}
public Builder setMaxAltitude(final Float value) {
setFieldByNumber(43, value);
return this;
}
public Builder setGpsAccuracy(final Integer value) {
setFieldByNumber(44, value);
return this;
}
public Builder setAvgGrade(final Float value) {
setFieldByNumber(45, value);
return this;
}
public Builder setAvgPosGrade(final Float value) {
setFieldByNumber(46, value);
return this;
}
public Builder setAvgNegGrade(final Float value) {
setFieldByNumber(47, value);
return this;
}
public Builder setMaxPosGrade(final Float value) {
setFieldByNumber(48, value);
return this;
}
public Builder setMaxNegGrade(final Float value) {
setFieldByNumber(49, value);
return this;
}
public Builder setAvgTemperature(final Integer value) {
setFieldByNumber(50, value);
return this;
}
public Builder setMaxTemperature(final Integer value) {
setFieldByNumber(51, value);
return this;
}
public Builder setTotalMovingTime(final Double value) {
setFieldByNumber(52, value);
return this;
}
public Builder setAvgPosVerticalSpeed(final Float value) {
setFieldByNumber(53, value);
return this;
}
public Builder setAvgNegVerticalSpeed(final Float value) {
setFieldByNumber(54, value);
return this;
}
public Builder setMaxPosVerticalSpeed(final Float value) {
setFieldByNumber(55, value);
return this;
}
public Builder setMaxNegVerticalSpeed(final Float value) {
setFieldByNumber(56, value);
return this;
}
public Builder setTimeInHrZone(final Double value) {
setFieldByNumber(57, value);
return this;
}
public Builder setWktStepIndex(final Integer value) {
setFieldByNumber(71, value);
return this;
}
public Builder setAvgSwolf(final Integer value) { public Builder setAvgSwolf(final Integer value) {
setFieldByNumber(73, value); setFieldByNumber(73, value);
return this; return this;
} }
public Builder setAvgFractionalCadence(final Float value) {
setFieldByNumber(80, value);
return this;
}
public Builder setMaxFractionalCadence(final Float value) {
setFieldByNumber(81, value);
return this;
}
public Builder setAvgLeftPco(final Integer value) {
setFieldByNumber(100, value);
return this;
}
public Builder setAvgRightPco(final Integer value) {
setFieldByNumber(101, value);
return this;
}
public Builder setAvgLeftPowerPhase(final Integer value) {
setFieldByNumber(102, value);
return this;
}
public Builder setAvgLeftPowerPhasePeak(final Integer value) {
setFieldByNumber(103, value);
return this;
}
public Builder setAvgRightPowerPhase(final Integer value) {
setFieldByNumber(104, value);
return this;
}
public Builder setAvgRightPowerPhasePeak(final Integer value) {
setFieldByNumber(105, value);
return this;
}
public Builder setAvgPowerPosition(final Integer value) {
setFieldByNumber(106, value);
return this;
}
public Builder setMaxPowerPosition(final Integer value) {
setFieldByNumber(107, value);
return this;
}
public Builder setAvgCadencePosition(final Integer value) {
setFieldByNumber(108, value);
return this;
}
public Builder setMaxCadencePosition(final Integer value) {
setFieldByNumber(109, value);
return this;
}
public Builder setEnhancedAvgSpeed(final Double value) { public Builder setEnhancedAvgSpeed(final Double value) {
setFieldByNumber(110, value); setFieldByNumber(110, value);
return this; return this;
@@ -337,6 +742,11 @@ public class FitLap extends RecordData {
return this; return this;
} }
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override @Override
public FitLap build() { public FitLap build() {
return (FitLap) super.build(); return (FitLap) super.build();
@@ -0,0 +1,288 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitLength extends RecordData {
public FitLength(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 101) {
throw new IllegalArgumentException("FitLength expects global messages of " + 101 + ", got " + globalNumber);
}
}
@Nullable
public Integer getEvent() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getEventType() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Long getStartTime() {
return (Long) getFieldByNumber(2);
}
@Nullable
public Double getTotalElapsedTime() {
return (Double) getFieldByNumber(3);
}
@Nullable
public Double getTotalTimerTime() {
return (Double) getFieldByNumber(4);
}
@Nullable
public Integer getTotalStrokes() {
return (Integer) getFieldByNumber(5);
}
@Nullable
public Float getAvgSpeed() {
return (Float) getFieldByNumber(6);
}
@Nullable
public Integer getSwimStroke() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public Integer getAvgSwimmingCadence() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Integer getEventGroup() {
return (Integer) getFieldByNumber(10);
}
@Nullable
public Integer getTotalCalories() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Integer getLengthType() {
return (Integer) getFieldByNumber(12);
}
@Nullable
public Integer getPlayerScore() {
return (Integer) getFieldByNumber(18);
}
@Nullable
public Integer getOpponentScore() {
return (Integer) getFieldByNumber(19);
}
@Nullable
public Number[] getStrokeCount() {
final Object[] objectsArray = (Object[]) getFieldByNumber(20);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Number[] getZoneCount() {
final Object[] objectsArray = (Object[]) getFieldByNumber(21);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Float getEnhancedAvgRespirationRate() {
return (Float) getFieldByNumber(22);
}
@Nullable
public Float getEnhancedMaxRespirationRate() {
return (Float) getFieldByNumber(23);
}
@Nullable
public Integer getAvgRespirationRate() {
return (Integer) getFieldByNumber(24);
}
@Nullable
public Integer getMaxRespirationRate() {
return (Integer) getFieldByNumber(25);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(101);
}
public Builder setEvent(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setEventType(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setStartTime(final Long value) {
setFieldByNumber(2, value);
return this;
}
public Builder setTotalElapsedTime(final Double value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTotalTimerTime(final Double value) {
setFieldByNumber(4, value);
return this;
}
public Builder setTotalStrokes(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setAvgSpeed(final Float value) {
setFieldByNumber(6, value);
return this;
}
public Builder setSwimStroke(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setAvgSwimmingCadence(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setEventGroup(final Integer value) {
setFieldByNumber(10, value);
return this;
}
public Builder setTotalCalories(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setLengthType(final Integer value) {
setFieldByNumber(12, value);
return this;
}
public Builder setPlayerScore(final Integer value) {
setFieldByNumber(18, value);
return this;
}
public Builder setOpponentScore(final Integer value) {
setFieldByNumber(19, value);
return this;
}
public Builder setStrokeCount(final Number[] value) {
setFieldByNumber(20, (Object[]) value);
return this;
}
public Builder setZoneCount(final Number[] value) {
setFieldByNumber(21, (Object[]) value);
return this;
}
public Builder setEnhancedAvgRespirationRate(final Float value) {
setFieldByNumber(22, value);
return this;
}
public Builder setEnhancedMaxRespirationRate(final Float value) {
setFieldByNumber(23, value);
return this;
}
public Builder setAvgRespirationRate(final Integer value) {
setFieldByNumber(24, value);
return this;
}
public Builder setMaxRespirationRate(final Integer value) {
setFieldByNumber(25, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitLength build() {
return (FitLength) super.build();
}
}
}
@@ -68,6 +68,16 @@ public class FitMaxMetData extends RecordData {
return (Integer) getFieldByNumber(9); return (Integer) getFieldByNumber(9);
} }
@Nullable
public Integer getHrSource() {
return (Integer) getFieldByNumber(12);
}
@Nullable
public Integer getSpeedSource() {
return (Integer) getFieldByNumber(13);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -106,6 +116,16 @@ public class FitMaxMetData extends RecordData {
return this; return this;
} }
public Builder setHrSource(final Integer value) {
setFieldByNumber(12, value);
return this;
}
public Builder setSpeedSource(final Integer value) {
setFieldByNumber(13, value);
return this;
}
@Override @Override
public FitMaxMetData build() { public FitMaxMetData build() {
return (FitMaxMetData) super.build(); return (FitMaxMetData) super.build();
@@ -0,0 +1,94 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitMetZone extends RecordData {
public FitMetZone(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 10) {
throw new IllegalArgumentException("FitMetZone expects global messages of " + 10 + ", got " + globalNumber);
}
}
@Nullable
public Integer getHighBpm() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Float getCalories() {
return (Float) getFieldByNumber(2);
}
@Nullable
public Float getFatCalories() {
return (Float) getFieldByNumber(3);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(10);
}
public Builder setHighBpm(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setCalories(final Float value) {
setFieldByNumber(2, value);
return this;
}
public Builder setFatCalories(final Float value) {
setFieldByNumber(3, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitMetZone build() {
return (FitMetZone) super.build();
}
}
}
@@ -41,6 +41,16 @@ public class FitMonitoring extends RecordData {
} }
} }
@Nullable
public Integer getDeviceIndex() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getCalories() {
return (Integer) getFieldByNumber(1);
}
@Nullable @Nullable
public Long getDistance() { public Long getDistance() {
return (Long) getFieldByNumber(2); return (Long) getFieldByNumber(2);
@@ -61,6 +71,56 @@ public class FitMonitoring extends RecordData {
return (Integer) getFieldByNumber(5); return (Integer) getFieldByNumber(5);
} }
@Nullable
public Integer getActivitySubtype() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Integer getActivityLevel() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public Integer getDistance16() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Integer getCycles16() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Integer getActiveTime16() {
return (Integer) getFieldByNumber(10);
}
@Nullable
public Integer getLocalTimestamp() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Float getTemperature() {
return (Float) getFieldByNumber(12);
}
@Nullable
public Float getTemperatureMin() {
return (Float) getFieldByNumber(14);
}
@Nullable
public Float getTemperatureMax() {
return (Float) getFieldByNumber(15);
}
@Nullable
public Integer getActivityTime() {
return (Integer) getFieldByNumber(16);
}
@Nullable @Nullable
public Integer getActiveCalories() { public Integer getActiveCalories() {
return (Integer) getFieldByNumber(19); return (Integer) getFieldByNumber(19);
@@ -81,11 +141,36 @@ public class FitMonitoring extends RecordData {
return (Integer) getFieldByNumber(26); return (Integer) getFieldByNumber(26);
} }
@Nullable
public Integer getTimestampMin8() {
return (Integer) getFieldByNumber(25);
}
@Nullable @Nullable
public Integer getHeartRate() { public Integer getHeartRate() {
return (Integer) getFieldByNumber(27); return (Integer) getFieldByNumber(27);
} }
@Nullable
public Float getIntensity() {
return (Float) getFieldByNumber(28);
}
@Nullable
public Long getDuration() {
return (Long) getFieldByNumber(30);
}
@Nullable
public Double getAscent() {
return (Double) getFieldByNumber(31);
}
@Nullable
public Double getDescent() {
return (Double) getFieldByNumber(32);
}
@Nullable @Nullable
public Integer getModerateActivityMinutes() { public Integer getModerateActivityMinutes() {
return (Integer) getFieldByNumber(33); return (Integer) getFieldByNumber(33);
@@ -109,6 +194,16 @@ public class FitMonitoring extends RecordData {
super(55); super(55);
} }
public Builder setDeviceIndex(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setCalories(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setDistance(final Long value) { public Builder setDistance(final Long value) {
setFieldByNumber(2, value); setFieldByNumber(2, value);
return this; return this;
@@ -129,6 +224,56 @@ public class FitMonitoring extends RecordData {
return this; return this;
} }
public Builder setActivitySubtype(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setActivityLevel(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setDistance16(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setCycles16(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setActiveTime16(final Integer value) {
setFieldByNumber(10, value);
return this;
}
public Builder setLocalTimestamp(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setTemperature(final Float value) {
setFieldByNumber(12, value);
return this;
}
public Builder setTemperatureMin(final Float value) {
setFieldByNumber(14, value);
return this;
}
public Builder setTemperatureMax(final Float value) {
setFieldByNumber(15, value);
return this;
}
public Builder setActivityTime(final Integer value) {
setFieldByNumber(16, value);
return this;
}
public Builder setActiveCalories(final Integer value) { public Builder setActiveCalories(final Integer value) {
setFieldByNumber(19, value); setFieldByNumber(19, value);
return this; return this;
@@ -149,11 +294,36 @@ public class FitMonitoring extends RecordData {
return this; return this;
} }
public Builder setTimestampMin8(final Integer value) {
setFieldByNumber(25, value);
return this;
}
public Builder setHeartRate(final Integer value) { public Builder setHeartRate(final Integer value) {
setFieldByNumber(27, value); setFieldByNumber(27, value);
return this; return this;
} }
public Builder setIntensity(final Float value) {
setFieldByNumber(28, value);
return this;
}
public Builder setDuration(final Long value) {
setFieldByNumber(30, value);
return this;
}
public Builder setAscent(final Double value) {
setFieldByNumber(31, value);
return this;
}
public Builder setDescent(final Double value) {
setFieldByNumber(32, value);
return this;
}
public Builder setModerateActivityMinutes(final Integer value) { public Builder setModerateActivityMinutes(final Integer value) {
setFieldByNumber(33, value); setFieldByNumber(33, value);
return this; return this;
@@ -0,0 +1,74 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitOhrSettings extends RecordData {
public FitOhrSettings(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 188) {
throw new IllegalArgumentException("FitOhrSettings expects global messages of " + 188 + ", got " + globalNumber);
}
}
@Nullable
public Integer getEnabled() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(188);
}
public Builder setEnabled(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitOhrSettings build() {
return (FitOhrSettings) super.build();
}
}
}
@@ -0,0 +1,54 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitPad extends RecordData {
public FitPad(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 105) {
throw new IllegalArgumentException("FitPad expects global messages of " + 105 + ", got " + globalNumber);
}
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(105);
}
@Override
public FitPad build() {
return (FitPad) super.build();
}
}
}
@@ -0,0 +1,84 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitPowerZone extends RecordData {
public FitPowerZone(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 9) {
throw new IllegalArgumentException("FitPowerZone expects global messages of " + 9 + ", got " + globalNumber);
}
}
@Nullable
public Integer getHighValue() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public String getName() {
return (String) getFieldByNumber(2);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(9);
}
public Builder setHighValue(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setName(final String value) {
setFieldByNumber(2, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitPowerZone build() {
return (FitPowerZone) super.build();
}
}
}
@@ -82,31 +82,138 @@ public class FitRecord extends RecordData {
return (Integer) getFieldByNumber(7); return (Integer) getFieldByNumber(7);
} }
@Nullable
public Integer getCompressedSpeedDistance() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Float getGrade() {
return (Float) getFieldByNumber(9);
}
@Nullable
public Integer getResistance() {
return (Integer) getFieldByNumber(10);
}
@Nullable
public Double getTimeFromCourse() {
return (Double) getFieldByNumber(11);
}
@Nullable
public Float getCycleLength() {
return (Float) getFieldByNumber(12);
}
@Nullable @Nullable
public Integer getTemperature() { public Integer getTemperature() {
return (Integer) getFieldByNumber(13); return (Integer) getFieldByNumber(13);
} }
@Nullable
public Number[] getSpeed1s() {
final Object[] objectsArray = (Object[]) getFieldByNumber(17);
if (objectsArray == null)
return null;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Integer getCycles() {
return (Integer) getFieldByNumber(18);
}
@Nullable
public Long getTotalCycles() {
return (Long) getFieldByNumber(19);
}
@Nullable
public Integer getCompressedAccumulatedPower() {
return (Integer) getFieldByNumber(28);
}
@Nullable @Nullable
public Long getAccumulatedPower() { public Long getAccumulatedPower() {
return (Long) getFieldByNumber(29); return (Long) getFieldByNumber(29);
} }
@Nullable
public Integer getLeftRightBalance() {
return (Integer) getFieldByNumber(30);
}
@Nullable
public Integer getGpsAccuracy() {
return (Integer) getFieldByNumber(31);
}
@Nullable
public Float getVerticalSpeed() {
return (Float) getFieldByNumber(32);
}
@Nullable
public Integer getCalories() {
return (Integer) getFieldByNumber(33);
}
@Nullable @Nullable
public Float getOscillation() { public Float getOscillation() {
return (Float) getFieldByNumber(39); return (Float) getFieldByNumber(39);
} }
@Nullable
public Float getStanceTimePercent() {
return (Float) getFieldByNumber(40);
}
@Nullable
public Float getStanceTime() {
return (Float) getFieldByNumber(41);
}
@Nullable @Nullable
public Integer getActivity() { public Integer getActivity() {
return (Integer) getFieldByNumber(42); return (Integer) getFieldByNumber(42);
} }
@Nullable
public Integer getStrokeType() {
return (Integer) getFieldByNumber(49);
}
@Nullable
public Integer getZone() {
return (Integer) getFieldByNumber(50);
}
@Nullable
public Float getBallSpeed() {
return (Float) getFieldByNumber(51);
}
@Nullable
public Float getCadence256() {
return (Float) getFieldByNumber(52);
}
@Nullable @Nullable
public Float getFractionalCadence() { public Float getFractionalCadence() {
return (Float) getFieldByNumber(53); return (Float) getFieldByNumber(53);
} }
@Nullable
public Integer getDeviceIndex() {
return (Integer) getFieldByNumber(62);
}
@Nullable @Nullable
public Double getEnhancedSpeed() { public Double getEnhancedSpeed() {
return (Double) getFieldByNumber(73); return (Double) getFieldByNumber(73);
@@ -117,16 +224,36 @@ public class FitRecord extends RecordData {
return (Double) getFieldByNumber(78); return (Double) getFieldByNumber(78);
} }
@Nullable
public Float getBatterySoc() {
return (Float) getFieldByNumber(81);
}
@Nullable
public Integer getMotorPower() {
return (Integer) getFieldByNumber(82);
}
@Nullable @Nullable
public Float getVerticalRatio() { public Float getVerticalRatio() {
return (Float) getFieldByNumber(83); return (Float) getFieldByNumber(83);
} }
@Nullable
public Float getStanceTimeBalance() {
return (Float) getFieldByNumber(84);
}
@Nullable @Nullable
public Float getStepLength() { public Float getStepLength() {
return (Float) getFieldByNumber(85); return (Float) getFieldByNumber(85);
} }
@Nullable
public Float getCycleLength16() {
return (Float) getFieldByNumber(87);
}
@Nullable @Nullable
public Long getAbsolutePressure() { public Long getAbsolutePressure() {
return (Long) getFieldByNumber(91); return (Long) getFieldByNumber(91);
@@ -167,16 +294,71 @@ public class FitRecord extends RecordData {
return (Integer) getFieldByNumber(98); return (Integer) getFieldByNumber(98);
} }
@Nullable
public Integer getRespirationRate() {
return (Integer) getFieldByNumber(99);
}
@Nullable @Nullable
public Integer getEnhancedRespirationRate() { public Integer getEnhancedRespirationRate() {
return (Integer) getFieldByNumber(108); return (Integer) getFieldByNumber(108);
} }
@Nullable
public Float getGrit() {
return (Float) getFieldByNumber(114);
}
@Nullable
public Float getFlow() {
return (Float) getFieldByNumber(115);
}
@Nullable
public Float getCurrentStress() {
return (Float) getFieldByNumber(116);
}
@Nullable
public Long getAirTimeRemaining() {
return (Long) getFieldByNumber(123);
}
@Nullable
public Float getPressureSac() {
return (Float) getFieldByNumber(124);
}
@Nullable
public Float getVolumeSac() {
return (Float) getFieldByNumber(125);
}
@Nullable
public Float getRmv() {
return (Float) getFieldByNumber(126);
}
@Nullable
public Double getAscentRate() {
return (Double) getFieldByNumber(127);
}
@Nullable
public Float getPo2() {
return (Float) getFieldByNumber(129);
}
@Nullable @Nullable
public Integer getWristHeartRate() { public Integer getWristHeartRate() {
return (Integer) getFieldByNumber(136); return (Integer) getFieldByNumber(136);
} }
@Nullable
public Float getCoreTemperature() {
return (Float) getFieldByNumber(139);
}
@Nullable @Nullable
public Integer getBodyBattery() { public Integer getBodyBattery() {
return (Integer) getFieldByNumber(143); return (Integer) getFieldByNumber(143);
@@ -235,31 +417,131 @@ public class FitRecord extends RecordData {
return this; return this;
} }
public Builder setCompressedSpeedDistance(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setGrade(final Float value) {
setFieldByNumber(9, value);
return this;
}
public Builder setResistance(final Integer value) {
setFieldByNumber(10, value);
return this;
}
public Builder setTimeFromCourse(final Double value) {
setFieldByNumber(11, value);
return this;
}
public Builder setCycleLength(final Float value) {
setFieldByNumber(12, value);
return this;
}
public Builder setTemperature(final Integer value) { public Builder setTemperature(final Integer value) {
setFieldByNumber(13, value); setFieldByNumber(13, value);
return this; return this;
} }
public Builder setSpeed1s(final Number[] value) {
setFieldByNumber(17, (Object[]) value);
return this;
}
public Builder setCycles(final Integer value) {
setFieldByNumber(18, value);
return this;
}
public Builder setTotalCycles(final Long value) {
setFieldByNumber(19, value);
return this;
}
public Builder setCompressedAccumulatedPower(final Integer value) {
setFieldByNumber(28, value);
return this;
}
public Builder setAccumulatedPower(final Long value) { public Builder setAccumulatedPower(final Long value) {
setFieldByNumber(29, value); setFieldByNumber(29, value);
return this; return this;
} }
public Builder setLeftRightBalance(final Integer value) {
setFieldByNumber(30, value);
return this;
}
public Builder setGpsAccuracy(final Integer value) {
setFieldByNumber(31, value);
return this;
}
public Builder setVerticalSpeed(final Float value) {
setFieldByNumber(32, value);
return this;
}
public Builder setCalories(final Integer value) {
setFieldByNumber(33, value);
return this;
}
public Builder setOscillation(final Float value) { public Builder setOscillation(final Float value) {
setFieldByNumber(39, value); setFieldByNumber(39, value);
return this; return this;
} }
public Builder setStanceTimePercent(final Float value) {
setFieldByNumber(40, value);
return this;
}
public Builder setStanceTime(final Float value) {
setFieldByNumber(41, value);
return this;
}
public Builder setActivity(final Integer value) { public Builder setActivity(final Integer value) {
setFieldByNumber(42, value); setFieldByNumber(42, value);
return this; return this;
} }
public Builder setStrokeType(final Integer value) {
setFieldByNumber(49, value);
return this;
}
public Builder setZone(final Integer value) {
setFieldByNumber(50, value);
return this;
}
public Builder setBallSpeed(final Float value) {
setFieldByNumber(51, value);
return this;
}
public Builder setCadence256(final Float value) {
setFieldByNumber(52, value);
return this;
}
public Builder setFractionalCadence(final Float value) { public Builder setFractionalCadence(final Float value) {
setFieldByNumber(53, value); setFieldByNumber(53, value);
return this; return this;
} }
public Builder setDeviceIndex(final Integer value) {
setFieldByNumber(62, value);
return this;
}
public Builder setEnhancedSpeed(final Double value) { public Builder setEnhancedSpeed(final Double value) {
setFieldByNumber(73, value); setFieldByNumber(73, value);
return this; return this;
@@ -270,16 +552,36 @@ public class FitRecord extends RecordData {
return this; return this;
} }
public Builder setBatterySoc(final Float value) {
setFieldByNumber(81, value);
return this;
}
public Builder setMotorPower(final Integer value) {
setFieldByNumber(82, value);
return this;
}
public Builder setVerticalRatio(final Float value) { public Builder setVerticalRatio(final Float value) {
setFieldByNumber(83, value); setFieldByNumber(83, value);
return this; return this;
} }
public Builder setStanceTimeBalance(final Float value) {
setFieldByNumber(84, value);
return this;
}
public Builder setStepLength(final Float value) { public Builder setStepLength(final Float value) {
setFieldByNumber(85, value); setFieldByNumber(85, value);
return this; return this;
} }
public Builder setCycleLength16(final Float value) {
setFieldByNumber(87, value);
return this;
}
public Builder setAbsolutePressure(final Long value) { public Builder setAbsolutePressure(final Long value) {
setFieldByNumber(91, value); setFieldByNumber(91, value);
return this; return this;
@@ -320,16 +622,71 @@ public class FitRecord extends RecordData {
return this; return this;
} }
public Builder setRespirationRate(final Integer value) {
setFieldByNumber(99, value);
return this;
}
public Builder setEnhancedRespirationRate(final Integer value) { public Builder setEnhancedRespirationRate(final Integer value) {
setFieldByNumber(108, value); setFieldByNumber(108, value);
return this; return this;
} }
public Builder setGrit(final Float value) {
setFieldByNumber(114, value);
return this;
}
public Builder setFlow(final Float value) {
setFieldByNumber(115, value);
return this;
}
public Builder setCurrentStress(final Float value) {
setFieldByNumber(116, value);
return this;
}
public Builder setAirTimeRemaining(final Long value) {
setFieldByNumber(123, value);
return this;
}
public Builder setPressureSac(final Float value) {
setFieldByNumber(124, value);
return this;
}
public Builder setVolumeSac(final Float value) {
setFieldByNumber(125, value);
return this;
}
public Builder setRmv(final Float value) {
setFieldByNumber(126, value);
return this;
}
public Builder setAscentRate(final Double value) {
setFieldByNumber(127, value);
return this;
}
public Builder setPo2(final Float value) {
setFieldByNumber(129, value);
return this;
}
public Builder setWristHeartRate(final Integer value) { public Builder setWristHeartRate(final Integer value) {
setFieldByNumber(136, value); setFieldByNumber(136, value);
return this; return this;
} }
public Builder setCoreTemperature(final Float value) {
setFieldByNumber(139, value);
return this;
}
public Builder setBodyBattery(final Integer value) { public Builder setBodyBattery(final Integer value) {
setFieldByNumber(143, value); setFieldByNumber(143, value);
return this; return this;
@@ -16,52 +16,100 @@ public class FitRecordDataFactory {
public static RecordData create(final RecordDefinition recordDefinition, final RecordHeader recordHeader) { public static RecordData create(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
return switch (recordDefinition.getGlobalFITMessage().getNumber()) { return switch (recordDefinition.getGlobalFITMessage().getNumber()) {
case 0 -> new FitFileId(recordDefinition, recordHeader); case 0 -> new FitFileId(recordDefinition, recordHeader);
case 1 -> new FitCapabilities(recordDefinition, recordHeader);
case 2 -> new FitDeviceSettings(recordDefinition, recordHeader); case 2 -> new FitDeviceSettings(recordDefinition, recordHeader);
case 3 -> new FitUserProfile(recordDefinition, recordHeader); case 3 -> new FitUserProfile(recordDefinition, recordHeader);
case 4 -> new FitHrmProfile(recordDefinition, recordHeader);
case 5 -> new FitSdmProfile(recordDefinition, recordHeader);
case 6 -> new FitBikeProfile(recordDefinition, recordHeader);
case 7 -> new FitZonesTarget(recordDefinition, recordHeader); case 7 -> new FitZonesTarget(recordDefinition, recordHeader);
case 8 -> new FitHrZone(recordDefinition, recordHeader);
case 9 -> new FitPowerZone(recordDefinition, recordHeader);
case 10 -> new FitMetZone(recordDefinition, recordHeader);
case 12 -> new FitSport(recordDefinition, recordHeader); case 12 -> new FitSport(recordDefinition, recordHeader);
case 13 -> new FitTrainingSettings(recordDefinition, recordHeader);
case 15 -> new FitGoals(recordDefinition, recordHeader); case 15 -> new FitGoals(recordDefinition, recordHeader);
case 18 -> new FitSession(recordDefinition, recordHeader); case 18 -> new FitSession(recordDefinition, recordHeader);
case 19 -> new FitLap(recordDefinition, recordHeader); case 19 -> new FitLap(recordDefinition, recordHeader);
case 20 -> new FitRecord(recordDefinition, recordHeader); case 20 -> new FitRecord(recordDefinition, recordHeader);
case 21 -> new FitEvent(recordDefinition, recordHeader); case 21 -> new FitEvent(recordDefinition, recordHeader);
case 22 -> new FitDeviceUsed(recordDefinition, recordHeader);
case 23 -> new FitDeviceInfo(recordDefinition, recordHeader); case 23 -> new FitDeviceInfo(recordDefinition, recordHeader);
case 26 -> new FitWorkout(recordDefinition, recordHeader); case 26 -> new FitWorkout(recordDefinition, recordHeader);
case 27 -> new FitWorkoutStep(recordDefinition, recordHeader);
case 30 -> new FitWeightScale(recordDefinition, recordHeader);
case 31 -> new FitCourse(recordDefinition, recordHeader); case 31 -> new FitCourse(recordDefinition, recordHeader);
case 33 -> new FitTotals(recordDefinition, recordHeader);
case 34 -> new FitActivity(recordDefinition, recordHeader); case 34 -> new FitActivity(recordDefinition, recordHeader);
case 35 -> new FitSoftware(recordDefinition, recordHeader);
case 49 -> new FitFileCreator(recordDefinition, recordHeader); case 49 -> new FitFileCreator(recordDefinition, recordHeader);
case 51 -> new FitBloodPressure(recordDefinition, recordHeader);
case 53 -> new FitSpeedZone(recordDefinition, recordHeader);
case 55 -> new FitMonitoring(recordDefinition, recordHeader); case 55 -> new FitMonitoring(recordDefinition, recordHeader);
case 72 -> new FitTrainingFile(recordDefinition, recordHeader);
case 78 -> new FitHrv(recordDefinition, recordHeader);
case 79 -> new FitUserMetrics(recordDefinition, recordHeader);
case 101 -> new FitLength(recordDefinition, recordHeader);
case 103 -> new FitMonitoringInfo(recordDefinition, recordHeader); case 103 -> new FitMonitoringInfo(recordDefinition, recordHeader);
case 104 -> new FitDeviceStatus(recordDefinition, recordHeader);
case 105 -> new FitPad(recordDefinition, recordHeader);
case 106 -> new FitSlaveDevice(recordDefinition, recordHeader);
case 127 -> new FitConnectivity(recordDefinition, recordHeader); case 127 -> new FitConnectivity(recordDefinition, recordHeader);
case 128 -> new FitWeather(recordDefinition, recordHeader); case 128 -> new FitWeather(recordDefinition, recordHeader);
case 131 -> new FitCadenceZone(recordDefinition, recordHeader);
case 132 -> new FitHr(recordDefinition, recordHeader);
case 140 -> new FitPhysiologicalMetrics(recordDefinition, recordHeader); case 140 -> new FitPhysiologicalMetrics(recordDefinition, recordHeader);
case 141 -> new FitEpoStatus(recordDefinition, recordHeader);
case 147 -> new FitSensorSettings(recordDefinition, recordHeader);
case 151 -> new FitSegmentFile(recordDefinition, recordHeader);
case 158 -> new FitWorkoutSession(recordDefinition, recordHeader);
case 159 -> new FitWatchfaceSettings(recordDefinition, recordHeader); case 159 -> new FitWatchfaceSettings(recordDefinition, recordHeader);
case 160 -> new FitGpsMetadata(recordDefinition, recordHeader); case 160 -> new FitGpsMetadata(recordDefinition, recordHeader);
case 162 -> new FitTimestampCorrelation(recordDefinition, recordHeader); case 162 -> new FitTimestampCorrelation(recordDefinition, recordHeader);
case 188 -> new FitOhrSettings(recordDefinition, recordHeader);
case 206 -> new FitFieldDescription(recordDefinition, recordHeader); case 206 -> new FitFieldDescription(recordDefinition, recordHeader);
case 207 -> new FitDeveloperData(recordDefinition, recordHeader); case 207 -> new FitDeveloperData(recordDefinition, recordHeader);
case 209 -> new FitBarometerData(recordDefinition, recordHeader);
case 211 -> new FitMonitoringHrData(recordDefinition, recordHeader); case 211 -> new FitMonitoringHrData(recordDefinition, recordHeader);
case 216 -> new FitTimeInZone(recordDefinition, recordHeader); case 216 -> new FitTimeInZone(recordDefinition, recordHeader);
case 222 -> new FitAlarmSettings(recordDefinition, recordHeader); case 222 -> new FitAlarmSettings(recordDefinition, recordHeader);
case 225 -> new FitSet(recordDefinition, recordHeader); case 225 -> new FitSet(recordDefinition, recordHeader);
case 227 -> new FitStressLevel(recordDefinition, recordHeader); case 227 -> new FitStressLevel(recordDefinition, recordHeader);
case 229 -> new FitMaxMetData(recordDefinition, recordHeader); case 229 -> new FitMaxMetData(recordDefinition, recordHeader);
case 258 -> new FitDiveSettings(recordDefinition, recordHeader);
case 259 -> new FitDiveGas(recordDefinition, recordHeader); case 259 -> new FitDiveGas(recordDefinition, recordHeader);
case 264 -> new FitExerciseTitle(recordDefinition, recordHeader);
case 268 -> new FitDiveSummary(recordDefinition, recordHeader); case 268 -> new FitDiveSummary(recordDefinition, recordHeader);
case 269 -> new FitSpo2(recordDefinition, recordHeader); case 269 -> new FitSpo2(recordDefinition, recordHeader);
case 273 -> new FitSleepDataInfo(recordDefinition, recordHeader); case 273 -> new FitSleepDataInfo(recordDefinition, recordHeader);
case 274 -> new FitSleepDataRaw(recordDefinition, recordHeader); case 274 -> new FitSleepDataRaw(recordDefinition, recordHeader);
case 275 -> new FitSleepStage(recordDefinition, recordHeader); case 275 -> new FitSleepStage(recordDefinition, recordHeader);
case 290 -> new FitBeatIntervals(recordDefinition, recordHeader);
case 297 -> new FitRespirationRate(recordDefinition, recordHeader); case 297 -> new FitRespirationRate(recordDefinition, recordHeader);
case 304 -> new FitHsaStepData(recordDefinition, recordHeader);
case 305 -> new FitHsaSpo2Data(recordDefinition, recordHeader);
case 306 -> new FitHsaStressData(recordDefinition, recordHeader);
case 307 -> new FitHsaRespirationData(recordDefinition, recordHeader);
case 308 -> new FitHsaHeartRateData(recordDefinition, recordHeader);
case 312 -> new FitSplit(recordDefinition, recordHeader);
case 314 -> new FitHsaBodyBatteryData(recordDefinition, recordHeader);
case 315 -> new FitHsaEvent(recordDefinition, recordHeader);
case 319 -> new FitTankUpdate(recordDefinition, recordHeader);
case 323 -> new FitTankSummary(recordDefinition, recordHeader);
case 326 -> new FitGpsEvent(recordDefinition, recordHeader);
case 336 -> new FitEcgSummary(recordDefinition, recordHeader); case 336 -> new FitEcgSummary(recordDefinition, recordHeader);
case 337 -> new FitEcgRawSample(recordDefinition, recordHeader); case 337 -> new FitEcgRawSample(recordDefinition, recordHeader);
case 338 -> new FitEcgSmoothSample(recordDefinition, recordHeader); case 338 -> new FitEcgSmoothSample(recordDefinition, recordHeader);
case 346 -> new FitSleepStats(recordDefinition, recordHeader); case 346 -> new FitSleepStats(recordDefinition, recordHeader);
case 370 -> new FitHrvSummary(recordDefinition, recordHeader); case 370 -> new FitHrvSummary(recordDefinition, recordHeader);
case 371 -> new FitHrvValue(recordDefinition, recordHeader); case 371 -> new FitHrvValue(recordDefinition, recordHeader);
case 375 -> new FitDeviceAuxBatteryInfo(recordDefinition, recordHeader);
case 378 -> new FitTrainingLoad(recordDefinition, recordHeader); case 378 -> new FitTrainingLoad(recordDefinition, recordHeader);
case 389 -> new FitHsaConfigurationData(recordDefinition, recordHeader);
case 394 -> new FitCpeStatus(recordDefinition, recordHeader);
case 397 -> new FitSkinTempRaw(recordDefinition, recordHeader); case 397 -> new FitSkinTempRaw(recordDefinition, recordHeader);
case 398 -> new FitSkinTempOvernight(recordDefinition, recordHeader); case 398 -> new FitSkinTempOvernight(recordDefinition, recordHeader);
case 409 -> new FitHsaWristTemperatureData(recordDefinition, recordHeader);
case 412 -> new FitNap(recordDefinition, recordHeader); case 412 -> new FitNap(recordDefinition, recordHeader);
default -> new RecordData(recordDefinition, recordHeader); default -> new RecordData(recordDefinition, recordHeader);
}; };
@@ -0,0 +1,134 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSdmProfile extends RecordData {
public FitSdmProfile(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 5) {
throw new IllegalArgumentException("FitSdmProfile expects global messages of " + 5 + ", got " + globalNumber);
}
}
@Nullable
public Integer getEnabled() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getSdmAntId() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Float getSdmCalFactor() {
return (Float) getFieldByNumber(2);
}
@Nullable
public Double getOdometer() {
return (Double) getFieldByNumber(3);
}
@Nullable
public Integer getSpeedSource() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Integer getSdmAntIdTransType() {
return (Integer) getFieldByNumber(5);
}
@Nullable
public Integer getOdometerRollover() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(5);
}
public Builder setEnabled(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSdmAntId(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setSdmCalFactor(final Float value) {
setFieldByNumber(2, value);
return this;
}
public Builder setOdometer(final Double value) {
setFieldByNumber(3, value);
return this;
}
public Builder setSpeedSource(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setSdmAntIdTransType(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setOdometerRollover(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitSdmProfile build() {
return (FitSdmProfile) super.build();
}
}
}
@@ -0,0 +1,144 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSegmentFile extends RecordData {
public FitSegmentFile(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 151) {
throw new IllegalArgumentException("FitSegmentFile expects global messages of " + 151 + ", got " + globalNumber);
}
}
@Nullable
public String getFileUuid() {
return (String) getFieldByNumber(1);
}
@Nullable
public Integer getEnabled() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Long getUserProfilePrimaryKey() {
return (Long) getFieldByNumber(4);
}
@Nullable
public Integer getLeaderType() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public Long getLeaderGroupPrimaryKey() {
return (Long) getFieldByNumber(8);
}
@Nullable
public Long getLeaderActivityId() {
return (Long) getFieldByNumber(9);
}
@Nullable
public String getLeaderActivityIdString() {
return (String) getFieldByNumber(10);
}
@Nullable
public Integer getDefaultRaceLeader() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(151);
}
public Builder setFileUuid(final String value) {
setFieldByNumber(1, value);
return this;
}
public Builder setEnabled(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setUserProfilePrimaryKey(final Long value) {
setFieldByNumber(4, value);
return this;
}
public Builder setLeaderType(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setLeaderGroupPrimaryKey(final Long value) {
setFieldByNumber(8, value);
return this;
}
public Builder setLeaderActivityId(final Long value) {
setFieldByNumber(9, value);
return this;
}
public Builder setLeaderActivityIdString(final String value) {
setFieldByNumber(10, value);
return this;
}
public Builder setDefaultRaceLeader(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitSegmentFile build() {
return (FitSegmentFile) super.build();
}
}
}
@@ -0,0 +1,114 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSensorSettings extends RecordData {
public FitSensorSettings(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 147) {
throw new IllegalArgumentException("FitSensorSettings expects global messages of " + 147 + ", got " + globalNumber);
}
}
@Nullable
public Long getAntId() {
return (Long) getFieldByNumber(0);
}
@Nullable
public String getName() {
return (String) getFieldByNumber(2);
}
@Nullable
public Integer getUseForSpeed() {
return (Integer) getFieldByNumber(45);
}
@Nullable
public Integer getUseForDistance() {
return (Integer) getFieldByNumber(46);
}
@Nullable
public Integer getConnectionType() {
return (Integer) getFieldByNumber(51);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(147);
}
public Builder setAntId(final Long value) {
setFieldByNumber(0, value);
return this;
}
public Builder setName(final String value) {
setFieldByNumber(2, value);
return this;
}
public Builder setUseForSpeed(final Integer value) {
setFieldByNumber(45, value);
return this;
}
public Builder setUseForDistance(final Integer value) {
setFieldByNumber(46, value);
return this;
}
public Builder setConnectionType(final Integer value) {
setFieldByNumber(51, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitSensorSettings build() {
return (FitSensorSettings) super.build();
}
}
}
@@ -98,6 +98,21 @@ public class FitSession extends RecordData {
return (Integer) getFieldByNumber(11); return (Integer) getFieldByNumber(11);
} }
@Nullable
public Integer getTotalFatCalories() {
return (Integer) getFieldByNumber(13);
}
@Nullable
public Float getAvgSpeed() {
return (Float) getFieldByNumber(14);
}
@Nullable
public Float getMaxSpeed() {
return (Float) getFieldByNumber(15);
}
@Nullable @Nullable
public Integer getAverageHeartRate() { public Integer getAverageHeartRate() {
return (Integer) getFieldByNumber(16); return (Integer) getFieldByNumber(16);
@@ -153,6 +168,11 @@ public class FitSession extends RecordData {
return (Integer) getFieldByNumber(26); return (Integer) getFieldByNumber(26);
} }
@Nullable
public Integer getEventGroup() {
return (Integer) getFieldByNumber(27);
}
@Nullable @Nullable
public Integer getTrigger() { public Integer getTrigger() {
return (Integer) getFieldByNumber(28); return (Integer) getFieldByNumber(28);
@@ -213,6 +233,21 @@ public class FitSession extends RecordData {
return (Double) getFieldByNumber(39); return (Double) getFieldByNumber(39);
} }
@Nullable
public Long getAvgStrokeCount() {
return (Long) getFieldByNumber(41);
}
@Nullable
public Float getAvgStrokeDistance() {
return (Float) getFieldByNumber(42);
}
@Nullable
public Integer getSwimStroke() {
return (Integer) getFieldByNumber(43);
}
@Nullable @Nullable
public Float getPoolLength() { public Float getPoolLength() {
return (Float) getFieldByNumber(44); return (Float) getFieldByNumber(44);
@@ -223,6 +258,11 @@ public class FitSession extends RecordData {
return (Integer) getFieldByNumber(45); return (Integer) getFieldByNumber(45);
} }
@Nullable
public Integer getPoolLengthUnit() {
return (Integer) getFieldByNumber(46);
}
@Nullable @Nullable
public Integer getNumActiveLengths() { public Integer getNumActiveLengths() {
return (Integer) getFieldByNumber(47); return (Integer) getFieldByNumber(47);
@@ -233,11 +273,121 @@ public class FitSession extends RecordData {
return (Long) getFieldByNumber(48); return (Long) getFieldByNumber(48);
} }
@Nullable
public Double getAvgAltitude() {
return (Double) getFieldByNumber(49);
}
@Nullable
public Double getMaxAltitude() {
return (Double) getFieldByNumber(50);
}
@Nullable
public Integer getGpsAccuracy() {
return (Integer) getFieldByNumber(51);
}
@Nullable
public Float getAvgGrade() {
return (Float) getFieldByNumber(52);
}
@Nullable
public Float getAvgPosGrade() {
return (Float) getFieldByNumber(53);
}
@Nullable
public Float getAvgNegGrade() {
return (Float) getFieldByNumber(54);
}
@Nullable
public Float getMaxPosGrade() {
return (Float) getFieldByNumber(55);
}
@Nullable
public Float getMaxNegGrade() {
return (Float) getFieldByNumber(56);
}
@Nullable
public Integer getAvgTemperature() {
return (Integer) getFieldByNumber(57);
}
@Nullable
public Integer getMaxTemperature() {
return (Integer) getFieldByNumber(58);
}
@Nullable
public Double getTotalMovingTime() {
return (Double) getFieldByNumber(59);
}
@Nullable
public Float getAvgPosVerticalSpeed() {
return (Float) getFieldByNumber(60);
}
@Nullable
public Float getAvgNegVerticalSpeed() {
return (Float) getFieldByNumber(61);
}
@Nullable
public Float getMaxPosVerticalSpeed() {
return (Float) getFieldByNumber(62);
}
@Nullable
public Float getMaxNegVerticalSpeed() {
return (Float) getFieldByNumber(63);
}
@Nullable @Nullable
public Integer getMinHeartRate() { public Integer getMinHeartRate() {
return (Integer) getFieldByNumber(64); return (Integer) getFieldByNumber(64);
} }
@Nullable
public Double getTimeInHrZone() {
return (Double) getFieldByNumber(65);
}
@Nullable
public Double getTimeInSpeedZone() {
return (Double) getFieldByNumber(66);
}
@Nullable
public Double getTimeInCadenceZone() {
return (Double) getFieldByNumber(67);
}
@Nullable
public Double getTimeInPowerZone() {
return (Double) getFieldByNumber(68);
}
@Nullable
public Double getAvgLapTime() {
return (Double) getFieldByNumber(69);
}
@Nullable
public Integer getBestLapIndex() {
return (Integer) getFieldByNumber(70);
}
@Nullable
public Float getMinAltitude() {
return (Float) getFieldByNumber(71);
}
@Nullable @Nullable
public Float getAvgSwimCadence() { public Float getAvgSwimCadence() {
return (Float) getFieldByNumber(79); return (Float) getFieldByNumber(79);
@@ -248,6 +398,41 @@ public class FitSession extends RecordData {
return (Integer) getFieldByNumber(80); return (Integer) getFieldByNumber(80);
} }
@Nullable
public Integer getPlayerScore() {
return (Integer) getFieldByNumber(82);
}
@Nullable
public Integer getOpponentScore() {
return (Integer) getFieldByNumber(83);
}
@Nullable
public String getOpponentName() {
return (String) getFieldByNumber(84);
}
@Nullable
public Integer getStrokeCount() {
return (Integer) getFieldByNumber(85);
}
@Nullable
public Integer getZoneCount() {
return (Integer) getFieldByNumber(86);
}
@Nullable
public Float getMaxBallSpeed() {
return (Float) getFieldByNumber(87);
}
@Nullable
public Float getAvgBallSpeed() {
return (Float) getFieldByNumber(88);
}
@Nullable @Nullable
public Float getAvgVerticalOscillation() { public Float getAvgVerticalOscillation() {
return (Float) getFieldByNumber(89); return (Float) getFieldByNumber(89);
@@ -273,6 +458,11 @@ public class FitSession extends RecordData {
return (Float) getFieldByNumber(93); return (Float) getFieldByNumber(93);
} }
@Nullable
public Float getTotalFractionalCycles() {
return (Float) getFieldByNumber(94);
}
@Nullable @Nullable
public Float getAvgLeftTorqueEffectiveness() { public Float getAvgLeftTorqueEffectiveness() {
return (Float) getFieldByNumber(101); return (Float) getFieldByNumber(101);
@@ -293,6 +483,11 @@ public class FitSession extends RecordData {
return (Float) getFieldByNumber(104); return (Float) getFieldByNumber(104);
} }
@Nullable
public Float getAvgCombinedPedalSmoothness() {
return (Float) getFieldByNumber(105);
}
@Nullable @Nullable
public Integer getFrontShifts() { public Integer getFrontShifts() {
return (Integer) getFieldByNumber(107); return (Integer) getFieldByNumber(107);
@@ -308,6 +503,11 @@ public class FitSession extends RecordData {
return (String) getFieldByNumber(110); return (String) getFieldByNumber(110);
} }
@Nullable
public Integer getSportIndex() {
return (Integer) getFieldByNumber(111);
}
@Nullable @Nullable
public Long getStandTime() { public Long getStandTime() {
return (Long) getFieldByNumber(112); return (Long) getFieldByNumber(112);
@@ -454,6 +654,71 @@ public class FitSession extends RecordData {
return (Float) getFieldByNumber(137); return (Float) getFieldByNumber(137);
} }
@Nullable
public Double getAvgDepth() {
return (Double) getFieldByNumber(140);
}
@Nullable
public Double getMaxDepth() {
return (Double) getFieldByNumber(141);
}
@Nullable
public Long getSurfaceInterval() {
return (Long) getFieldByNumber(142);
}
@Nullable
public Integer getStartCns() {
return (Integer) getFieldByNumber(143);
}
@Nullable
public Integer getEndCns() {
return (Integer) getFieldByNumber(144);
}
@Nullable
public Integer getStartN2() {
return (Integer) getFieldByNumber(145);
}
@Nullable
public Integer getEndN2() {
return (Integer) getFieldByNumber(146);
}
@Nullable
public Integer getAvgRespirationRate() {
return (Integer) getFieldByNumber(147);
}
@Nullable
public Integer getMaxRespirationRate() {
return (Integer) getFieldByNumber(148);
}
@Nullable
public Integer getMinRespirationRate() {
return (Integer) getFieldByNumber(149);
}
@Nullable
public Integer getMinTemperature() {
return (Integer) getFieldByNumber(150);
}
@Nullable
public Integer getO2Toxicity() {
return (Integer) getFieldByNumber(155);
}
@Nullable
public Long getDiveNumber() {
return (Long) getFieldByNumber(156);
}
@Nullable @Nullable
public Double getTrainingLoadPeak() { public Double getTrainingLoadPeak() {
return (Double) getFieldByNumber(168); return (Double) getFieldByNumber(168);
@@ -479,11 +744,46 @@ public class FitSession extends RecordData {
return (Float) getFieldByNumber(180); return (Float) getFieldByNumber(180);
} }
@Nullable
public Float getTotalGrit() {
return (Float) getFieldByNumber(181);
}
@Nullable
public Float getTotalFlow() {
return (Float) getFieldByNumber(182);
}
@Nullable
public Integer getJumpCount() {
return (Integer) getFieldByNumber(183);
}
@Nullable
public Float getAvgGrit() {
return (Float) getFieldByNumber(186);
}
@Nullable
public Float getAvgFlow() {
return (Float) getFieldByNumber(187);
}
@Nullable @Nullable
public Integer getPrimaryBenefit() { public Integer getPrimaryBenefit() {
return (Integer) getFieldByNumber(188); return (Integer) getFieldByNumber(188);
} }
@Nullable
public Integer getWorkoutFeel() {
return (Integer) getFieldByNumber(192);
}
@Nullable
public Integer getWorkoutRpe() {
return (Integer) getFieldByNumber(193);
}
@Nullable @Nullable
public Integer getAvgSpo2() { public Integer getAvgSpo2() {
return (Integer) getFieldByNumber(194); return (Integer) getFieldByNumber(194);
@@ -509,6 +809,16 @@ public class FitSession extends RecordData {
return (Integer) getFieldByNumber(198); return (Integer) getFieldByNumber(198);
} }
@Nullable
public Float getTotalFractionalAscent() {
return (Float) getFieldByNumber(199);
}
@Nullable
public Float getTotalFractionalDescent() {
return (Float) getFieldByNumber(200);
}
@Nullable @Nullable
public Integer getBeginningPotential() { public Integer getBeginningPotential() {
return (Integer) getFieldByNumber(205); return (Integer) getFieldByNumber(205);
@@ -524,6 +834,21 @@ public class FitSession extends RecordData {
return (Integer) getFieldByNumber(207); return (Integer) getFieldByNumber(207);
} }
@Nullable
public Float getAvgCoreTemperature() {
return (Float) getFieldByNumber(208);
}
@Nullable
public Float getMinCoreTemperature() {
return (Float) getFieldByNumber(209);
}
@Nullable
public Float getMaxCoreTemperature() {
return (Float) getFieldByNumber(210);
}
@Nullable @Nullable
public Float getStepSpeedLoss() { public Float getStepSpeedLoss() {
return (Float) getFieldByNumber(222); return (Float) getFieldByNumber(222);
@@ -539,6 +864,11 @@ public class FitSession extends RecordData {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
} }
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -607,6 +937,21 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setTotalFatCalories(final Integer value) {
setFieldByNumber(13, value);
return this;
}
public Builder setAvgSpeed(final Float value) {
setFieldByNumber(14, value);
return this;
}
public Builder setMaxSpeed(final Float value) {
setFieldByNumber(15, value);
return this;
}
public Builder setAverageHeartRate(final Integer value) { public Builder setAverageHeartRate(final Integer value) {
setFieldByNumber(16, value); setFieldByNumber(16, value);
return this; return this;
@@ -662,6 +1007,11 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setEventGroup(final Integer value) {
setFieldByNumber(27, value);
return this;
}
public Builder setTrigger(final Integer value) { public Builder setTrigger(final Integer value) {
setFieldByNumber(28, value); setFieldByNumber(28, value);
return this; return this;
@@ -722,6 +1072,21 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setAvgStrokeCount(final Long value) {
setFieldByNumber(41, value);
return this;
}
public Builder setAvgStrokeDistance(final Float value) {
setFieldByNumber(42, value);
return this;
}
public Builder setSwimStroke(final Integer value) {
setFieldByNumber(43, value);
return this;
}
public Builder setPoolLength(final Float value) { public Builder setPoolLength(final Float value) {
setFieldByNumber(44, value); setFieldByNumber(44, value);
return this; return this;
@@ -732,6 +1097,11 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setPoolLengthUnit(final Integer value) {
setFieldByNumber(46, value);
return this;
}
public Builder setNumActiveLengths(final Integer value) { public Builder setNumActiveLengths(final Integer value) {
setFieldByNumber(47, value); setFieldByNumber(47, value);
return this; return this;
@@ -742,11 +1112,121 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setAvgAltitude(final Double value) {
setFieldByNumber(49, value);
return this;
}
public Builder setMaxAltitude(final Double value) {
setFieldByNumber(50, value);
return this;
}
public Builder setGpsAccuracy(final Integer value) {
setFieldByNumber(51, value);
return this;
}
public Builder setAvgGrade(final Float value) {
setFieldByNumber(52, value);
return this;
}
public Builder setAvgPosGrade(final Float value) {
setFieldByNumber(53, value);
return this;
}
public Builder setAvgNegGrade(final Float value) {
setFieldByNumber(54, value);
return this;
}
public Builder setMaxPosGrade(final Float value) {
setFieldByNumber(55, value);
return this;
}
public Builder setMaxNegGrade(final Float value) {
setFieldByNumber(56, value);
return this;
}
public Builder setAvgTemperature(final Integer value) {
setFieldByNumber(57, value);
return this;
}
public Builder setMaxTemperature(final Integer value) {
setFieldByNumber(58, value);
return this;
}
public Builder setTotalMovingTime(final Double value) {
setFieldByNumber(59, value);
return this;
}
public Builder setAvgPosVerticalSpeed(final Float value) {
setFieldByNumber(60, value);
return this;
}
public Builder setAvgNegVerticalSpeed(final Float value) {
setFieldByNumber(61, value);
return this;
}
public Builder setMaxPosVerticalSpeed(final Float value) {
setFieldByNumber(62, value);
return this;
}
public Builder setMaxNegVerticalSpeed(final Float value) {
setFieldByNumber(63, value);
return this;
}
public Builder setMinHeartRate(final Integer value) { public Builder setMinHeartRate(final Integer value) {
setFieldByNumber(64, value); setFieldByNumber(64, value);
return this; return this;
} }
public Builder setTimeInHrZone(final Double value) {
setFieldByNumber(65, value);
return this;
}
public Builder setTimeInSpeedZone(final Double value) {
setFieldByNumber(66, value);
return this;
}
public Builder setTimeInCadenceZone(final Double value) {
setFieldByNumber(67, value);
return this;
}
public Builder setTimeInPowerZone(final Double value) {
setFieldByNumber(68, value);
return this;
}
public Builder setAvgLapTime(final Double value) {
setFieldByNumber(69, value);
return this;
}
public Builder setBestLapIndex(final Integer value) {
setFieldByNumber(70, value);
return this;
}
public Builder setMinAltitude(final Float value) {
setFieldByNumber(71, value);
return this;
}
public Builder setAvgSwimCadence(final Float value) { public Builder setAvgSwimCadence(final Float value) {
setFieldByNumber(79, value); setFieldByNumber(79, value);
return this; return this;
@@ -757,6 +1237,41 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setPlayerScore(final Integer value) {
setFieldByNumber(82, value);
return this;
}
public Builder setOpponentScore(final Integer value) {
setFieldByNumber(83, value);
return this;
}
public Builder setOpponentName(final String value) {
setFieldByNumber(84, value);
return this;
}
public Builder setStrokeCount(final Integer value) {
setFieldByNumber(85, value);
return this;
}
public Builder setZoneCount(final Integer value) {
setFieldByNumber(86, value);
return this;
}
public Builder setMaxBallSpeed(final Float value) {
setFieldByNumber(87, value);
return this;
}
public Builder setAvgBallSpeed(final Float value) {
setFieldByNumber(88, value);
return this;
}
public Builder setAvgVerticalOscillation(final Float value) { public Builder setAvgVerticalOscillation(final Float value) {
setFieldByNumber(89, value); setFieldByNumber(89, value);
return this; return this;
@@ -782,6 +1297,11 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setTotalFractionalCycles(final Float value) {
setFieldByNumber(94, value);
return this;
}
public Builder setAvgLeftTorqueEffectiveness(final Float value) { public Builder setAvgLeftTorqueEffectiveness(final Float value) {
setFieldByNumber(101, value); setFieldByNumber(101, value);
return this; return this;
@@ -802,6 +1322,11 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setAvgCombinedPedalSmoothness(final Float value) {
setFieldByNumber(105, value);
return this;
}
public Builder setFrontShifts(final Integer value) { public Builder setFrontShifts(final Integer value) {
setFieldByNumber(107, value); setFieldByNumber(107, value);
return this; return this;
@@ -817,6 +1342,11 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setSportIndex(final Integer value) {
setFieldByNumber(111, value);
return this;
}
public Builder setStandTime(final Long value) { public Builder setStandTime(final Long value) {
setFieldByNumber(112, value); setFieldByNumber(112, value);
return this; return this;
@@ -907,6 +1437,71 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setAvgDepth(final Double value) {
setFieldByNumber(140, value);
return this;
}
public Builder setMaxDepth(final Double value) {
setFieldByNumber(141, value);
return this;
}
public Builder setSurfaceInterval(final Long value) {
setFieldByNumber(142, value);
return this;
}
public Builder setStartCns(final Integer value) {
setFieldByNumber(143, value);
return this;
}
public Builder setEndCns(final Integer value) {
setFieldByNumber(144, value);
return this;
}
public Builder setStartN2(final Integer value) {
setFieldByNumber(145, value);
return this;
}
public Builder setEndN2(final Integer value) {
setFieldByNumber(146, value);
return this;
}
public Builder setAvgRespirationRate(final Integer value) {
setFieldByNumber(147, value);
return this;
}
public Builder setMaxRespirationRate(final Integer value) {
setFieldByNumber(148, value);
return this;
}
public Builder setMinRespirationRate(final Integer value) {
setFieldByNumber(149, value);
return this;
}
public Builder setMinTemperature(final Integer value) {
setFieldByNumber(150, value);
return this;
}
public Builder setO2Toxicity(final Integer value) {
setFieldByNumber(155, value);
return this;
}
public Builder setDiveNumber(final Long value) {
setFieldByNumber(156, value);
return this;
}
public Builder setTrainingLoadPeak(final Double value) { public Builder setTrainingLoadPeak(final Double value) {
setFieldByNumber(168, value); setFieldByNumber(168, value);
return this; return this;
@@ -932,11 +1527,46 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setTotalGrit(final Float value) {
setFieldByNumber(181, value);
return this;
}
public Builder setTotalFlow(final Float value) {
setFieldByNumber(182, value);
return this;
}
public Builder setJumpCount(final Integer value) {
setFieldByNumber(183, value);
return this;
}
public Builder setAvgGrit(final Float value) {
setFieldByNumber(186, value);
return this;
}
public Builder setAvgFlow(final Float value) {
setFieldByNumber(187, value);
return this;
}
public Builder setPrimaryBenefit(final Integer value) { public Builder setPrimaryBenefit(final Integer value) {
setFieldByNumber(188, value); setFieldByNumber(188, value);
return this; return this;
} }
public Builder setWorkoutFeel(final Integer value) {
setFieldByNumber(192, value);
return this;
}
public Builder setWorkoutRpe(final Integer value) {
setFieldByNumber(193, value);
return this;
}
public Builder setAvgSpo2(final Integer value) { public Builder setAvgSpo2(final Integer value) {
setFieldByNumber(194, value); setFieldByNumber(194, value);
return this; return this;
@@ -962,6 +1592,16 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setTotalFractionalAscent(final Float value) {
setFieldByNumber(199, value);
return this;
}
public Builder setTotalFractionalDescent(final Float value) {
setFieldByNumber(200, value);
return this;
}
public Builder setBeginningPotential(final Integer value) { public Builder setBeginningPotential(final Integer value) {
setFieldByNumber(205, value); setFieldByNumber(205, value);
return this; return this;
@@ -977,6 +1617,21 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setAvgCoreTemperature(final Float value) {
setFieldByNumber(208, value);
return this;
}
public Builder setMinCoreTemperature(final Float value) {
setFieldByNumber(209, value);
return this;
}
public Builder setMaxCoreTemperature(final Float value) {
setFieldByNumber(210, value);
return this;
}
public Builder setStepSpeedLoss(final Float value) { public Builder setStepSpeedLoss(final Float value) {
setFieldByNumber(222, value); setFieldByNumber(222, value);
return this; return this;
@@ -992,6 +1647,11 @@ public class FitSession extends RecordData {
return this; return this;
} }
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override @Override
public FitSession build() { public FitSession build() {
return (FitSession) super.build(); return (FitSession) super.build();
@@ -58,6 +58,11 @@ public class FitSkinTempOvernight extends RecordData {
return (Integer) getFieldByNumber(3); return (Integer) getFieldByNumber(3);
} }
@Nullable
public Float getNightlyValue() {
return (Float) getFieldByNumber(4);
}
@Nullable @Nullable
public Long getTimestamp() { public Long getTimestamp() {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
@@ -91,6 +96,11 @@ public class FitSkinTempOvernight extends RecordData {
return this; return this;
} }
public Builder setNightlyValue(final Float value) {
setFieldByNumber(4, value);
return this;
}
public Builder setTimestamp(final Long value) { public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value); setFieldByNumber(253, value);
return this; return this;
@@ -0,0 +1,74 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSlaveDevice extends RecordData {
public FitSlaveDevice(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 106) {
throw new IllegalArgumentException("FitSlaveDevice expects global messages of " + 106 + ", got " + globalNumber);
}
}
@Nullable
public Integer getManufacturer() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getProduct() {
return (Integer) getFieldByNumber(1);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(106);
}
public Builder setManufacturer(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setProduct(final Integer value) {
setFieldByNumber(1, value);
return this;
}
@Override
public FitSlaveDevice build() {
return (FitSlaveDevice) super.build();
}
}
}
@@ -0,0 +1,84 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSoftware extends RecordData {
public FitSoftware(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 35) {
throw new IllegalArgumentException("FitSoftware expects global messages of " + 35 + ", got " + globalNumber);
}
}
@Nullable
public Float getVersion() {
return (Float) getFieldByNumber(3);
}
@Nullable
public String getPartNumber() {
return (String) getFieldByNumber(5);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(35);
}
public Builder setVersion(final Float value) {
setFieldByNumber(3, value);
return this;
}
public Builder setPartNumber(final String value) {
setFieldByNumber(5, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitSoftware build() {
return (FitSoftware) super.build();
}
}
}
@@ -0,0 +1,84 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSpeedZone extends RecordData {
public FitSpeedZone(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 53) {
throw new IllegalArgumentException("FitSpeedZone expects global messages of " + 53 + ", got " + globalNumber);
}
}
@Nullable
public Float getHighValue() {
return (Float) getFieldByNumber(0);
}
@Nullable
public String getName() {
return (String) getFieldByNumber(1);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(53);
}
public Builder setHighValue(final Float value) {
setFieldByNumber(0, value);
return this;
}
public Builder setName(final String value) {
setFieldByNumber(1, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitSpeedZone build() {
return (FitSpeedZone) super.build();
}
}
}
@@ -0,0 +1,244 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitSplit extends RecordData {
public FitSplit(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 312) {
throw new IllegalArgumentException("FitSplit expects global messages of " + 312 + ", got " + globalNumber);
}
}
@Nullable
public Integer getSplitType() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Double getTotalElapsedTime() {
return (Double) getFieldByNumber(1);
}
@Nullable
public Double getTotalTimerTime() {
return (Double) getFieldByNumber(2);
}
@Nullable
public Double getTotalDistance() {
return (Double) getFieldByNumber(3);
}
@Nullable
public Double getAvgSpeed() {
return (Double) getFieldByNumber(4);
}
@Nullable
public Long getStartTime() {
return (Long) getFieldByNumber(9);
}
@Nullable
public Integer getTotalAscent() {
return (Integer) getFieldByNumber(13);
}
@Nullable
public Integer getTotalDescent() {
return (Integer) getFieldByNumber(14);
}
@Nullable
public Long getStartPositionLat() {
return (Long) getFieldByNumber(21);
}
@Nullable
public Long getStartPositionLong() {
return (Long) getFieldByNumber(22);
}
@Nullable
public Long getEndPositionLat() {
return (Long) getFieldByNumber(23);
}
@Nullable
public Long getEndPositionLong() {
return (Long) getFieldByNumber(24);
}
@Nullable
public Double getMaxSpeed() {
return (Double) getFieldByNumber(25);
}
@Nullable
public Double getAvgVertSpeed() {
return (Double) getFieldByNumber(26);
}
@Nullable
public Long getEndTime() {
return (Long) getFieldByNumber(27);
}
@Nullable
public Long getTotalCalories() {
return (Long) getFieldByNumber(28);
}
@Nullable
public Double getStartElevation() {
return (Double) getFieldByNumber(74);
}
@Nullable
public Double getTotalMovingTime() {
return (Double) getFieldByNumber(101);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(312);
}
public Builder setSplitType(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setTotalElapsedTime(final Double value) {
setFieldByNumber(1, value);
return this;
}
public Builder setTotalTimerTime(final Double value) {
setFieldByNumber(2, value);
return this;
}
public Builder setTotalDistance(final Double value) {
setFieldByNumber(3, value);
return this;
}
public Builder setAvgSpeed(final Double value) {
setFieldByNumber(4, value);
return this;
}
public Builder setStartTime(final Long value) {
setFieldByNumber(9, value);
return this;
}
public Builder setTotalAscent(final Integer value) {
setFieldByNumber(13, value);
return this;
}
public Builder setTotalDescent(final Integer value) {
setFieldByNumber(14, value);
return this;
}
public Builder setStartPositionLat(final Long value) {
setFieldByNumber(21, value);
return this;
}
public Builder setStartPositionLong(final Long value) {
setFieldByNumber(22, value);
return this;
}
public Builder setEndPositionLat(final Long value) {
setFieldByNumber(23, value);
return this;
}
public Builder setEndPositionLong(final Long value) {
setFieldByNumber(24, value);
return this;
}
public Builder setMaxSpeed(final Double value) {
setFieldByNumber(25, value);
return this;
}
public Builder setAvgVertSpeed(final Double value) {
setFieldByNumber(26, value);
return this;
}
public Builder setEndTime(final Long value) {
setFieldByNumber(27, value);
return this;
}
public Builder setTotalCalories(final Long value) {
setFieldByNumber(28, value);
return this;
}
public Builder setStartElevation(final Double value) {
setFieldByNumber(74, value);
return this;
}
public Builder setTotalMovingTime(final Double value) {
setFieldByNumber(101, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitSplit build() {
return (FitSplit) super.build();
}
}
}
@@ -0,0 +1,104 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitTankSummary extends RecordData {
public FitTankSummary(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 323) {
throw new IllegalArgumentException("FitTankSummary expects global messages of " + 323 + ", got " + globalNumber);
}
}
@Nullable
public Long getSensor() {
return (Long) getFieldByNumber(0);
}
@Nullable
public Float getStartPressure() {
return (Float) getFieldByNumber(1);
}
@Nullable
public Float getEndPressure() {
return (Float) getFieldByNumber(2);
}
@Nullable
public Double getVolumeUsed() {
return (Double) getFieldByNumber(3);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(323);
}
public Builder setSensor(final Long value) {
setFieldByNumber(0, value);
return this;
}
public Builder setStartPressure(final Float value) {
setFieldByNumber(1, value);
return this;
}
public Builder setEndPressure(final Float value) {
setFieldByNumber(2, value);
return this;
}
public Builder setVolumeUsed(final Double value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitTankSummary build() {
return (FitTankSummary) super.build();
}
}
}
@@ -0,0 +1,84 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitTankUpdate extends RecordData {
public FitTankUpdate(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 319) {
throw new IllegalArgumentException("FitTankUpdate expects global messages of " + 319 + ", got " + globalNumber);
}
}
@Nullable
public Long getSensor() {
return (Long) getFieldByNumber(0);
}
@Nullable
public Float getPressure() {
return (Float) getFieldByNumber(1);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(319);
}
public Builder setSensor(final Long value) {
setFieldByNumber(0, value);
return this;
}
public Builder setPressure(final Float value) {
setFieldByNumber(1, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitTankUpdate build() {
return (FitTankUpdate) super.build();
}
}
}
@@ -60,6 +60,21 @@ public class FitTimeInZone extends RecordData {
return ret; return ret;
} }
@Nullable
public Double getTimeInSpeedZone() {
return (Double) getFieldByNumber(3);
}
@Nullable
public Double getTimeInCadenceZone() {
return (Double) getFieldByNumber(4);
}
@Nullable
public Double getTimeInPowerZone() {
return (Double) getFieldByNumber(5);
}
@Nullable @Nullable
public Integer[] getHrZoneHighBoundary() { public Integer[] getHrZoneHighBoundary() {
final Object[] objectsArray = (Object[]) getFieldByNumber(6); final Object[] objectsArray = (Object[]) getFieldByNumber(6);
@@ -72,6 +87,21 @@ public class FitTimeInZone extends RecordData {
return ret; return ret;
} }
@Nullable
public Float getSpeedZoneHighBoundary() {
return (Float) getFieldByNumber(7);
}
@Nullable
public Integer getCadenceZoneHighBoundary() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Integer getPowerZoneHighBoundary() {
return (Integer) getFieldByNumber(9);
}
@Nullable @Nullable
public Integer getHrCalcType() { public Integer getHrCalcType() {
return (Integer) getFieldByNumber(10); return (Integer) getFieldByNumber(10);
@@ -92,6 +122,16 @@ public class FitTimeInZone extends RecordData {
return (Integer) getFieldByNumber(13); return (Integer) getFieldByNumber(13);
} }
@Nullable
public Integer getPwrCalcType() {
return (Integer) getFieldByNumber(14);
}
@Nullable
public Integer getFunctionalThresholdPower() {
return (Integer) getFieldByNumber(15);
}
@Nullable @Nullable
public Long getTimestamp() { public Long getTimestamp() {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
@@ -120,11 +160,41 @@ public class FitTimeInZone extends RecordData {
return this; return this;
} }
public Builder setTimeInSpeedZone(final Double value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTimeInCadenceZone(final Double value) {
setFieldByNumber(4, value);
return this;
}
public Builder setTimeInPowerZone(final Double value) {
setFieldByNumber(5, value);
return this;
}
public Builder setHrZoneHighBoundary(final Integer[] value) { public Builder setHrZoneHighBoundary(final Integer[] value) {
setFieldByNumber(6, (Object[]) value); setFieldByNumber(6, (Object[]) value);
return this; return this;
} }
public Builder setSpeedZoneHighBoundary(final Float value) {
setFieldByNumber(7, value);
return this;
}
public Builder setCadenceZoneHighBoundary(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setPowerZoneHighBoundary(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setHrCalcType(final Integer value) { public Builder setHrCalcType(final Integer value) {
setFieldByNumber(10, value); setFieldByNumber(10, value);
return this; return this;
@@ -145,6 +215,16 @@ public class FitTimeInZone extends RecordData {
return this; return this;
} }
public Builder setPwrCalcType(final Integer value) {
setFieldByNumber(14, value);
return this;
}
public Builder setFunctionalThresholdPower(final Integer value) {
setFieldByNumber(15, value);
return this;
}
public Builder setTimestamp(final Long value) { public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value); setFieldByNumber(253, value);
return this; return this;
@@ -38,11 +38,36 @@ public class FitTimestampCorrelation extends RecordData {
} }
} }
@Nullable
public Float getFractionalTimestamp() {
return (Float) getFieldByNumber(0);
}
@Nullable
public Long getSystemTimestamp() {
return (Long) getFieldByNumber(1);
}
@Nullable
public Float getFractionalSystemTimestamp() {
return (Float) getFieldByNumber(2);
}
@Nullable @Nullable
public Long getLocalTimestamp() { public Long getLocalTimestamp() {
return (Long) getFieldByNumber(3); return (Long) getFieldByNumber(3);
} }
@Nullable
public Integer getTimestampMs() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Integer getSystemTimestampMs() {
return (Integer) getFieldByNumber(5);
}
@Nullable @Nullable
public Long getTimestamp() { public Long getTimestamp() {
return (Long) getFieldByNumber(253); return (Long) getFieldByNumber(253);
@@ -56,11 +81,36 @@ public class FitTimestampCorrelation extends RecordData {
super(162); super(162);
} }
public Builder setFractionalTimestamp(final Float value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSystemTimestamp(final Long value) {
setFieldByNumber(1, value);
return this;
}
public Builder setFractionalSystemTimestamp(final Float value) {
setFieldByNumber(2, value);
return this;
}
public Builder setLocalTimestamp(final Long value) { public Builder setLocalTimestamp(final Long value) {
setFieldByNumber(3, value); setFieldByNumber(3, value);
return this; return this;
} }
public Builder setTimestampMs(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setSystemTimestampMs(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setTimestamp(final Long value) { public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value); setFieldByNumber(253, value);
return this; return this;
@@ -0,0 +1,154 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitTotals extends RecordData {
public FitTotals(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 33) {
throw new IllegalArgumentException("FitTotals expects global messages of " + 33 + ", got " + globalNumber);
}
}
@Nullable
public Long getTimerTime() {
return (Long) getFieldByNumber(0);
}
@Nullable
public Long getDistance() {
return (Long) getFieldByNumber(1);
}
@Nullable
public Long getCalories() {
return (Long) getFieldByNumber(2);
}
@Nullable
public Integer getSport() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Long getElapsedTime() {
return (Long) getFieldByNumber(4);
}
@Nullable
public Integer getSessions() {
return (Integer) getFieldByNumber(5);
}
@Nullable
public Long getActiveTime() {
return (Long) getFieldByNumber(6);
}
@Nullable
public Integer getSportIndex() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(33);
}
public Builder setTimerTime(final Long value) {
setFieldByNumber(0, value);
return this;
}
public Builder setDistance(final Long value) {
setFieldByNumber(1, value);
return this;
}
public Builder setCalories(final Long value) {
setFieldByNumber(2, value);
return this;
}
public Builder setSport(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setElapsedTime(final Long value) {
setFieldByNumber(4, value);
return this;
}
public Builder setSessions(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setActiveTime(final Long value) {
setFieldByNumber(6, value);
return this;
}
public Builder setSportIndex(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitTotals build() {
return (FitTotals) super.build();
}
}
}
@@ -0,0 +1,114 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitTrainingFile extends RecordData {
public FitTrainingFile(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 72) {
throw new IllegalArgumentException("FitTrainingFile expects global messages of " + 72 + ", got " + globalNumber);
}
}
@Nullable
public Integer getType() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getManufacturer() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getProduct() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Long getSerialNumber() {
return (Long) getFieldByNumber(3);
}
@Nullable
public Long getTimeCreated() {
return (Long) getFieldByNumber(4);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(72);
}
public Builder setType(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setManufacturer(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setProduct(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setSerialNumber(final Long value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTimeCreated(final Long value) {
setFieldByNumber(4, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitTrainingFile build() {
return (FitTrainingFile) super.build();
}
}
}
@@ -0,0 +1,94 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitTrainingSettings extends RecordData {
public FitTrainingSettings(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 13) {
throw new IllegalArgumentException("FitTrainingSettings expects global messages of " + 13 + ", got " + globalNumber);
}
}
@Nullable
public Double getTargetDistance() {
return (Double) getFieldByNumber(31);
}
@Nullable
public Float getTargetSpeed() {
return (Float) getFieldByNumber(32);
}
@Nullable
public Long getTargetTime() {
return (Long) getFieldByNumber(33);
}
@Nullable
public Double getPreciseTargetSpeed() {
return (Double) getFieldByNumber(153);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(13);
}
public Builder setTargetDistance(final Double value) {
setFieldByNumber(31, value);
return this;
}
public Builder setTargetSpeed(final Float value) {
setFieldByNumber(32, value);
return this;
}
public Builder setTargetTime(final Long value) {
setFieldByNumber(33, value);
return this;
}
public Builder setPreciseTargetSpeed(final Double value) {
setFieldByNumber(153, value);
return this;
}
@Override
public FitTrainingSettings build() {
return (FitTrainingSettings) super.build();
}
}
}
@@ -0,0 +1,184 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitUserMetrics extends RecordData {
public FitUserMetrics(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 79) {
throw new IllegalArgumentException("FitUserMetrics expects global messages of " + 79 + ", got " + globalNumber);
}
}
@Nullable
public Integer getVo2Max() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getAge() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Float getHeight() {
return (Float) getFieldByNumber(2);
}
@Nullable
public Float getWeight() {
return (Float) getFieldByNumber(3);
}
@Nullable
public Integer getGender() {
return (Integer) getFieldByNumber(4);
}
@Nullable
public Integer getMaxHr() {
return (Integer) getFieldByNumber(6);
}
@Nullable
public Integer getRemainingRecoveryTime() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Integer getInitialBodyBattery() {
return (Integer) getFieldByNumber(15);
}
@Nullable
public Long getStartOfActivity() {
return (Long) getFieldByNumber(16);
}
@Nullable
public Integer getBeginningPotential() {
return (Integer) getFieldByNumber(32);
}
@Nullable
public Long getEndOfPreviousActivity() {
return (Long) getFieldByNumber(35);
}
@Nullable
public Long getWakeUpTime() {
return (Long) getFieldByNumber(39);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(79);
}
public Builder setVo2Max(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setAge(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setHeight(final Float value) {
setFieldByNumber(2, value);
return this;
}
public Builder setWeight(final Float value) {
setFieldByNumber(3, value);
return this;
}
public Builder setGender(final Integer value) {
setFieldByNumber(4, value);
return this;
}
public Builder setMaxHr(final Integer value) {
setFieldByNumber(6, value);
return this;
}
public Builder setRemainingRecoveryTime(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setInitialBodyBattery(final Integer value) {
setFieldByNumber(15, value);
return this;
}
public Builder setStartOfActivity(final Long value) {
setFieldByNumber(16, value);
return this;
}
public Builder setBeginningPotential(final Integer value) {
setFieldByNumber(32, value);
return this;
}
public Builder setEndOfPreviousActivity(final Long value) {
setFieldByNumber(35, value);
return this;
}
public Builder setWakeUpTime(final Long value) {
setFieldByNumber(39, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitUserMetrics build() {
return (FitUserMetrics) super.build();
}
}
}
@@ -85,6 +85,11 @@ public class FitUserProfile extends RecordData {
return (Integer) getFieldByNumber(8); return (Integer) getFieldByNumber(8);
} }
@Nullable
public Integer getDefaultMaxRunningHeartRate() {
return (Integer) getFieldByNumber(9);
}
@Nullable @Nullable
public Integer getDefaultMaxBikingHeartRate() { public Integer getDefaultMaxBikingHeartRate() {
return (Integer) getFieldByNumber(10); return (Integer) getFieldByNumber(10);
@@ -130,6 +135,21 @@ public class FitUserProfile extends RecordData {
return (Type) getFieldByNumber(21); return (Type) getFieldByNumber(21);
} }
@Nullable
public Integer getLocalId() {
return (Integer) getFieldByNumber(22);
}
@Nullable
public Integer getGlobalId() {
return (Integer) getFieldByNumber(23);
}
@Nullable
public Integer getYearOfBirth() {
return (Integer) getFieldByNumber(24);
}
@Nullable @Nullable
public Long getWakeTime() { public Long getWakeTime() {
return (Long) getFieldByNumber(28); return (Long) getFieldByNumber(28);
@@ -155,6 +175,21 @@ public class FitUserProfile extends RecordData {
return (Integer) getFieldByNumber(32); return (Integer) getFieldByNumber(32);
} }
@Nullable
public Type getDepthSetting() {
return (Type) getFieldByNumber(47);
}
@Nullable
public Long getDiveCount() {
return (Long) getFieldByNumber(49);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -208,6 +243,11 @@ public class FitUserProfile extends RecordData {
return this; return this;
} }
public Builder setDefaultMaxRunningHeartRate(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setDefaultMaxBikingHeartRate(final Integer value) { public Builder setDefaultMaxBikingHeartRate(final Integer value) {
setFieldByNumber(10, value); setFieldByNumber(10, value);
return this; return this;
@@ -253,6 +293,21 @@ public class FitUserProfile extends RecordData {
return this; return this;
} }
public Builder setLocalId(final Integer value) {
setFieldByNumber(22, value);
return this;
}
public Builder setGlobalId(final Integer value) {
setFieldByNumber(23, value);
return this;
}
public Builder setYearOfBirth(final Integer value) {
setFieldByNumber(24, value);
return this;
}
public Builder setWakeTime(final Long value) { public Builder setWakeTime(final Long value) {
setFieldByNumber(28, value); setFieldByNumber(28, value);
return this; return this;
@@ -278,6 +333,21 @@ public class FitUserProfile extends RecordData {
return this; return this;
} }
public Builder setDepthSetting(final Type value) {
setFieldByNumber(47, value);
return this;
}
public Builder setDiveCount(final Long value) {
setFieldByNumber(49, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override @Override
public FitUserProfile build() { public FitUserProfile build() {
return (FitUserProfile) super.build(); return (FitUserProfile) super.build();
@@ -48,6 +48,11 @@ public class FitWatchfaceSettings extends RecordData {
return (Integer) getFieldByNumber(1); return (Integer) getFieldByNumber(1);
} }
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/** /**
* @noinspection unused * @noinspection unused
*/ */
@@ -66,6 +71,11 @@ public class FitWatchfaceSettings extends RecordData {
return this; return this;
} }
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override @Override
public FitWatchfaceSettings build() { public FitWatchfaceSettings build() {
return (FitWatchfaceSettings) super.build(); return (FitWatchfaceSettings) super.build();
@@ -0,0 +1,194 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitWeightScale extends RecordData {
public FitWeightScale(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 30) {
throw new IllegalArgumentException("FitWeightScale expects global messages of " + 30 + ", got " + globalNumber);
}
}
@Nullable
public Float getWeight() {
return (Float) getFieldByNumber(0);
}
@Nullable
public Float getPercentFat() {
return (Float) getFieldByNumber(1);
}
@Nullable
public Float getPercentHydration() {
return (Float) getFieldByNumber(2);
}
@Nullable
public Float getVisceralFatMass() {
return (Float) getFieldByNumber(3);
}
@Nullable
public Float getBoneMass() {
return (Float) getFieldByNumber(4);
}
@Nullable
public Float getMuscleMass() {
return (Float) getFieldByNumber(5);
}
@Nullable
public Float getBasalMet() {
return (Float) getFieldByNumber(7);
}
@Nullable
public Integer getPhysiqueRating() {
return (Integer) getFieldByNumber(8);
}
@Nullable
public Float getActiveMet() {
return (Float) getFieldByNumber(9);
}
@Nullable
public Integer getMetabolicAge() {
return (Integer) getFieldByNumber(10);
}
@Nullable
public Integer getVisceralFatRating() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Integer getUserProfileIndex() {
return (Integer) getFieldByNumber(12);
}
@Nullable
public Float getBmi() {
return (Float) getFieldByNumber(13);
}
@Nullable
public Long getTimestamp() {
return (Long) getFieldByNumber(253);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(30);
}
public Builder setWeight(final Float value) {
setFieldByNumber(0, value);
return this;
}
public Builder setPercentFat(final Float value) {
setFieldByNumber(1, value);
return this;
}
public Builder setPercentHydration(final Float value) {
setFieldByNumber(2, value);
return this;
}
public Builder setVisceralFatMass(final Float value) {
setFieldByNumber(3, value);
return this;
}
public Builder setBoneMass(final Float value) {
setFieldByNumber(4, value);
return this;
}
public Builder setMuscleMass(final Float value) {
setFieldByNumber(5, value);
return this;
}
public Builder setBasalMet(final Float value) {
setFieldByNumber(7, value);
return this;
}
public Builder setPhysiqueRating(final Integer value) {
setFieldByNumber(8, value);
return this;
}
public Builder setActiveMet(final Float value) {
setFieldByNumber(9, value);
return this;
}
public Builder setMetabolicAge(final Integer value) {
setFieldByNumber(10, value);
return this;
}
public Builder setVisceralFatRating(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setUserProfileIndex(final Integer value) {
setFieldByNumber(12, value);
return this;
}
public Builder setBmi(final Float value) {
setFieldByNumber(13, value);
return this;
}
public Builder setTimestamp(final Long value) {
setFieldByNumber(253, value);
return this;
}
@Override
public FitWeightScale build() {
return (FitWeightScale) super.build();
}
}
}
@@ -63,6 +63,16 @@ public class FitWorkout extends RecordData {
return (Integer) getFieldByNumber(11); return (Integer) getFieldByNumber(11);
} }
@Nullable
public Float getPoolLength() {
return (Float) getFieldByNumber(14);
}
@Nullable
public Integer getPoolLengthUnit() {
return (Integer) getFieldByNumber(15);
}
@Nullable @Nullable
public String getNotes() { public String getNotes() {
return (String) getFieldByNumber(17); return (String) getFieldByNumber(17);
@@ -101,6 +111,16 @@ public class FitWorkout extends RecordData {
return this; return this;
} }
public Builder setPoolLength(final Float value) {
setFieldByNumber(14, value);
return this;
}
public Builder setPoolLengthUnit(final Integer value) {
setFieldByNumber(15, value);
return this;
}
public Builder setNotes(final String value) { public Builder setNotes(final String value) {
setFieldByNumber(17, value); setFieldByNumber(17, value);
return this; return this;
@@ -0,0 +1,124 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitWorkoutSession extends RecordData {
public FitWorkoutSession(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 158) {
throw new IllegalArgumentException("FitWorkoutSession expects global messages of " + 158 + ", got " + globalNumber);
}
}
@Nullable
public Integer getSport() {
return (Integer) getFieldByNumber(0);
}
@Nullable
public Integer getSubSport() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Integer getNumValidSteps() {
return (Integer) getFieldByNumber(2);
}
@Nullable
public Integer getFirstStepIndex() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Float getPoolLength() {
return (Float) getFieldByNumber(4);
}
@Nullable
public Integer getPoolLengthUnit() {
return (Integer) getFieldByNumber(5);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(158);
}
public Builder setSport(final Integer value) {
setFieldByNumber(0, value);
return this;
}
public Builder setSubSport(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setNumValidSteps(final Integer value) {
setFieldByNumber(2, value);
return this;
}
public Builder setFirstStepIndex(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setPoolLength(final Float value) {
setFieldByNumber(4, value);
return this;
}
public Builder setPoolLengthUnit(final Integer value) {
setFieldByNumber(5, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitWorkoutSession build() {
return (FitWorkoutSession) super.build();
}
}
}
@@ -0,0 +1,244 @@
/* Copyright (C) 2025 Freeyourgadget
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages;
import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitRecordDataBuilder;
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 {@link nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.codegen.FitCodeGen}
* @noinspection unused
*/
public class FitWorkoutStep extends RecordData {
public FitWorkoutStep(final RecordDefinition recordDefinition, final RecordHeader recordHeader) {
super(recordDefinition, recordHeader);
final int globalNumber = recordDefinition.getGlobalFITMessage().getNumber();
if (globalNumber != 27) {
throw new IllegalArgumentException("FitWorkoutStep expects global messages of " + 27 + ", got " + globalNumber);
}
}
@Nullable
public String getWktStepName() {
return (String) getFieldByNumber(0);
}
@Nullable
public Integer getDurationType() {
return (Integer) getFieldByNumber(1);
}
@Nullable
public Long getDurationValue() {
return (Long) getFieldByNumber(2);
}
@Nullable
public Integer getTargetType() {
return (Integer) getFieldByNumber(3);
}
@Nullable
public Long getTargetValue() {
return (Long) getFieldByNumber(4);
}
@Nullable
public Long getCustomTargetValueLow() {
return (Long) getFieldByNumber(5);
}
@Nullable
public Long getCustomTargetValueHigh() {
return (Long) getFieldByNumber(6);
}
@Nullable
public Integer getIntensity() {
return (Integer) getFieldByNumber(7);
}
@Nullable
public String getNotes() {
return (String) getFieldByNumber(8);
}
@Nullable
public Integer getEquipment() {
return (Integer) getFieldByNumber(9);
}
@Nullable
public Integer getExerciseCategory() {
return (Integer) getFieldByNumber(10);
}
@Nullable
public Integer getExerciseName() {
return (Integer) getFieldByNumber(11);
}
@Nullable
public Float getExerciseWeight() {
return (Float) getFieldByNumber(12);
}
@Nullable
public Integer getWeightDisplayUnit() {
return (Integer) getFieldByNumber(13);
}
@Nullable
public Integer getSecondaryTargetType() {
return (Integer) getFieldByNumber(19);
}
@Nullable
public Long getSecondaryTargetValue() {
return (Long) getFieldByNumber(20);
}
@Nullable
public Long getSecondaryCustomTargetValueLow() {
return (Long) getFieldByNumber(21);
}
@Nullable
public Long getSecondaryCustomTargetValueHigh() {
return (Long) getFieldByNumber(22);
}
@Nullable
public Integer getMessageIndex() {
return (Integer) getFieldByNumber(254);
}
/**
* @noinspection unused
*/
public static class Builder extends FitRecordDataBuilder {
public Builder() {
super(27);
}
public Builder setWktStepName(final String value) {
setFieldByNumber(0, value);
return this;
}
public Builder setDurationType(final Integer value) {
setFieldByNumber(1, value);
return this;
}
public Builder setDurationValue(final Long value) {
setFieldByNumber(2, value);
return this;
}
public Builder setTargetType(final Integer value) {
setFieldByNumber(3, value);
return this;
}
public Builder setTargetValue(final Long value) {
setFieldByNumber(4, value);
return this;
}
public Builder setCustomTargetValueLow(final Long value) {
setFieldByNumber(5, value);
return this;
}
public Builder setCustomTargetValueHigh(final Long value) {
setFieldByNumber(6, value);
return this;
}
public Builder setIntensity(final Integer value) {
setFieldByNumber(7, value);
return this;
}
public Builder setNotes(final String value) {
setFieldByNumber(8, value);
return this;
}
public Builder setEquipment(final Integer value) {
setFieldByNumber(9, value);
return this;
}
public Builder setExerciseCategory(final Integer value) {
setFieldByNumber(10, value);
return this;
}
public Builder setExerciseName(final Integer value) {
setFieldByNumber(11, value);
return this;
}
public Builder setExerciseWeight(final Float value) {
setFieldByNumber(12, value);
return this;
}
public Builder setWeightDisplayUnit(final Integer value) {
setFieldByNumber(13, value);
return this;
}
public Builder setSecondaryTargetType(final Integer value) {
setFieldByNumber(19, value);
return this;
}
public Builder setSecondaryTargetValue(final Long value) {
setFieldByNumber(20, value);
return this;
}
public Builder setSecondaryCustomTargetValueLow(final Long value) {
setFieldByNumber(21, value);
return this;
}
public Builder setSecondaryCustomTargetValueHigh(final Long value) {
setFieldByNumber(22, value);
return this;
}
public Builder setMessageIndex(final Integer value) {
setFieldByNumber(254, value);
return this;
}
@Override
public FitWorkoutStep build() {
return (FitWorkoutStep) super.build();
}
}
}