mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Initial support for Divesoft Freedom
This parses the dive profile from Divesoft Freedom log file. Only the depth profile is currently supported. There is also something wrong as the log file cannot be given as parameter but must be opened or imported once Subsurface is running. Note that so far no metadata is parsed. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
2461a731fc
commit
ce1f69f025
3 changed files with 38 additions and 0 deletions
28
parse-xml.c
28
parse-xml.c
|
@ -2531,6 +2531,34 @@ int parse_cobalt_buffer(sqlite3 *handle, const char *url, const char *buffer, in
|
|||
return 0;
|
||||
}
|
||||
|
||||
int parse_dlf_buffer(char *buffer, size_t size)
|
||||
{
|
||||
char *ptr = (char *)buffer;
|
||||
bool event;
|
||||
|
||||
/* Skipping the dive header for now */
|
||||
ptr += 32;
|
||||
|
||||
dive_start();
|
||||
|
||||
while (ptr < buffer + size) {
|
||||
event = ptr[0] & 0x0f;
|
||||
if (event == 1) {
|
||||
/* dive event */
|
||||
} else {
|
||||
sample_start();
|
||||
cur_sample->time.seconds = ((ptr[0] >> 4) & 0x0f) +
|
||||
((ptr[1] << 4) & 0xff0) +
|
||||
(ptr[2] & 0x0f) * 3600; /* hours */
|
||||
cur_sample->depth.mm = ((ptr[4] & 0xff) + ((ptr[5] << 8) & 0xff00)) * 10;
|
||||
sample_end();
|
||||
}
|
||||
ptr += 16;
|
||||
}
|
||||
dive_end();
|
||||
}
|
||||
|
||||
|
||||
void parse_xml_init(void)
|
||||
{
|
||||
LIBXML_TEST_VERSION
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue