Projects
domecam:swift
domecam
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 31
View file
domecam.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Wed Nov 1 16:43:29 UTC 2023 - Matwey V. Kornilov <matwey@sai.msu.ru> + +- Version 0.1.17 + +------------------------------------------------------------------- Tue Oct 24 15:07:28 UTC 2023 - Matwey V. Kornilov <matwey@sai.msu.ru> - Version 0.1.16
View file
_service
Changed
@@ -3,7 +3,7 @@ <param name="url">http://curl.sai.msu.ru/hg/home/matwey/domecam/</param> <param name="scm">hg</param> <param name="versionformat">{latesttag}</param> - <param name="revision">0.1.16</param> + <param name="revision">0.1.17</param> </service> <service name="tar" mode="buildtime" /> <service name="recompress" mode="buildtime">
View file
domecam-0.1.16.obscpio/.hgtags -> domecam-0.1.17.obscpio/.hgtags
Changed
@@ -14,3 +14,4 @@ 5dcf5bbc11e401e323d3faa68458878bfc6052b9 0.1.13 8655a50fea3e634a2b099c77882009e08fd22ca1 0.1.14 4ca4898b0732dc93583b391358c621c74fd575bf 0.1.15 +ee7ef40e4a1d664c5e36cc223e5dec42a81f2a95 0.1.16
View file
domecam-0.1.16.obscpio/CMakeLists.txt -> domecam-0.1.17.obscpio/CMakeLists.txt
Changed
@@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.5) -project(domecam LANGUAGES C CXX VERSION 0.1.16) +project(domecam LANGUAGES C CXX VERSION 0.1.17) option(BUILD_DOMECAMD "build domecamd" ON) option(BUILD_DOMECAM_PROC "build domecam-proc" ON)
View file
domecam-0.1.17.obscpio/doc/example/bias.config
Added
@@ -0,0 +1,17 @@ +{ +"camera": { + "name": "Allied Vision Technologies-02-2110A-08022", + "settings": { + "packet_size": 1400, + "frame_rate": 30, + "gain": 1.0, + "binning_x": 2, + "binning_y": 2 + } +}, +"executor": { + "type": "bias", + "filename": "output_bias.fits", + "frames_number": 200 +} +}
View file
domecam-0.1.16.obscpio/include/camera.h -> domecam-0.1.17.obscpio/include/camera.h
Changed
@@ -64,6 +64,7 @@ exposure_time_type exposure_time(); exposure_time_type exposure_time(const exposure_time_type& exposure_time_); + std::tuple<exposure_time_type, exposure_time_type> exposure_time_bounds(); double gain(); double gain(double gain_);
View file
domecam-0.1.16.obscpio/include/exe/domecam-proc/executor.h -> domecam-0.1.17.obscpio/include/exe/domecam-proc/executor.h
Changed
@@ -38,7 +38,7 @@ std::string pupil_mask_filename_; }; -struct proc_executor::runner_base { +class proc_executor::runner_base { protected: template<class T> using allocator_type_t = boost::alignment::aligned_allocator<T, 32>;
View file
domecam-0.1.16.obscpio/include/executor.h -> domecam-0.1.17.obscpio/include/executor.h
Changed
@@ -8,12 +8,14 @@ #define _EXECUTOR_H #include <executor/acf.h> +#include <executor/bias.h> #include <executor/binary.h> #include <executor/carriage.h> #include <executor/clean.h> #include <executor/edge.h> #include <executor/gain.h> #include <executor/grad.h> +#include <executor/mean_bias.h> #include <executor/mean_pupil_mask.h> #include <executor/mean_raw.h> #include <executor/normalized_clean.h>
View file
domecam-0.1.16.obscpio/include/executor/acf.h -> domecam-0.1.17.obscpio/include/executor/acf.h
Changed
@@ -30,6 +30,8 @@ std::size_t grid_size() const noexcept { return grid_size_; } std::size_t history_size() const noexcept { return ((1 << grid_size_) >> 2) + 1; } + const char* executor_name() const override; + private: std::size_t grid_size_; };
View file
domecam-0.1.17.obscpio/include/executor/bias.h
Added
@@ -0,0 +1,46 @@ +/* + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Copyright (C) 2017-2023 Matwey V. Kornilov <matwey.kornilov@gmail.com> + */ + +#ifndef _EXECUTOR_BIAS_H +#define _EXECUTOR_BIAS_H + +#include <executorfwd.h> +#include <executor/raw.h> + + +class bias_executor_base: + public raw_executor_base { +protected: + template<class SourceMixin> class runner; +public: + explicit bias_executor_base(const std::string& target_uri); + + const char* executor_name() const override; + + static camera& prepare_camera(camera& c); +}; + +template<class SourceMixin> +class bias_executor_base::runner: + public raw_executor_base::runner<SourceMixin> { +public: + template<class Executor, class... Args> + runner(const Executor& e, camera& c, Args&&... args): + raw_executor_base::runner<SourceMixin>(e, + bias_executor_base::prepare_camera(c), + std::forward<Args>(args)...) {} +}; + +class bias_executor: + public camera_executor, + public bias_executor_base { +public: + bias_executor(const std::string& target_uri, std::size_t frames_number); + + virtual executor_result run(camera& c) const override; +}; + +#endif // _EXECUTOR_BIAS_H
View file
domecam-0.1.16.obscpio/include/executor/binary.h -> domecam-0.1.17.obscpio/include/executor/binary.h
Changed
@@ -20,6 +20,8 @@ template<class SourceMixin> class runner; public: explicit binary_executor_base(const std::string& target_uri); + + const char* executor_name() const override; }; template<class SourceMixin>
View file
domecam-0.1.16.obscpio/include/executor/clean.h -> domecam-0.1.17.obscpio/include/executor/clean.h
Changed
@@ -24,6 +24,9 @@ template<class SourceMixin> class runner; public: clean_executor_base(const std::string& target_uri, const std::string& bias_source_uri, const std::string& mask_source_uri); + + const char* executor_name() const override; + private: std::string bias_source_uri_; std::string mask_source_uri_;
View file
domecam-0.1.16.obscpio/include/executor/fits_sink_mixin.h -> domecam-0.1.17.obscpio/include/executor/fits_sink_mixin.h
Changed
@@ -24,10 +24,13 @@ template<class T, std::size_t Align> struct runner_mixin; public: explicit fits_sink_mixin(const std::string& target_uri); + virtual ~fits_sink_mixin() = 0; const std::string& target_uri() const { return target_uri_; } + + virtual const char* executor_name() const = 0; }; struct fits_sink_mixin::runner_mixin_base { @@ -108,8 +111,9 @@ /* Key updating after image creation */ auto& f = get_fits(); - f.update_key("XOFFSET", xoffset); - f.update_key("YOFFSET", yoffset); + f.update_key("EXECUTOR", e.executor_name()); + f.update_key("XOFFSET", xoffset); + f.update_key("YOFFSET", yoffset); } template<class T, std::size_t Align>
View file
domecam-0.1.16.obscpio/include/executor/gain.h -> domecam-0.1.17.obscpio/include/executor/gain.h
Changed
@@ -22,6 +22,8 @@ public: gain_executor(const std::string& target_uri, std::size_t pairs_number, double exp_scale, double exp_bias); + const char* executor_name() const override; + virtual executor_result run(camera& c) const override; };
View file
domecam-0.1.16.obscpio/include/executor/grad.h -> domecam-0.1.17.obscpio/include/executor/grad.h
Changed
@@ -20,6 +20,8 @@ template<class SourceMixin> class runner; public: explicit grad_executor_base(const std::string& target_uri); + + const char* executor_name() const override; }; template<class SourceMixin>
View file
domecam-0.1.17.obscpio/include/executor/mean_bias.h
Added
@@ -0,0 +1,46 @@ +/* + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Copyright (C) 2017-2023 Matwey V. Kornilov <matwey.kornilov@gmail.com> + */ + +#ifndef _EXECUTOR_MEAN_BIAS_H +#define _EXECUTOR_MEAN_BIAS_H + +#include <executorfwd.h> +#include <executor/bias.h> +#include <executor/mean_raw.h> + + +class mean_bias_executor_base: + public mean_raw_executor_base { +protected: + template<class SourceMixin> class runner; +public: + explicit mean_bias_executor_base(const std::string& target_uri); + + const char* executor_name() const override; +}; + +template<class SourceMixin> +class mean_bias_executor_base::runner: + public mean_raw_executor_base::runner<SourceMixin> { +public: + template<class Executor, class... Args> + runner(const Executor& e, camera& c, Args&&... args): + mean_raw_executor_base::runner<SourceMixin>(e, + bias_executor_base::prepare_camera(c), + std::forward<Args>(args)...) {} +}; + +class mean_bias_executor: + public camera_executor, + public mean_bias_executor_base { +public: + mean_bias_executor(const std::string& target_uri, std::size_t frames_number); + + virtual executor_result run(camera& c) const override; +}; + + +#endif // _EXECUTOR_MEAN_BIAS_H
View file
domecam-0.1.16.obscpio/include/executor/mean_pupil_mask.h -> domecam-0.1.17.obscpio/include/executor/mean_pupil_mask.h
Changed
@@ -25,6 +25,9 @@ template<class SourceMixin> class runner; public: explicit mean_pupil_mask_executor_base(const std::string& target_uri, std::size_t samples); + + const char* executor_name() const override; + private: const std::size_t samples_; };
View file
domecam-0.1.16.obscpio/include/executor/mean_raw.h -> domecam-0.1.17.obscpio/include/executor/mean_raw.h
Changed
@@ -20,6 +20,8 @@ template<class SourceMixin> class runner; public: explicit mean_raw_executor_base(const std::string& target_uri); + + const char* executor_name() const override; }; template<class SourceMixin>
View file
domecam-0.1.16.obscpio/include/executor/normalized_clean.h -> domecam-0.1.17.obscpio/include/executor/normalized_clean.h
Changed
@@ -20,6 +20,8 @@ template<class SourceMixin> class runner; public: normalized_clean_executor_base(const std::string& target_uri, const std::string& bias_source_uri, const std::string& mask_source_uri); + + const char* executor_name() const override; }; template<class SourceMixin>
View file
domecam-0.1.16.obscpio/include/executor/pupil_mask.h -> domecam-0.1.17.obscpio/include/executor/pupil_mask.h
Changed
@@ -20,6 +20,8 @@ template<class T> class runner; public: pupil_mask_executor_base(const std::string& target_uri, std::size_t samples, bool force_initial); + + const char* executor_name() const override; }; template<class SourceMixin>
View file
domecam-0.1.16.obscpio/include/executor/raw.h -> domecam-0.1.17.obscpio/include/executor/raw.h
Changed
@@ -17,6 +17,8 @@ template<class SourceMixin> class runner; public: explicit raw_executor_base(const std::string& target_uri); + + const char* executor_name() const override; }; template<class SourceMixin>
View file
domecam-0.1.16.obscpio/include/executor/relative_clean.h -> domecam-0.1.17.obscpio/include/executor/relative_clean.h
Changed
@@ -21,6 +21,9 @@ template<class SourceMixin> class runner; public: relative_clean_executor_base(const std::string& target_uri, const std::string& bias_source_uri, const std::string& pupil_source_uri, const std::string& mask_source_uri); + + const char* executor_name() const override; + private: std::string pupil_source_uri_; };
View file
domecam-0.1.16.obscpio/include/fits.h -> domecam-0.1.17.obscpio/include/fits.h
Changed
@@ -50,6 +50,9 @@ template<> struct type_to_cfitsio_code<double> { static constexpr int value = TDOUBLE; }; +template<> struct type_to_cfitsio_code<const char*> { + static constexpr int value = TSTRING; +}; template<> struct type_to_cfitsio_img_code<uint8_t> { static constexpr int value = BYTE_IMG; @@ -346,13 +349,21 @@ return *value; } - template<class T, int code = detail::type_to_cfitsio_code<T>::value> + template<class T, int code = detail::type_to_cfitsio_code<std::decay_t<T>>::value> void update_key(const std::string& key, const T& value, const std::string& comment = std::string()) { + using value_type = std::decay_t<T>; + int status = 0; - fits_update_key(file_.get(), code, key.c_str(), - const_cast<void*>(static_cast<const void*>(&value)), - comment.c_str(), &status); + const void* ptr; + + if constexpr(std::is_pointer_v<value_type>) { + ptr = static_cast<const void*>(value); + } else { + ptr = static_cast<const void*>(&value); + } + + fits_update_key(file_.get(), code, key.c_str(), const_cast<void*>(ptr), comment.c_str(), &status); cfitsio_error::throw_on_error(status); }
View file
domecam-0.1.16.obscpio/src/camera.cpp -> domecam-0.1.17.obscpio/src/camera.cpp
Changed
@@ -72,15 +72,22 @@ } camera::exposure_time_type camera::exposure_time() { - return static_cast<exposure_time_type>( + return exposure_time_type{ arv_error::apply_or_throw(&arv_camera_get_exposure_time, camera_.get()) - ); + }; } camera::exposure_time_type camera::exposure_time(const exposure_time_type& exposure_time_) { arv_error::apply_or_throw(&arv_camera_set_exposure_time_auto, camera_.get(), ARV_AUTO_OFF); arv_error::apply_or_throw(&arv_camera_set_exposure_time, camera_.get(), exposure_time_.count()); return exposure_time(); } +std::tuple<camera::exposure_time_type, camera::exposure_time_type> camera::exposure_time_bounds() { + exposure_time_type::rep min, max; + + arv_error::apply_or_throw(&arv_camera_get_exposure_time_bounds, camera_.get(), &min, &max); + + return {exposure_time_type{min}, exposure_time_type{max}}; +} double camera::gain() { return arv_error::apply_or_throw(&arv_camera_get_gain, camera_.get());
View file
domecam-0.1.16.obscpio/src/executor/acf.cpp -> domecam-0.1.17.obscpio/src/executor/acf.cpp
Changed
@@ -13,6 +13,10 @@ relative_clean_executor_base(target_uri, bias_source_uri, pupil_source_uri, mask_source_uri), grid_size_{std::max(grid_size, static_cast<std::size_t>(1))} {} +const char* acf_executor_base::executor_name() const { + return "acf"; +} + acf_executor::acf_executor(const std::string& target_uri, std::size_t frames_number, const std::string& bias_source_uri, const std::string& pupil_source_uri, const std::string& mask_source_uri, std::size_t grid_size): camera_executor(frames_number),
View file
domecam-0.1.17.obscpio/src/executor/bias.cpp
Added
@@ -0,0 +1,41 @@ +/* + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Copyright (C) 2017-2023 Matwey V. Kornilov <matwey.kornilov@gmail.com> + */ + +#include <tuple> + +#include <executor/bias.h> + + +bias_executor_base::bias_executor_base(const std::string& target_uri): + raw_executor_base(target_uri) { +} + +const char* bias_executor_base::executor_name() const { + return "bias"; +} + +camera& bias_executor_base::prepare_camera(camera& c) { + camera::exposure_time_type exposure_time; + + std::tie(exposure_time, std::ignore) = c.exposure_time_bounds(); + + c.exposure_time(exposure_time); + + return c; +} + + +bias_executor::bias_executor(const std::string& target_uri, std::size_t frames_number): + camera_executor(frames_number), + bias_executor_base(target_uri) {} + +executor_result bias_executor::run(camera& c) const { + runner<source_mixin> r{*this, c}; + + r.run(); + + return {}; +}
View file
domecam-0.1.16.obscpio/src/executor/binary.cpp -> domecam-0.1.17.obscpio/src/executor/binary.cpp
Changed
@@ -11,6 +11,10 @@ fits_sink_mixin(target_uri), pipeline_mixin() {} +const char* binary_executor_base::executor_name() const { + return "binary"; +} + binary_executor::binary_executor(const std::string& target_uri, std::size_t frames_number): camera_executor(frames_number),
View file
domecam-0.1.16.obscpio/src/executor/clean.cpp -> domecam-0.1.17.obscpio/src/executor/clean.cpp
Changed
@@ -14,6 +14,11 @@ bias_source_uri_{bias_source_uri}, mask_source_uri_{mask_source_uri} {} +const char* clean_executor_base::executor_name() const { + return "clean"; +} + + std::pair<clean_executor_base::runner_base::mask_buffer_type, std::size_t> clean_executor_base::runner_base::load_mask_image(const std::string& mask_source_uri, const region& roi) { constexpr std::size_t mask_capacity = sizeof(mask_buffer_type::value_type) * 8;
View file
domecam-0.1.16.obscpio/src/executor/fits_sink_mixin.cpp -> domecam-0.1.17.obscpio/src/executor/fits_sink_mixin.cpp
Changed
@@ -100,3 +100,5 @@ fits_sink_mixin::fits_sink_mixin(const std::string& target_uri): target_uri_{target_uri} {} + +fits_sink_mixin::~fits_sink_mixin() = default;
View file
domecam-0.1.16.obscpio/src/executor/gain.cpp -> domecam-0.1.17.obscpio/src/executor/gain.cpp
Changed
@@ -61,6 +61,10 @@ exp_scale_(exp_scale), exp_bias_(exp_bias) {} +const char* gain_executor::executor_name() const { + return "gain"; +} + executor_result gain_executor::run(camera& c) const { runner r{*this, c};
View file
domecam-0.1.16.obscpio/src/executor/grad.cpp -> domecam-0.1.17.obscpio/src/executor/grad.cpp
Changed
@@ -11,6 +11,10 @@ fits_sink_mixin(target_uri), pipeline_mixin() {} +const char* grad_executor_base::executor_name() const { + return "grad"; +} + grad_executor::grad_executor(const std::string& target_uri, std::size_t frames_number): camera_executor(frames_number),
View file
domecam-0.1.17.obscpio/src/executor/mean_bias.cpp
Added
@@ -0,0 +1,29 @@ +/* + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Copyright (C) 2017-2023 Matwey V. Kornilov <matwey.kornilov@gmail.com> + */ + +#include <executor/mean_bias.h> + + +mean_bias_executor_base::mean_bias_executor_base(const std::string& target_uri): + mean_raw_executor_base(target_uri) { +} + +const char* mean_bias_executor_base::executor_name() const { + return "mean_bias"; +} + + +mean_bias_executor::mean_bias_executor(const std::string& target_uri, std::size_t frames_number): + camera_executor(frames_number), + mean_bias_executor_base(target_uri) {} + +executor_result mean_bias_executor::run(camera& c) const { + runner<source_mixin> r{*this, c}; + + r.run(); + + return {}; +}
View file
domecam-0.1.16.obscpio/src/executor/mean_pupil_mask.cpp -> domecam-0.1.17.obscpio/src/executor/mean_pupil_mask.cpp
Changed
@@ -95,6 +95,10 @@ pipeline_mixin(), samples_(samples_number) {} +const char* mean_pupil_mask_executor_base::executor_name() const { + return "mean_pupil_mask"; +} + mean_pupil_mask_executor::mean_pupil_mask_executor(const std::string& target_uri, std::size_t frames_number, std::size_t samples_number): camera_executor(frames_number),
View file
domecam-0.1.16.obscpio/src/executor/mean_raw.cpp -> domecam-0.1.17.obscpio/src/executor/mean_raw.cpp
Changed
@@ -11,6 +11,10 @@ fits_sink_mixin(target_uri), pipeline_mixin() {} +const char* mean_raw_executor_base::executor_name() const { + return "mean_raw"; +} + mean_raw_executor::mean_raw_executor(const std::string& target_uri, std::size_t frames_number): camera_executor(frames_number),
View file
domecam-0.1.16.obscpio/src/executor/normalized_clean.cpp -> domecam-0.1.17.obscpio/src/executor/normalized_clean.cpp
Changed
@@ -9,6 +9,10 @@ normalized_clean_executor_base::normalized_clean_executor_base(const std::string& target_uri, const std::string& bias_source_uri, const std::string& mask_source_uri): clean_executor_base(target_uri, bias_source_uri, mask_source_uri) {} +const char* normalized_clean_executor_base::executor_name() const { + return "normalized_clean"; +} + normalized_clean_executor::normalized_clean_executor(const std::string& target_uri, std::size_t frames_number, const std::string& bias_source_uri, const std::string& mask_source_uri): camera_executor(frames_number),
View file
domecam-0.1.16.obscpio/src/executor/pupil_mask.cpp -> domecam-0.1.17.obscpio/src/executor/pupil_mask.cpp
Changed
@@ -13,6 +13,10 @@ fits_sink_mixin(target_uri), pupil_executor_base(samples, force_initial) {} +const char* pupil_mask_executor_base::executor_name() const { + return "pupil_mask"; +} + pupil_mask_executor::pupil_mask_executor(const std::string& target_uri, std::size_t frames_number, std::size_t samples, bool force_initial): camera_executor(frames_number),
View file
domecam-0.1.16.obscpio/src/executor/raw.cpp -> domecam-0.1.17.obscpio/src/executor/raw.cpp
Changed
@@ -11,6 +11,11 @@ fits_sink_mixin(target_uri) { } +const char* raw_executor_base::executor_name() const { + return "raw"; +} + + raw_executor::raw_executor(const std::string& target_uri, std::size_t frames_number): camera_executor(frames_number), raw_executor_base(target_uri) {}
View file
domecam-0.1.16.obscpio/src/executor/relative_clean.cpp -> domecam-0.1.17.obscpio/src/executor/relative_clean.cpp
Changed
@@ -23,6 +23,11 @@ return ret; } +const char* relative_clean_executor_base::executor_name() const { + return "relative_clean"; +} + + relative_clean_executor_base::runner_base::runner_base(const relative_clean_executor_base& e, const std::array<std::size_t, 2>& offset, const std::array<std::size_t, 2>& size): clean_executor_base::runner_base(e, offset, size), pupil_{load_pupil_image(e.pupil_source_uri_, region{offset, size})} {}
View file
domecam-0.1.16.obscpio/src/io.cpp -> domecam-0.1.17.obscpio/src/io.cpp
Changed
@@ -36,6 +36,10 @@ return std::unique_ptr<executor>{new raw_scan_executor{ value_to<std::string>(obj.at("filename")), value_to<std::size_t>(obj.at("frames_number")), axis}}; + } else if (type == "bias") { + return std::unique_ptr<executor>{new bias_executor{ + value_to<std::string>(obj.at("filename")), + value_to<std::size_t>(obj.at("frames_number"))}}; } else if (type == "grad") { return std::unique_ptr<executor>{new grad_executor{ value_to<std::string>(obj.at("filename")), @@ -74,6 +78,10 @@ return std::unique_ptr<executor>{new mean_raw_executor{ value_to<std::string>(obj.at("filename")), value_to<std::size_t>(obj.at("frames_number"))}}; + } else if (type == "mean_bias") { + return std::unique_ptr<executor>{new mean_bias_executor{ + value_to<std::string>(obj.at("filename")), + value_to<std::size_t>(obj.at("frames_number"))}}; } else if (type == "gain") { return std::unique_ptr<executor>{new gain_executor{ value_to<std::string>(obj.at("filename")),
View file
domecam.obsinfo
Changed
@@ -1,3 +1,3 @@ name: domecam -version: 0.1.16 -mtime: 1698159956 +version: 0.1.17 +mtime: 1698856173
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.