diff --git a/Sources/FitFileParser/rzfit_swift_map.swift b/Sources/FitFileParser/rzfit_swift_map.swift index 4157940..7ed8fb1 100644 --- a/Sources/FitFileParser/rzfit_swift_map.swift +++ b/Sources/FitFileParser/rzfit_swift_map.swift @@ -3,7 +3,7 @@ import FitFileParserObjc extension FitFile { - public static let sdkVersion = "21.126" + public static let sdkVersion = "21.158.0" } //MARK: - Module Entry Point Functions @@ -548,7 +548,10 @@ func rzfit_swift_known_units( ) -> [String] { "100 * m", "2 * cycles (steps)", "mL/kg/min", + "1/32768 s", "breaths/min", + "degC", + "gr", "bar", "L", ] @@ -631,8 +634,10 @@ func rzfit_swift_unit_for_field( mesg_num : FIT_UINT16, field : String ) -> Stri switch mesg_num { case 262: return "s" // dive_alarm case 393: return "s" // dive_apnea_alarm + case 289: return "s" // aad_accel_features case 78: return "s" // hrv case 290: return "ms" // beat_intervals + case 372: return "ms" // raw_bbi default: return nil } case "speed": @@ -830,6 +835,7 @@ func rzfit_swift_unit_for_field( mesg_num : FIT_UINT16, field : String ) -> Stri case "respiration_rate": switch mesg_num { case 20: return "s" // record + case 307: return "breaths/min" // hsa_respiration_data case 297: return "breaths/min" // respiration_rate default: return nil } @@ -881,15 +887,45 @@ func rzfit_swift_unit_for_field( mesg_num : FIT_UINT16, field : String ) -> Stri case "utc_timestamp": return "s" case "velocity": return "m/s" case "sample_time_offset": return "ms" - case "gyro_x": return "counts" - case "gyro_y": return "counts" - case "gyro_z": return "counts" + case "gyro_x": + switch mesg_num { + case 164: return "counts" // gyroscope_data + case 376: return "deg/s" // hsa_gyroscope_data + default: return nil + } + case "gyro_y": + switch mesg_num { + case 164: return "counts" // gyroscope_data + case 376: return "deg/s" // hsa_gyroscope_data + default: return nil + } + case "gyro_z": + switch mesg_num { + case 164: return "counts" // gyroscope_data + case 376: return "deg/s" // hsa_gyroscope_data + default: return nil + } case "calibrated_gyro_x": return "deg/s" case "calibrated_gyro_y": return "deg/s" case "calibrated_gyro_z": return "deg/s" - case "accel_x": return "counts" - case "accel_y": return "counts" - case "accel_z": return "counts" + case "accel_x": + switch mesg_num { + case 165: return "counts" // accelerometer_data + case 302: return "mG" // hsa_accelerometer_data + default: return nil + } + case "accel_y": + switch mesg_num { + case 165: return "counts" // accelerometer_data + case 302: return "mG" // hsa_accelerometer_data + default: return nil + } + case "accel_z": + switch mesg_num { + case 165: return "counts" // accelerometer_data + case 302: return "mG" // hsa_accelerometer_data + default: return nil + } case "calibrated_accel_x": return "g" case "calibrated_accel_y": return "g" case "calibrated_accel_z": return "g" @@ -1003,6 +1039,22 @@ func rzfit_swift_unit_for_field( mesg_num : FIT_UINT16, field : String ) -> Stri case "event_timestamp_12": return "s" case "stress_level_time": return "s" case "vo2_max": return "mL/kg/min" + case "processing_interval": return "s" + case "level": return "percent" + case "sampling_interval": + switch mesg_num { + case 302: return "ms" // hsa_accelerometer_data + case 376: return "1/32768 s" // hsa_gyroscope_data + default: return nil + } + case "timestamp_32k": return "1/32768 s" + case "stress_level": return "s" + case "value": + switch mesg_num { + case 409: return "degC" // hsa_wrist_temperature_data + case 371: return "ms" // hrv_value + default: return nil + } case "bottom_time": return "s" case "avg_pressure_sac": return "bar/min" case "avg_volume_sac": return "L/min" @@ -1013,13 +1065,17 @@ func rzfit_swift_unit_for_field( mesg_num : FIT_UINT16, field : String ) -> Stri case "avg_descent_rate": return "m/s" case "max_ascent_rate": return "m/s" case "max_descent_rate": return "m/s" + case "time_above_threshold": return "s" case "weekly_average": return "ms" case "last_night_average": return "ms" case "last_night_5_min_high": return "ms" case "baseline_low_upper": return "ms" case "baseline_balanced_lower": return "ms" case "baseline_balanced_upper": return "ms" - case "value": return "ms" + case "min_speed": return "m/s" + case "grain_weight": return "gr" + case "standard_deviation": return "m/s" + case "shot_speed": return "m/s" case "pressure": return "bar" case "start_pressure": return "bar" case "end_pressure": return "bar" @@ -1197,16 +1253,17 @@ func rzfit_swift_string_for_type(fit_type : FIT_UINT8, val : FIT_UINT32 ) -> Str case 166: return rzfit_swift_string_from_spo2_measurement_type( FIT_ENUM(val) ) case 167: return rzfit_swift_string_from_ccr_setpoint_switch_mode( FIT_ENUM(val) ) case 168: return rzfit_swift_string_from_dive_gas_mode( FIT_ENUM(val) ) - case 169: return rzfit_swift_string_from_favero_product( FIT_UINT16(val) ) - case 170: return rzfit_swift_string_from_split_type( FIT_ENUM(val) ) - case 171: return rzfit_swift_string_from_climb_pro_event( FIT_ENUM(val) ) - case 172: return rzfit_swift_string_from_gas_consumption_rate_type( FIT_ENUM(val) ) - case 173: return rzfit_swift_string_from_tap_sensitivity( FIT_ENUM(val) ) - case 174: return rzfit_swift_string_from_radar_threat_level_type( FIT_ENUM(val) ) - case 175: return rzfit_swift_string_from_max_met_speed_source( FIT_ENUM(val) ) - case 176: return rzfit_swift_string_from_max_met_heart_rate_source( FIT_ENUM(val) ) - case 177: return rzfit_swift_string_from_hrv_status( FIT_ENUM(val) ) - case 178: return rzfit_swift_string_from_no_fly_time_mode( FIT_ENUM(val) ) + case 169: return rzfit_swift_string_from_projectile_type( FIT_ENUM(val) ) + case 170: return rzfit_swift_string_from_favero_product( FIT_UINT16(val) ) + case 171: return rzfit_swift_string_from_split_type( FIT_ENUM(val) ) + case 172: return rzfit_swift_string_from_climb_pro_event( FIT_ENUM(val) ) + case 173: return rzfit_swift_string_from_gas_consumption_rate_type( FIT_ENUM(val) ) + case 174: return rzfit_swift_string_from_tap_sensitivity( FIT_ENUM(val) ) + case 175: return rzfit_swift_string_from_radar_threat_level_type( FIT_ENUM(val) ) + case 176: return rzfit_swift_string_from_max_met_speed_source( FIT_ENUM(val) ) + case 177: return rzfit_swift_string_from_max_met_heart_rate_source( FIT_ENUM(val) ) + case 178: return rzfit_swift_string_from_hrv_status( FIT_ENUM(val) ) + case 179: return rzfit_swift_string_from_no_fly_time_mode( FIT_ENUM(val) ) default: return "fit_type_\(fit_type)_\(val)" } } @@ -1305,18 +1362,34 @@ public func rzfit_swift_string_to_mesg_num(_ input : String) -> FIT_UINT16 case "spo2_data": return 269; case "sleep_level": return 275; case "jump": return 285; + case "aad_accel_features": return 289; case "beat_intervals": return 290; case "respiration_rate": return 297; + case "hsa_accelerometer_data": return 302; + case "hsa_step_data": return 304; + case "hsa_spo2_data": return 305; + case "hsa_stress_data": return 306; + case "hsa_respiration_data": return 307; + case "hsa_heart_rate_data": return 308; case "split": return 312; case "split_summary": return 313; + case "hsa_body_battery_data": return 314; + case "hsa_event": return 315; case "climb_pro": return 317; case "tank_update": return 319; case "tank_summary": return 323; case "sleep_assessment": return 346; case "hrv_status_summary": return 370; case "hrv_value": return 371; + case "raw_bbi": return 372; case "device_aux_battery_info": return 375; + case "hsa_gyroscope_data": return 376; + case "chrono_shot_session": return 387; + case "chrono_shot_data": return 388; + case "hsa_configuration_data": return 389; case "dive_apnea_alarm": return 393; + case "skin_temp_overnight": return 398; + case "hsa_wrist_temperature_data": return 409; case "mfg_range_min": return 0xFF00; case "mfg_range_max": return 0xFFFE; default: return FIT_UINT16_INVALID; @@ -1418,18 +1491,34 @@ public func rzfit_swift_string_from_mesg_num(_ input : FIT_UINT16) -> String case 269: return "spo2_data" case 275: return "sleep_level" case 285: return "jump" + case 289: return "aad_accel_features" case 290: return "beat_intervals" case 297: return "respiration_rate" + case 302: return "hsa_accelerometer_data" + case 304: return "hsa_step_data" + case 305: return "hsa_spo2_data" + case 306: return "hsa_stress_data" + case 307: return "hsa_respiration_data" + case 308: return "hsa_heart_rate_data" case 312: return "split" case 313: return "split_summary" + case 314: return "hsa_body_battery_data" + case 315: return "hsa_event" case 317: return "climb_pro" case 319: return "tank_update" case 323: return "tank_summary" case 346: return "sleep_assessment" case 370: return "hrv_status_summary" case 371: return "hrv_value" + case 372: return "raw_bbi" case 375: return "device_aux_battery_info" + case 376: return "hsa_gyroscope_data" + case 387: return "chrono_shot_session" + case 388: return "chrono_shot_data" + case 389: return "hsa_configuration_data" case 393: return "dive_apnea_alarm" + case 398: return "skin_temp_overnight" + case 409: return "hsa_wrist_temperature_data" case 0xFF00: return "mfg_range_min" case 0xFFFE: return "mfg_range_max" default: return "mesg_num_\(input)" @@ -1534,18 +1623,34 @@ public extension FitMessageType { static let spo2_data : FitMessageType = 269 static let sleep_level : FitMessageType = 275 static let jump : FitMessageType = 285 + static let aad_accel_features : FitMessageType = 289 static let beat_intervals : FitMessageType = 290 static let respiration_rate : FitMessageType = 297 + static let hsa_accelerometer_data : FitMessageType = 302 + static let hsa_step_data : FitMessageType = 304 + static let hsa_spo2_data : FitMessageType = 305 + static let hsa_stress_data : FitMessageType = 306 + static let hsa_respiration_data : FitMessageType = 307 + static let hsa_heart_rate_data : FitMessageType = 308 static let split : FitMessageType = 312 static let split_summary : FitMessageType = 313 + static let hsa_body_battery_data : FitMessageType = 314 + static let hsa_event : FitMessageType = 315 static let climb_pro : FitMessageType = 317 static let tank_update : FitMessageType = 319 static let tank_summary : FitMessageType = 323 static let sleep_assessment : FitMessageType = 346 static let hrv_status_summary : FitMessageType = 370 static let hrv_value : FitMessageType = 371 + static let raw_bbi : FitMessageType = 372 static let device_aux_battery_info : FitMessageType = 375 + static let hsa_gyroscope_data : FitMessageType = 376 + static let chrono_shot_session : FitMessageType = 387 + static let chrono_shot_data : FitMessageType = 388 + static let hsa_configuration_data : FitMessageType = 389 static let dive_apnea_alarm : FitMessageType = 393 + static let skin_temp_overnight : FitMessageType = 398 + static let hsa_wrist_temperature_data : FitMessageType = 409 static let mfg_range_min : FitMessageType = 0xFF00 static let mfg_range_max : FitMessageType = 0xFFFE } @@ -2026,14 +2131,25 @@ fileprivate func rzfit_swift_string_from_sport(_ input : FIT_ENUM) -> String case 46: return "jumpmaster" case 47: return "boxing" case 48: return "floor_climbing" + case 49: return "baseball" case 53: return "diving" case 62: return "hiit" case 64: return "racket" case 65: return "wheelchair_push_walk" case 66: return "wheelchair_push_run" case 67: return "meditation" + case 69: return "disc_golf" + case 71: return "cricket" + case 72: return "rugby" + case 73: return "hockey" + case 74: return "lacrosse" + case 75: return "volleyball" case 76: return "water_tubing" case 77: return "wakesurfing" + case 80: return "mixed_martial_arts" + case 82: return "snorkeling" + case 83: return "dance" + case 84: return "jump_rope" case 254: return "all" default: return "sport_\(input)" } @@ -2214,6 +2330,10 @@ fileprivate func rzfit_swift_string_from_sub_sport(_ input : FIT_ENUM) -> String case 86: return "indoor_wheelchair_walk" case 87: return "indoor_wheelchair_run" case 88: return "indoor_hand_cycling" + case 94: return "squash" + case 95: return "badminton" + case 96: return "racquetball" + case 97: return "table_tennis" case 110: return "fly_canopy" case 111: return "fly_paraglide" case 112: return "fly_paramotor" @@ -2289,6 +2409,7 @@ fileprivate func rzfit_swift_string_from_autolap_trigger(_ input : FIT_ENUM) -> case 4: return "position_waypoint" case 5: return "position_marked" case 6: return "off" + case 13: return "auto_select" default: return "autolap_trigger_\(input)" } } @@ -2812,6 +2933,8 @@ fileprivate func rzfit_swift_string_from_manufacturer(_ input : FIT_UINT16) -> S case 148: return "ezon" case 149: return "laisi" case 150: return "myzone" + case 151: return "abawo" + case 152: return "bafang" case 255: return "development" case 257: return "healthandlife" case 258: return "lezyne" @@ -2884,6 +3007,11 @@ fileprivate func rzfit_swift_string_from_manufacturer(_ input : FIT_UINT16) -> S case 325: return "aero_sensor" case 326: return "nike" case 327: return "magicshine" + case 328: return "ictrainer" + case 329: return "absolute_cycling" + case 330: return "eo_swimbetter" + case 331: return "mywhoosh" + case 332: return "ravemen" case 5759: return "actigraphcorp" default: return "manufacturer_\(input)" } @@ -2908,6 +3036,7 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 14: return "fr225_single_byte_product_id" case 15: return "gen3_bsm_single_byte_product_id" case 16: return "gen3_bcm_single_byte_product_id" + case 22: return "hrm_fit_single_byte_product_id" case 255: return "OHR" case 473: return "fr301_china" case 474: return "fr301_japan" @@ -3187,6 +3316,7 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 3449: return "marq_commander_asia" case 3450: return "marq_expedition_asia" case 3451: return "marq_athlete_asia" + case 3461: return "index_smart_scale_2" case 3466: return "instinct_solar" case 3469: return "fr45_asia" case 3473: return "vivoactive3_daimler" @@ -3276,6 +3406,8 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 4135: return "tactix7" case 4155: return "instinct_crossover" case 4169: return "edge_explore2" + case 4222: return "descent_mk3" + case 4223: return "descent_mk3i" case 4233: return "approach_s70" case 4257: return "fr265_large" case 4258: return "fr265_small" @@ -3302,11 +3434,23 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 4374: return "fenix7s_pro_solar" case 4375: return "fenix7_pro_solar" case 4376: return "fenix7x_pro_solar" + case 4380: return "lily2" case 4394: return "instinct_2x" case 4426: return "vivoactive5" + case 4432: return "fr165" + case 4433: return "fr165_music" + case 4440: return "edge_1050" case 4442: return "descent_t2" + case 4446: return "hrm_fit" case 4472: return "marq_gen2_commander" + case 4477: return "lily_athlete" + case 4532: return "fenix8_solar" + case 4533: return "fenix8_solar_large" + case 4534: return "fenix8_small" + case 4536: return "fenix8" case 4556: return "d2_mach1_pro" + case 4575: return "enduro3" + case 4666: return "fenix_e" case 10007: return "sdm4" case 10014: return "edge_remote" case 20533: return "tacx_training_app_win" @@ -3887,8 +4031,12 @@ fileprivate func rzfit_swift_string_from_segment_leaderboard_type(_ input : FIT_ case 6: return "qom" case 7: return "pr" case 8: return "goal" - case 9: return "rival" + case 9: return "carrot" case 10: return "club_leader" + case 11: return "rival" + case 12: return "last" + case 13: return "recent_best" + case 14: return "course_record" default: return "segment_leaderboard_type_\(input)" } } @@ -6178,6 +6326,19 @@ fileprivate func rzfit_swift_string_from_dive_gas_mode(_ input : FIT_ENUM) -> St } } +fileprivate func rzfit_swift_string_from_projectile_type(_ input : FIT_ENUM) -> String +{ + switch input { + case 0: return "arrow" + case 1: return "rifle_cartridge" + case 2: return "pistol_cartridge" + case 3: return "shotshell" + case 4: return "air_rifle_pellet" + case 5: return "other" + default: return "projectile_type_\(input)" + } +} + fileprivate func rzfit_swift_string_from_favero_product(_ input : FIT_UINT16) -> String { switch input { @@ -6960,6 +7121,8 @@ fileprivate func rzfit_swift_field_num_to_string_for_session( field_num : FIT_UI case 183: return "jump_count" case 186: return "avg_grit" case 187: return "avg_flow" + case 192: return "workout_feel" + case 193: return "workout_rpe" case 194: return "avg_spo2" case 195: return "avg_stress" case 197: return "sdrr_hrv" @@ -7935,6 +8098,7 @@ fileprivate func rzfit_swift_field_num_to_string_for_workout( field_num : FIT_UI case 11: return "sub_sport" case 14: return "pool_length" case 15: return "pool_length_unit" + case 17: return "wkt_description" default: return "workout_field_num_\(field_num)" } } @@ -8285,6 +8449,105 @@ fileprivate func rzfit_swift_field_num_to_string_for_max_met_data( field_num : F default: return "max_met_data_field_num_\(field_num)" } } +fileprivate func rzfit_swift_field_num_to_string_for_hsa_body_battery_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "level" + case 2: return "charged" + case 3: return "uncharged" + default: return "hsa_body_battery_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_event( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "event_id" + default: return "hsa_event_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_accelerometer_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "timestamp_ms" + case 1: return "sampling_interval" + case 2: return "accel_x" + case 3: return "accel_y" + case 4: return "accel_z" + case 5: return "timestamp_32k" + default: return "hsa_accelerometer_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_gyroscope_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "timestamp_ms" + case 1: return "sampling_interval" + case 2: return "gyro_x" + case 3: return "gyro_y" + case 4: return "gyro_z" + case 5: return "timestamp_32k" + default: return "hsa_gyroscope_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_step_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "steps" + default: return "hsa_step_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_spo2_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "reading_spo2" + case 2: return "confidence" + default: return "hsa_spo2_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_stress_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "stress_level" + default: return "hsa_stress_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_respiration_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "respiration_rate" + default: return "hsa_respiration_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_heart_rate_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "status" + case 2: return "heart_rate" + default: return "hsa_heart_rate_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_configuration_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "data" + case 1: return "data_size" + default: return "hsa_configuration_data_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_hsa_wrist_temperature_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "processing_interval" + case 1: return "value" + default: return "hsa_wrist_temperature_data_field_num_\(field_num)" + } +} fileprivate func rzfit_swift_field_num_to_string_for_memo_glob( field_num : FIT_UINT16 ) -> String { switch field_num { case 250: return "part_index" @@ -8399,6 +8662,17 @@ fileprivate func rzfit_swift_field_num_to_string_for_dive_summary( field_num : F default: return "dive_summary_field_num_\(field_num)" } } +fileprivate func rzfit_swift_field_num_to_string_for_aad_accel_features( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "time" + case 1: return "energy_total" + case 2: return "zero_cross_cnt" + case 3: return "instance" + case 4: return "time_above_threshold" + default: return "aad_accel_features_field_num_\(field_num)" + } +} fileprivate func rzfit_swift_field_num_to_string_for_hrv( field_num : FIT_UINT16 ) -> String { switch field_num { case 0: return "time" @@ -8433,6 +8707,17 @@ fileprivate func rzfit_swift_field_num_to_string_for_hrv_value( field_num : FIT_ default: return "hrv_value_field_num_\(field_num)" } } +fileprivate func rzfit_swift_field_num_to_string_for_raw_bbi( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "timestamp_ms" + case 1: return "data" + case 2: return "time" + case 3: return "quality" + case 4: return "gap" + default: return "raw_bbi_field_num_\(field_num)" + } +} fileprivate func rzfit_swift_field_num_to_string_for_respiration_rate( field_num : FIT_UINT16 ) -> String { switch field_num { case 253: return "timestamp" @@ -8440,6 +8725,27 @@ fileprivate func rzfit_swift_field_num_to_string_for_respiration_rate( field_num default: return "respiration_rate_field_num_\(field_num)" } } +fileprivate func rzfit_swift_field_num_to_string_for_chrono_shot_session( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "min_speed" + case 1: return "max_speed" + case 2: return "avg_speed" + case 3: return "shot_count" + case 4: return "projectile_type" + case 5: return "grain_weight" + case 6: return "standard_deviation" + default: return "chrono_shot_session_field_num_\(field_num)" + } +} +fileprivate func rzfit_swift_field_num_to_string_for_chrono_shot_data( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "shot_speed" + case 1: return "shot_num" + default: return "chrono_shot_data_field_num_\(field_num)" + } +} fileprivate func rzfit_swift_field_num_to_string_for_tank_update( field_num : FIT_UINT16 ) -> String { switch field_num { case 253: return "timestamp" @@ -8477,6 +8783,16 @@ fileprivate func rzfit_swift_field_num_to_string_for_sleep_assessment( field_num default: return "sleep_assessment_field_num_\(field_num)" } } +fileprivate func rzfit_swift_field_num_to_string_for_skin_temp_overnight( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 253: return "timestamp" + case 0: return "local_timestamp" + case 1: return "average_deviation" + case 2: return "average_7_day_deviation" + case 4: return "nightly_value" + default: return "skin_temp_overnight_field_num_\(field_num)" + } +} func rzfit_swift_field_num_to_string( mesg_num : FIT_UINT16, field_num : FIT_UINT16, strings : [String:String]) -> String { switch mesg_num { case 0: return rzfit_swift_field_num_to_string_for_file_id(field_num: field_num, strings: strings) @@ -8570,18 +8886,34 @@ func rzfit_swift_field_num_to_string( mesg_num : FIT_UINT16, field_num : FIT_UIN case 269: return rzfit_swift_field_num_to_string_for_spo2_data(field_num: field_num) case 275: return rzfit_swift_field_num_to_string_for_sleep_level(field_num: field_num) case 285: return rzfit_swift_field_num_to_string_for_jump(field_num: field_num) + case 289: return rzfit_swift_field_num_to_string_for_aad_accel_features(field_num: field_num) case 290: return rzfit_swift_field_num_to_string_for_beat_intervals(field_num: field_num) case 297: return rzfit_swift_field_num_to_string_for_respiration_rate(field_num: field_num) + case 302: return rzfit_swift_field_num_to_string_for_hsa_accelerometer_data(field_num: field_num) + case 304: return rzfit_swift_field_num_to_string_for_hsa_step_data(field_num: field_num) + case 305: return rzfit_swift_field_num_to_string_for_hsa_spo2_data(field_num: field_num) + case 306: return rzfit_swift_field_num_to_string_for_hsa_stress_data(field_num: field_num) + case 307: return rzfit_swift_field_num_to_string_for_hsa_respiration_data(field_num: field_num) + case 308: return rzfit_swift_field_num_to_string_for_hsa_heart_rate_data(field_num: field_num) case 312: return rzfit_swift_field_num_to_string_for_split(field_num: field_num) case 313: return rzfit_swift_field_num_to_string_for_split_summary(field_num: field_num) + case 314: return rzfit_swift_field_num_to_string_for_hsa_body_battery_data(field_num: field_num) + case 315: return rzfit_swift_field_num_to_string_for_hsa_event(field_num: field_num) case 317: return rzfit_swift_field_num_to_string_for_climb_pro(field_num: field_num) case 319: return rzfit_swift_field_num_to_string_for_tank_update(field_num: field_num) case 323: return rzfit_swift_field_num_to_string_for_tank_summary(field_num: field_num) case 346: return rzfit_swift_field_num_to_string_for_sleep_assessment(field_num: field_num) case 370: return rzfit_swift_field_num_to_string_for_hrv_status_summary(field_num: field_num) case 371: return rzfit_swift_field_num_to_string_for_hrv_value(field_num: field_num) + case 372: return rzfit_swift_field_num_to_string_for_raw_bbi(field_num: field_num) case 375: return rzfit_swift_field_num_to_string_for_device_aux_battery_info(field_num: field_num) + case 376: return rzfit_swift_field_num_to_string_for_hsa_gyroscope_data(field_num: field_num) + case 387: return rzfit_swift_field_num_to_string_for_chrono_shot_session(field_num: field_num) + case 388: return rzfit_swift_field_num_to_string_for_chrono_shot_data(field_num: field_num) + case 389: return rzfit_swift_field_num_to_string_for_hsa_configuration_data(field_num: field_num) case 393: return rzfit_swift_field_num_to_string_for_dive_apnea_alarm(field_num: field_num) + case 398: return rzfit_swift_field_num_to_string_for_skin_temp_overnight(field_num: field_num) + case 409: return rzfit_swift_field_num_to_string_for_hsa_wrist_temperature_data(field_num: field_num) default: return "mesg_num_\(mesg_num)_field_num_\(field_num)" } } diff --git a/Sources/FitFileParser/rzfit_swift_reverse_map.swift b/Sources/FitFileParser/rzfit_swift_reverse_map.swift index f860ac7..d2c55ff 100644 --- a/Sources/FitFileParser/rzfit_swift_reverse_map.swift +++ b/Sources/FitFileParser/rzfit_swift_reverse_map.swift @@ -192,14 +192,32 @@ public func rzfit_swift_reverse_value(mesg: String, field: String, value: String return rzfit_swift_reverse_value_sleep_level(field: field, value: value ) case "jump": // 285 return rzfit_swift_reverse_value_jump(field: field, value: value ) + case "aad_accel_features": // 289 + return rzfit_swift_reverse_value_aad_accel_features(field: field, value: value ) case "beat_intervals": // 290 return rzfit_swift_reverse_value_beat_intervals(field: field, value: value ) case "respiration_rate": // 297 return rzfit_swift_reverse_value_respiration_rate(field: field, value: value ) + case "hsa_accelerometer_data": // 302 + return rzfit_swift_reverse_value_hsa_accelerometer_data(field: field, value: value ) + case "hsa_step_data": // 304 + return rzfit_swift_reverse_value_hsa_step_data(field: field, value: value ) + case "hsa_spo2_data": // 305 + return rzfit_swift_reverse_value_hsa_spo2_data(field: field, value: value ) + case "hsa_stress_data": // 306 + return rzfit_swift_reverse_value_hsa_stress_data(field: field, value: value ) + case "hsa_respiration_data": // 307 + return rzfit_swift_reverse_value_hsa_respiration_data(field: field, value: value ) + case "hsa_heart_rate_data": // 308 + return rzfit_swift_reverse_value_hsa_heart_rate_data(field: field, value: value ) case "split": // 312 return rzfit_swift_reverse_value_split(field: field, value: value ) case "split_summary": // 313 return rzfit_swift_reverse_value_split_summary(field: field, value: value ) + case "hsa_body_battery_data": // 314 + return rzfit_swift_reverse_value_hsa_body_battery_data(field: field, value: value ) + case "hsa_event": // 315 + return rzfit_swift_reverse_value_hsa_event(field: field, value: value ) case "climb_pro": // 317 return rzfit_swift_reverse_value_climb_pro(field: field, value: value ) case "tank_update": // 319 @@ -212,10 +230,24 @@ public func rzfit_swift_reverse_value(mesg: String, field: String, value: String return rzfit_swift_reverse_value_hrv_status_summary(field: field, value: value ) case "hrv_value": // 371 return rzfit_swift_reverse_value_hrv_value(field: field, value: value ) + case "raw_bbi": // 372 + return rzfit_swift_reverse_value_raw_bbi(field: field, value: value ) case "device_aux_battery_info": // 375 return rzfit_swift_reverse_value_device_aux_battery_info(field: field, value: value ) + case "hsa_gyroscope_data": // 376 + return rzfit_swift_reverse_value_hsa_gyroscope_data(field: field, value: value ) + case "chrono_shot_session": // 387 + return rzfit_swift_reverse_value_chrono_shot_session(field: field, value: value ) + case "chrono_shot_data": // 388 + return rzfit_swift_reverse_value_chrono_shot_data(field: field, value: value ) + case "hsa_configuration_data": // 389 + return rzfit_swift_reverse_value_hsa_configuration_data(field: field, value: value ) case "dive_apnea_alarm": // 393 return rzfit_swift_reverse_value_dive_apnea_alarm(field: field, value: value ) + case "skin_temp_overnight": // 398 + return rzfit_swift_reverse_value_skin_temp_overnight(field: field, value: value ) + case "hsa_wrist_temperature_data": // 409 + return rzfit_swift_reverse_value_hsa_wrist_temperature_data(field: field, value: value ) default: return .unknown } @@ -1639,6 +1671,12 @@ fileprivate func rzfit_swift_reverse_value_session(field: String, value: String) case "avg_flow": // float32 guard let dbl : Double = Double(value) else { return .unknown } return .value(dbl) + case "workout_feel": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "workout_rpe": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) case "avg_spo2": // uint8 guard let dbl : Double = Double(value) else { return .unknown } return .value(dbl) @@ -3859,6 +3897,9 @@ fileprivate func rzfit_swift_reverse_value_workout(field: String, value: String) return .value(dbl) case "pool_length_unit": // display_measure return rzfit_swift_reverse_value_display_measure(value: value) + case "wkt_description": // string + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) default: return .unknown } @@ -4424,6 +4465,215 @@ fileprivate func rzfit_swift_reverse_value_max_met_data(field: String, value: St return .unknown } } +fileprivate func rzfit_swift_reverse_value_hsa_body_battery_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "level": // sint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "charged": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "uncharged": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_event(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "event_id": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_accelerometer_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "timestamp_ms": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "sampling_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "accel_x": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "accel_y": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "accel_z": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "timestamp_32k": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_gyroscope_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "timestamp_ms": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "sampling_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "gyro_x": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "gyro_y": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "gyro_z": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "timestamp_32k": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_step_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "steps": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_spo2_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "reading_spo2": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "confidence": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_stress_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "stress_level": // sint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_respiration_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "respiration_rate": // sint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_heart_rate_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "status": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "heart_rate": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_configuration_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "data": // byte + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "data_size": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_hsa_wrist_temperature_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "processing_interval": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "value": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} fileprivate func rzfit_swift_reverse_value_memo_glob(field: String, value: String) -> RzFitSwiftValue { switch field { case "part_index": // uint32 @@ -4678,6 +4928,31 @@ fileprivate func rzfit_swift_reverse_value_dive_summary(field: String, value: St return .unknown } } +fileprivate func rzfit_swift_reverse_value_aad_accel_features(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "time": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "energy_total": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "zero_cross_cnt": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "instance": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "time_above_threshold": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} fileprivate func rzfit_swift_reverse_value_hrv(field: String, value: String) -> RzFitSwiftValue { switch field { case "time": // uint16 @@ -4746,6 +5021,31 @@ fileprivate func rzfit_swift_reverse_value_hrv_value(field: String, value: Strin return .unknown } } +fileprivate func rzfit_swift_reverse_value_raw_bbi(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "timestamp_ms": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "data": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "time": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "quality": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "gap": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} fileprivate func rzfit_swift_reverse_value_respiration_rate(field: String, value: String) -> RzFitSwiftValue { switch field { case "timestamp": // date_time @@ -4759,6 +5059,52 @@ fileprivate func rzfit_swift_reverse_value_respiration_rate(field: String, value return .unknown } } +fileprivate func rzfit_swift_reverse_value_chrono_shot_session(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "min_speed": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "max_speed": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "avg_speed": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "shot_count": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "projectile_type": // projectile_type + return rzfit_swift_reverse_value_projectile_type(value: value) + case "grain_weight": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "standard_deviation": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_chrono_shot_data(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "shot_speed": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "shot_num": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} fileprivate func rzfit_swift_reverse_value_tank_update(field: String, value: String) -> RzFitSwiftValue { switch field { case "timestamp": // date_time @@ -4843,6 +5189,27 @@ fileprivate func rzfit_swift_reverse_value_sleep_assessment(field: String, value return .unknown } } +fileprivate func rzfit_swift_reverse_value_skin_temp_overnight(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "timestamp": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "local_timestamp": // local_date_time + return rzfit_swift_reverse_value_local_date_time(value: value) + case "average_deviation": // float32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "average_7_day_deviation": // float32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "nightly_value": // float32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} fileprivate func rzfit_swift_reverse_value_file(value : String) -> RzFitSwiftValue { switch value { @@ -5077,14 +5444,32 @@ fileprivate func rzfit_swift_reverse_value_mesg_num(value : String) -> RzFitSwif case "sleep_level": return .string("275") case "285": return .string("jump") case "jump": return .string("285") + case "289": return .string("aad_accel_features") + case "aad_accel_features": return .string("289") case "290": return .string("beat_intervals") case "beat_intervals": return .string("290") case "297": return .string("respiration_rate") case "respiration_rate": return .string("297") + case "302": return .string("hsa_accelerometer_data") + case "hsa_accelerometer_data": return .string("302") + case "304": return .string("hsa_step_data") + case "hsa_step_data": return .string("304") + case "305": return .string("hsa_spo2_data") + case "hsa_spo2_data": return .string("305") + case "306": return .string("hsa_stress_data") + case "hsa_stress_data": return .string("306") + case "307": return .string("hsa_respiration_data") + case "hsa_respiration_data": return .string("307") + case "308": return .string("hsa_heart_rate_data") + case "hsa_heart_rate_data": return .string("308") case "312": return .string("split") case "split": return .string("312") case "313": return .string("split_summary") case "split_summary": return .string("313") + case "314": return .string("hsa_body_battery_data") + case "hsa_body_battery_data": return .string("314") + case "315": return .string("hsa_event") + case "hsa_event": return .string("315") case "317": return .string("climb_pro") case "climb_pro": return .string("317") case "319": return .string("tank_update") @@ -5097,10 +5482,24 @@ fileprivate func rzfit_swift_reverse_value_mesg_num(value : String) -> RzFitSwif case "hrv_status_summary": return .string("370") case "371": return .string("hrv_value") case "hrv_value": return .string("371") + case "372": return .string("raw_bbi") + case "raw_bbi": return .string("372") case "375": return .string("device_aux_battery_info") case "device_aux_battery_info": return .string("375") + case "376": return .string("hsa_gyroscope_data") + case "hsa_gyroscope_data": return .string("376") + case "387": return .string("chrono_shot_session") + case "chrono_shot_session": return .string("387") + case "388": return .string("chrono_shot_data") + case "chrono_shot_data": return .string("388") + case "389": return .string("hsa_configuration_data") + case "hsa_configuration_data": return .string("389") case "393": return .string("dive_apnea_alarm") case "dive_apnea_alarm": return .string("393") + case "398": return .string("skin_temp_overnight") + case "skin_temp_overnight": return .string("398") + case "409": return .string("hsa_wrist_temperature_data") + case "hsa_wrist_temperature_data": return .string("409") case "0xFF00": return .string("mfg_range_min") case "mfg_range_min": return .string("0xFF00") case "0xFFFE": return .string("mfg_range_max") @@ -5854,6 +6253,8 @@ fileprivate func rzfit_swift_reverse_value_sport(value : String) -> RzFitSwiftVa case "boxing": return .string("47") case "48": return .string("floor_climbing") case "floor_climbing": return .string("48") + case "49": return .string("baseball") + case "baseball": return .string("49") case "53": return .string("diving") case "diving": return .string("53") case "62": return .string("hiit") @@ -5866,10 +6267,30 @@ fileprivate func rzfit_swift_reverse_value_sport(value : String) -> RzFitSwiftVa case "wheelchair_push_run": return .string("66") case "67": return .string("meditation") case "meditation": return .string("67") + case "69": return .string("disc_golf") + case "disc_golf": return .string("69") + case "71": return .string("cricket") + case "cricket": return .string("71") + case "72": return .string("rugby") + case "rugby": return .string("72") + case "73": return .string("hockey") + case "hockey": return .string("73") + case "74": return .string("lacrosse") + case "lacrosse": return .string("74") + case "75": return .string("volleyball") + case "volleyball": return .string("75") case "76": return .string("water_tubing") case "water_tubing": return .string("76") case "77": return .string("wakesurfing") case "wakesurfing": return .string("77") + case "80": return .string("mixed_martial_arts") + case "mixed_martial_arts": return .string("80") + case "82": return .string("snorkeling") + case "snorkeling": return .string("82") + case "83": return .string("dance") + case "dance": return .string("83") + case "84": return .string("jump_rope") + case "jump_rope": return .string("84") case "254": return .string("all") case "all": return .string("254") default: return .unknown @@ -6174,6 +6595,14 @@ fileprivate func rzfit_swift_reverse_value_sub_sport(value : String) -> RzFitSwi case "indoor_wheelchair_run": return .string("87") case "88": return .string("indoor_hand_cycling") case "indoor_hand_cycling": return .string("88") + case "94": return .string("squash") + case "squash": return .string("94") + case "95": return .string("badminton") + case "badminton": return .string("95") + case "96": return .string("racquetball") + case "racquetball": return .string("96") + case "97": return .string("table_tennis") + case "table_tennis": return .string("97") case "110": return .string("fly_canopy") case "fly_canopy": return .string("110") case "111": return .string("fly_paraglide") @@ -6289,6 +6718,8 @@ fileprivate func rzfit_swift_reverse_value_autolap_trigger(value : String) -> Rz case "position_marked": return .string("5") case "6": return .string("off") case "off": return .string("6") + case "13": return .string("auto_select") + case "auto_select": return .string("13") default: return .unknown } } @@ -7181,6 +7612,10 @@ fileprivate func rzfit_swift_reverse_value_manufacturer(value : String) -> RzFit case "laisi": return .string("149") case "150": return .string("myzone") case "myzone": return .string("150") + case "151": return .string("abawo") + case "abawo": return .string("151") + case "152": return .string("bafang") + case "bafang": return .string("152") case "255": return .string("development") case "development": return .string("255") case "257": return .string("healthandlife") @@ -7325,6 +7760,16 @@ fileprivate func rzfit_swift_reverse_value_manufacturer(value : String) -> RzFit case "nike": return .string("326") case "327": return .string("magicshine") case "magicshine": return .string("327") + case "328": return .string("ictrainer") + case "ictrainer": return .string("328") + case "329": return .string("absolute_cycling") + case "absolute_cycling": return .string("329") + case "330": return .string("eo_swimbetter") + case "eo_swimbetter": return .string("330") + case "331": return .string("mywhoosh") + case "mywhoosh": return .string("331") + case "332": return .string("ravemen") + case "ravemen": return .string("332") case "5759": return .string("actigraphcorp") case "actigraphcorp": return .string("5759") default: return .unknown @@ -7366,6 +7811,8 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "gen3_bsm_single_byte_product_id": return .string("15") case "16": return .string("gen3_bcm_single_byte_product_id") case "gen3_bcm_single_byte_product_id": return .string("16") + case "22": return .string("hrm_fit_single_byte_product_id") + case "hrm_fit_single_byte_product_id": return .string("22") case "255": return .string("OHR") case "OHR": return .string("255") case "473": return .string("fr301_china") @@ -7924,6 +8371,8 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "marq_expedition_asia": return .string("3450") case "3451": return .string("marq_athlete_asia") case "marq_athlete_asia": return .string("3451") + case "3461": return .string("index_smart_scale_2") + case "index_smart_scale_2": return .string("3461") case "3466": return .string("instinct_solar") case "instinct_solar": return .string("3466") case "3469": return .string("fr45_asia") @@ -8102,6 +8551,10 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "instinct_crossover": return .string("4155") case "4169": return .string("edge_explore2") case "edge_explore2": return .string("4169") + case "4222": return .string("descent_mk3") + case "descent_mk3": return .string("4222") + case "4223": return .string("descent_mk3i") + case "descent_mk3i": return .string("4223") case "4233": return .string("approach_s70") case "approach_s70": return .string("4233") case "4257": return .string("fr265_large") @@ -8154,16 +8607,40 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "fenix7_pro_solar": return .string("4375") case "4376": return .string("fenix7x_pro_solar") case "fenix7x_pro_solar": return .string("4376") + case "4380": return .string("lily2") + case "lily2": return .string("4380") case "4394": return .string("instinct_2x") case "instinct_2x": return .string("4394") case "4426": return .string("vivoactive5") case "vivoactive5": return .string("4426") + case "4432": return .string("fr165") + case "fr165": return .string("4432") + case "4433": return .string("fr165_music") + case "fr165_music": return .string("4433") + case "4440": return .string("edge_1050") + case "edge_1050": return .string("4440") case "4442": return .string("descent_t2") case "descent_t2": return .string("4442") + case "4446": return .string("hrm_fit") + case "hrm_fit": return .string("4446") case "4472": return .string("marq_gen2_commander") case "marq_gen2_commander": return .string("4472") + case "4477": return .string("lily_athlete") + case "lily_athlete": return .string("4477") + case "4532": return .string("fenix8_solar") + case "fenix8_solar": return .string("4532") + case "4533": return .string("fenix8_solar_large") + case "fenix8_solar_large": return .string("4533") + case "4534": return .string("fenix8_small") + case "fenix8_small": return .string("4534") + case "4536": return .string("fenix8") + case "fenix8": return .string("4536") case "4556": return .string("d2_mach1_pro") case "d2_mach1_pro": return .string("4556") + case "4575": return .string("enduro3") + case "enduro3": return .string("4575") + case "4666": return .string("fenix_e") + case "fenix_e": return .string("4666") case "10007": return .string("sdm4") case "sdm4": return .string("10007") case "10014": return .string("edge_remote") @@ -9075,10 +9552,18 @@ fileprivate func rzfit_swift_reverse_value_segment_leaderboard_type(value : Stri case "pr": return .string("7") case "8": return .string("goal") case "goal": return .string("8") - case "9": return .string("rival") - case "rival": return .string("9") + case "9": return .string("carrot") + case "carrot": return .string("9") case "10": return .string("club_leader") case "club_leader": return .string("10") + case "11": return .string("rival") + case "rival": return .string("11") + case "12": return .string("last") + case "last": return .string("12") + case "13": return .string("recent_best") + case "recent_best": return .string("13") + case "14": return .string("course_record") + case "course_record": return .string("14") default: return .unknown } } @@ -13107,6 +13592,25 @@ fileprivate func rzfit_swift_reverse_value_dive_gas_mode(value : String) -> RzFi } } +fileprivate func rzfit_swift_reverse_value_projectile_type(value : String) -> RzFitSwiftValue +{ + switch value { + case "0": return .string("arrow") + case "arrow": return .string("0") + case "1": return .string("rifle_cartridge") + case "rifle_cartridge": return .string("1") + case "2": return .string("pistol_cartridge") + case "pistol_cartridge": return .string("2") + case "3": return .string("shotshell") + case "shotshell": return .string("3") + case "4": return .string("air_rifle_pellet") + case "air_rifle_pellet": return .string("4") + case "5": return .string("other") + case "other": return .string("5") + default: return .unknown + } +} + fileprivate func rzfit_swift_reverse_value_favero_product(value : String) -> RzFitSwiftValue { switch value { diff --git a/Sources/FitFileParserObjc/fit.h b/Sources/FitFileParserObjc/fit.h index 63b5970..e7051e7 100644 --- a/Sources/FitFileParserObjc/fit.h +++ b/Sources/FitFileParserObjc/fit.h @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// @@ -60,7 +60,7 @@ #define FIT_PROTOCOL_VERSION_MAX FIT_PROTOCOL_VERSION_20 #define FIT_PROFILE_VERSION_MAJOR 21 - #define FIT_PROFILE_VERSION_MINOR 115 + #define FIT_PROFILE_VERSION_MINOR 158 #define FIT_PROFILE_VERSION_SCALE 100 #define FIT_PROFILE_VERSION ((FIT_UINT16) (FIT_PROFILE_VERSION_MAJOR * 100 + FIT_PROFILE_VERSION_MINOR)) #endif // !defined(FIT_CPP_INCLUDE_C) diff --git a/Sources/FitFileParserObjc/fit.m b/Sources/FitFileParserObjc/fit.m index c61fc6f..c9c05eb 100644 --- a/Sources/FitFileParserObjc/fit.m +++ b/Sources/FitFileParserObjc/fit.m @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// diff --git a/Sources/FitFileParserObjc/fit_convert.h b/Sources/FitFileParserObjc/fit_convert.h index c56baf8..0995657 100644 --- a/Sources/FitFileParserObjc/fit_convert.h +++ b/Sources/FitFileParserObjc/fit_convert.h @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// diff --git a/Sources/FitFileParserObjc/fit_convert.m b/Sources/FitFileParserObjc/fit_convert.m index dc34017..e6a54e2 100644 --- a/Sources/FitFileParserObjc/fit_convert.m +++ b/Sources/FitFileParserObjc/fit_convert.m @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// diff --git a/Sources/FitFileParserObjc/fit_crc.h b/Sources/FitFileParserObjc/fit_crc.h index e52ae53..ff3b152 100644 --- a/Sources/FitFileParserObjc/fit_crc.h +++ b/Sources/FitFileParserObjc/fit_crc.h @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// diff --git a/Sources/FitFileParserObjc/fit_crc.m b/Sources/FitFileParserObjc/fit_crc.m index 883b49e..dba9661 100644 --- a/Sources/FitFileParserObjc/fit_crc.m +++ b/Sources/FitFileParserObjc/fit_crc.m @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// diff --git a/Sources/FitFileParserObjc/fit_product.h b/Sources/FitFileParserObjc/fit_product.h index 06c3c51..39243dc 100644 --- a/Sources/FitFileParserObjc/fit_product.h +++ b/Sources/FitFileParserObjc/fit_product.h @@ -10,8 +10,8 @@ // Copyright 2021 Garmin Canada Inc. //////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.115Release -// Tag = production/release/21.115.00-0-gfe0a7f8 +// Profile Version = 21.158.0Release +// Tag = production/release/21.158.0-0-gc9428aa // Product = EXAMPLE // Alignment = 4 bytes, padding disabled. //////////////////////////////////////////////////////////////////////////////// diff --git a/Sources/FitFileParserObjc/rzfit_objc_map.m b/Sources/FitFileParserObjc/rzfit_objc_map.m index 4658260..72b7c1b 100644 --- a/Sources/FitFileParserObjc/rzfit_objc_map.m +++ b/Sources/FitFileParserObjc/rzfit_objc_map.m @@ -474,14 +474,25 @@ case 46: return @"jumpmaster"; case 47: return @"boxing"; case 48: return @"floor_climbing"; + case 49: return @"baseball"; case 53: return @"diving"; case 62: return @"hiit"; case 64: return @"racket"; case 65: return @"wheelchair_push_walk"; case 66: return @"wheelchair_push_run"; case 67: return @"meditation"; + case 69: return @"disc_golf"; + case 71: return @"cricket"; + case 72: return @"rugby"; + case 73: return @"hockey"; + case 74: return @"lacrosse"; + case 75: return @"volleyball"; case 76: return @"water_tubing"; case 77: return @"wakesurfing"; + case 80: return @"mixed_martial_arts"; + case 82: return @"snorkeling"; + case 83: return @"dance"; + case 84: return @"jump_rope"; case 254: return @"all"; default: return [NSString stringWithFormat:@"sport_%u", (unsigned int)sport]; } @@ -662,6 +673,10 @@ case 86: return @"indoor_wheelchair_walk"; case 87: return @"indoor_wheelchair_run"; case 88: return @"indoor_hand_cycling"; + case 94: return @"squash"; + case 95: return @"badminton"; + case 96: return @"racquetball"; + case 97: return @"table_tennis"; case 110: return @"fly_canopy"; case 111: return @"fly_paraglide"; case 112: return @"fly_paramotor"; @@ -737,6 +752,7 @@ case 4: return @"position_waypoint"; case 5: return @"position_marked"; case 6: return @"off"; + case 13: return @"auto_select"; default: return [NSString stringWithFormat:@"autolap_trigger_%u", (unsigned int)autolap_trigger]; } } @@ -1260,6 +1276,8 @@ case 148: return @"ezon"; case 149: return @"laisi"; case 150: return @"myzone"; + case 151: return @"abawo"; + case 152: return @"bafang"; case 255: return @"development"; case 257: return @"healthandlife"; case 258: return @"lezyne"; @@ -1332,6 +1350,11 @@ case 325: return @"aero_sensor"; case 326: return @"nike"; case 327: return @"magicshine"; + case 328: return @"ictrainer"; + case 329: return @"absolute_cycling"; + case 330: return @"eo_swimbetter"; + case 331: return @"mywhoosh"; + case 332: return @"ravemen"; case 5759: return @"actigraphcorp"; default: return [NSString stringWithFormat:@"manufacturer_%u", (unsigned int)manufacturer]; } @@ -1356,6 +1379,7 @@ case 14: return @"fr225_single_byte_product_id"; case 15: return @"gen3_bsm_single_byte_product_id"; case 16: return @"gen3_bcm_single_byte_product_id"; + case 22: return @"hrm_fit_single_byte_product_id"; case 255: return @"OHR"; case 473: return @"fr301_china"; case 474: return @"fr301_japan"; @@ -1635,6 +1659,7 @@ case 3449: return @"marq_commander_asia"; case 3450: return @"marq_expedition_asia"; case 3451: return @"marq_athlete_asia"; + case 3461: return @"index_smart_scale_2"; case 3466: return @"instinct_solar"; case 3469: return @"fr45_asia"; case 3473: return @"vivoactive3_daimler"; @@ -1724,6 +1749,8 @@ case 4135: return @"tactix7"; case 4155: return @"instinct_crossover"; case 4169: return @"edge_explore2"; + case 4222: return @"descent_mk3"; + case 4223: return @"descent_mk3i"; case 4233: return @"approach_s70"; case 4257: return @"fr265_large"; case 4258: return @"fr265_small"; @@ -1750,11 +1777,23 @@ case 4374: return @"fenix7s_pro_solar"; case 4375: return @"fenix7_pro_solar"; case 4376: return @"fenix7x_pro_solar"; + case 4380: return @"lily2"; case 4394: return @"instinct_2x"; case 4426: return @"vivoactive5"; + case 4432: return @"fr165"; + case 4433: return @"fr165_music"; + case 4440: return @"edge_1050"; case 4442: return @"descent_t2"; + case 4446: return @"hrm_fit"; case 4472: return @"marq_gen2_commander"; + case 4477: return @"lily_athlete"; + case 4532: return @"fenix8_solar"; + case 4533: return @"fenix8_solar_large"; + case 4534: return @"fenix8_small"; + case 4536: return @"fenix8"; case 4556: return @"d2_mach1_pro"; + case 4575: return @"enduro3"; + case 4666: return @"fenix_e"; case 10007: return @"sdm4"; case 10014: return @"edge_remote"; case 20533: return @"tacx_training_app_win"; @@ -2319,8 +2358,12 @@ case 6: return @"qom"; case 7: return @"pr"; case 8: return @"goal"; - case 9: return @"rival"; + case 9: return @"carrot"; case 10: return @"club_leader"; + case 11: return @"rival"; + case 12: return @"last"; + case 13: return @"recent_best"; + case 14: return @"course_record"; default: return [NSString stringWithFormat:@"segment_leaderboard_type_%u", (unsigned int)segment_leaderboard_type]; } } @@ -4611,6 +4654,19 @@ } +static NSString * rzfit_objc_string_from_projectile_type( FIT_ENUM projectile_type ){ + switch(projectile_type){ + case 0: return @"arrow"; + case 1: return @"rifle_cartridge"; + case 2: return @"pistol_cartridge"; + case 3: return @"shotshell"; + case 4: return @"air_rifle_pellet"; + case 5: return @"other"; + default: return [NSString stringWithFormat:@"projectile_type_%u", (unsigned int)projectile_type]; + } +} + + static NSString * rzfit_objc_string_from_favero_product( FIT_UINT16 favero_product ){ switch(favero_product){ case 10: return @"assioma_uno"; @@ -4738,7 +4794,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_file_id(FIT_UINT16 field, FIT_IN { FIT_UINT32 manufacturer = fit_interp_string_value(interp, 1); if( manufacturer == 263 ){ // favero_electronics - return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 169, .fit_unit = 0, .fit_flag = 0 }; + return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 1 ){ // garmin return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 59, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 15 ){ // dynastream @@ -4791,7 +4847,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_slave_device(FIT_UINT16 field, F { FIT_UINT32 manufacturer = fit_interp_string_value(interp, 0); if( manufacturer == 263 ){ // favero_electronics - return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 169, .fit_unit = 0, .fit_flag = 0 }; + return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 1 ){ // garmin return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 59, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 15 ){ // dynastream @@ -4882,7 +4938,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_device_settings(FIT_UINT16 field case 94: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // number_of_screens case 95: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 97, .fit_unit = 0, .fit_flag = 0 }; // smart_notification_display_orientation case 134: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 22, .fit_unit = 0, .fit_flag = 0 }; // tap_interface - case 174: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 173, .fit_unit = 0, .fit_flag = 0 }; // tap_sensitivity + case 174: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 174, .fit_unit = 0, .fit_flag = 0 }; // tap_sensitivity default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -5144,11 +5200,11 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_dive_settings(FIT_UINT16 field, case 25: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 167, .fit_unit = 0, .fit_flag = 0 }; // ccr_high_setpoint_switch_mode case 26: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 17, .fit_flag = 0 }; // ccr_high_setpoint case 27: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // ccr_high_setpoint_depth - case 29: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 172, .fit_unit = 0, .fit_flag = 0 }; // gas_consumption_display + case 29: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 173, .fit_unit = 0, .fit_flag = 0 }; // gas_consumption_display case 30: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // up_key_enabled case 35: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 46, .fit_unit = 0, .fit_flag = 0 }; // dive_sounds case 36: return (FIT_FIELD_INFO){.scale = 10, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // last_stop_multiple - case 37: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 178, .fit_unit = 0, .fit_flag = 0 }; // no_fly_time_mode + case 37: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 179, .fit_unit = 0, .fit_flag = 0 }; // no_fly_time_mode default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -5407,6 +5463,8 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_session(FIT_UINT16 field, FIT_IN case 183: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // jump_count case 186: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 38, .fit_flag = 0 }; // avg_grit case 187: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 39, .fit_flag = 0 }; // avg_flow + case 192: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // workout_feel + case 193: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // workout_rpe case 194: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 17, .fit_flag = 0 }; // avg_spo2 case 195: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 17, .fit_flag = 0 }; // avg_stress case 197: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 40, .fit_flag = 0 }; // sdrr_hrv @@ -5771,7 +5829,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_event(FIT_UINT16 field, FIT_INTE } return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = FIT_TYPE_PENDING, .fit_unit = 0, .fit_flag = 0 }; } - case 21: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 174, .fit_unit = 0, .fit_flag = 0 }; // radar_threat_level_max + case 21: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 175, .fit_unit = 0, .fit_flag = 0 }; // radar_threat_level_max case 22: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // radar_threat_count case 23: return (FIT_FIELD_INFO){.scale = 10, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // radar_threat_avg_approach_speed case 24: return (FIT_FIELD_INFO){.scale = 10, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // radar_threat_max_approach_speed @@ -5802,7 +5860,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_device_info(FIT_UINT16 field, FI { FIT_UINT32 manufacturer = fit_interp_string_value(interp, 2); if( manufacturer == 263 ){ // favero_electronics - return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 169, .fit_unit = 0, .fit_flag = 0 }; + return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 1 ){ // garmin return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 59, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 15 ){ // dynastream @@ -5849,7 +5907,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_training_file(FIT_UINT16 field, { FIT_UINT32 manufacturer = fit_interp_string_value(interp, 1); if( manufacturer == 263 ){ // favero_electronics - return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 169, .fit_unit = 0, .fit_flag = 0 }; + return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 1 ){ // garmin return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 59, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 15 ){ // dynastream @@ -6132,7 +6190,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_jump(FIT_UINT16 field){ static FIT_FIELD_INFO rzfit_objc_field_info_for_split(FIT_UINT16 field){ switch( field ){ case 254: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 8, .fit_unit = 0, .fit_flag = 0 }; // message_index - case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; // split_type + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 171, .fit_unit = 0, .fit_flag = 0 }; // split_type case 1: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // total_elapsed_time case 2: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // total_timer_time case 3: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // total_distance @@ -6156,7 +6214,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_split(FIT_UINT16 field){ static FIT_FIELD_INFO rzfit_objc_field_info_for_split_summary(FIT_UINT16 field){ switch( field ){ case 254: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 8, .fit_unit = 0, .fit_flag = 0 }; // message_index - case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; // split_type + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 171, .fit_unit = 0, .fit_flag = 0 }; // split_type case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // num_splits case 4: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // total_timer_time case 5: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // total_distance @@ -6177,7 +6235,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_climb_pro(FIT_UINT16 field){ case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 20, .fit_flag = 0 }; // position_lat case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 20, .fit_flag = 0 }; // position_long - case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 171, .fit_unit = 0, .fit_flag = 0 }; // climb_pro_event + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 172, .fit_unit = 0, .fit_flag = 0 }; // climb_pro_event case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // climb_number case 4: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // climb_category case 5: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // current_dist @@ -6404,6 +6462,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_workout(FIT_UINT16 field){ case 11: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 31, .fit_unit = 0, .fit_flag = 0 }; // sub_sport case 14: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // pool_length case 15: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 18, .fit_unit = 0, .fit_flag = 0 }; // pool_length_unit + case 17: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // wkt_description default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -6597,7 +6656,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_schedule(FIT_UINT16 field, FIT_I { FIT_UINT32 manufacturer = fit_interp_string_value(interp, 0); if( manufacturer == 263 ){ // favero_electronics - return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 169, .fit_unit = 0, .fit_flag = 0 }; + return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 170, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 1 ){ // garmin return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 59, .fit_unit = 0, .fit_flag = 0 }; }else if( manufacturer == 15 ){ // dynastream @@ -6768,8 +6827,107 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_max_met_data(FIT_UINT16 field){ case 6: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 31, .fit_unit = 0, .fit_flag = 0 }; // sub_sport case 8: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 124, .fit_unit = 0, .fit_flag = 0 }; // max_met_category case 9: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // calibrated_data - case 12: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 176, .fit_unit = 0, .fit_flag = 0 }; // hr_source - case 13: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 175, .fit_unit = 0, .fit_flag = 0 }; // speed_source + case 12: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 177, .fit_unit = 0, .fit_flag = 0 }; // hr_source + case 13: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 176, .fit_unit = 0, .fit_flag = 0 }; // speed_source + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_body_battery_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 17, .fit_flag = 0 }; // level + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // charged + case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // uncharged + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_event(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // event_id + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_accelerometer_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // timestamp_ms + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // sampling_interval + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 53, .fit_flag = 0 }; // accel_x + case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 53, .fit_flag = 0 }; // accel_y + case 4: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 53, .fit_flag = 0 }; // accel_z + case 5: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // timestamp_32k + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_gyroscope_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // timestamp_ms + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 69, .fit_flag = 0 }; // sampling_interval + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 51, .fit_flag = 0 }; // gyro_x + case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 51, .fit_flag = 0 }; // gyro_y + case 4: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 51, .fit_flag = 0 }; // gyro_z + case 5: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 69, .fit_flag = 0 }; // timestamp_32k + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_step_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 1, .offset = 0, .fit_type = 0, .fit_unit = 5, .fit_flag = 0 }; // steps + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_spo2_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 17, .fit_flag = 0 }; // reading_spo2 + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // confidence + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_stress_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 1, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // stress_level + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_respiration_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 70, .fit_flag = 0 }; // respiration_rate + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_heart_rate_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // status + case 2: return (FIT_FIELD_INFO){.scale = 1, .offset = 0, .fit_type = 0, .fit_unit = 10, .fit_flag = 0 }; // heart_rate + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_configuration_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // data + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // data_size + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_hsa_wrist_temperature_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // processing_interval + case 1: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 71, .fit_flag = 0 }; // value default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -6887,6 +7045,17 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_dive_summary(FIT_UINT16 field){ default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } +static FIT_FIELD_INFO rzfit_objc_field_info_for_aad_accel_features(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // time + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // energy_total + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // zero_cross_cnt + case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // instance + case 4: return (FIT_FIELD_INFO){.scale = 25, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // time_above_threshold + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} static FIT_FIELD_INFO rzfit_objc_field_info_for_hrv(FIT_UINT16 field){ switch( field ){ case 0: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // time @@ -6910,7 +7079,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_hrv_status_summary(FIT_UINT16 fi case 3: return (FIT_FIELD_INFO){.scale = 128, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // baseline_low_upper case 4: return (FIT_FIELD_INFO){.scale = 128, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // baseline_balanced_lower case 5: return (FIT_FIELD_INFO){.scale = 128, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // baseline_balanced_upper - case 6: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 177, .fit_unit = 0, .fit_flag = 0 }; // status + case 6: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 178, .fit_unit = 0, .fit_flag = 0 }; // status default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -6921,10 +7090,42 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_hrv_value(FIT_UINT16 field){ default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } +static FIT_FIELD_INFO rzfit_objc_field_info_for_raw_bbi(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // timestamp_ms + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // data + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 2, .fit_flag = 0 }; // time + case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // quality + case 4: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // gap + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} static FIT_FIELD_INFO rzfit_objc_field_info_for_respiration_rate(FIT_UINT16 field){ switch( field ){ case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp - case 0: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 69, .fit_flag = 0 }; // respiration_rate + case 0: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 70, .fit_flag = 0 }; // respiration_rate + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_chrono_shot_session(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // min_speed + case 1: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // max_speed + case 2: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // avg_speed + case 3: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // shot_count + case 4: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 169, .fit_unit = 0, .fit_flag = 0 }; // projectile_type + case 5: return (FIT_FIELD_INFO){.scale = 10, .offset = 0, .fit_type = 0, .fit_unit = 72, .fit_flag = 0 }; // grain_weight + case 6: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // standard_deviation + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} +static FIT_FIELD_INFO rzfit_objc_field_info_for_chrono_shot_data(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // shot_speed + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // shot_num default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -6932,7 +7133,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_tank_update(FIT_UINT16 field){ switch( field ){ case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 96, .fit_unit = 0, .fit_flag = 0 }; // sensor - case 1: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 70, .fit_flag = 0 }; // pressure + case 1: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 73, .fit_flag = 0 }; // pressure default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -6940,9 +7141,9 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_tank_summary(FIT_UINT16 field){ switch( field ){ case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 1, .fit_flag = 1 }; // timestamp case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 96, .fit_unit = 0, .fit_flag = 0 }; // sensor - case 1: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 70, .fit_flag = 0 }; // start_pressure - case 2: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 70, .fit_flag = 0 }; // end_pressure - case 3: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 71, .fit_flag = 0 }; // volume_used + case 1: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 73, .fit_flag = 0 }; // start_pressure + case 2: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 73, .fit_flag = 0 }; // end_pressure + case 3: return (FIT_FIELD_INFO){.scale = 100, .offset = 0, .fit_type = 0, .fit_unit = 74, .fit_flag = 0 }; // volume_used default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -6965,6 +7166,16 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } +static FIT_FIELD_INFO rzfit_objc_field_info_for_skin_temp_overnight(FIT_UINT16 field){ + switch( field ){ + case 253: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // timestamp + case 0: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 7, .fit_unit = 0, .fit_flag = 1 }; // local_timestamp + case 1: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // average_deviation + case 2: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // average_7_day_deviation + case 4: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; // nightly_value + default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; + } +} #pragma mark - message field name conversion section static NSString * rzfit_objc_field_num_to_string_for_file_id( FIT_UINT8 field_num, FIT_INTERP_FIELD * interp ){ switch( field_num ){ @@ -7682,6 +7893,8 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 183: return @"jump_count"; case 186: return @"avg_grit"; case 187: return @"avg_flow"; + case 192: return @"workout_feel"; + case 193: return @"workout_rpe"; case 194: return @"avg_spo2"; case 195: return @"avg_stress"; case 197: return @"sdrr_hrv"; @@ -8730,6 +8943,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 11: return @"sub_sport"; case 14: return @"pool_length"; case 15: return @"pool_length_unit"; + case 17: return @"wkt_description"; default: return [NSString stringWithFormat:@"workout_field_num_%u", (unsigned int)field_num]; } } @@ -9123,6 +9337,116 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel } } +static NSString * rzfit_objc_field_num_to_string_for_hsa_body_battery_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"level"; + case 2: return @"charged"; + case 3: return @"uncharged"; + default: return [NSString stringWithFormat:@"hsa_body_battery_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_event( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"event_id"; + default: return [NSString stringWithFormat:@"hsa_event_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_accelerometer_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"timestamp_ms"; + case 1: return @"sampling_interval"; + case 2: return @"accel_x"; + case 3: return @"accel_y"; + case 4: return @"accel_z"; + case 5: return @"timestamp_32k"; + default: return [NSString stringWithFormat:@"hsa_accelerometer_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_gyroscope_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"timestamp_ms"; + case 1: return @"sampling_interval"; + case 2: return @"gyro_x"; + case 3: return @"gyro_y"; + case 4: return @"gyro_z"; + case 5: return @"timestamp_32k"; + default: return [NSString stringWithFormat:@"hsa_gyroscope_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_step_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"steps"; + default: return [NSString stringWithFormat:@"hsa_step_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_spo2_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"reading_spo2"; + case 2: return @"confidence"; + default: return [NSString stringWithFormat:@"hsa_spo2_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_stress_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"stress_level"; + default: return [NSString stringWithFormat:@"hsa_stress_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_respiration_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"respiration_rate"; + default: return [NSString stringWithFormat:@"hsa_respiration_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_heart_rate_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"status"; + case 2: return @"heart_rate"; + default: return [NSString stringWithFormat:@"hsa_heart_rate_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_configuration_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"data"; + case 1: return @"data_size"; + default: return [NSString stringWithFormat:@"hsa_configuration_data_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_hsa_wrist_temperature_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"processing_interval"; + case 1: return @"value"; + default: return [NSString stringWithFormat:@"hsa_wrist_temperature_data_field_num_%u", (unsigned int)field_num]; + } +} + static NSString * rzfit_objc_field_num_to_string_for_memo_glob( FIT_UINT8 field_num ){ switch( field_num ){ case 250: return @"part_index"; @@ -9246,6 +9570,18 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel } } +static NSString * rzfit_objc_field_num_to_string_for_aad_accel_features( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"time"; + case 1: return @"energy_total"; + case 2: return @"zero_cross_cnt"; + case 3: return @"instance"; + case 4: return @"time_above_threshold"; + default: return [NSString stringWithFormat:@"aad_accel_features_field_num_%u", (unsigned int)field_num]; + } +} + static NSString * rzfit_objc_field_num_to_string_for_hrv( FIT_UINT8 field_num ){ switch( field_num ){ case 0: return @"time"; @@ -9284,6 +9620,18 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel } } +static NSString * rzfit_objc_field_num_to_string_for_raw_bbi( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"timestamp_ms"; + case 1: return @"data"; + case 2: return @"time"; + case 3: return @"quality"; + case 4: return @"gap"; + default: return [NSString stringWithFormat:@"raw_bbi_field_num_%u", (unsigned int)field_num]; + } +} + static NSString * rzfit_objc_field_num_to_string_for_respiration_rate( FIT_UINT8 field_num ){ switch( field_num ){ case 253: return @"timestamp"; @@ -9292,6 +9640,29 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel } } +static NSString * rzfit_objc_field_num_to_string_for_chrono_shot_session( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"min_speed"; + case 1: return @"max_speed"; + case 2: return @"avg_speed"; + case 3: return @"shot_count"; + case 4: return @"projectile_type"; + case 5: return @"grain_weight"; + case 6: return @"standard_deviation"; + default: return [NSString stringWithFormat:@"chrono_shot_session_field_num_%u", (unsigned int)field_num]; + } +} + +static NSString * rzfit_objc_field_num_to_string_for_chrono_shot_data( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"shot_speed"; + case 1: return @"shot_num"; + default: return [NSString stringWithFormat:@"chrono_shot_data_field_num_%u", (unsigned int)field_num]; + } +} + static NSString * rzfit_objc_field_num_to_string_for_tank_update( FIT_UINT8 field_num ){ switch( field_num ){ case 253: return @"timestamp"; @@ -9332,6 +9703,17 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel } } +static NSString * rzfit_objc_field_num_to_string_for_skin_temp_overnight( FIT_UINT8 field_num ){ + switch( field_num ){ + case 253: return @"timestamp"; + case 0: return @"local_timestamp"; + case 1: return @"average_deviation"; + case 2: return @"average_7_day_deviation"; + case 4: return @"nightly_value"; + default: return [NSString stringWithFormat:@"skin_temp_overnight_field_num_%u", (unsigned int)field_num]; + } +} + #pragma mark - public section NSString * rzfit_objc_string_from_mesg_num( FIT_UINT16 mesg_num ){ switch(mesg_num){ @@ -9427,18 +9809,34 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 269: return @"spo2_data"; case 275: return @"sleep_level"; case 285: return @"jump"; + case 289: return @"aad_accel_features"; case 290: return @"beat_intervals"; case 297: return @"respiration_rate"; + case 302: return @"hsa_accelerometer_data"; + case 304: return @"hsa_step_data"; + case 305: return @"hsa_spo2_data"; + case 306: return @"hsa_stress_data"; + case 307: return @"hsa_respiration_data"; + case 308: return @"hsa_heart_rate_data"; case 312: return @"split"; case 313: return @"split_summary"; + case 314: return @"hsa_body_battery_data"; + case 315: return @"hsa_event"; case 317: return @"climb_pro"; case 319: return @"tank_update"; case 323: return @"tank_summary"; case 346: return @"sleep_assessment"; case 370: return @"hrv_status_summary"; case 371: return @"hrv_value"; + case 372: return @"raw_bbi"; case 375: return @"device_aux_battery_info"; + case 376: return @"hsa_gyroscope_data"; + case 387: return @"chrono_shot_session"; + case 388: return @"chrono_shot_data"; + case 389: return @"hsa_configuration_data"; case 393: return @"dive_apnea_alarm"; + case 398: return @"skin_temp_overnight"; + case 409: return @"hsa_wrist_temperature_data"; case 0xFF00: return @"mfg_range_min"; case 0xFFFE: return @"mfg_range_max"; default: return [NSString stringWithFormat:@"mesg_num_%u", (unsigned int)mesg_num]; @@ -9516,9 +9914,12 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 66: return @"100 * m"; case 67: return @"2 * cycles (steps)"; case 68: return @"mL/kg/min"; - case 69: return @"breaths/min"; - case 70: return @"bar"; - case 71: return @"L"; + case 69: return @"1/32768 s"; + case 70: return @"breaths/min"; + case 71: return @"degC"; + case 72: return @"gr"; + case 73: return @"bar"; + case 74: return @"L"; default: return [NSString stringWithFormat:@"FIT_UNIT_%u", (unsigned int)fit_unit]; } } @@ -9616,18 +10017,34 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 269: return rzfit_objc_field_num_to_string_for_spo2_data(field); case 275: return rzfit_objc_field_num_to_string_for_sleep_level(field); case 285: return rzfit_objc_field_num_to_string_for_jump(field); + case 289: return rzfit_objc_field_num_to_string_for_aad_accel_features(field); case 290: return rzfit_objc_field_num_to_string_for_beat_intervals(field); case 297: return rzfit_objc_field_num_to_string_for_respiration_rate(field); + case 302: return rzfit_objc_field_num_to_string_for_hsa_accelerometer_data(field); + case 304: return rzfit_objc_field_num_to_string_for_hsa_step_data(field); + case 305: return rzfit_objc_field_num_to_string_for_hsa_spo2_data(field); + case 306: return rzfit_objc_field_num_to_string_for_hsa_stress_data(field); + case 307: return rzfit_objc_field_num_to_string_for_hsa_respiration_data(field); + case 308: return rzfit_objc_field_num_to_string_for_hsa_heart_rate_data(field); case 312: return rzfit_objc_field_num_to_string_for_split(field); case 313: return rzfit_objc_field_num_to_string_for_split_summary(field); + case 314: return rzfit_objc_field_num_to_string_for_hsa_body_battery_data(field); + case 315: return rzfit_objc_field_num_to_string_for_hsa_event(field); case 317: return rzfit_objc_field_num_to_string_for_climb_pro(field); case 319: return rzfit_objc_field_num_to_string_for_tank_update(field); case 323: return rzfit_objc_field_num_to_string_for_tank_summary(field); case 346: return rzfit_objc_field_num_to_string_for_sleep_assessment(field); case 370: return rzfit_objc_field_num_to_string_for_hrv_status_summary(field); case 371: return rzfit_objc_field_num_to_string_for_hrv_value(field); + case 372: return rzfit_objc_field_num_to_string_for_raw_bbi(field); case 375: return rzfit_objc_field_num_to_string_for_device_aux_battery_info(field); + case 376: return rzfit_objc_field_num_to_string_for_hsa_gyroscope_data(field); + case 387: return rzfit_objc_field_num_to_string_for_chrono_shot_session(field); + case 388: return rzfit_objc_field_num_to_string_for_chrono_shot_data(field); + case 389: return rzfit_objc_field_num_to_string_for_hsa_configuration_data(field); case 393: return rzfit_objc_field_num_to_string_for_dive_apnea_alarm(field); + case 398: return rzfit_objc_field_num_to_string_for_skin_temp_overnight(field); + case 409: return rzfit_objc_field_num_to_string_for_hsa_wrist_temperature_data(field); default: return [NSString stringWithFormat:@"MESG_NUM_%u_FIELD_%u", (unsigned int)global_mesg_num, (unsigned int)field]; } } @@ -9802,16 +10219,17 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 166: return rzfit_objc_string_from_spo2_measurement_type( (FIT_ENUM) val); case 167: return rzfit_objc_string_from_ccr_setpoint_switch_mode( (FIT_ENUM) val); case 168: return rzfit_objc_string_from_dive_gas_mode( (FIT_ENUM) val); - case 169: return rzfit_objc_string_from_favero_product( (FIT_UINT16) val); - case 170: return rzfit_objc_string_from_split_type( (FIT_ENUM) val); - case 171: return rzfit_objc_string_from_climb_pro_event( (FIT_ENUM) val); - case 172: return rzfit_objc_string_from_gas_consumption_rate_type( (FIT_ENUM) val); - case 173: return rzfit_objc_string_from_tap_sensitivity( (FIT_ENUM) val); - case 174: return rzfit_objc_string_from_radar_threat_level_type( (FIT_ENUM) val); - case 175: return rzfit_objc_string_from_max_met_speed_source( (FIT_ENUM) val); - case 176: return rzfit_objc_string_from_max_met_heart_rate_source( (FIT_ENUM) val); - case 177: return rzfit_objc_string_from_hrv_status( (FIT_ENUM) val); - case 178: return rzfit_objc_string_from_no_fly_time_mode( (FIT_ENUM) val); + case 169: return rzfit_objc_string_from_projectile_type( (FIT_ENUM) val); + case 170: return rzfit_objc_string_from_favero_product( (FIT_UINT16) val); + case 171: return rzfit_objc_string_from_split_type( (FIT_ENUM) val); + case 172: return rzfit_objc_string_from_climb_pro_event( (FIT_ENUM) val); + case 173: return rzfit_objc_string_from_gas_consumption_rate_type( (FIT_ENUM) val); + case 174: return rzfit_objc_string_from_tap_sensitivity( (FIT_ENUM) val); + case 175: return rzfit_objc_string_from_radar_threat_level_type( (FIT_ENUM) val); + case 176: return rzfit_objc_string_from_max_met_speed_source( (FIT_ENUM) val); + case 177: return rzfit_objc_string_from_max_met_heart_rate_source( (FIT_ENUM) val); + case 178: return rzfit_objc_string_from_hrv_status( (FIT_ENUM) val); + case 179: return rzfit_objc_string_from_no_fly_time_mode( (FIT_ENUM) val); default: return [NSString stringWithFormat:@"FIT_TYPE_%u_VALUE_%u", (unsigned int)fit_type, (unsigned int)val]; } } @@ -9904,6 +10322,17 @@ FIT_FIELD_INFO rzfit_objc_field_info( FIT_UINT16 global_mesg_num, FIT_UINT16 fie case 132: return rzfit_objc_field_info_for_hr(field); case 227: return rzfit_objc_field_info_for_stress_level(field); case 229: return rzfit_objc_field_info_for_max_met_data(field); + case 314: return rzfit_objc_field_info_for_hsa_body_battery_data(field); + case 315: return rzfit_objc_field_info_for_hsa_event(field); + case 302: return rzfit_objc_field_info_for_hsa_accelerometer_data(field); + case 376: return rzfit_objc_field_info_for_hsa_gyroscope_data(field); + case 304: return rzfit_objc_field_info_for_hsa_step_data(field); + case 305: return rzfit_objc_field_info_for_hsa_spo2_data(field); + case 306: return rzfit_objc_field_info_for_hsa_stress_data(field); + case 307: return rzfit_objc_field_info_for_hsa_respiration_data(field); + case 308: return rzfit_objc_field_info_for_hsa_heart_rate_data(field); + case 389: return rzfit_objc_field_info_for_hsa_configuration_data(field); + case 409: return rzfit_objc_field_info_for_hsa_wrist_temperature_data(field); case 145: return rzfit_objc_field_info_for_memo_glob(field); case 275: return rzfit_objc_field_info_for_sleep_level(field); case 82: return rzfit_objc_field_info_for_ant_channel_id(field); @@ -9913,14 +10342,19 @@ FIT_FIELD_INFO rzfit_objc_field_info( FIT_UINT16 global_mesg_num, FIT_UINT16 fie case 201: return rzfit_objc_field_info_for_exd_data_field_configuration(field); case 202: return rzfit_objc_field_info_for_exd_data_concept_configuration(field); case 268: return rzfit_objc_field_info_for_dive_summary(field); + case 289: return rzfit_objc_field_info_for_aad_accel_features(field); case 78: return rzfit_objc_field_info_for_hrv(field); case 290: return rzfit_objc_field_info_for_beat_intervals(field); case 370: return rzfit_objc_field_info_for_hrv_status_summary(field); case 371: return rzfit_objc_field_info_for_hrv_value(field); + case 372: return rzfit_objc_field_info_for_raw_bbi(field); case 297: return rzfit_objc_field_info_for_respiration_rate(field); + case 387: return rzfit_objc_field_info_for_chrono_shot_session(field); + case 388: return rzfit_objc_field_info_for_chrono_shot_data(field); case 319: return rzfit_objc_field_info_for_tank_update(field); case 323: return rzfit_objc_field_info_for_tank_summary(field); case 346: return rzfit_objc_field_info_for_sleep_assessment(field); + case 398: return rzfit_objc_field_info_for_skin_temp_overnight(field); default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } \ No newline at end of file diff --git a/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h b/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h index 6fec8d5..0bb548d 100644 --- a/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h +++ b/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h @@ -99,18 +99,34 @@ typedef FIT_UINT16 FIT_MESG_NUM; #define FIT_MESG_NUM_SPO2_DATA ((FIT_MESG_NUM)269) #define FIT_MESG_NUM_SLEEP_LEVEL ((FIT_MESG_NUM)275) #define FIT_MESG_NUM_JUMP ((FIT_MESG_NUM)285) +#define FIT_MESG_NUM_AAD_ACCEL_FEATURES ((FIT_MESG_NUM)289) #define FIT_MESG_NUM_BEAT_INTERVALS ((FIT_MESG_NUM)290) #define FIT_MESG_NUM_RESPIRATION_RATE ((FIT_MESG_NUM)297) +#define FIT_MESG_NUM_HSA_ACCELEROMETER_DATA ((FIT_MESG_NUM)302) +#define FIT_MESG_NUM_HSA_STEP_DATA ((FIT_MESG_NUM)304) +#define FIT_MESG_NUM_HSA_SPO2_DATA ((FIT_MESG_NUM)305) +#define FIT_MESG_NUM_HSA_STRESS_DATA ((FIT_MESG_NUM)306) +#define FIT_MESG_NUM_HSA_RESPIRATION_DATA ((FIT_MESG_NUM)307) +#define FIT_MESG_NUM_HSA_HEART_RATE_DATA ((FIT_MESG_NUM)308) #define FIT_MESG_NUM_SPLIT ((FIT_MESG_NUM)312) #define FIT_MESG_NUM_SPLIT_SUMMARY ((FIT_MESG_NUM)313) +#define FIT_MESG_NUM_HSA_BODY_BATTERY_DATA ((FIT_MESG_NUM)314) +#define FIT_MESG_NUM_HSA_EVENT ((FIT_MESG_NUM)315) #define FIT_MESG_NUM_CLIMB_PRO ((FIT_MESG_NUM)317) #define FIT_MESG_NUM_TANK_UPDATE ((FIT_MESG_NUM)319) #define FIT_MESG_NUM_TANK_SUMMARY ((FIT_MESG_NUM)323) #define FIT_MESG_NUM_SLEEP_ASSESSMENT ((FIT_MESG_NUM)346) #define FIT_MESG_NUM_HRV_STATUS_SUMMARY ((FIT_MESG_NUM)370) #define FIT_MESG_NUM_HRV_VALUE ((FIT_MESG_NUM)371) +#define FIT_MESG_NUM_RAW_BBI ((FIT_MESG_NUM)372) #define FIT_MESG_NUM_DEVICE_AUX_BATTERY_INFO ((FIT_MESG_NUM)375) +#define FIT_MESG_NUM_HSA_GYROSCOPE_DATA ((FIT_MESG_NUM)376) +#define FIT_MESG_NUM_CHRONO_SHOT_SESSION ((FIT_MESG_NUM)387) +#define FIT_MESG_NUM_CHRONO_SHOT_DATA ((FIT_MESG_NUM)388) +#define FIT_MESG_NUM_HSA_CONFIGURATION_DATA ((FIT_MESG_NUM)389) #define FIT_MESG_NUM_DIVE_APNEA_ALARM ((FIT_MESG_NUM)393) +#define FIT_MESG_NUM_SKIN_TEMP_OVERNIGHT ((FIT_MESG_NUM)398) +#define FIT_MESG_NUM_HSA_WRIST_TEMPERATURE_DATA ((FIT_MESG_NUM)409) #define FIT_MESG_NUM_MFG_RANGE_MIN ((FIT_MESG_NUM)0xFF00) #define FIT_MESG_NUM_MFG_RANGE_MAX ((FIT_MESG_NUM)0xFFFE) diff --git a/python/Profile.xlsx b/python/Profile.xlsx index 67bf4d5..f62c7d2 100644 Binary files a/python/Profile.xlsx and b/python/Profile.xlsx differ diff --git a/python/fitsdkversion.txt b/python/fitsdkversion.txt index c28003d..0d564a3 100644 --- a/python/fitsdkversion.txt +++ b/python/fitsdkversion.txt @@ -1 +1 @@ -21.126 \ No newline at end of file +21.158.0 \ No newline at end of file