Skip to content

Commit

Permalink
Adding AvalonUD support (#854)
Browse files Browse the repository at this point in the history
* Adding AvalonUD support

* Refactor to match the new INDI style properties

* Fix FindZMQ.cmake

* Fix headers issues

* Fix one more header issue
  • Loading branch information
AvalonService authored Dec 1, 2023
1 parent 6929169 commit 2bc98e0
Show file tree
Hide file tree
Showing 17 changed files with 3,453 additions and 5 deletions.
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ option(WITH_ATIK "Install Atik Driver" On)
option(WITH_TOUPBASE "Install Toupbase Driver" On)
option(WITH_DREAMFOCUSER "Install DreamFocuser Driver" On)
option(WITH_AVALON "Install Avalon StarGO Driver" On)
option(WITH_AVALONUD "Install AvalonUD Drivers" On)
option(WITH_BEEFOCUS "Install Bee Focuser Driver" On)
option(WITH_SHELYAK "Install Shelyak Spectrograph Driver" On)
option(WITH_SKYWALKER "Install AOK SkyWalker Mount Driver" On)
Expand Down Expand Up @@ -696,6 +697,11 @@ if (WITH_AVALON)
add_subdirectory(indi-avalon)
endif(WITH_AVALON)

# AvalonUD
if (WITH_AVALONUD)
add_subdirectory(indi-avalonud)
endif(WITH_AVALONUD)

# Pentax
if (WITH_PENTAX)
find_package(PENTAX)
Expand Down
49 changes: 49 additions & 0 deletions cmake_modules/FindZMQ.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# - Try to find ZMQ
# Once done this will define
#
# ZMQ_FOUND - system has ZMQ
# ZMQ_INCLUDE_DIR - the ZMQ include directory
# ZMQ_LIBRARIES - Link these to use ZMQ

if (ZMQ_INCLUDE_DIR AND ZMQ_LIBRARIES)

# in cache already
set(ZMQ_FOUND TRUE)
message(STATUS "Found libzmq: ${ZMQ_LIBRARIES}")

else (ZMQ_INCLUDE_DIR AND ZMQ_LIBRARIES)

find_path(ZMQ_INCLUDE_DIR
NAMES zmq.h
${_obIncDir}
${GNUWIN32_DIR}/include
)

find_library(ZMQ_LIBRARIES
NAMES zmq
PATHS
${_obLinkDir}
${GNUWIN32_DIR}/lib
)


if(ZMQ_INCLUDE_DIR AND ZMQ_LIBRARIES)
set(ZMQ_FOUND TRUE)
else(ZMQ_INCLUDE_DIR AND ZMQ_LIBRARIES)
set(ZMQ_FOUND FALSE)
endif(ZMQ_INCLUDE_DIR AND ZMQ_LIBRARIES)


if (ZMQ_FOUND)
if (NOT ZMQ_FIND_QUIETLY)
message(STATUS "Found ZMQ ${ZMQ_LIBRARIES}")
endif (NOT ZMQ_FIND_QUIETLY)
else (ZMQ_FOUND)
if (ZMQ_FIND_REQUIRED)
message(STATUS "ZMQ not found. Please install libzmq development package.")
endif (ZMQ_FIND_REQUIRED)
endif (ZMQ_FOUND)

mark_as_advanced(ZMQ_INCLUDE_DIR ZMQ_LIBRARIES)

endif (ZMQ_INCLUDE_DIR AND ZMQ_LIBRARIES)
1 change: 1 addition & 0 deletions indi-avalonud/AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
AvalonInstruments SW Team (service AT avalon-instruments DOT com)
66 changes: 66 additions & 0 deletions indi-avalonud/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
cmake_minimum_required(VERSION 3.0)
project(indi-avalonud CXX C)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/")

include(GNUInstallDirs)

set (AVALONUD_VERSION_MAJOR 2)
set (AVALONUD_VERSION_MINOR 2)

find_package(INDI REQUIRED)
find_package(Threads REQUIRED)
find_package(ZMQ REQUIRED)

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/config.h
)

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/indi_avalonud.xml.cmake
${CMAKE_CURRENT_BINARY_DIR}/indi_avalonud.xml
)

