July 13, 2023

Garmin FIT files - "garmin-FIT"

This also is on github: It looks smaller and simpler that the python fitdecoder, so let's take a look at it.
git clone https://github.com/mrihtar/Garmin-FIT.git
cd Garmin-FIT
./fitdump.pl /home/tom/c.fit
It runs just fine, yielding:
File size: 48978 bytes, protocol ver: 1.00, profile ver: 21.57
File header CRC: 0x09DD
file_id (0, type: 0, length: 20 bytes):
  serial_number (3-1-UINT32Z): 3360695892
  time_created (4-1-UINT32): 2023-07-13T03:26:09 (1058178369)
  unknown7 (7-1-UINT32, INVALID): 4294967295
  manufacturer (1-1-UINT16): garmin (1)
  garmin_product (2-1-UINT16, original name: product): 3284
  number (5-1-UINT16, INVALID): 65535
  type (0-1-ENUM): activity (4)
.....
.....
.....
activity (34, type: 7, length: 19 bytes):
  timestamp (253-1-UINT32): 2023-07-13T03:26:09 (1058178369)
  total_timer_time (0-1-UINT32): 49493.000 s (49493000)
  local_timestamp (5-1-UINT32): 1058153169
  num_sessions (1-1-UINT16): 1
  type (2-1-ENUM): manual (0)
  event (3-1-ENUM): activity (26)
  event_type (4-1-ENUM): stop (1)
  event_group (6-1-UINT8, INVALID): 255
CRC: 0xFAD7
The fitdump program is only 324 lines, but the library in Garmin/FIT.pm is 9268 lines. Still, we are only dealing with two files. The second big one is mostly a long list of "named types" at the end.
Have any comments? Questions? Drop me a line!

Tom's backpacking pages / tom@mmto.org