summaryrefslogtreecommitdiffstats
path: root/parse-xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse-xml.c')
-rw-r--r--parse-xml.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/parse-xml.c b/parse-xml.c
index 8fc504a3f..04b6d4d7d 100644
--- a/parse-xml.c
+++ b/parse-xml.c
@@ -1681,6 +1681,10 @@ extern int dm4_events(void *handle, int columns, char **data, char **column)
/* 13 Air time */
cur_event.name = strdup("airtime");
break;
+ case 17:
+ /* 17 Ascent warning */
+ cur_event.name = strdup("ascent");
+ break;
case 18:
/* 18 Ceiling error */
cur_event.name = strdup("ceiling");
@@ -1689,6 +1693,14 @@ extern int dm4_events(void *handle, int columns, char **data, char **column)
/* 19 Surfaced */
cur_event.name = strdup("surface");
break;
+ case 20:
+ /* 20 Deco */
+ cur_event.name = strdup("deco");
+ break;
+ case 22:
+ /* 22 Mandatory safety stop violation */
+ cur_event.name = strdup("violation");
+ break;
case 257:
/* 257 Dive active */
/* This seems to be given after surface
@@ -1714,6 +1726,14 @@ extern int dm4_events(void *handle, int columns, char **data, char **column)
return 0;
}
+extern int dm4_tags(void *handle, int columns, char **data, char **column)
+{
+ if(data[0])
+ taglist_add_tag(cur_dive->tag_list, data[0]);
+
+ return 0;
+}
+
extern int dm4_dive(void *param, int columns, char **data, char **column)
{
int i, interval, retval = 0;
@@ -1723,6 +1743,7 @@ extern int dm4_dive(void *param, int columns, char **data, char **column)
int *pressureBlob;
char *err = NULL;
char get_events_template[] = "select * from Mark where DiveId = %d";
+ char get_tags_template[] = "select Text from DiveTag where DiveId = %d";
char get_events[64];
dive_start();
@@ -1802,7 +1823,7 @@ extern int dm4_dive(void *param, int columns, char **data, char **column)
else
cur_sample->depth.mm = cur_dive->dc.maxdepth.mm;
- if (tempBlob)
+ if (data[18] && data[18][0])
cur_sample->temperature.mkelvin = C_to_mkelvin(tempBlob[i]);
if (data[19] && data[19][0])
cur_sample->cylinderpressure.mbar = pressureBlob[i] ;
@@ -1816,6 +1837,13 @@ extern int dm4_dive(void *param, int columns, char **data, char **column)
return 1;
}
+ snprintf(get_events, sizeof(get_events) - 1, get_tags_template, cur_dive->number);
+ retval = sqlite3_exec(handle, get_events, &dm4_tags, 0, &err);
+ if (retval != SQLITE_OK) {
+ fprintf(stderr, "%s", translate("gettextFromC","Database query get_tags failed.\n"));
+ return 1;
+ }
+
dive_end();
/*