include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
include_directories( ${CMAKE_CURRENT_SOURCE_DIR} )
include_directories( ${INDI_INCLUDE_DIR} )
include_directories( ${Threads_INCLUDE_DIR} )
include_directories( ${ZMQ_INCLUDE_DIR} )

include(CMakeCommon)

########### AVALONUD TELESCOPE ###########

add_executable(
indi_avalonud_telescope
${CMAKE_CURRENT_SOURCE_DIR}/indi_avalonud_telescope.cpp
)
target_link_libraries(indi_avalonud_telescope ${INDI_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ZMQ_LIBRARIES})

install(TARGETS indi_avalonud_telescope RUNTIME DESTINATION bin)

########### AVALONUD FOCUSER ###########

add_executable(
indi_avalonud_focuser
${CMAKE_CURRENT_SOURCE_DIR}/indi_avalonud_focuser.cpp
)
target_link_libraries(indi_avalonud_focuser ${INDI_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ZMQ_LIBRARIES})

install(TARGETS indi_avalonud_focuser RUNTIME DESTINATION bin)

########### AVALONUD AUX ###########

add_executable(
indi_avalonud_aux
${CMAKE_CURRENT_SOURCE_DIR}/indi_avalonud_aux.cpp
)
target_link_libraries(indi_avalonud_aux ${INDI_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ZMQ_LIBRARIES})

install(TARGETS indi_avalonud_aux RUNTIME DESTINATION bin)

####################################

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/indi_avalonud.xml DESTINATION ${INDI_DATA_DIR})
3 changes: 3 additions & 0 deletions indi-avalonud/ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ChangeLog:

[2.2] Nov 2023 Initial Release
10 changes: 10 additions & 0 deletions indi-avalonud/INSTALL
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Avalon Unified Driver INSTALL
=============================

1) $ tar -xzf avalonud.tar.gz
2) $ mkdir indi-avalonud_build
3) $ cd indi-avalonud_build
4) $ cmake -DCMAKE_INSTALL_PREFIX=/usr . ../indi-avalonud
5) $ sudo make install

Refer to README for instructions on using the driver.
42 changes: 42 additions & 0 deletions indi-avalonud/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Avalon Unified Drivers
======================

This package provides the INDI driver for mounts equipped with AvalonInstruments StarGO+ and StarGO2 controllers

Requirements
============

+ libindi1 >= v1.9.6

You need to install both libindi1 and libindi-dev to build this package.


+ libzmq >= v4.3.1

You need to install libzmq3-dev to build this package.

Installation
============

See INSTALL

How to Use
==========

You can use the AvalonUD Drivers in any INDI-compatible client such as KStars or Stellarium.

To run the driver for the telescope from the command line:

$ indiserver indi_avalonud_telescope

or to start also the drivers for the focuser and the auxiliaries:

$ indiserver indi_avalonud_telescope indi_avalonud_focuser indi_avalonud_aux

You can then connect to the drivers from any client.
If you're using KStars, the drivers will be automatically listed in KStars' Device Manager
and the only configuration required is to enter the controller IP address in the Connection tab
of each driver before connecting.

The drivers sonnects to ports 5450 and 5451 on the controller.

10 changes: 10 additions & 0 deletions indi-avalonud/config.h.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef CONFIG_H
#define CONFIG_H

/* Define INDI Data Dir */
#cmakedefine INDI_DATA_DIR "@INDI_DATA_DIR@"
/* Define Driver version */
#define AVALONUD_VERSION_MAJOR @AVALONUD_VERSION_MAJOR@
#define AVALONUD_VERSION_MINOR @AVALONUD_VERSION_MINOR@

