<div dir="auto"><div>Looks good to me. <div dir="auto"><br></div><div dir="auto">   Linus</div><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Apr 18, 2018, 21:26 Dirk Hohndel <<a href="mailto:dirk@hohndel.org">dirk@hohndel.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey Linus,<br>
<br>
I am surprised how simple this seems to be. What am I missing?<br>
<br>
/D<br>
<br>
<br>
>From 4da077bcb6ef06655abd5216dce742b2b185efeb Mon Sep 17 00:00:00 2001<br>
From: Dirk Hohndel <<a href="mailto:dirk@hohndel.org" target="_blank" rel="noreferrer">dirk@hohndel.org</a>><br>
Date: Wed, 18 Apr 2018 21:19:14 -0700<br>
Subject: [PATCH] Only offer dive computers with supported transports<br>
<br>
On Android we still need to do more filtering as only some of the USB<br>
divecomputers are supported. But on iOS this takes care of it without<br>
the hard coded list.<br>
<br>
Additionally, if built without BT or BLE support, the corresponding dive<br>
computers are no longer shown (e.g. Perdix AI on Windows).<br>
<br>
Signed-off-by: Dirk Hohndel <<a href="mailto:dirk@hohndel.org" target="_blank" rel="noreferrer">dirk@hohndel.org</a>><br>
---<br>
 core/downloadfromdcthread.cpp | 35 +++++++++++++++++++++--------------<br>
 1 file changed, 21 insertions(+), 14 deletions(-)<br>
<br>
diff --git a/core/downloadfromdcthread.cpp b/core/downloadfromdcthread.cpp<br>
index b3bf8ba28334..e67d71403ad2 100644<br>
--- a/core/downloadfromdcthread.cpp<br>
+++ b/core/downloadfromdcthread.cpp<br>
@@ -101,20 +101,6 @@ static void fill_supported_mobile_list()<br>
        mobileProductList["Atomic Aquatics"] =<br>
                QStringList({{"Cobalt"}, {"Cobalt 2"}});<br>
<br>
-#endif<br>
-#if defined(Q_OS_IOS)<br>
-       /* BLE only, Qt does not support classic BT on iOS */<br>
-       mobileProductList["Heinrichs Weikamp"] =<br>
-               QStringList({{"OSTC 2"}, {"OSTC 3"}, {"OSTC 3+"}, {"OSTC 4"}, {"OSTC Plus"}, {"OSTC Sport"}, {"OSTC 2 TR"}});<br>
-       mobileProductList["Mares"] =<br>
-               QStringList({{"Puck Pro"}, {"Smart"}, {"Quad"}});<br>
-       mobileProductList["Scubapro"] =<br>
-               QStringList({{"Aladin Sport Matrix"}, {"Aladin Square"}, {"G2"}});<br>
-       mobileProductList["Shearwater"] =<br>
-               QStringList({{"Perdix"}, {"Perdix AI"}, {"Petrel"}, {"Petrel 2"}});<br>
-       mobileProductList["Suunto"] =<br>
-               QStringList({{"EON Core"}, {"EON Steel"}});<br>
-<br>
 #endif<br>
 }<br>
<br>
@@ -123,10 +109,31 @@ void fill_computer_list()<br>
        dc_iterator_t *iterator = NULL;<br>
        dc_descriptor_t *descriptor = NULL;<br>
<br>
+       int transportMask = 0;<br>
+#if defined(BT_SUPPORT)<br>
+       transportMask |= DC_TRANSPORT_BLUETOOTH;<br>
+#endif<br>
+#if defined(BLE_SUPPORT)<br>
+       transportMask |= DC_TRANSPORT_BLE;<br>
+#endif<br>
+#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) && !defined(Q_OS_MAC)<br>
+       transportMask |= DC_TRANSPORT_IRDA;<br>
+#endif<br>
+#if !defined(Q_OS_IOS)<br>
+       transportMask |= DC_TRANSPORT_USB | DC_TRANSPORT_USBHID;<br>
+#endif<br>
+#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)<br>
+       transportMask |= DC_TRANSPORT_SERIAL;<br>
+#endif<br>
+<br>
        fill_supported_mobile_list();<br>
<br>
        dc_descriptor_iterator(&iterator);<br>
        while (dc_iterator_next(iterator, &descriptor) == DC_STATUS_SUCCESS) {<br>
+               if ((dc_descriptor_get_transports(descriptor) & transportMask) == 0)<br>
+                       // none of the transports are available, skip<br>
+                       continue;<br>
+<br>
                const char *vendor = dc_descriptor_get_vendor(descriptor);<br>
                const char *product = dc_descriptor_get_product(descriptor);<br>
 #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)<br>
-- <br>
2.17.0<br>
<br>
</blockquote></div></div></div>