Skip to content

Commit 0fe5618

Browse files
committed
Skeleton INDI driver
1 parent 5216c06 commit 0fe5618

6 files changed

Lines changed: 378 additions & 0 deletions

File tree

indi/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

indi/.gtignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

indi/CMakeLists.txt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# define the project name
2+
cmake_minimum_required(VERSION 3.20)
3+
project(indi-astropowerbox C CXX)
4+
5+
6+
include(GNUInstallDirs)
7+
8+
# add our cmake_modules folder
9+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/")
10+
11+
# find our required packages
12+
find_package(INDI REQUIRED)
13+
14+
# set our include directories to look for header files
15+
include_directories( ${CMAKE_CURRENT_BINARY_DIR})
16+
include_directories( ${CMAKE_CURRENT_SOURCE_DIR})
17+
include_directories( ${INDI_INCLUDE_DIR})
18+
19+
# include(CMakeCommon)
20+
21+
# tell cmake to build our executable
22+
add_executable(
23+
indi_astropowerbox
24+
indi_astropowerbox.cpp
25+
)
26+
27+
# and link it to these libraries
28+
target_link_libraries(
29+
indi_astropowerbox
30+
${INDI_LIBRARIES}
31+
)
32+
33+
# tell cmake where to install our executable
34+
install(TARGETS indi_astropowerbox RUNTIME DESTINATION bin)
35+
36+

indi/cmake_modules/FindINDI.cmake

