diff --git a/Sources/FitFileParser/rzfit_swift_map.swift b/Sources/FitFileParser/rzfit_swift_map.swift index 56e6bd3..4157940 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.115" + public static let sdkVersion = "21.126" } //MARK: - Module Entry Point Functions @@ -926,6 +926,8 @@ func rzfit_swift_unit_for_field( mesg_num : FIT_UINT16, field : String ) -> Stri case "clip_start": return "ms" case "clip_end": return "ms" case "hang_time": return "s" + case "avg_vert_speed": return "m/s" + case "start_elevation": return "m" case "current_dist": return "m" case "segment_time": return "s" case "leader_time": return "s" @@ -1306,6 +1308,7 @@ public func rzfit_swift_string_to_mesg_num(_ input : String) -> FIT_UINT16 case "beat_intervals": return 290; case "respiration_rate": return 297; case "split": return 312; + case "split_summary": return 313; case "climb_pro": return 317; case "tank_update": return 319; case "tank_summary": return 323; @@ -1418,6 +1421,7 @@ public func rzfit_swift_string_from_mesg_num(_ input : FIT_UINT16) -> String case 290: return "beat_intervals" case 297: return "respiration_rate" case 312: return "split" + case 313: return "split_summary" case 317: return "climb_pro" case 319: return "tank_update" case 323: return "tank_summary" @@ -1533,6 +1537,7 @@ public extension FitMessageType { static let beat_intervals : FitMessageType = 290 static let respiration_rate : FitMessageType = 297 static let split : FitMessageType = 312 + static let split_summary : FitMessageType = 313 static let climb_pro : FitMessageType = 317 static let tank_update : FitMessageType = 319 static let tank_summary : FitMessageType = 323 @@ -2024,6 +2029,9 @@ fileprivate func rzfit_swift_string_from_sport(_ input : FIT_ENUM) -> String 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 76: return "water_tubing" case 77: return "wakesurfing" case 254: return "all" @@ -2203,6 +2211,9 @@ fileprivate func rzfit_swift_string_from_sub_sport(_ input : FIT_ENUM) -> String case 75: return "tabata" case 84: return "pickleball" case 85: return "padel" + case 86: return "indoor_wheelchair_walk" + case 87: return "indoor_wheelchair_run" + case 88: return "indoor_hand_cycling" case 110: return "fly_canopy" case 111: return "fly_paraglide" case 112: return "fly_paramotor" @@ -2799,6 +2810,8 @@ fileprivate func rzfit_swift_string_from_manufacturer(_ input : FIT_UINT16) -> S case 146: return "blackbird" case 147: return "meilan_byte" case 148: return "ezon" + case 149: return "laisi" + case 150: return "myzone" case 255: return "development" case 257: return "healthandlife" case 258: return "lezyne" @@ -2868,6 +2881,9 @@ fileprivate func rzfit_swift_string_from_manufacturer(_ input : FIT_UINT16) -> S case 322: return "shanyue" case 323: return "spinning_mda" case 324: return "hilldating" + case 325: return "aero_sensor" + case 326: return "nike" + case 327: return "magicshine" case 5759: return "actigraphcorp" default: return "manufacturer_\(input)" } @@ -3206,6 +3222,7 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 3739: return "marq_golfer" case 3740: return "venu_daimler" case 3794: return "fr745_asia" + case 3808: return "varia_rct715" case 3809: return "lily_asia" case 3812: return "edge_1030_plus_asia" case 3813: return "edge_130_plus_asia" @@ -3262,6 +3279,8 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 4233: return "approach_s70" case 4257: return "fr265_large" case 4258: return "fr265_small" + case 4260: return "venu3" + case 4261: return "venu3s" case 4265: return "tacx_neo_smart" case 4266: return "tacx_neo2_smart" case 4267: return "tacx_neo2_t_smart" @@ -3280,9 +3299,14 @@ fileprivate func rzfit_swift_string_from_garmin_product(_ input : FIT_UINT16) -> case 4314: return "epix_gen2_pro_51" case 4315: return "fr965" case 4341: return "enduro2" + case 4374: return "fenix7s_pro_solar" case 4375: return "fenix7_pro_solar" + case 4376: return "fenix7x_pro_solar" case 4394: return "instinct_2x" + case 4426: return "vivoactive5" case 4442: return "descent_t2" + case 4472: return "marq_gen2_commander" + case 4556: return "d2_mach1_pro" case 10007: return "sdm4" case 10014: return "edge_remote" case 20533: return "tacx_training_app_win" @@ -7640,14 +7664,47 @@ fileprivate func rzfit_swift_field_num_to_string_for_jump( field_num : FIT_UINT1 } fileprivate func rzfit_swift_field_num_to_string_for_split( field_num : FIT_UINT16 ) -> String { switch field_num { + case 254: return "message_index" case 0: return "split_type" case 1: return "total_elapsed_time" case 2: return "total_timer_time" case 3: return "total_distance" + case 4: return "avg_speed" case 9: return "start_time" + case 13: return "total_ascent" + case 14: return "total_descent" + case 21: return "start_position_lat" + case 22: return "start_position_long" + case 23: return "end_position_lat" + case 24: return "end_position_long" + case 25: return "max_speed" + case 26: return "avg_vert_speed" + case 27: return "end_time" + case 28: return "total_calories" + case 74: return "start_elevation" + case 110: return "total_moving_time" default: return "split_field_num_\(field_num)" } } +fileprivate func rzfit_swift_field_num_to_string_for_split_summary( field_num : FIT_UINT16 ) -> String { + switch field_num { + case 254: return "message_index" + case 0: return "split_type" + case 3: return "num_splits" + case 4: return "total_timer_time" + case 5: return "total_distance" + case 6: return "avg_speed" + case 7: return "max_speed" + case 8: return "total_ascent" + case 9: return "total_descent" + case 10: return "avg_heart_rate" + case 11: return "max_heart_rate" + case 12: return "avg_vert_speed" + case 13: return "total_calories" + case 77: return "total_moving_time" + default: return "split_summary_field_num_\(field_num)" + } +} fileprivate func rzfit_swift_field_num_to_string_for_climb_pro( field_num : FIT_UINT16 ) -> String { switch field_num { case 253: return "timestamp" @@ -8516,6 +8573,7 @@ func rzfit_swift_field_num_to_string( mesg_num : FIT_UINT16, field_num : FIT_UIN 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 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 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) diff --git a/Sources/FitFileParser/rzfit_swift_reverse_map.swift b/Sources/FitFileParser/rzfit_swift_reverse_map.swift index 0683356..f860ac7 100644 --- a/Sources/FitFileParser/rzfit_swift_reverse_map.swift +++ b/Sources/FitFileParser/rzfit_swift_reverse_map.swift @@ -198,6 +198,8 @@ public func rzfit_swift_reverse_value(mesg: String, field: String, value: String return rzfit_swift_reverse_value_respiration_rate(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 "climb_pro": // 317 return rzfit_swift_reverse_value_climb_pro(field: field, value: value ) case "tank_update": // 319 @@ -3195,6 +3197,8 @@ fileprivate func rzfit_swift_reverse_value_jump(field: String, value: String) -> } fileprivate func rzfit_swift_reverse_value_split(field: String, value: String) -> RzFitSwiftValue { switch field { + case "message_index": // message_index + return rzfit_swift_reverse_value_message_index(value: value) case "split_type": // split_type return rzfit_swift_reverse_value_split_type(value: value) case "total_elapsed_time": // uint32 @@ -3206,10 +3210,96 @@ fileprivate func rzfit_swift_reverse_value_split(field: String, value: String) - case "total_distance": // 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 "start_time": // date_time guard let dbl : Double = Double(value) else { return .unknown } let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) return .date(dat) + case "total_ascent": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_descent": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "start_position_lat": // sint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "start_position_long": // sint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "end_position_lat": // sint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "end_position_long": // sint32 + 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_vert_speed": // sint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "end_time": // date_time + guard let dbl : Double = Double(value) else { return .unknown } + let dat : Date = Date(timeIntervalSinceReferenceDate: dbl-347241600.0 ) + return .date(dat) + case "total_calories": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "start_elevation": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_moving_time": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + default: + return .unknown + } +} +fileprivate func rzfit_swift_reverse_value_split_summary(field: String, value: String) -> RzFitSwiftValue { + switch field { + case "message_index": // message_index + return rzfit_swift_reverse_value_message_index(value: value) + case "split_type": // split_type + return rzfit_swift_reverse_value_split_type(value: value) + case "num_splits": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_timer_time": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_distance": // 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 "max_speed": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_ascent": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_descent": // uint16 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "avg_heart_rate": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "max_heart_rate": // uint8 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "avg_vert_speed": // sint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_calories": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) + case "total_moving_time": // uint32 + guard let dbl : Double = Double(value) else { return .unknown } + return .value(dbl) default: return .unknown } @@ -4993,6 +5083,8 @@ fileprivate func rzfit_swift_reverse_value_mesg_num(value : String) -> RzFitSwif case "respiration_rate": return .string("297") case "312": return .string("split") case "split": return .string("312") + case "313": return .string("split_summary") + case "split_summary": return .string("313") case "317": return .string("climb_pro") case "climb_pro": return .string("317") case "319": return .string("tank_update") @@ -5768,6 +5860,12 @@ fileprivate func rzfit_swift_reverse_value_sport(value : String) -> RzFitSwiftVa case "hiit": return .string("62") case "64": return .string("racket") case "racket": return .string("64") + case "65": return .string("wheelchair_push_walk") + case "wheelchair_push_walk": return .string("65") + case "66": return .string("wheelchair_push_run") + case "wheelchair_push_run": return .string("66") + case "67": return .string("meditation") + case "meditation": return .string("67") case "76": return .string("water_tubing") case "water_tubing": return .string("76") case "77": return .string("wakesurfing") @@ -6070,6 +6168,12 @@ fileprivate func rzfit_swift_reverse_value_sub_sport(value : String) -> RzFitSwi case "pickleball": return .string("84") case "85": return .string("padel") case "padel": return .string("85") + case "86": return .string("indoor_wheelchair_walk") + case "indoor_wheelchair_walk": return .string("86") + case "87": return .string("indoor_wheelchair_run") + case "indoor_wheelchair_run": return .string("87") + case "88": return .string("indoor_hand_cycling") + case "indoor_hand_cycling": return .string("88") case "110": return .string("fly_canopy") case "fly_canopy": return .string("110") case "111": return .string("fly_paraglide") @@ -7073,6 +7177,10 @@ fileprivate func rzfit_swift_reverse_value_manufacturer(value : String) -> RzFit case "meilan_byte": return .string("147") case "148": return .string("ezon") case "ezon": return .string("148") + case "149": return .string("laisi") + case "laisi": return .string("149") + case "150": return .string("myzone") + case "myzone": return .string("150") case "255": return .string("development") case "development": return .string("255") case "257": return .string("healthandlife") @@ -7211,6 +7319,12 @@ fileprivate func rzfit_swift_reverse_value_manufacturer(value : String) -> RzFit case "spinning_mda": return .string("323") case "324": return .string("hilldating") case "hilldating": return .string("324") + case "325": return .string("aero_sensor") + case "aero_sensor": return .string("325") + case "326": return .string("nike") + case "nike": return .string("326") + case "327": return .string("magicshine") + case "magicshine": return .string("327") case "5759": return .string("actigraphcorp") case "actigraphcorp": return .string("5759") default: return .unknown @@ -7880,6 +7994,8 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "venu_daimler": return .string("3740") case "3794": return .string("fr745_asia") case "fr745_asia": return .string("3794") + case "3808": return .string("varia_rct715") + case "varia_rct715": return .string("3808") case "3809": return .string("lily_asia") case "lily_asia": return .string("3809") case "3812": return .string("edge_1030_plus_asia") @@ -7992,6 +8108,10 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "fr265_large": return .string("4257") case "4258": return .string("fr265_small") case "fr265_small": return .string("4258") + case "4260": return .string("venu3") + case "venu3": return .string("4260") + case "4261": return .string("venu3s") + case "venu3s": return .string("4261") case "4265": return .string("tacx_neo_smart") case "tacx_neo_smart": return .string("4265") case "4266": return .string("tacx_neo2_smart") @@ -8028,12 +8148,22 @@ fileprivate func rzfit_swift_reverse_value_garmin_product(value : String) -> RzF case "fr965": return .string("4315") case "4341": return .string("enduro2") case "enduro2": return .string("4341") + case "4374": return .string("fenix7s_pro_solar") + case "fenix7s_pro_solar": return .string("4374") case "4375": return .string("fenix7_pro_solar") case "fenix7_pro_solar": return .string("4375") + case "4376": return .string("fenix7x_pro_solar") + case "fenix7x_pro_solar": return .string("4376") case "4394": return .string("instinct_2x") case "instinct_2x": return .string("4394") + case "4426": return .string("vivoactive5") + case "vivoactive5": return .string("4426") case "4442": return .string("descent_t2") case "descent_t2": return .string("4442") + case "4472": return .string("marq_gen2_commander") + case "marq_gen2_commander": return .string("4472") + case "4556": return .string("d2_mach1_pro") + case "d2_mach1_pro": return .string("4556") case "10007": return .string("sdm4") case "sdm4": return .string("10007") case "10014": return .string("edge_remote") diff --git a/Sources/FitFileParserObjc/rzfit_objc_map.m b/Sources/FitFileParserObjc/rzfit_objc_map.m index 67ec71a..4658260 100644 --- a/Sources/FitFileParserObjc/rzfit_objc_map.m +++ b/Sources/FitFileParserObjc/rzfit_objc_map.m @@ -477,6 +477,9 @@ 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 76: return @"water_tubing"; case 77: return @"wakesurfing"; case 254: return @"all"; @@ -656,6 +659,9 @@ case 75: return @"tabata"; case 84: return @"pickleball"; case 85: return @"padel"; + case 86: return @"indoor_wheelchair_walk"; + case 87: return @"indoor_wheelchair_run"; + case 88: return @"indoor_hand_cycling"; case 110: return @"fly_canopy"; case 111: return @"fly_paraglide"; case 112: return @"fly_paramotor"; @@ -1252,6 +1258,8 @@ case 146: return @"blackbird"; case 147: return @"meilan_byte"; case 148: return @"ezon"; + case 149: return @"laisi"; + case 150: return @"myzone"; case 255: return @"development"; case 257: return @"healthandlife"; case 258: return @"lezyne"; @@ -1321,6 +1329,9 @@ case 322: return @"shanyue"; case 323: return @"spinning_mda"; case 324: return @"hilldating"; + case 325: return @"aero_sensor"; + case 326: return @"nike"; + case 327: return @"magicshine"; case 5759: return @"actigraphcorp"; default: return [NSString stringWithFormat:@"manufacturer_%u", (unsigned int)manufacturer]; } @@ -1659,6 +1670,7 @@ case 3739: return @"marq_golfer"; case 3740: return @"venu_daimler"; case 3794: return @"fr745_asia"; + case 3808: return @"varia_rct715"; case 3809: return @"lily_asia"; case 3812: return @"edge_1030_plus_asia"; case 3813: return @"edge_130_plus_asia"; @@ -1715,6 +1727,8 @@ case 4233: return @"approach_s70"; case 4257: return @"fr265_large"; case 4258: return @"fr265_small"; + case 4260: return @"venu3"; + case 4261: return @"venu3s"; case 4265: return @"tacx_neo_smart"; case 4266: return @"tacx_neo2_smart"; case 4267: return @"tacx_neo2_t_smart"; @@ -1733,9 +1747,14 @@ case 4314: return @"epix_gen2_pro_51"; case 4315: return @"fr965"; case 4341: return @"enduro2"; + case 4374: return @"fenix7s_pro_solar"; case 4375: return @"fenix7_pro_solar"; + case 4376: return @"fenix7x_pro_solar"; case 4394: return @"instinct_2x"; + case 4426: return @"vivoactive5"; case 4442: return @"descent_t2"; + case 4472: return @"marq_gen2_commander"; + case 4556: return @"d2_mach1_pro"; case 10007: return @"sdm4"; case 10014: return @"edge_remote"; case 20533: return @"tacx_training_app_win"; @@ -6112,11 +6131,44 @@ 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 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 + case 4: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // avg_speed case 9: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // start_time + case 13: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // total_ascent + case 14: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // total_descent + case 21: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 20, .fit_flag = 0 }; // start_position_lat + case 22: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 20, .fit_flag = 0 }; // start_position_long + case 23: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 20, .fit_flag = 0 }; // end_position_lat + case 24: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 20, .fit_flag = 0 }; // end_position_long + case 25: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // max_speed + case 26: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // avg_vert_speed + case 27: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 6, .fit_unit = 0, .fit_flag = 1 }; // end_time + case 28: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 24, .fit_flag = 0 }; // total_calories + case 74: return (FIT_FIELD_INFO){.scale = 5, .offset = 500, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // start_elevation + case 110: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // total_moving_time + 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_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 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 + case 6: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // avg_speed + case 7: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // max_speed + case 8: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // total_ascent + case 9: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 8, .fit_flag = 0 }; // total_descent + case 10: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 10, .fit_flag = 0 }; // avg_heart_rate + case 11: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 10, .fit_flag = 0 }; // max_heart_rate + case 12: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 13, .fit_flag = 0 }; // avg_vert_speed + case 13: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 24, .fit_flag = 0 }; // total_calories + case 77: return (FIT_FIELD_INFO){.scale = 1000, .offset = 0, .fit_type = 0, .fit_unit = 1, .fit_flag = 0 }; // total_moving_time default: return (FIT_FIELD_INFO){.scale = 0, .offset = 0, .fit_type = 0, .fit_unit = 0, .fit_flag = 0 }; } } @@ -8392,15 +8444,49 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel static NSString * rzfit_objc_field_num_to_string_for_split( FIT_UINT8 field_num ){ switch( field_num ){ + case 254: return @"message_index"; case 0: return @"split_type"; case 1: return @"total_elapsed_time"; case 2: return @"total_timer_time"; case 3: return @"total_distance"; + case 4: return @"avg_speed"; case 9: return @"start_time"; + case 13: return @"total_ascent"; + case 14: return @"total_descent"; + case 21: return @"start_position_lat"; + case 22: return @"start_position_long"; + case 23: return @"end_position_lat"; + case 24: return @"end_position_long"; + case 25: return @"max_speed"; + case 26: return @"avg_vert_speed"; + case 27: return @"end_time"; + case 28: return @"total_calories"; + case 74: return @"start_elevation"; + case 110: return @"total_moving_time"; default: return [NSString stringWithFormat:@"split_field_num_%u", (unsigned int)field_num]; } } +static NSString * rzfit_objc_field_num_to_string_for_split_summary( FIT_UINT8 field_num ){ + switch( field_num ){ + case 254: return @"message_index"; + case 0: return @"split_type"; + case 3: return @"num_splits"; + case 4: return @"total_timer_time"; + case 5: return @"total_distance"; + case 6: return @"avg_speed"; + case 7: return @"max_speed"; + case 8: return @"total_ascent"; + case 9: return @"total_descent"; + case 10: return @"avg_heart_rate"; + case 11: return @"max_heart_rate"; + case 12: return @"avg_vert_speed"; + case 13: return @"total_calories"; + case 77: return @"total_moving_time"; + default: return [NSString stringWithFormat:@"split_summary_field_num_%u", (unsigned int)field_num]; + } +} + static NSString * rzfit_objc_field_num_to_string_for_climb_pro( FIT_UINT8 field_num ){ switch( field_num ){ case 253: return @"timestamp"; @@ -9344,6 +9430,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel case 290: return @"beat_intervals"; case 297: return @"respiration_rate"; case 312: return @"split"; + case 313: return @"split_summary"; case 317: return @"climb_pro"; case 319: return @"tank_update"; case 323: return @"tank_summary"; @@ -9532,6 +9619,7 @@ static FIT_FIELD_INFO rzfit_objc_field_info_for_sleep_assessment(FIT_UINT16 fiel 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 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 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); @@ -9790,6 +9878,7 @@ FIT_FIELD_INFO rzfit_objc_field_info( FIT_UINT16 global_mesg_num, FIT_UINT16 fie case 225: return rzfit_objc_field_info_for_set(field); case 285: return rzfit_objc_field_info_for_jump(field); case 312: return rzfit_objc_field_info_for_split(field); + case 313: return rzfit_objc_field_info_for_split_summary(field); case 317: return rzfit_objc_field_info_for_climb_pro(field); case 206: return rzfit_objc_field_info_for_field_description(field); case 207: return rzfit_objc_field_info_for_developer_data_id(field); diff --git a/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h b/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h index 2c3f1cf..6fec8d5 100644 --- a/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h +++ b/Sources/FitFileParserObjc/rzfit_objc_reference_mesg.h @@ -102,6 +102,7 @@ typedef FIT_UINT16 FIT_MESG_NUM; #define FIT_MESG_NUM_BEAT_INTERVALS ((FIT_MESG_NUM)290) #define FIT_MESG_NUM_RESPIRATION_RATE ((FIT_MESG_NUM)297) #define FIT_MESG_NUM_SPLIT ((FIT_MESG_NUM)312) +#define FIT_MESG_NUM_SPLIT_SUMMARY ((FIT_MESG_NUM)313) #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) diff --git a/python/Profile.xlsx b/python/Profile.xlsx index 3587b30..67bf4d5 100644 Binary files a/python/Profile.xlsx and b/python/Profile.xlsx differ diff --git a/python/fitsdkversion.txt b/python/fitsdkversion.txt index 2a00d71..c28003d 100644 --- a/python/fitsdkversion.txt +++ b/python/fitsdkversion.txt @@ -1 +1 @@ -21.115 \ No newline at end of file +21.126 \ No newline at end of file