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 +#include + +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(); +}