Linus Torvalds e81eca685a garmin: add a _third_ time offset field
So FIT files seem to have many many different ways to describe time
offsets.  And I'm not talking about the overall Garmin time offset of
631065600, which is the conversion from the "Unix Epoch" (Jan 1, 1970)
to the "Garmin Epoch" (Dec 31, 1989).

No, I'm talking just about "device time" to "local time" to "UTC"
conversions.

The DEVICE_SETTINGS message has two different fields for time offsets:
there's a "UTC offset" (presumably this is the timezone the device is
set to), and a "time offset" which we actually use to transform the
recorded time of the dive into the local time that we report.

But the Suunto FIT export doesn't seem to use either of those, and
instead Nick Clark points outthe Suunto FAQ:

 "Timestamp fields are deliberately defined as UTC time so that they may
  be conveniently displayed in the local time if so desired.

  In some instances it is useful to know the UTC offset when the file
  was generated (possibly different from when it is decoded). This can
  be accomplished by logging a single message containing both a
  local_timestamp and a timestamp field. This will establish the UTC
  offset of the file.

  Presently these fields are predefined for activity and monitoring
  messages"

so to get the actual local time, instead of getting it from the
DEVICE_SETTINGS message, we now have to parse the ACTIVITY message, and
take the difference between the regular timestamp and the
"local_timestamp" field.

The great thing about standards is that there are so many to choose
from.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2023-07-16 11:17:32 -07:00
2014-03-19 09:16:07 +01:00
2023-05-11 18:56:37 +02:00

Overview
========

Libdivecomputer is a cross-platform and open source library for
communication with dive computers from various manufacturers.

The official web site is:

  http://www.libdivecomputer.org/

The sourceforge project page is:

  http://sourceforge.net/projects/libdivecomputer/

Installation
============

On UNIX-like systems (including Linux, Mac OS X, MinGW), use the
autotools based build system. Run the following commands from the top
directory (containing this file) to configure, build and install the
library and utilities:

  $ ./configure
  $ make
  $ make install

If you downloaded the libdivecomputer source code directly from the git
source code repository, then you need to create the configure script as
the first step:

  $ autoreconf --install

To uninstall libdivecomputer again, run:

  $ make uninstall

Support
=======

Please send bug reports, feedback or questions to the mailing list:

  http://libdivecomputer.org/cgi-bin/mailman/listinfo/devel

or contact me directly:

  jef@libdivecomputer.org

License
=======

Libdivecomputer is free software, released under the terms of the GNU
Lesser General Public License (LGPL).

You can find a copy of the license in the file COPYING.
Description
No description provided
Readme 4.5 MiB
Languages
C 98.3%
M4 1.2%
Makefile 0.5%