Add support for the Tusa Zen Air.

This commit is contained in:
Jef Driesen 2010-10-01 22:24:51 +02:00
parent 4b374f2632
commit 55c4212dae
2 changed files with 22 additions and 0 deletions

View File

@ -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)) ||

View File

@ -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;