Lines changed: 303 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,303 @@
1+
# Licensed under the Apache License, Version 2.0 (the "License");
2+
# you may not use this file except in compliance with the License.
3+
# You may obtain a copy of the License at
4+
# http://www.apache.org/licenses/LICENSE-2.0
5+
# Unless required by applicable law or agreed to in writing, software
6+
# distributed under the License is distributed on an "AS IS" BASIS,
7+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8+
# See the License for the specific language governing permissions and
9+
# limitations under the License.
10+
#
11+
# This module can find INDI Library
12+
#
13+
# Requirements:
14+
# - CMake >= 2.8.3 (for new version of find_package_handle_standard_args)
15+
#
16+
# The following variables will be defined for your use:
17+
# - INDI_FOUND : were all of your specified components found (include dependencies)?
18+
# - INDI_INCLUDE_DIR : INDI include directory
19+
# - INDI_DATA_DIR : INDI include directory
20+
# - INDI_LIBRARIES : INDI libraries
21+
# - INDI_DRIVER_LIBRARIES : Same as above maintained for backward compatibility
22+
# - INDI_VERSION : complete version of INDI (x.y.z)
23+
# - INDI_MAJOR_VERSION : major version of INDI
24+
# - INDI_MINOR_VERSION : minor version of INDI
25+
# - INDI_RELEASE_VERSION : release version of INDI
26+
# - INDI_<COMPONENT>_FOUND : were <COMPONENT> found? (FALSE for non specified component if it is not a dependency)
27+
#
28+
# For windows or non standard installation, define INDI_ROOT variable to point to the root installation of INDI. Two ways:
29+
# - run cmake with -DINDI_ROOT=<PATH>
30+
# - define an environment variable with the same name before running cmake
31+
# With cmake-gui, before pressing "Configure":
32+
# 1) Press "Add Entry" button
33+
# 2) Add a new entry defined as:
34+
# - Name: INDI_ROOT
35+
# - Type: choose PATH in the selection list
36+
# - Press "..." button and select the root installation of INDI
37+
#
38+
# Example Usage:
39+
#
40+
# 1. Copy this file in the root of your project source directory
41+
# 2. Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt:
42+
# set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
43+
# 3. Finally call find_package() once, here are some examples to pick from
44+
#
45+
# Require INDI 1.4 or later
46+
# find_package(INDI 1.4 REQUIRED)
47+
#
48+
# if(INDI_FOUND)
49+
# include_directories(${INDI_INCLUDE_DIR})
50+
# add_executable(myapp myapp.cpp)
51+
# target_link_libraries(myapp ${INDI_LIBRARIES})
52+
# endif(INDI_FOUND)
53+
#
54+
#
55+
# Using Components:
56+
#
57+
# You can search for specific components. Currently, the following components are available
58+
# * driver: to build INDI hardware drivers.
59+
# * align: to build drivers that use INDI Alignment Subsystem.
60+
# * client: to build pure C++ INDI clients.
61+
# * clientqt5: to build Qt5-based INDI clients.
62+
# * lx200: To build LX200-based 3rd party drivers (you must link with driver above as well).
63+
#
64+
# By default, if you do not specify any components, driver and align components are searched.
65+
#
66+
# Example:
67+
#
68+
# To use INDI Qt5 Client library only in your application:
69+
#
70+
# find_package(INDI COMPONENTS clientqt5 REQUIRED)
71+
#
72+
# if(INDI_FOUND)
73+
# include_directories(${INDI_INCLUDE_DIR})
74+
# add_executable(myapp myapp.cpp)
75+
# target_link_libraries(myapp ${INDI_LIBRARIES})
76+
# endif(INDI_FOUND)
77+
#
78+
# To use INDI driver + lx200 component in your application:
79+
#
80+
# find_package(INDI COMPONENTS driver lx200 REQUIRED)
81+
#
82+
# if(INDI_FOUND)
83+
# include_directories(${INDI_INCLUDE_DIR})
84+
# add_executable(myapp myapp.cpp)
85+
# target_link_libraries(myapp ${INDI_LIBRARIES})
86+
# endif(INDI_FOUND)
87+
#
88+
# Notice we still use ${INDI_LIBRARIES} which now should contain both driver & lx200 libraries.
89+
#==============================================================================================
90+
# Copyright (c) 2011-2013, julp
91+
# Copyright (c) 2017-2019 Jasem Mutlaq
92+
#
93+
# Distributed under the OSI-approved BSD License
94+
#
95+
# This software is distributed WITHOUT ANY WARRANTY; without even the
96+
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTINDILAR PURPOSE.
97+
#=============================================================================
98+
99+
find_package(PkgConfig QUIET)
100+
101+
########## Private ##########
102+
if(NOT DEFINED INDI_PUBLIC_VAR_NS)
103+
set(INDI_PUBLIC_VAR_NS "INDI") # Prefix for all INDI relative public variables
104+
endif(NOT DEFINED INDI_PUBLIC_VAR_NS)
105+
if(NOT DEFINED INDI_PRIVATE_VAR_NS)
106+
set(INDI_PRIVATE_VAR_NS "_${INDI_PUBLIC_VAR_NS}") # Prefix for all INDI relative internal variables
107+
endif(NOT DEFINED INDI_PRIVATE_VAR_NS)
108+
if(NOT DEFINED PC_INDI_PRIVATE_VAR_NS)
109+
set(PC_INDI_PRIVATE_VAR_NS "_PC${INDI_PRIVATE_VAR_NS}") # Prefix for all pkg-config relative internal variables
110+
endif(NOT DEFINED PC_INDI_PRIVATE_VAR_NS)
111+
112+
function(indidebug _VARNAME)
113+
if(${INDI_PUBLIC_VAR_NS}_DEBUG)
114+
if(DEFINED ${INDI_PUBLIC_VAR_NS}_${_VARNAME})
115+
message("${INDI_PUBLIC_VAR_NS}_${_VARNAME} = ${${INDI_PUBLIC_VAR_NS}_${_VARNAME}}")
116+
else(DEFINED ${INDI_PUBLIC_VAR_NS}_${_VARNAME})
117+
message("${INDI_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>")
118+
endif(DEFINED ${INDI_PUBLIC_VAR_NS}_${_VARNAME})
119+
endif(${INDI_PUBLIC_VAR_NS}_DEBUG)
120+
endfunction(indidebug)
121+
122+
set(${INDI_PRIVATE_VAR_NS}_ROOT "")
123+
if(DEFINED ENV{INDI_ROOT})
124+
set(${INDI_PRIVATE_VAR_NS}_ROOT "$ENV{INDI_ROOT}")
125+
endif(DEFINED ENV{INDI_ROOT})
126+
if (DEFINED INDI_ROOT)
127+
set(${INDI_PRIVATE_VAR_NS}_ROOT "${INDI_ROOT}")
128+
endif(DEFINED INDI_ROOT)
129+
130+
set(${INDI_PRIVATE_VAR_NS}_BIN_SUFFIXES )
131+
set(${INDI_PRIVATE_VAR_NS}_LIB_SUFFIXES )
132+
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
133+
list(APPEND ${INDI_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin64")
134+
list(APPEND ${INDI_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib64")
135+
endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
136+
list(APPEND ${INDI_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin")
137+
list(APPEND ${INDI_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib")
138+
139+
set(${INDI_PRIVATE_VAR_NS}_COMPONENTS )
140+
# <INDI component name> <library name 1> ... <library name N>
141+
macro(INDI_declare_component _NAME)
142+
list(APPEND ${INDI_PRIVATE_VAR_NS}_COMPONENTS ${_NAME})
143+
set("${INDI_PRIVATE_VAR_NS}_COMPONENTS_${_NAME}" ${ARGN})
144+
endmacro(INDI_declare_component)
145+
146+
INDI_declare_component(driver indidriver)
147+
INDI_declare_component(align indiAlignmentDriver)
148+
INDI_declare_component(client indiclient)
149+
INDI_declare_component(clientqt5 indiclientqt5)
150+
INDI_declare_component(lx200 indilx200)
151+
152+
########## Public ##########
153+
set(${INDI_PUBLIC_VAR_NS}_FOUND TRUE)
154+
set(${INDI_PUBLIC_VAR_NS}_LIBRARIES )
155+
set(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR )
156+
foreach(${INDI_PRIVATE_VAR_NS}_COMPONENT ${${INDI_PRIVATE_VAR_NS}_COMPONENTS})
157+
string(TOUPPER "${${INDI_PRIVATE_VAR_NS}_COMPONENT}" ${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT)
158+
set("${INDI_PUBLIC_VAR_NS}_${${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) # may be done in the INDI_declare_component macro
159+
endforeach(${INDI_PRIVATE_VAR_NS}_COMPONENT)
160+
161+
# Check components
162+
if(NOT ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS) # driver and posix client by default
163+
set(${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS driver align)
164+
else(NOT ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS)
165+
#list(APPEND ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
166+
list(REMOVE_DUPLICATES ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS)
167+
foreach(${INDI_PRIVATE_VAR_NS}_COMPONENT ${${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS})
168+
if(NOT DEFINED ${INDI_PRIVATE_VAR_NS}_COMPONENTS_${${INDI_PRIVATE_VAR_NS}_COMPONENT})
169+
message(FATAL_ERROR "Unknown INDI component: ${${INDI_PRIVATE_VAR_NS}_COMPONENT}")
170+
endif(NOT DEFINED ${INDI_PRIVATE_VAR_NS}_COMPONENTS_${${INDI_PRIVATE_VAR_NS}_COMPONENT})
171+
endforeach(${INDI_PRIVATE_VAR_NS}_COMPONENT)
172+
endif(NOT ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS)
173+
174+
# Includes
175+
find_path(
176+
${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR
177+
indidevapi.h
178+
PATH_SUFFIXES libindi
179+
${PC_INDI_INCLUDE_DIR}
180+
${_obIncDir}
181+
${GNUWIN32_DIR}/include
182+
HINTS ${${INDI_PRIVATE_VAR_NS}_ROOT}
183+
DOC "Include directory for INDI"
184+
)
185+
186+
find_path(${INDI_PUBLIC_VAR_NS}_DATA_DIR
187+
drivers.xml
188+
PATH_SUFFIXES share/indi
189+
DOC "Data directory for INDI"
190+
)
191+
192+
if(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR)
193+
if(EXISTS "${${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR}/indiversion.h") # INDI >= 1.4
194+
file(READ "${${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR}/indiversion.h" ${INDI_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
195+
else()
196+
message(FATAL_ERROR "INDI version header not found")
197+
endif()
198+
199+
if(${INDI_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*INDI_VERSION ([0-9]+).([0-9]+).([0-9]+)")
200+
set(${INDI_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
201+
set(${INDI_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_2}")
202+
set(${INDI_PUBLIC_VAR_NS}_RELEASE_VERSION "${CMAKE_MATCH_3}")
203+
else()
204+
message(FATAL_ERROR "failed to detect INDI version")
205+
endif()
206+
set(${INDI_PUBLIC_VAR_NS}_VERSION "${${INDI_PUBLIC_VAR_NS}_MAJOR_VERSION}.${${INDI_PUBLIC_VAR_NS}_MINOR_VERSION}.${${INDI_PUBLIC_VAR_NS}_RELEASE_VERSION}")
207+
208+
# Check libraries
209+
foreach(${INDI_PRIVATE_VAR_NS}_COMPONENT ${${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS})
210+
set(${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES )
211+
set(${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES )
212+
foreach(${INDI_PRIVATE_VAR_NS}_BASE_NAME ${${INDI_PRIVATE_VAR_NS}_COMPONENTS_${${INDI_PRIVATE_VAR_NS}_COMPONENT}})
213+
list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}")
214+
list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}d")
215+
list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}${INDI_MAJOR_VERSION}${INDI_MINOR_VERSION}")
216+
list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}${INDI_MAJOR_VERSION}${INDI_MINOR_VERSION}d")
217+
endforeach(${INDI_PRIVATE_VAR_NS}_BASE_NAME)
218+
219+
find_library(
220+
${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}
221+
NAMES ${${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES}
222+
HINTS ${${INDI_PRIVATE_VAR_NS}_ROOT}
223+
PATH_SUFFIXES ${_INDI_LIB_SUFFIXES}
224+
DOC "Release libraries for INDI"
225+
)
226+
find_library(
227+
${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}
228+
NAMES ${${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES}
229+
HINTS ${${INDI_PRIVATE_VAR_NS}_ROOT}
230+
PATH_SUFFIXES ${_INDI_LIB_SUFFIXES}
231+
DOC "Debug libraries for INDI"
232+
)
233+
234+
string(TOUPPER "${${INDI_PRIVATE_VAR_NS}_COMPONENT}" ${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT)
235+
if(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # both not found
236+
set("${INDI_PUBLIC_VAR_NS}_${${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE)
237+
set("${INDI_PUBLIC_VAR_NS}_FOUND" FALSE)
238+
else(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # one or both found
239+
set("${INDI_PUBLIC_VAR_NS}_${${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" TRUE)
240+
if(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # release not found => we are in debug
241+
set(${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT} "${${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}")
242+
elseif(NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # debug not found => we are in release
243+
set(${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT} "${${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}")
244+
else() # both found
245+
set(
246+
${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT}
247+
optimized ${${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}
248+
debug ${${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}
249+
)
250+
endif()
251+
list(APPEND ${INDI_PUBLIC_VAR_NS}_LIBRARIES ${${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT}})
252+
endif(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT})
253+
endforeach(${INDI_PRIVATE_VAR_NS}_COMPONENT)
254+
255+
# Check find_package arguments
256+
include(FindPackageHandleStandardArgs)
257+
if(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY)
258+
find_package_handle_standard_args(
259+
${INDI_PUBLIC_VAR_NS}
260+
REQUIRED_VARS ${INDI_PUBLIC_VAR_NS}_LIBRARIES ${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR
261+
VERSION_VAR ${INDI_PUBLIC_VAR_NS}_VERSION
262+
)
263+
else(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY)
264+
find_package_handle_standard_args(${INDI_PUBLIC_VAR_NS} "INDI not found" ${INDI_PUBLIC_VAR_NS}_LIBRARIES ${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR)
265+
endif(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY)
266+
else(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR)
267+
set("${INDI_PUBLIC_VAR_NS}_FOUND" FALSE)
268+
if(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY)
269+
message(FATAL_ERROR "Could not find INDI include directory")
270+
endif(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY)
271+
endif(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR)
272+
273+
mark_as_advanced(
274+
${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR
275+
${INDI_PUBLIC_VAR_NS}_LIBRARIES
276+
)
277+
278+
# IN (args)
279+
indidebug("FIND_COMPONENTS")
280+
indidebug("FIND_REQUIRED")
281+
indidebug("FIND_QUIETLY")
282+
indidebug("FIND_VERSION")
283+
# OUT
284+
# Found
285+
indidebug("FOUND")
286+
indidebug("SERVER_FOUND")
287+
indidebug("DRIVERS_FOUND")
288+
indidebug("CLIENT_FOUND")
289+
indidebug("QT5CLIENT_FOUND")
290+
indidebug("LX200_FOUND")
291+
292+
# Linking
293+
indidebug("INCLUDE_DIR")
294+
indidebug("DATA_DIR")
295+
indidebug("LIBRARIES")
296+
# Backward compatibility
297+
set(${INDI_PUBLIC_VAR_NS}_DRIVER_LIBRARIES ${${INDI_PUBLIC_VAR_NS}_LIBRARIES})
298+
indidebug("DRIVER_LIBRARIES")
299+
# Version
300+
indidebug("MAJOR_VERSION")
301+
indidebug("MINOR_VERSION")
302+
indidebug("RELEASE_VERSION")
303+
indidebug("VERSION")

indi/indi_astropowerbox.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include "indi_astropowerbox.h"
2+
3+
#include <libindi/connectionplugins/connectiontcp.h>
4+
#include <memory>
5+
6+
static std::unique_ptr<AstroPowerBox> astroPowerBoxDriver(new AstroPowerBox());
7+
8+
AstroPowerBox::AstroPowerBox()
9+
{
10+
setVersion(0, 1);
11+
}
12+
13+
const char *AstroPowerBox::getDefaultName()
14+
{
15+
return "My Custom Driver";
16+
}
17+
18+
bool AstroPowerBox::initProperties() {
19+
INDI::DefaultDevice::initProperties();
20+
setDriverInterface(POWER_INTERFACE | WEATHER_INTERFACE);
21+
addAuxControls();
22+
return true;
23+
}

indi/indi_astropowerbox.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
#include "libindi/defaultdevice.h"
4+
5+
class AstroPowerBox : public INDI::DefaultDevice
6+
{
7+
public:
8+
AstroPowerBox();
9+
virtual ~AstroPowerBox() = default;
10+
11+
// You must override this method in your class.
12+
virtual const char *getDefaultName() override;
13+
virtual bool initProperties() override;
14+
};

0 commit comments

Comments
 (0)