Instrument Neutral Distributed Interface INDI 2.2.5
device_bridge.h
Go to the documentation of this file.
1/*******************************************************************************
2 Copyright(c) 2025 Jasem Mutlaq. All rights reserved.
3
4 INDI Alpaca Device Bridge Interface
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 Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20
21 The full GNU General Public License is included in this distribution in the
22 file called LICENSE.
23*******************************************************************************/
24
25#pragma once
26
27#include "basedevice.h"
28#include "indiproperty.h"
29#include <string>
30#include <httplib.h>
31
33{
34 public:
35 virtual ~IDeviceBridge() = default;
36
37 // Device information
38 virtual std::string getDeviceType() const = 0;
39 virtual std::string getDeviceName() const = 0;
40 virtual int getDeviceNumber() const = 0;
41 virtual std::string getUniqueID() const = 0;
42
43 // Handle Alpaca API request
44 virtual void handleRequest(const std::string &method,
45 const httplib::Request &req,
46 httplib::Response &res) = 0;
47
48 // Update from INDI property
49 virtual void updateProperty(INDI::Property property) = 0;
50
51 // Common Alpaca API methods
52 virtual void handleConnected(const httplib::Request &req, httplib::Response &res) = 0;
53 virtual void handleName(const httplib::Request &req, httplib::Response &res) = 0;
54 virtual void handleDescription(const httplib::Request &req, httplib::Response &res) = 0;
55 virtual void handleDriverInfo(const httplib::Request &req, httplib::Response &res) = 0;
56 virtual void handleDriverVersion(const httplib::Request &req, httplib::Response &res) = 0;
57 virtual void handleInterfaceVersion(const httplib::Request &req, httplib::Response &res) = 0;
58};
virtual ~IDeviceBridge()=default
virtual void handleDescription(const httplib::Request &req, httplib::Response &res)=0
virtual void updateProperty(INDI::Property property)=0
virtual int getDeviceNumber() const =0
virtual void handleDriverVersion(const httplib::Request &req, httplib::Response &res)=0
virtual void handleDriverInfo(const httplib::Request &req, httplib::Response &res)=0
virtual void handleConnected(const httplib::Request &req, httplib::Response &res)=0
virtual std::string getDeviceName() const =0
virtual void handleRequest(const std::string &method, const httplib::Request &req, httplib::Response &res)=0
virtual std::string getUniqueID() const =0
virtual std::string getDeviceType() const =0
virtual void handleInterfaceVersion(const httplib::Request &req, httplib::Response &res)=0
virtual void handleName(const httplib::Request &req, httplib::Response &res)=0
Provides generic container for INDI properties.