summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-11-14 19:44:06 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-12-03 13:26:55 -0800
commit31f0741ecc0013cd361683e7fad9bf2c8c166a13 (patch)
tree84c429abc20c46e7f8340389725b3ee21ec2aee1
parent25d7c58c07fc4b0bf3bc188f540a4ac66f6cd233 (diff)
downloadsubsurface-31f0741ecc0013cd361683e7fad9bf2c8c166a13.tar.gz
downloader: first outline of downloading dives from a device
This is of course not functional at all, but it gives a first idea of what we will need to do in this code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/CMakeLists.txt5
-rw-r--r--core/cli-downloader.cpp37
2 files changed, 42 insertions, 0 deletions
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index 1ed24019c..51ccf608f 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -20,6 +20,10 @@ if(FTDISUPPORT)
set(SERIAL_FTDI serial_ftdi.c)
endif()
+if (SUBSURFACE_TARGET_EXECUTABLE MATCHES "DownloaderExecutable")
+ set(DOWNLOADER cli-downloader.cpp)
+endif()
+
if(BTSUPPORT)
add_definitions(-DBT_SUPPORT)
set(BT_SRC_FILES desktop-widgets/btdeviceselectiondialog.cpp)
@@ -252,6 +256,7 @@ set(SUBSURFACE_CORE_LIB_SRCS
${SERIAL_FTDI}
${PLATFORM_SRC}
${BT_CORE_SRC_FILES}
+ ${DOWNLOADER}
)
source_group("Subsurface Core" FILES ${SUBSURFACE_CORE_LIB_SRCS})
diff --git a/core/cli-downloader.cpp b/core/cli-downloader.cpp
new file mode 100644
index 000000000..b4a8854aa
--- /dev/null
+++ b/core/cli-downloader.cpp
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "qt-models/diveimportedmodel.h"
+
+#include <QObject>
+#include <QUndoStack>
+
+extern "C"
+void cliDownloader(const char *vendor, const char *product, const char *device)
+{
+ DiveImportedModel *diveImportedModel = new DiveImportedModel();
+ DiveImportedModel::connect(diveImportedModel, &DiveImportedModel::downloadFinished, [] {
+ // do something useful at the end of the download
+ });
+
+ auto data = diveImportedModel->thread.data();
+ data->setVendor(vendor);
+ data->setProduct(product);
+ if (data->vendor() == "Uemis") {
+ char *colon;
+ char *devname = strdup(device);
+ if ((colon = strstr(devname, ":\\ (UEMISSDA)")) != NULL) {
+ *(colon + 2) = '\0';
+ fprintf(stderr, "shortened devname to \"%s\"", devname);
+ }
+ data->setDevName(devname);
+ } else {
+ data->setDevName(device);
+ }
+
+ // some assumptiond - should all be configurable
+ data->setForceDownload(false);
+ data->setSaveLog(false);
+ data->setSaveDump(false);
+
+ // before we start, remember where the dive_table ended
+ diveImportedModel->startDownload();
+}