From 55c4212dae600d09b25a4cac3b04ce35b57d897b Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Fri, 1 Oct 2010 22:24:51 +0200 Subject: [PATCH] Add support for the Tusa Zen Air. --- src/oceanic_atom2.c | 15 +++++++++++++++ src/oceanic_atom2_parser.c | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/src/oceanic_atom2.c b/src/oceanic_atom2.c index 241bfdc..cf64a63 100644 --- a/src/oceanic_atom2.c +++ b/src/oceanic_atom2.c @@ -69,6 +69,7 @@ static const unsigned char oceanic_atom2_version[] = "2M ATOM r\0\0 512K"; static const unsigned char oceanic_epic_version[] = "2M EPIC r\0\0 512K"; static const unsigned char oceanic_geo2_version[] = "OCEGEO20 \0\0 512K"; static const unsigned char oceanic_oc1_version[] = "OCWATCH R\0\0 1024"; +static const unsigned char tusa_zenair_version[] = "TUZENAIR \0\0 512K"; static const oceanic_common_layout_t oceanic_default_layout = { 0x10000, /* memsize */ @@ -94,6 +95,18 @@ static const oceanic_common_layout_t oceanic_atom2_layout = { 0 /* pt_mode_logbook */ }; +static const oceanic_common_layout_t tusa_zenair_layout = { + 0xFFF0, /* memsize */ + 0x0000, /* cf_devinfo */ + 0x0040, /* cf_pointers */ + 0x0240, /* rb_logbook_begin */ + 0x0A40, /* rb_logbook_end */ + 0x0A40, /* rb_profile_begin */ + 0xFFF0, /* rb_profile_end */ + 0, /* pt_mode_global */ + 1 /* pt_mode_logbook */ +}; + static const oceanic_common_layout_t oceanic_oc1_layout = { 0x20000, /* memsize */ 0x0000, /* cf_devinfo */ @@ -324,6 +337,8 @@ oceanic_atom2_device_open (device_t **out, const char* name) // Override the base class values. if (oceanic_common_match (oceanic_oc1_version, device->version, sizeof (device->version))) device->base.layout = &oceanic_oc1_layout; + if (oceanic_common_match (tusa_zenair_version, device->version, sizeof (device->version))) + device->base.layout = &tusa_zenair_layout; else if (oceanic_common_match (oceanic_atom2_version, device->version, sizeof (device->version)) || oceanic_common_match (oceanic_epic_version, device->version, sizeof (device->version)) || oceanic_common_match (oceanic_geo2_version, device->version, sizeof (device->version)) || diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index 4b66b19..a2db57b 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -136,6 +136,13 @@ oceanic_atom2_parser_get_datetime (parser_t *abstract, dc_datetime_t *datetime) datetime->hour = bcd2dec (p[1] & 0x7F); datetime->minute = bcd2dec (p[0]); break; + case 0x4442: // Tusa Zen Air + datetime->year = (p[3] & 0x0F) + 2000; + datetime->month = (p[7] & 0xF0) >> 4; + datetime->day = ((p[3] & 0x80) >> 3) + ((p[5] & 0xF0) >> 4); + datetime->hour = bcd2dec (p[1] & 0x1F); + datetime->minute = bcd2dec (p[0]); + break; default: // Atom 2 datetime->year = bcd2dec (((p[3] & 0xC0) >> 2) + (p[4] & 0x0F)) + 2000; datetime->month = (p[4] & 0xF0) >> 4;