/soloshot-session-to-gpx-converter

Extract the GPS tracks of Soloshot 3 base and tags of a session file as GPX file.

Primary LanguageHTMLMIT LicenseMIT

soloshot-session-to-gpx-converter

Join the chat at https://gitter.im/maiermic/soloshot-session-to-gpx-converter

Extract the GPS tracks of Soloshot 3 base and tags of a session file as GPX file. Try it out.

Session File Format

The session file is a binary file. The first 4 bytes represent the ASCII encoded string SOLO. They are followed by 12 bytes of as yet unknown information (probably contains file version number). They are followed by packages that start with a byte 0xAA (package separator), followed by the package type (1 byte), package data length (1 byte), package header (10 bytes) and the package data.

File Content
File Header 4 bytes (SOLO) 12 bytes
1. Package 1 byte (separator) 1 byte (type) 1 byte (data length) 10 byte (header) n1 bytes (data)
2. Package 1 byte (separator) 1 byte (type) 1 byte (data length) 10 byte (header) n2 bytes (data)
...

Packages

Type Total Data Length
0xA0 11 bytes
0xA6 16 bytes
0xA5 21 bytes
0xA4 32 bytes
0x1D 43 bytes
0x08 44 bytes
0xA3 69 bytes

The content of the package header is unknown yet, as is the content of the package data of package type 0xA0 and 0xA6. The content of the other packages is partly figured out. The following tables show the structure of them. Byte order of numbers is big endian. Strings are ASCII encoded and zero terminated.

Type 0xA50C02
Length 10 bytes 12 bytes
Content unknown contains video resolution and FPS (zero right padded string)
Type 0xA41702
Length 9 bytes 7 bytes 8 bytes 8 bytes
Content unknown base firmware version (string) unknown version number (string) camera firmware version (string)
Type 0x1D2201
Length 9 bytes 34 bytes
Content unknown comma separated string: serial number, time stamp, tag number
Type 0x082301
Length 9 bytes 1 byte 12 bytes 12 bytes 10 bytes
Content unknown tag number GPS position of base (see table below) GPS position of tag (see table below) unknown
GPS position
Length 4 bytes 4 bytes 4 bytes
Content latitude (integer) longitude (integer) height in centimeters (integer)

Latitude and longitude values divided by 1,000,000 result in decimal degree values.

Type 0xA33C02
Length 12 bytes 41 bytes 8 bytes 8 bytes
Content unknown username (zero right padded string) tag firmware version (string) unknown version number (string)