mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
divecomputer: add device_table pointer to device_data_t
In one weird case (suunto), the code in libdivecomputer.c generates a device node directly instead of going the usual way (setting the data in the dc-structure of the imported dive). It is unclear to me whether that has to be that way, as it depends on the chronological order of callbacks to event_cb() and dive_cb(). Therefore add a device_table pointer to device_data_t so that the downloader can add the device to this table. This only adds the pointer, but does not yet use it in the downloading code. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
5a19437311
commit
2bcb3d88a0
5 changed files with 9 additions and 0 deletions
|
@ -177,6 +177,8 @@ static unsigned char *dt_dive_parser(unsigned char *runner, struct dive *dt_dive
|
|||
char is_nitrox = 0, is_O2 = 0, is_SCR = 0;
|
||||
|
||||
device_data_t *devdata = calloc(1, sizeof(device_data_t));
|
||||
devdata->sites = sites;
|
||||
devdata->devices = devices;
|
||||
|
||||
/*
|
||||
* Parse byte to byte till next dive entry
|
||||
|
|
|
@ -92,6 +92,7 @@ void DownloadThread::run()
|
|||
internalData->descriptor = descriptorLookup[m_data->vendor().toLower() + m_data->product().toLower()];
|
||||
internalData->download_table = &downloadTable;
|
||||
internalData->sites = &diveSiteTable;
|
||||
internalData->devices = &deviceTable;
|
||||
internalData->btname = strdup(m_data->devBluetoothName().toUtf8());
|
||||
if (!internalData->descriptor) {
|
||||
qDebug() << "No download possible when DC type is unknown";
|
||||
|
@ -110,6 +111,7 @@ void DownloadThread::run()
|
|||
qDebug() << "downloading" << (internalData->force_download ? "all" : "only new") << "dives";
|
||||
clear_dive_table(&downloadTable);
|
||||
clear_dive_site_table(&diveSiteTable);
|
||||
clear_device_table(&deviceTable);
|
||||
|
||||
Q_ASSERT(internalData->download_table != nullptr);
|
||||
const char *errorText;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <QLoggingCategory>
|
||||
|
||||
#include "divesite.h"
|
||||
#include "device.h"
|
||||
#include "libdivecomputer.h"
|
||||
#include "connectionlistmodel.h"
|
||||
#if BT_SUPPORT
|
||||
|
@ -77,6 +78,7 @@ public:
|
|||
QString error;
|
||||
struct dive_table downloadTable;
|
||||
struct dive_site_table diveSiteTable;
|
||||
struct device_table deviceTable;
|
||||
|
||||
private:
|
||||
DCDeviceData *m_data;
|
||||
|
|
|
@ -28,6 +28,7 @@ extern "C" {
|
|||
|
||||
struct dive;
|
||||
struct dive_computer;
|
||||
struct devices;
|
||||
|
||||
typedef struct {
|
||||
dc_descriptor_t *descriptor;
|
||||
|
@ -47,6 +48,7 @@ typedef struct {
|
|||
FILE *libdc_logfile;
|
||||
struct dive_table *download_table;
|
||||
struct dive_site_table *sites;
|
||||
struct device_table *devices;
|
||||
void *androidUsbDeviceDescriptor;
|
||||
} device_data_t;
|
||||
|
||||
|
|
|
@ -129,6 +129,7 @@ void DiveImportedModel::downloadThreadFinished()
|
|||
// Move the table data from thread to model
|
||||
move_dive_table(&thread.downloadTable, &diveTable);
|
||||
move_dive_site_table(&thread.diveSiteTable, &sitesTable);
|
||||
deviceTable = std::move(thread.deviceTable);
|
||||
|
||||
checkStates.resize(diveTable.nr);
|
||||
std::fill(checkStates.begin(), checkStates.end(), true);
|
||||
|
|
Loading…
Add table
Reference in a new issue