The public header files are moved to a new subdirectory, to separate the definition of the public interface from the actual implementation. Using an identical directory layout as the final installation has the advantage that the example code can be build outside the project tree without any modifications to the #include statements.
78 lines
1.5 KiB
C
78 lines
1.5 KiB
C
#include <stdio.h> // fopen, fwrite, fclose
|
|
|
|
#include <libdivecomputer/suunto.h>
|
|
#include <libdivecomputer/utils.h>
|
|
|
|
#include "common.h"
|
|
|
|
device_status_t
|
|
test_dump_memory (const char* name, const char* filename)
|
|
{
|
|
device_t *device = NULL;
|
|
|
|
message ("suunto_solution_device_open\n");
|
|
int rc = suunto_solution_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 ("SOLUTION.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, "SOLUTION.DMP");
|
|
|
|
message ("\nSUMMARY\n");
|
|
message ("-------\n");
|
|
message ("test_dump_memory: %s\n", errmsg (a));
|
|
|
|
message_set_logfile (NULL);
|
|
|
|
return 0;
|
|
}
|