From 693d51386cb3d8fe56061a2ee465040382df5ab5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Nov 2026 21:25:05 +0000 Subject: [PATCH] Update profile.py from new SDK release and bump version (21.221) --- fitparse/profile.py | 247 +++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 2 +- uv.lock | 2 +- 3 files changed, 247 insertions(+), 4 deletions(-) diff --git a/fitparse/profile.py b/fitparse/profile.py index 32cbec4..d506de7 100644 --- a/fitparse/profile.py +++ b/fitparse/profile.py @@ -1,7 +1,7 @@ # ***************** BEGIN AUTOMATICALLY GENERATED FIT PROFILE ****************** # *************************** DO NOT EDIT THIS FILE **************************** -# *********** EXPORTED PROFILE FROM SDK VERSION 21.218 ON 2026-10-06 *********** -# ********* PARSED 216 TYPES (4761 VALUES), 125 MESSAGES (1572 FIELDS) ********* +# *********** EXPORTED PROFILE FROM SDK VERSION 21.221 ON 2026-11-03 *********** +# ********* PARSED 220 TYPES (4819 VALUES), 128 MESSAGES (1599 FIELDS) ********* # ***************************** APPLIED 2 PATCHES ****************************** from fitparse.records import ( @@ -1871,6 +1871,8 @@ 34: 'segment', # Read/write/erase. Multiple Files. Directory=Segments 35: 'segment_list', # Read/write/erase. Single File. Directory=Segments 40: 'exd_configuration', # Read/write/erase. Single File. Directory=Settings + 66: 'tsb_sonar_events', # Read/write/erase, multiple files. Directory=Events. Top-Side-Bouy (TSB). + 67: 'tsb_diver_config', # Read/write/erase, single file. Top-Side-Bouy (TSB). 0xF7: 'mfg_range_min', # 0xF7 - 0xFE reserved for manufacturer specific file types 0xFE: 'mfg_range_max', # 0xF7 - 0xFE reserved for manufacturer specific file types }, @@ -2501,7 +2503,12 @@ 4954: 'fenix9_pro_51mm', 4955: 'fenix9_pro_solar_47mm', 4956: 'fenix9_pro_solar_51mm', + 4962: 'edge_1060', + 4970: 'edge_explore3', + 4972: 'edge_explore3_plus', + 5000: 'marq3', 5019: 'cirqa_smart_band', + 5026: 'descent_x10', 5056: 'd2_mach2_pro', 5133: 'fenix9_43mm', 5134: 'fenix9', # 47mm & 57mm @@ -3414,6 +3421,10 @@ 352: 'tymewear', 353: 'exposure_lights', 354: 'forto_cycling', + 356: 'fair_weather_athletics', + 357: 'hatch_factory', + 358: 'torqano', + 359: 'rockbros', 5759: 'actigraphcorp', }, ), @@ -3566,6 +3577,9 @@ 319: 'tank_update', 323: 'tank_summary', 346: 'sleep_assessment', + 364: 'tsb_sonar_message_event', # Message type for individual sonar event + 365: 'tsb_settings', # Message type for storing Top-Side-Bouy (TSB) Settings + 366: 'tsb_diver_config', # Message type for storing saved Top-Side-Bouy (TSB) Diver Configuration 370: 'hrv_status_summary', 371: 'hrv_value', 372: 'raw_bbi', @@ -4689,6 +4703,74 @@ 4: 'rem', }, ), + 'sonar_heading': FieldType( + name='sonar_heading', + base_type=BASE_TYPES[0x00], # enum + values={ + 0: 'north', + 1: 'north_east', + 2: 'east', + 3: 'south_east', + 4: 'south', + 5: 'south_west', + 6: 'west', + 7: 'north_west', + }, + ), + 'sonar_message_source': FieldType( + name='sonar_message_source', + base_type=BASE_TYPES[0x00], # enum + values={ + 0: 'dive_app', + 1: 'watch', + }, + ), + 'sonar_message_type': FieldType( + name='sonar_message_type', + base_type=BASE_TYPES[0x00], # enum + values={ + 0: 'emergency_message', + 1: 'canned_message', + }, + ), + 'sonar_packet_id': FieldType( + name='sonar_packet_id', + base_type=BASE_TYPES[0x00], # enum + values={ + 0: 'xx_ant_id', + 1: 't1_pressure_depth', # T1 tank pod messages [1-7] + 2: 't1_msg_rly_from_tsb', + 3: 'rsvd_3', + 4: 't1_info_resp', + 5: 't1_nav_rly_from_tsb', + 6: 'rsvd_6', + 7: 'rsvd_7', + 8: 'rsvd_8', # T1 tank pod messages when watch Tx is available and for future expansion [8-15] + 9: 'rsvd_9', + 10: 't1_pressure_heart_resp_rate', + 11: 'rsvd_11', + 12: 't1_ack_relay', + 13: 'rsvd_13', + 14: 'rsvd_14', + 15: 'rsvd_15', + 16: 'tsb_emer_alert', # Top Side Box Messages [16-25] + 17: 'tsb_canned_msg', + 18: 'tsb_info_req', + 19: 'tsb_nav', + 21: 'rsvd_21', + 22: 'tsb_ack', + 23: 'rsvd_23', + 24: 'rsvd_24', + 25: 'rsvd_25', + 26: 'wch_emer_alert', # Watch message [26-31] + 27: 'wch_canned_msg', + 28: 'wch_heart_resp_rate', + 29: 'wch_ack', + 30: 'rsvd_30', + 31: 'rsvd_31', + 32: 'gen_debug', # Used for logging general debug messages + }, + ), 'source_type': FieldType( name='source_type', base_type=BASE_TYPES[0x00], # enum @@ -15543,6 +15625,167 @@ ), }, ), + 364: MessageType( # Top-Side-Bouy (TSB) Sonar Event + name='tsb_sonar_message_event', + mesg_num=364, + fields={ + 0: Field( + name='sonar_packet_id', + type=FIELD_TYPES['sonar_packet_id'], + def_num=0, + ), + 21: Field( # Standard Deviation of Diver's Location + name='diver_location_accuracy', + type=BASE_TYPES[0x84], # uint16 + def_num=21, + scale=1, + units='degrees', + ), + 22: Field( + name='message_type', + type=FIELD_TYPES['sonar_message_type'], + def_num=22, + ), + 23: Field( + name='message_source', + type=FIELD_TYPES['sonar_message_source'], + def_num=23, + ), + }, + ), + 365: MessageType( # Top-Side-Bouy (TSB) Settings + name='tsb_settings', + mesg_num=365, + fields={ + 0: Field( + name='tx_enable', + type=FIELD_TYPES['bool'], + def_num=0, + ), + 1: Field( + name='proportional_gain', + type=BASE_TYPES[0x88], # float32 + def_num=1, + units='dB', + ), + 2: Field( + name='integral_gain', + type=BASE_TYPES[0x88], # float32 + def_num=2, + units='dB', + ), + 3: Field( + name='fixed_gain', + type=BASE_TYPES[0x02], # uint8 + def_num=3, + units='dB', + ), + 4: Field( + name='rssi_setpoint', + type=BASE_TYPES[0x86], # uint32 + def_num=4, + ), + 5: Field( + name='plt_thresh_mult', + type=BASE_TYPES[0x88], # float32 + def_num=5, + ), + 6: Field( + name='plt_thresh', + type=BASE_TYPES[0x86], # uint32 + def_num=6, + ), + 7: Field( + name='transducer_spacing', + type=BASE_TYPES[0x88], # float32 + def_num=7, + units='m', + ), + 8: Field( + name='calib_accel', + type=BASE_TYPES[0x88], # float32 + def_num=8, + ), + 9: Field( + name='calib_gyro', + type=BASE_TYPES[0x88], # float32 + def_num=9, + ), + 10: Field( + name='calib_mag', + type=BASE_TYPES[0x88], # float32 + def_num=10, + ), + 11: Field( + name='calib_mag_soft_x', + type=BASE_TYPES[0x88], # float32 + def_num=11, + ), + 12: Field( + name='calib_mag_soft_y', + type=BASE_TYPES[0x88], # float32 + def_num=12, + ), + 13: Field( + name='calib_mag_soft_z', + type=BASE_TYPES[0x88], # float32 + def_num=13, + ), + 14: Field( + name='max_tx_duty_cycle', + type=BASE_TYPES[0x02], # uint8 + def_num=14, + ), + 15: Field( + name='tx_chan', + type=BASE_TYPES[0x02], # uint8 + def_num=15, + ), + 16: Field( + name='search_gain', + type=BASE_TYPES[0x02], # uint8 + def_num=16, + units='dB', + ), + }, + ), + 366: MessageType( # Top-Side-Bouy (TSB) Diver Configuration + name='tsb_diver_config', + mesg_num=366, + fields={ + 0: Field( + name='ant_id', + type=BASE_TYPES[0x8C], # uint32z + def_num=0, + ), + 1: Field( + name='diver_name', + type=BASE_TYPES[0x07], # string + def_num=1, + ), + 2: Field( + name='t1_tankpod_sw_ver', + type=BASE_TYPES[0x84], # uint16 + def_num=2, + scale=100, + ), + 3: Field( + name='location_enabled', + type=FIELD_TYPES['bool'], + def_num=3, + ), + 4: Field( + name='messaging_enabled', + type=FIELD_TYPES['bool'], + def_num=4, + ), + 5: Field( # ANT ID of the watch that claimed ownership of the diver's T1 (usually the diver's watch) + name='t1_owner_ant_id', + type=BASE_TYPES[0x8C], # uint32z + def_num=5, + ), + }, + ), 370: MessageType( name='hrv_status_summary', mesg_num=370, diff --git a/pyproject.toml b/pyproject.toml index 7fa4c0f..ccda597 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "python-fitparse" -version = "2.7.0" +version = "2.8.0" description = "Python library to parse ANT/Garmin .FIT files" authors = [ {name = "David Cooper", email = "dave@kupesoft.com"}, diff --git a/uv.lock b/uv.lock index 7cda249..3dd8e85 100644 --- a/uv.lock +++ b/uv.lock @@ -718,7 +718,7 @@ wheels = [ [[package]] name = "python-fitparse" -version = "2.7.0" +version = "2.8.0" source = { editable = "." } [package.optional-dependencies]