Garmin: extend FIT file parsing 7

This commit is contained in:
Thomas Kuehne
2025-09-24 00:19:57 +02:00
committed by José Rebelo
parent 48f31fa132
commit 643fc0c7ef
10 changed files with 835 additions and 803 deletions
@@ -35,9 +35,9 @@ public class GlobalFITMessage {
public static GlobalFITMessage DEVICE_SETTINGS = new GlobalFITMessage(2, "DEVICE_SETTINGS", Arrays.asList(
new FieldDefinitionPrimitive(0, BaseType.UINT8, "active_time_zone"),
new FieldDefinitionPrimitive(1, BaseType.UINT32, "utc_offset"),
new FieldDefinitionPrimitive(2, BaseType.UINT32, "time_offset"),
new FieldDefinitionPrimitive(4, BaseType.ENUM, "time_mode"),
new FieldDefinitionPrimitive(5, BaseType.SINT8, "time_zone_offset"),
new FieldDefinitionPrimitive(2, BaseType.UINT32, "time_offset", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(4, BaseType.ENUM, "time_mode", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(5, BaseType.SINT8, "time_zone_offset", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(8, BaseType.UINT16, "alarms_time", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(9, BaseType.ENUM, "alarms_unk5", FieldDefinitionFactory.FIELD.ARRAY), // [5, 5]
new FieldDefinitionPrimitive(12, BaseType.ENUM, "backlight_mode"),
@@ -49,7 +49,7 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(47, BaseType.ENUM, "date_mode"),
new FieldDefinitionPrimitive(55, BaseType.ENUM, "display_orientation"),
new FieldDefinitionPrimitive(56, BaseType.ENUM, "mounting_side"),
new FieldDefinitionPrimitive(57, BaseType.UINT16, "default_page"),
new FieldDefinitionPrimitive(57, BaseType.UINT16, "default_page", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(58, BaseType.UINT16, "autosync_min_steps"),
new FieldDefinitionPrimitive(59, BaseType.UINT16, "autosync_min_time"),
new FieldDefinitionPrimitive(80, BaseType.ENUM, "lactate_threshold_autodetect_enabled"),
@@ -84,7 +84,7 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(18, BaseType.ENUM, "position_setting"),
new FieldDefinitionPrimitive(21, BaseType.ENUM, "temperature_setting", FieldDefinitionFactory.FIELD.MEASUREMENT_SYSTEM),
new FieldDefinitionPrimitive(22, BaseType.UINT16, "local_id"),
new FieldDefinitionPrimitive(23, BaseType.BASE_TYPE_BYTE, 6, "global_id"),
new FieldDefinitionPrimitive(23, BaseType.BASE_TYPE_BYTE, 6, "global_id", FieldDefinitionFactory.FIELD.ARRAY, 1, 0),
new FieldDefinitionPrimitive(24, BaseType.UINT8, "year_of_birth", 1, -1900),
new FieldDefinitionPrimitive(28, BaseType.UINT32, "wake_time"),
new FieldDefinitionPrimitive(29, BaseType.UINT32, "sleep_time"),
@@ -273,10 +273,10 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(62, BaseType.SINT16, "max_pos_vertical_speed", 1000, 0), // m/s
new FieldDefinitionPrimitive(63, BaseType.SINT16, "max_neg_vertical_speed", 1000, 0), // m/s
new FieldDefinitionPrimitive(64, BaseType.UINT8, "min_heart_rate"), // bpm
new FieldDefinitionPrimitive(65, BaseType.UINT32, "time_in_hr_zone", 1000, 0), // s
new FieldDefinitionPrimitive(66, BaseType.UINT32, "time_in_speed_zone", 1000, 0), // s
new FieldDefinitionPrimitive(67, BaseType.UINT32, "time_in_cadence_zone", 1000, 0), // s
new FieldDefinitionPrimitive(68, BaseType.UINT32, "time_in_power_zone", 1000, 0), // s
new FieldDefinitionPrimitive(65, BaseType.UINT32, "time_in_hr_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(66, BaseType.UINT32, "time_in_speed_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(67, BaseType.UINT32, "time_in_cadence_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(68, BaseType.UINT32, "time_in_power_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(69, BaseType.UINT32, "avg_lap_time", 1000, 0), // s
new FieldDefinitionPrimitive(70, BaseType.UINT16, "best_lap_index"),
new FieldDefinitionPrimitive(71, BaseType.UINT16, "min_altitude", 5, 500), // m
@@ -285,8 +285,8 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(82, BaseType.UINT16, "player_score"),
new FieldDefinitionPrimitive(83, BaseType.UINT16, "opponent_score"),
new FieldDefinitionPrimitive(84, BaseType.STRING, "opponent_name"),
new FieldDefinitionPrimitive(85, BaseType.UINT16, "stroke_count"),
new FieldDefinitionPrimitive(86, BaseType.UINT16, "zone_count"),
new FieldDefinitionPrimitive(85, BaseType.UINT16, "stroke_count", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(86, BaseType.UINT16, "zone_count", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(87, BaseType.UINT16, "max_ball_speed", 100, 0), // m/s
new FieldDefinitionPrimitive(88, BaseType.UINT16, "avg_ball_speed", 100, 0), // m/s
new FieldDefinitionPrimitive(89, BaseType.UINT16, "avg_vertical_oscillation", 10, 0), // mm
@@ -466,14 +466,14 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(99, BaseType.UINT16, "stand_count"),
new FieldDefinitionPrimitive(100, BaseType.SINT8, "avg_left_pco"), // mm
new FieldDefinitionPrimitive(101, BaseType.SINT8, "avg_right_pco"), // mm
new FieldDefinitionPrimitive(102, BaseType.UINT8, "avg_left_power_phase"),
new FieldDefinitionPrimitive(103, BaseType.UINT8, "avg_left_power_phase_peak"),
new FieldDefinitionPrimitive(104, BaseType.UINT8, "avg_right_power_phase"),
new FieldDefinitionPrimitive(105, BaseType.UINT8, "avg_right_power_phase_peak"),
new FieldDefinitionPrimitive(106, BaseType.UINT16, "avg_power_position"), // watt
new FieldDefinitionPrimitive(107, BaseType.UINT16, "max_power_position"), // watt
new FieldDefinitionPrimitive(108, BaseType.UINT8, "avg_cadence_position"), // rpm
new FieldDefinitionPrimitive(109, BaseType.UINT8, "max_cadence_position"), // rpm
new FieldDefinitionPrimitive(102, BaseType.UINT8, "avg_left_power_phase", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(103, BaseType.UINT8, "avg_left_power_phase_peak", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(104, BaseType.UINT8, "avg_right_power_phase", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(105, BaseType.UINT8, "avg_right_power_phase_peak", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(106, BaseType.UINT16, "avg_power_position", FieldDefinitionFactory.FIELD.ARRAY), // watt
new FieldDefinitionPrimitive(107, BaseType.UINT16, "max_power_position", FieldDefinitionFactory.FIELD.ARRAY), // watt
new FieldDefinitionPrimitive(108, BaseType.UINT8, "avg_cadence_position", FieldDefinitionFactory.FIELD.ARRAY), // rpm
new FieldDefinitionPrimitive(109, BaseType.UINT8, "max_cadence_position", FieldDefinitionFactory.FIELD.ARRAY), // rpm
new FieldDefinitionPrimitive(110, BaseType.UINT32, "enhanced_avg_speed", 100, 0), // m/s
new FieldDefinitionPrimitive(111, BaseType.UINT32, "enhanced_max_speed", 100, 0), // m/s
new FieldDefinitionPrimitive(112, BaseType.UINT32, "enhanced_avg_altitude", 5, 500), // m
@@ -516,7 +516,7 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(5, BaseType.UINT32, "distance", 100, 0), // m
new FieldDefinitionPrimitive(6, BaseType.UINT16, "speed", 1000, 0), // m/s
new FieldDefinitionPrimitive(7, BaseType.UINT16, "power"), // watt
new FieldDefinitionPrimitive(8, BaseType.BASE_TYPE_BYTE, 3, "compressed_speed_distance"), // 12 bit: speed|distance with scale 100|16
new FieldDefinitionPrimitive(8, BaseType.BASE_TYPE_BYTE, 3, "compressed_speed_distance", FieldDefinitionFactory.FIELD.ARRAY, 1, 0), // 12 bit: speed|distance with scale 100|16
new FieldDefinitionPrimitive(9, BaseType.SINT16,"grade", 100, 0), // %
new FieldDefinitionPrimitive(10, BaseType.UINT8,"resistance"),
new FieldDefinitionPrimitive(11, BaseType.SINT32,"time_from_course", 1000, 0), // s
@@ -1160,7 +1160,7 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(1, BaseType.UINT16, "mesg_num"),
new FieldDefinitionPrimitive(2, BaseType.UINT16, "parent_index"),
new FieldDefinitionPrimitive(3, BaseType.UINT8, "field_num"),
new FieldDefinitionPrimitive(4, BaseType.UINT8Z, "data"),
new FieldDefinitionPrimitive(4, BaseType.UINT8Z, "data", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(250, BaseType.UINT32, "part_index")
));
@@ -1209,10 +1209,10 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(1, BaseType.STRING, "file_uuid"),
new FieldDefinitionPrimitive(3, BaseType.ENUM, "enabled"),
new FieldDefinitionPrimitive(4, BaseType.UINT32, "user_profile_primary_key"),
new FieldDefinitionPrimitive(7, BaseType.ENUM, "leader_type"),
new FieldDefinitionPrimitive(8, BaseType.UINT32, "leader_group_primary_key"),
new FieldDefinitionPrimitive(9, BaseType.UINT32, "leader_activity_id"),
new FieldDefinitionPrimitive(10, BaseType.STRING, "leader_activity_id_string"),
new FieldDefinitionPrimitive(7, BaseType.ENUM, "leader_type", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(8, BaseType.UINT32, "leader_group_primary_key", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(9, BaseType.UINT32, "leader_activity_id", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(10, BaseType.STRING, "leader_activity_id_string", FieldDefinitionFactory.FIELD.ARRAY),
new FieldDefinitionPrimitive(11, BaseType.UINT8, "default_race_leader"),
new FieldDefinitionPrimitive(254, BaseType.UINT16, "message_index")
));
@@ -1362,13 +1362,13 @@ public class GlobalFITMessage {
new FieldDefinitionPrimitive(0, BaseType.UINT16, "reference_message"),
new FieldDefinitionPrimitive(1, BaseType.UINT16, "reference_index"),
new FieldDefinitionPrimitive(2, BaseType.UINT32, "time_in_zone", FieldDefinitionFactory.FIELD.HR_TIME_IN_ZONE), // seconds
new FieldDefinitionPrimitive(3, BaseType.UINT32, "time_in_speed_zone", 1000, 0), // s
new FieldDefinitionPrimitive(4, BaseType.UINT32, "time_in_cadence_zone", 1000, 0), // s
new FieldDefinitionPrimitive(5, BaseType.UINT32, "time_in_power_zone", 1000, 0), // s
new FieldDefinitionPrimitive(3, BaseType.UINT32, "time_in_speed_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(4, BaseType.UINT32, "time_in_cadence_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(5, BaseType.UINT32, "time_in_power_zone", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // s
new FieldDefinitionPrimitive(6, BaseType.UINT8, "hr_zone_high_boundary", FieldDefinitionFactory.FIELD.HR_ZONE_HIGH_BOUNDARY), // bpm
new FieldDefinitionPrimitive(7, BaseType.UINT16, "speed_zone_high_boundary", 1000, 0), // m/s
new FieldDefinitionPrimitive(8, BaseType.UINT8, "cadence_zone_high_boundary"), // rpm
new FieldDefinitionPrimitive(9, BaseType.UINT16, "power_zone_high_boundary"), // watt
new FieldDefinitionPrimitive(7, BaseType.UINT16, "speed_zone_high_boundary", FieldDefinitionFactory.FIELD.ARRAY, 1000, 0), // m/s
new FieldDefinitionPrimitive(8, BaseType.UINT8, "cadence_zone_high_boundary", FieldDefinitionFactory.FIELD.ARRAY), // rpm
new FieldDefinitionPrimitive(9, BaseType.UINT16, "power_zone_high_boundary", FieldDefinitionFactory.FIELD.ARRAY), // watt
new FieldDefinitionPrimitive(10, BaseType.ENUM, "hr_calc_type"), // 1 percent max hr
new FieldDefinitionPrimitive(11, BaseType.UINT8, "max_heart_rate"),
new FieldDefinitionPrimitive(12, BaseType.UINT8, "resting_heart_rate"),
@@ -50,18 +50,51 @@ public class FitDeviceSettings extends RecordData {
}
@Nullable
public Long getTimeOffset() {
return (Long) getFieldByNumber(2);
public Number[] getTimeOffset() {
final Object object = getFieldByNumber(2);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getTimeMode() {
return (Integer) getFieldByNumber(4);
public Number[] getTimeMode() {
final Object object = getFieldByNumber(4);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getTimeZoneOffset() {
return (Integer) getFieldByNumber(5);
public Number[] getTimeZoneOffset() {
final Object object = getFieldByNumber(5);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -164,8 +197,19 @@ public class FitDeviceSettings extends RecordData {
}
@Nullable
public Integer getDefaultPage() {
return (Integer) getFieldByNumber(57);
public Number[] getDefaultPage() {
final Object object = getFieldByNumber(57);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -252,18 +296,18 @@ public class FitDeviceSettings extends RecordData {
return this;
}
public Builder setTimeOffset(final Long value) {
setFieldByNumber(2, value);
public Builder setTimeOffset(final Number[] value) {
setFieldByNumber(2, (Object[]) value);
return this;
}
public Builder setTimeMode(final Integer value) {
setFieldByNumber(4, value);
public Builder setTimeMode(final Number[] value) {
setFieldByNumber(4, (Object[]) value);
return this;
}
public Builder setTimeZoneOffset(final Integer value) {
setFieldByNumber(5, value);
public Builder setTimeZoneOffset(final Number[] value) {
setFieldByNumber(5, (Object[]) value);
return this;
}
@@ -322,8 +366,8 @@ public class FitDeviceSettings extends RecordData {
return this;
}
public Builder setDefaultPage(final Integer value) {
setFieldByNumber(57, value);
public Builder setDefaultPage(final Number[] value) {
setFieldByNumber(57, (Object[]) value);
return this;
}
@@ -598,43 +598,131 @@ public class FitLap extends RecordData {
}
@Nullable
public Integer getAvgLeftPowerPhase() {
return (Integer) getFieldByNumber(102);
public Number[] getAvgLeftPowerPhase() {
final Object object = getFieldByNumber(102);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getAvgLeftPowerPhasePeak() {
return (Integer) getFieldByNumber(103);
public Number[] getAvgLeftPowerPhasePeak() {
final Object object = getFieldByNumber(103);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getAvgRightPowerPhase() {
return (Integer) getFieldByNumber(104);
public Number[] getAvgRightPowerPhase() {
final Object object = getFieldByNumber(104);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getAvgRightPowerPhasePeak() {
return (Integer) getFieldByNumber(105);
public Number[] getAvgRightPowerPhasePeak() {
final Object object = getFieldByNumber(105);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getAvgPowerPosition() {
return (Integer) getFieldByNumber(106);
public Number[] getAvgPowerPosition() {
final Object object = getFieldByNumber(106);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getMaxPowerPosition() {
return (Integer) getFieldByNumber(107);
public Number[] getMaxPowerPosition() {
final Object object = getFieldByNumber(107);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getAvgCadencePosition() {
return (Integer) getFieldByNumber(108);
public Number[] getAvgCadencePosition() {
final Object object = getFieldByNumber(108);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getMaxCadencePosition() {
return (Integer) getFieldByNumber(109);
public Number[] getMaxCadencePosition() {
final Object object = getFieldByNumber(109);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -1225,43 +1313,43 @@ public class FitLap extends RecordData {
return this;
}
public Builder setAvgLeftPowerPhase(final Integer value) {
setFieldByNumber(102, value);
public Builder setAvgLeftPowerPhase(final Number[] value) {
setFieldByNumber(102, (Object[]) value);
return this;
}
public Builder setAvgLeftPowerPhasePeak(final Integer value) {
setFieldByNumber(103, value);
public Builder setAvgLeftPowerPhasePeak(final Number[] value) {
setFieldByNumber(103, (Object[]) value);
return this;
}
public Builder setAvgRightPowerPhase(final Integer value) {
setFieldByNumber(104, value);
public Builder setAvgRightPowerPhase(final Number[] value) {
setFieldByNumber(104, (Object[]) value);
return this;
}
public Builder setAvgRightPowerPhasePeak(final Integer value) {
setFieldByNumber(105, value);
public Builder setAvgRightPowerPhasePeak(final Number[] value) {
setFieldByNumber(105, (Object[]) value);
return this;
}
public Builder setAvgPowerPosition(final Integer value) {
setFieldByNumber(106, value);
public Builder setAvgPowerPosition(final Number[] value) {
setFieldByNumber(106, (Object[]) value);
return this;
}
public Builder setMaxPowerPosition(final Integer value) {
setFieldByNumber(107, value);
public Builder setMaxPowerPosition(final Number[] value) {
setFieldByNumber(107, (Object[]) value);
return this;
}
public Builder setAvgCadencePosition(final Integer value) {
setFieldByNumber(108, value);
public Builder setAvgCadencePosition(final Number[] value) {
setFieldByNumber(108, (Object[]) value);
return this;
}
public Builder setMaxCadencePosition(final Integer value) {
setFieldByNumber(109, value);
public Builder setMaxCadencePosition(final Number[] value) {
setFieldByNumber(109, (Object[]) value);
return this;
}
@@ -71,8 +71,19 @@ public class FitMemoGlob extends RecordData {
}
@Nullable
public Integer getData() {
return (Integer) getFieldByNumber(4);
public Number[] getData() {
final Object object = getFieldByNumber(4);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -108,8 +119,8 @@ public class FitMemoGlob extends RecordData {
return this;
}
public Builder setData(final Integer value) {
setFieldByNumber(4, value);
public Builder setData(final Number[] value) {
setFieldByNumber(4, (Object[]) value);
return this;
}
@@ -84,8 +84,19 @@ public class FitRecord extends RecordData {
}
@Nullable
public Integer getCompressedSpeedDistance() {
return (Integer) getFieldByNumber(8);
public Number[] getCompressedSpeedDistance() {
final Object object = getFieldByNumber(8);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -576,8 +587,8 @@ public class FitRecord extends RecordData {
return this;
}
public Builder setCompressedSpeedDistance(final Integer value) {
setFieldByNumber(8, value);
public Builder setCompressedSpeedDistance(final Number[] value) {
setFieldByNumber(8, (Object[]) value);
return this;
}
@@ -55,23 +55,67 @@ public class FitSegmentFile extends RecordData {
}
@Nullable
public Integer getLeaderType() {
return (Integer) getFieldByNumber(7);
public Number[] getLeaderType() {
final Object object = getFieldByNumber(7);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getLeaderGroupPrimaryKey() {
return (Long) getFieldByNumber(8);
public Number[] getLeaderGroupPrimaryKey() {
final Object object = getFieldByNumber(8);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getLeaderActivityId() {
return (Long) getFieldByNumber(9);
public Number[] getLeaderActivityId() {
final Object object = getFieldByNumber(9);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public String getLeaderActivityIdString() {
return (String) getFieldByNumber(10);
public Number[] getLeaderActivityIdString() {
final Object object = getFieldByNumber(10);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -107,23 +151,23 @@ public class FitSegmentFile extends RecordData {
return this;
}
public Builder setLeaderType(final Integer value) {
setFieldByNumber(7, value);
public Builder setLeaderType(final Number[] value) {
setFieldByNumber(7, (Object[]) value);
return this;
}
public Builder setLeaderGroupPrimaryKey(final Long value) {
setFieldByNumber(8, value);
public Builder setLeaderGroupPrimaryKey(final Number[] value) {
setFieldByNumber(8, (Object[]) value);
return this;
}
public Builder setLeaderActivityId(final Long value) {
setFieldByNumber(9, value);
public Builder setLeaderActivityId(final Number[] value) {
setFieldByNumber(9, (Object[]) value);
return this;
}
public Builder setLeaderActivityIdString(final String value) {
setFieldByNumber(10, value);
public Builder setLeaderActivityIdString(final Number[] value) {
setFieldByNumber(10, (Object[]) value);
return this;
}
@@ -355,23 +355,67 @@ public class FitSession extends RecordData {
}
@Nullable
public Double getTimeInHrZone() {
return (Double) getFieldByNumber(65);
public Number[] getTimeInHrZone() {
final Object object = getFieldByNumber(65);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Double getTimeInSpeedZone() {
return (Double) getFieldByNumber(66);
public Number[] getTimeInSpeedZone() {
final Object object = getFieldByNumber(66);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Double getTimeInCadenceZone() {
return (Double) getFieldByNumber(67);
public Number[] getTimeInCadenceZone() {
final Object object = getFieldByNumber(67);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Double getTimeInPowerZone() {
return (Double) getFieldByNumber(68);
public Number[] getTimeInPowerZone() {
final Object object = getFieldByNumber(68);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -415,13 +459,35 @@ public class FitSession extends RecordData {
}
@Nullable
public Integer getStrokeCount() {
return (Integer) getFieldByNumber(85);
public Number[] getStrokeCount() {
final Object object = getFieldByNumber(85);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getZoneCount() {
return (Integer) getFieldByNumber(86);
public Number[] getZoneCount() {
final Object object = getFieldByNumber(86);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -1356,23 +1422,23 @@ public class FitSession extends RecordData {
return this;
}
public Builder setTimeInHrZone(final Double value) {
setFieldByNumber(65, value);
public Builder setTimeInHrZone(final Number[] value) {
setFieldByNumber(65, (Object[]) value);
return this;
}
public Builder setTimeInSpeedZone(final Double value) {
setFieldByNumber(66, value);
public Builder setTimeInSpeedZone(final Number[] value) {
setFieldByNumber(66, (Object[]) value);
return this;
}
public Builder setTimeInCadenceZone(final Double value) {
setFieldByNumber(67, value);
public Builder setTimeInCadenceZone(final Number[] value) {
setFieldByNumber(67, (Object[]) value);
return this;
}
public Builder setTimeInPowerZone(final Double value) {
setFieldByNumber(68, value);
public Builder setTimeInPowerZone(final Number[] value) {
setFieldByNumber(68, (Object[]) value);
return this;
}
@@ -1416,13 +1482,13 @@ public class FitSession extends RecordData {
return this;
}
public Builder setStrokeCount(final Integer value) {
setFieldByNumber(85, value);
public Builder setStrokeCount(final Number[] value) {
setFieldByNumber(85, (Object[]) value);
return this;
}
public Builder setZoneCount(final Integer value) {
setFieldByNumber(86, value);
public Builder setZoneCount(final Number[] value) {
setFieldByNumber(86, (Object[]) value);
return this;
}
@@ -66,18 +66,51 @@ public class FitTimeInZone extends RecordData {
}
@Nullable
public Double getTimeInSpeedZone() {
return (Double) getFieldByNumber(3);
public Number[] getTimeInSpeedZone() {
final Object object = getFieldByNumber(3);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Double getTimeInCadenceZone() {
return (Double) getFieldByNumber(4);
public Number[] getTimeInCadenceZone() {
final Object object = getFieldByNumber(4);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
public Double getTimeInPowerZone() {
return (Double) getFieldByNumber(5);
public Number[] getTimeInPowerZone() {
final Object object = getFieldByNumber(5);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -97,18 +130,51 @@ public class FitTimeInZone extends RecordData {
}
@Nullable
public Float getSpeedZoneHighBoundary() {
return (Float) getFieldByNumber(7);
public Number[] getSpeedZoneHighBoundary() {
final Object object = getFieldByNumber(7);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getCadenceZoneHighBoundary() {
return (Integer) getFieldByNumber(8);
public Number[] getCadenceZoneHighBoundary() {
final Object object = getFieldByNumber(8);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
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 getPowerZoneHighBoundary() {
return (Integer) getFieldByNumber(9);
public Number[] getPowerZoneHighBoundary() {
final Object object = getFieldByNumber(9);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -169,18 +235,18 @@ public class FitTimeInZone extends RecordData {
return this;
}
public Builder setTimeInSpeedZone(final Double value) {
setFieldByNumber(3, value);
public Builder setTimeInSpeedZone(final Number[] value) {
setFieldByNumber(3, (Object[]) value);
return this;
}
public Builder setTimeInCadenceZone(final Double value) {
setFieldByNumber(4, value);
public Builder setTimeInCadenceZone(final Number[] value) {
setFieldByNumber(4, (Object[]) value);
return this;
}
public Builder setTimeInPowerZone(final Double value) {
setFieldByNumber(5, value);
public Builder setTimeInPowerZone(final Number[] value) {
setFieldByNumber(5, (Object[]) value);
return this;
}
@@ -189,18 +255,18 @@ public class FitTimeInZone extends RecordData {
return this;
}
public Builder setSpeedZoneHighBoundary(final Float value) {
setFieldByNumber(7, value);
public Builder setSpeedZoneHighBoundary(final Number[] value) {
setFieldByNumber(7, (Object[]) value);
return this;
}
public Builder setCadenceZoneHighBoundary(final Integer value) {
setFieldByNumber(8, value);
public Builder setCadenceZoneHighBoundary(final Number[] value) {
setFieldByNumber(8, (Object[]) value);
return this;
}
public Builder setPowerZoneHighBoundary(final Integer value) {
setFieldByNumber(9, value);
public Builder setPowerZoneHighBoundary(final Number[] value) {
setFieldByNumber(9, (Object[]) value);
return this;
}
@@ -142,8 +142,19 @@ public class FitUserProfile extends RecordData {
}
@Nullable
public Integer getGlobalId() {
return (Integer) getFieldByNumber(23);
public Number[] getGlobalId() {
final Object object = getFieldByNumber(23);
if (object == null)
return null;
if (!object.getClass().isArray()) {
return new Number[]{(Number) object};
}
final Object[] objectsArray = (Object[]) object;
final Number[] ret = new Number[objectsArray.length];
for (int i = 0; i < objectsArray.length; i++) {
ret[i] = (Number) objectsArray[i];
}
return ret;
}
@Nullable
@@ -314,8 +325,8 @@ public class FitUserProfile extends RecordData {
return this;
}
public Builder setGlobalId(final Integer value) {
setFieldByNumber(23, value);
public Builder setGlobalId(final Number[] value) {
setFieldByNumber(23, (Object[]) value);
return this;
}