#endif // CONFIG_H
83 changes: 83 additions & 0 deletions indi-avalonud/indi-avalonud.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
%define __cmake_in_source_build %{_vpath_builddir}
Name: indi-avalonud
Version:2.0.2.git
Release: %(date -u +%%Y%%m%%d%%H%%M%%S)%{?dist}
Summary: Instrument Neutral Distributed Interface 3rd party drivers

License: LGPLv2
# See COPYRIGHT file for a description of the licenses and files covered

URL: https://indilib.org
Source0: https://github.com/indilib/indi-3rdparty/archive/master.tar.gz

BuildRequires: cmake
BuildRequires: libfli-devel
BuildRequires: libnova-devel
BuildRequires: qt5-qtbase-devel
BuildRequires: systemd
BuildRequires: gphoto2-devel
BuildRequires: LibRaw-devel
BuildRequires: indi-libs
BuildRequires: indi-devel
BuildRequires: libtiff-devel
BuildRequires: cfitsio-devel
BuildRequires: zlib-devel
BuildRequires: gsl-devel
BuildRequires: libcurl-devel
BuildRequires: libjpeg-turbo-devel
BuildRequires: fftw-devel
BuildRequires: libftdi-devel
BuildRequires: gpsd-devel
BuildRequires: libdc1394-devel
BuildRequires: boost-devel
BuildRequires: boost-regex
BuildRequires: libasi

BuildRequires: gmock

BuildRequires: pkgconfig(fftw3)
BuildRequires: pkgconfig(cfitsio)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(gsl)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(zlib)

BuildRequires: libzmq-devel
Requires: libzmq


%description
INDI is a distributed control protocol designed to operate
astronomical instrumentation. INDI is small, flexible, easy to parse,
and scalable. It supports common DCS functions such as remote control,
data acquisition, monitoring, and a lot more. This is a 3rd party driver.


%prep -v
%autosetup -v -p1 -n indi-3rdparty-master

%build
# This package tries to mix and match PIE and PIC which is wrong and will
# trigger link errors when LTO is enabled.
# Disable LTO
%define _lto_cflags %{nil}

cd indi-avalonud
%cmake -DINDI_DATA_DIR=/usr/share/indi .
make VERBOSE=1 %{?_smp_mflags} -j4

%install
cd indi-avalonud
make DESTDIR=%{buildroot} install

%files
%doc indi-apogee/AUTHORS indi-apogee/README
%{_bindir}/*
%{_datadir}/indi


%changelog
* Sun Jul 19 2020 Jim Howard <[email protected]> 1.8.7.git-1
- update to build from git for copr, credit to Sergio Pascual and Christian Dersch for prior work on spec files

21 changes: 21 additions & 0 deletions indi-avalonud/indi_avalonud.xml.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<driversList>
<devGroup group="Telescopes">
<device label="AvalonUD Telescope" manufacturer="Avalon-Instruments">
<driver name="AvalonUD Telescope">indi_avalonud_telescope</driver>
<version>@AVALONUD_VERSION_MAJOR@.@AVALONUD_VERSION_MINOR@</version>
</device>
</devGroup>
<devGroup group="Focusers">
<device label="AvalonUD Focuser" manufacturer="Avalon-Instruments">
<driver name="AvalonUD Focuser">indi_avalonud_focuser</driver>
<version>@AVALONUD_VERSION_MAJOR@.@AVALONUD_VERSION_MINOR@</version>
</device>
</devGroup>
<devGroup group="Auxiliary">
<device label="AvalonUD Aux" manufacturer="Avalon-Instruments">
<driver name="AvalonUD Aux">indi_avalonud_aux</driver>
<version>@AVALONUD_VERSION_MAJOR@.@AVALONUD_VERSION_MINOR@</version>
</device>
</devGroup>
</driversList>
Loading

0 comments on commit 2bc98e0

Please sign in to comment.