Next Generation of Lithium
Lithium-Next is an open-source astrophotography terminal designed to provide a comprehensive solution for managing and automating astrophotography tasks. The project aims to offer a user-friendly interface, robust features, and seamless integration with various astrophotography equipment and software.
- Automated build process using GitHub Actions
- Support for multiple compilers (GCC and Clang)
- Detailed project configuration using CMake
- Pre-commit hooks for code quality checks
- Integration with CodeQL for code analysis
- Comprehensive logging and debugging support
- Modular architecture for easy extension and customization
The build.yml
workflow automates the build process for the project. It includes steps for checking out the repository, setting up the build environment, building the project, running tests, and packaging the project.
The build.yml
workflow is triggered on push and pull request events to the master
branch. This ensures that the project is built, tested, and packaged automatically on every push and pull request to the master
branch.
To set up the development environment for Lithium-Next, follow these steps:
-
Clone the repository:
git clone https://github.com/ElementAstro/lithium-next.git cd lithium-next git submodule update --init --recursive
-
Install the required dependencies:
sudo apt-get update sudo apt-get upgrade sudo apt-get install -y gcc g++ cmake libcfitsio-dev zlib1g-dev libssl-dev libzip-dev libnova-dev libfmt-dev gettext
-
Set up the pre-commit hooks:
pip install pre-commit pre-commit install
-
Build the project:
mkdir build cd build cmake .. make
-
Run the tests:
ctest
-
Package the project:
make package
-
To build with Clang, ensure Clang 18 or higher is installed and set the compiler:
sudo apt-get install -y clang-18 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 60 sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 60 mkdir build-clang cd build-clang cmake -DCMAKE_CXX_COMPILER=clang++ .. make
-
To build with GCC 13, ensure GCC 13 is installed and set the compiler:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y sudo apt-get update sudo apt-get install -y gcc-13 g++-13 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 60 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 60 mkdir build-gcc cd build-gcc cmake -DCMAKE_CXX_COMPILER=g++ .. make
-
Update cmake
wget https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4.tar.gz tar -zxvf cmake-3.31.4.tar.gz cd cmake-3.31.4 ./bootstrap make sudo make install
The project has been enhanced to include specific project requirements for shooting functions, ensuring efficient invocation and execution. The following new functionalities have been added:
-
Script Module Integration: A new task class for the script module has been created by extending the
Task
class. The task logic has been implemented in theexecute
method, and the new task class has been added to the appropriate targets in theExposureSequence
class. -
Celestial Search Module Integration: A new task class for the celestial search module has been created by extending the
Task
class. The task logic has been implemented in theexecute
method, and the new task class has been added to the appropriate targets in theExposureSequence
class. -
Configuration Management Integration: A new task class for the configuration management module has been created by extending the
Task
class. The task logic has been implemented in theexecute
method, and the new task class has been added to the appropriate targets in theExposureSequence
class. -
Utility Functions Integration: New task classes for each utility function module have been created by extending the
Task
class. The task logic has been implemented in theexecute
method, and the new task classes have been added to the appropriate targets in theExposureSequence
class. -
Combined Script and Celestial Search Modules: A new task class that combines the script and celestial search modules has been created by extending the
Task
class. The combined task logic has been implemented in theexecute
method, and the new task class has been added to the appropriate targets in theExposureSequence
class. -
Combined Configuration Management and Utility Functions: A new task class that combines the configuration management and utility function modules has been created by extending the
Task
class. The combined task logic has been implemented in theexecute
method, and the new task class has been added to the appropriate targets in theExposureSequence
class.
The task generation processes have been updated to reflect the new shooting functionalities. The following changes have been made:
-
Enhanced
src/task/task_camera.cpp
: The file has been updated to include specific project requirements for shooting functions, ensuring efficient invocation and execution. -
Updated
src/device/indi/camera.cpp
: The file has been updated to support new shooting tasks and goals, optimizing camera control based on project needs. -
Modified
src/task/sequencer.cpp
: The file has been updated to manage and sequence new shooting tasks, ensuring efficient execution. -
New Functions in
modules/image/src/binning.cpp
: New functions have been added to handle specific image processing requirements for the project. -
Updated Documentation: The documentation has been updated to reflect the new shooting functionalities and task generation processes.