Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
247 changes: 245 additions & 2 deletions fitparse/profile.py
Original file line number Diff line number Diff line change
@@ -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 (
Expand Down Expand Up @@ -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
},
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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',
},
),
Expand Down Expand Up @@ -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',
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"},
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading