From b22df8d26cef151cc83befa9032ba7ea45293741 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Fri, 11 Nov 2011 16:59:52 +0100 Subject: [PATCH] Add the example application for the Dacor Darwin Air. --- examples/Makefile.am | 3 + examples/mares_darwinair_test.c | 97 +++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 examples/mares_darwinair_test.c diff --git a/examples/Makefile.am b/examples/Makefile.am index 9362e05..f42e926 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -18,6 +18,7 @@ bin_PROGRAMS = \ vtpro \ nemo \ puck \ + darwinair \ iconhd \ ostc \ edy \ @@ -61,6 +62,8 @@ nemo_SOURCES = mares_nemo_test.c $(COMMON) puck_SOURCES = mares_puck_test.c $(COMMON) +darwinair_SOURCES = mares_darwinair_test.c $(COMMON) + iconhd_SOURCES = mares_iconhd_test.c $(COMMON) ostc_SOURCES = hw_ostc_test.c $(COMMON) diff --git a/examples/mares_darwinair_test.c b/examples/mares_darwinair_test.c new file mode 100644 index 0000000..693458c --- /dev/null +++ b/examples/mares_darwinair_test.c @@ -0,0 +1,97 @@ +/* + * libdivecomputer + * + * Copyright (C) 2011 Jef Driesen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#include // fopen, fwrite, fclose + +#include "mares_darwinair.h" +#include "utils.h" + +#include "common.h" + +device_status_t +test_dump_memory (const char* name, const char* filename) +{ + device_t *device = NULL; + + message ("mares_darwinair_device_open\n"); + device_status_t rc = mares_darwinair_device_open (&device, name); + if (rc != DEVICE_STATUS_SUCCESS) { + WARNING ("Error opening serial port."); + return rc; + } + + dc_buffer_t *buffer = dc_buffer_new (0); + + message ("device_dump\n"); + rc = device_dump (device, buffer); + if (rc != DEVICE_STATUS_SUCCESS) { + WARNING ("Cannot read memory."); + dc_buffer_free (buffer); + device_close (device); + return rc; + } + + message ("Dumping data\n"); + FILE* fp = fopen (filename, "wb"); + if (fp != NULL) { + fwrite (dc_buffer_get_data (buffer), sizeof (unsigned char), dc_buffer_get_size (buffer), fp); + fclose (fp); + } + + dc_buffer_free (buffer); + + message ("device_close\n"); + rc = device_close (device); + if (rc != DEVICE_STATUS_SUCCESS) { + WARNING ("Cannot close device."); + return rc; + } + + return DEVICE_STATUS_SUCCESS; +} + + +int main(int argc, char *argv[]) +{ + message_set_logfile ("DARWINAIR.LOG"); + +#ifdef _WIN32 + const char* name = "COM1"; +#else + const char* name = "/dev/ttyS0"; +#endif + + if (argc > 1) { + name = argv[1]; + } + + message ("DEVICE=%s\n", name); + + device_status_t a = test_dump_memory (name, "DARWINAIR.DMP"); + + message ("SUMMARY\n"); + message ("-------\n"); + message ("test_dump_memory: %s\n", errmsg (a)); + + message_set_logfile (NULL); + + return 0; +}