Instrument Neutral Distributed Interface INDI 2.2.5
discovery.h
Go to the documentation of this file.
1/*
2 Gemini Power Box Hub Advanced v3 INDI Driver
3
4 Copyright (C) 2026 Dieter R Kedrowitsch <[email protected]>
5
6 This program is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 2 of the License, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 more details.
15
16 You should have received a copy of the GNU General Public License along with
17 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18 Place - Suite 330, Boston, MA 02111-1307, USA.
19
20 The full GNU General Public License is included in this distribution in the
21 file called LICENSE.
22*/
23
24#pragma once
25
26#include <chrono>
27#include <functional>
28#include <optional>
29#include <string>
30#include <vector>
31
32namespace geminipbh
33{
34
36{
37 std::string raw;
38 std::optional<int> numeric;
39};
40
55
57{
59
60 std::string requestedPort;
61 std::string canonicalPort;
62 std::string preferredPort;
63
64 std::string identity;
66
67 std::string failureReason;
68};
69
71{
72 std::vector<std::string> candidatePorts;
73 std::function<bool()> shouldCancel;
74 std::chrono::milliseconds settleDelay{100};
75 std::chrono::milliseconds identityTimeout{1000};
76 std::chrono::milliseconds firmwareTimeout{1000};
77};
78
80{
81 std::vector<ProbeResult> probes;
82 std::vector<ProbeResult> devices;
83 bool cancelled = false;
84};
85
86std::vector<std::string> enumerateSerialCandidates();
87ProbeResult probeGeminiDevice(const std::string &port, const DiscoveryOptions &options = DiscoveryOptions{});
88DiscoveryResult discoverGeminiDevices(const DiscoveryOptions &options = DiscoveryOptions{});
89const char *probeStatusName(ProbeStatus status);
90
91#ifdef GEMINI_TESTING
92std::vector<std::string> enumerateSerialCandidatesForTesting(const std::string &devDirectory,
93 const std::string &byIdDirectory,
94 const std::string &byPathDirectory);
95#endif
96
97} // namespace geminipbh
DiscoveryResult discoverGeminiDevices(const DiscoveryOptions &options)
ProbeResult probeGeminiDevice(const std::string &port, const DiscoveryOptions &options)
const char * probeStatusName(ProbeStatus status)
std::vector< std::string > enumerateSerialCandidates()
std::chrono::milliseconds settleDelay
Definition discovery.h:74
std::function< bool()> shouldCancel
Definition discovery.h:73
std::chrono::milliseconds firmwareTimeout
Definition discovery.h:76
std::vector< std::string > candidatePorts
Definition discovery.h:72
std::chrono::milliseconds identityTimeout
Definition discovery.h:75
std::vector< ProbeResult > probes
Definition discovery.h:81
std::vector< ProbeResult > devices
Definition discovery.h:82
std::optional< int > numeric
Definition discovery.h:38
std::string requestedPort
Definition discovery.h:60
FirmwareInfo firmware
Definition discovery.h:65
std::string preferredPort
Definition discovery.h:62
std::string failureReason
Definition discovery.h:67
std::string identity
Definition discovery.h:64
std::string canonicalPort
Definition discovery.h:61