Issue with parsing Mares Quad Air dump file
Jef Driesen
jef at libdivecomputer.org
Mon Jun 11 09:30:07 CEST 2018
On 2018-06-11 06:56, Rick Balsano wrote:
> I'm having an issue downloading dives from my Mares Quad Air in
> Subsurface,
> so I tried to see what I could find out more directly with
> libdivecomputer.
> The only issue I've found with libdivecomputer is the inability to
> parse a
> dump file for the Quad Air. I don't think this is related to my
> Subsurface
> issue, but figured I'd flag it anyway.
>
> I have downloaded and built livdivecomputer on OS X (10.13.4).
>
> I generated the attached dump file with:
>
> ./dctool -f iconhd -m 35 dump -o mares_quad_air.dump
> /dev/tty.SLAB_USBtoUART > dctool.log 2>&1
>
> Parsing of the dump file fails:
>
> ./dctool -f iconhd -m 35 parse -o mares_quad_air_parsed.xml
> mares_quad_air.dump
> Creating the parser.
> Registering the data.
> Parsing the dive data.
> Parsing the datetime.
> ERROR: Buffer overflow detected! [in mares_iconhd_parser.c:149
> (mares_iconhd_parser_cache)]
> ERROR: Error parsing the datetime. [in output_xml.c:229
> (dctool_xml_output_write)]
> ERROR: Error parsing the dive data. [in dctool_parse.c:73 (parse)]
> ERROR: Data format error
>
> However, direct download of dives works (dive download attached):
>
> $ ./dctool -f iconhd -m 35 download -o mares_quad_air_dives.xml
> /dev/tty.SLAB_USBtoUART
>
> I see that dctool_parse calls dc_parser_new2 while dctool_download
> calls
> dc_parser_new.
>
> Am I wrong in thinking that dctool should be able to parse the dump
> file
> and produce the same results as a direct download?
Yes and no. The dctool parse command expects a single dive, not a full
memory dump.
You can download the individual dives as follows:
./dctool -l dctool.log -f iconhd -m 35 download -o dive.%n.bin -f raw
/dev/tty.SLAB_USBtoUART
And then the parse them with:
./dctool -l dctool.log -f iconhd -m 35 parse -o
mares_quad_air_parsed.xml dive.*.bin
This produces the same result as doing both steps at once with:
./dctool -l dctool.log -f iconhd -m 35 download -o
mares_quad_air_parsed.xml /dev/tty.SLAB_USBtoUART
To be able to use a memory dump, you'll need the libdivecomputer
simulator:
https://libdivecomputer.org/simulator.html
Jef
More information about the devel
mailing list