uwatec time format suggestion

Jef Driesen jefdriesen at telenet.be
Fri Dec 23 20:54:06 UTC 2011


On 12/23/2011 07:08 PM, Kurt wrote:
> By way of introduction I will say that I have been writing Aladin readers and
> logs for my own use since the prior century. I still have a working Palm
> Pilot and home made cable.  Alas, the Palm platform and SDK changed too
> frequently to make publishing worthwhile.  I also wrote my own reader for the
> Smart and was quite excited/disappointed to see that you got  no further
> decoding Smart Com/Pro than I did. (c:

If you explain in more detail why you are disappointed with the decoding, we can 
maybe fix it?

As far as I am aware most of the important information (eg. maxdepth, divetime, 
profile data, etc) is available. Of course there is room for improvement, but 
please note that one of our main goals is to provide a common interface for all 
supported devices. The consequence is that we can't support every single piece 
of information that a particular device supports. That's the compromise I have 
to make because there is simply too much difference between all those devices 
out there.

The idea is that you should be able to build a generic application that's not 
tied to a specific type of device. If you intend to create an application for 
just a single device, then you can still use the libdivecomputer library, but 
you'll have to do some of the decoding manually.

> I don't know why, but everyone since time immemorial has wanted to complicate
> the calculation of Uwatec time by attempting to attach it to an epoch. It
> changes from model to model and becomes problematic with battery changes and
> other malfunctions, though it will will seem to work most of the time.
>
> I believe this  is the wrong approach.
>
> The Aladin computers since the days of MemoMouse have utilized a 500 ms
> counter (2 tics/second). It is not attached to any particular epoch though it
> may appear that way since the factory has to initialize the counter with
> _something_.  However, battery changes and other vagaries may change that.
>
> Each dive has a four byte tic count (UInt32)
>
> Each *download* also specifies the tic count at the time of download in the
> old MemoMouse, or you explicitly retrieve the Dive Computer Time (in tics) as
> outlined in the Uwatec Smart protocol page.
>
> The difference between the two divided by two: (
> DiveComputerTimeInTics-DiveTimeInTics )>>  1 is the total number of seconds
> since the dive began.
>
> This is perfectly clean number that is completely independent of epoch,
> timezone or platform.
>
> It is also independent of Aladin platform, be it plain, Nitrox, ultra, tech
> or smart. You don't need any +/- 1800 adjusters magic numbers or anything of
> that sort.
>
> The introduction of epochs and timezone adjustments are then left to the
> implementor and platform as they should be.
>
> This also generally reduces time errors since the difference between ticsnow
> and ticsthen, is much smaller quantity of tics to be operated on and time
> interpretation accuracy will depend on the host computer time source instead
> of the dive computer.

I have no idea why you bring this up, because the method you explain is exactly 
what we are using in the libdivecomputer library. Have you actually looked at 
the source code? It reads:

ticks = parser->systime - (parser->devtime - timestamp) / 2;

Note that there is some complication because some Uwatec Smart/Galileo models 
have a timezone setting. But I haven't figured out yet how it's really used. 
Smarttrak does something weird with it.

Jef




More information about the Devel mailing list