Using the libdivecomputer simulator with an OSTC3

Jan Mulder jlmulder at xs4all.nl
Mon Apr 24 05:40:32 PDT 2017


Some days ago, a remark of Dirk on github issue 
https://github.com/Subsurface-divelog/subsurface/issues/335 triggered my 
curiosity. Finding issues that are close to the divecomputer hardware 
(for example during input over a Bluetooth connection, which will drop 
eventually when stopping the debugger), can be complex, so "the 
libdivecomputer simulator" comes into play (more info on Jef's website 
http://libdivecomputer.org/simulator.html).

The use with an OSTC3 is not straightforward, but with the explanation 
from Jef shown below, it was easy to get it to work.

best,

--jan


On 24-04-17 11:23, Jef Driesen wrote:
> On 2017-04-24 09:43, Jan Mulder wrote:
>> Is the simulator supposed to work with a OSTC3 (BT version, not sure
>> if this is called a 3+) dump? It says ostc3 is a supported backend,
>> but no success on my end at this point.
>>
>> Agreed, the subject of the email is confusing as it references an 
>> ostc 2n
>
> Yes, the latest version supports the ostc3 protocol, but it works a 
> bit different.
>
> The ostc3 protocol is one of those modern protocols where you request 
> complete dives directly. On one hand that's great, because 
> libdivecomputer doesn't need to know how and where the dives are 
> stored in the internal memory. But on the other hand supporting such a 
> protocol in the simulator is more problematic. Since dive computers in 
> this category usually don't support memory dumps at all, I needed 
> another solution for the simulator. Instead of memory dumps, it 
> somehow needs to be able to operate one the raw dive data. Since the 
> simulator code wasn't really made to pass multiple files, I did a 
> simple workaround for now, by concatenating the raw dives. This hack 
> works for the ostc3 and idive (currently the only supported protocols 
> of this type in the simulator) because their data format allows to 
> locate the individual dives again due to the presence of length fields 
> in the dive header (idive) or special markers (ostc3).
>
> The ostc3 is special because it does support memory dumps. But that's 
> a full memory dump, and not just the dive data that the simulator needs.
>
> Thus in order to use the simulator, you need to dump the individual 
> dives:
>
> ./dctool -f ostc3 download -o dive.%n.bin -f raw /dev/rfcommX
>
> Concatenate them:
>
> cat dive.%n.bin > ostc3.bin
>
> And use this file in the simulator:
>
> ./simulator -p /tmp/ttySX -b ostc3 ostc3.bin
>
> At some point, I would like to cleanup the simulator code, and add 
> proper support for these kind of protocols, such that you can just 
> pass a set of raw dive files directly. But there's always more 
> important stuff waiting...
>
> Jef




More information about the subsurface mailing list