add RELOADCFG network command
This commit is contained in:
@@ -386,7 +386,10 @@ public:
|
||||
return static_cast<double>(getValue<mcc::impl::MccAngle>("siteLatitude").value_or(mcc::impl::MccAngle{}));
|
||||
};
|
||||
|
||||
mcc::impl::MccAngle siteLatitude() const { return siteLatitude<mcc::impl::MccAngle>(); };
|
||||
mcc::impl::MccAngle siteLatitude() const
|
||||
{
|
||||
return siteLatitude<mcc::impl::MccAngle>();
|
||||
};
|
||||
|
||||
template <mcc::mcc_angle_c T>
|
||||
T siteLongitude() const
|
||||
@@ -394,7 +397,10 @@ public:
|
||||
return static_cast<double>(getValue<mcc::impl::MccAngle>("siteLongitude").value_or(mcc::impl::MccAngle{}));
|
||||
};
|
||||
|
||||
mcc::impl::MccAngle siteLongitude() const { return siteLongitude<mcc::impl::MccAngle>(); };
|
||||
mcc::impl::MccAngle siteLongitude() const
|
||||
{
|
||||
return siteLongitude<mcc::impl::MccAngle>();
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
T siteElevation() const
|
||||
@@ -403,7 +409,10 @@ public:
|
||||
return getValue<double>("siteElevation").value_or(0.0);
|
||||
}
|
||||
|
||||
double siteElevation() const { return getValue<double>("siteElevation").value_or(0.0); };
|
||||
double siteElevation() const
|
||||
{
|
||||
return getValue<double>("siteElevation").value_or(0.0);
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
T refractWavelength() const
|
||||
@@ -412,7 +421,10 @@ public:
|
||||
return getValue<double>("refractWavelength").value_or(0.0);
|
||||
}
|
||||
|
||||
double refractWavelength() const { return getValue<double>("refractWavelength").value_or(0.0); };
|
||||
double refractWavelength() const
|
||||
{
|
||||
return getValue<double>("refractWavelength").value_or(0.0);
|
||||
};
|
||||
|
||||
template <mcc::traits::mcc_output_char_range R>
|
||||
R leapSecondFilename() const
|
||||
@@ -425,7 +437,10 @@ public:
|
||||
return r;
|
||||
}
|
||||
|
||||
std::string leapSecondFilename() const { return leapSecondFilename<std::string>(); };
|
||||
std::string leapSecondFilename() const
|
||||
{
|
||||
return leapSecondFilename<std::string>();
|
||||
};
|
||||
|
||||
template <mcc::traits::mcc_output_char_range R>
|
||||
R bulletinAFilename() const
|
||||
@@ -437,7 +452,10 @@ public:
|
||||
return r;
|
||||
}
|
||||
|
||||
std::string bulletinAFilename() const { return bulletinAFilename<std::string>(); };
|
||||
std::string bulletinAFilename() const
|
||||
{
|
||||
return bulletinAFilename<std::string>();
|
||||
};
|
||||
|
||||
|
||||
template <mcc::mcc_angle_c T>
|
||||
@@ -446,7 +464,10 @@ public:
|
||||
return static_cast<double>(getValue<mcc::impl::MccAngle>("pzMinAltitude").value_or(mcc::impl::MccAngle{}));
|
||||
};
|
||||
|
||||
mcc::impl::MccAngle pzMinAltitude() const { return pzMinAltitude<mcc::impl::MccAngle>(); };
|
||||
mcc::impl::MccAngle pzMinAltitude() const
|
||||
{
|
||||
return pzMinAltitude<mcc::impl::MccAngle>();
|
||||
};
|
||||
|
||||
template <mcc::mcc_angle_c T>
|
||||
T pzLimitSwitchHAMin() const
|
||||
@@ -454,7 +475,10 @@ public:
|
||||
return static_cast<double>(getValue<mcc::impl::MccAngle>("pzLimitSwitchHAMin").value_or(mcc::impl::MccAngle{}));
|
||||
};
|
||||
|
||||
mcc::impl::MccAngle pzLimitSwitchHAMin() const { return pzLimitSwitchHAMin<mcc::impl::MccAngle>(); };
|
||||
mcc::impl::MccAngle pzLimitSwitchHAMin() const
|
||||
{
|
||||
return pzLimitSwitchHAMin<mcc::impl::MccAngle>();
|
||||
};
|
||||
|
||||
template <mcc::mcc_angle_c T>
|
||||
T pzLimitSwitchHAMax() const
|
||||
@@ -462,7 +486,10 @@ public:
|
||||
return static_cast<double>(getValue<mcc::impl::MccAngle>("pzLimitSwitchHAMax").value_or(mcc::impl::MccAngle{}));
|
||||
};
|
||||
|
||||
mcc::impl::MccAngle pzLimitSwitchHAMax() const { return pzLimitSwitchHAMax<mcc::impl::MccAngle>(); };
|
||||
mcc::impl::MccAngle pzLimitSwitchHAMax() const
|
||||
{
|
||||
return pzLimitSwitchHAMax<mcc::impl::MccAngle>();
|
||||
};
|
||||
|
||||
|
||||
AsibFM700ServoController::hardware_config_t servoControllerConfig() const
|
||||
@@ -771,11 +798,23 @@ public:
|
||||
} catch (...) {
|
||||
ec = std::make_error_code(std::errc::operation_canceled);
|
||||
}
|
||||
|
||||
_lastConfigPath = path;
|
||||
}
|
||||
|
||||
return ec;
|
||||
}
|
||||
|
||||
std::error_code reloadCurrentConfig()
|
||||
{
|
||||
return load(_lastConfigPath);
|
||||
}
|
||||
|
||||
std::filesystem::path configFilename() const
|
||||
{
|
||||
return _lastConfigPath;
|
||||
}
|
||||
|
||||
bool dumpDefaultsToFile(const std::filesystem::path& path)
|
||||
{
|
||||
std::ofstream fst(path);
|
||||
@@ -840,6 +879,9 @@ public:
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
protected:
|
||||
std::filesystem::path _lastConfigPath{};
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -372,7 +372,8 @@ Asibfm700Mount::error_t Asibfm700Mount::updateMountConfig(const Asibfm700MountCo
|
||||
Asibfm700Mount::error_t Asibfm700Mount::updateMountConfig(const std::string& cfg_filename)
|
||||
{
|
||||
Asibfm700MountConfig new_config;
|
||||
auto err = new_config.load(cfg_filename);
|
||||
auto err =
|
||||
new_config.load(cfg_filename.empty() ? _mountConfig.configFilename() : std::filesystem::path{cfg_filename});
|
||||
if (err) {
|
||||
return mcc::mcc_deduced_err(err, std::make_error_code(std::errc::file_exists));
|
||||
}
|
||||
@@ -775,7 +776,7 @@ Asibfm700Mount::error_t Asibfm700Mount::slewingImpl(bool slew_and_stop)
|
||||
|
||||
if (!_lastMountError->load() && !_stopMovementRequest->load()) { // do not start tracking if an error occured
|
||||
if (!slew_and_stop) { // or stop requested
|
||||
// return trackTarget();
|
||||
// return trackTarget();
|
||||
return trackingImpl();
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
error_t initMount();
|
||||
|
||||
error_t updateMountConfig(Asibfm700MountConfig const&);
|
||||
error_t updateMountConfig(std::string const&);
|
||||
error_t updateMountConfig(std::string const& = std::string{}); // new filename
|
||||
Asibfm700MountConfig currentMountConfig();
|
||||
|
||||
// redefined method
|
||||
|
||||
@@ -57,18 +57,20 @@ Asibfm700MountNetServer::Asibfm700MountNetServer(asio::io_context& ctx,
|
||||
output_msg.construct(mcc::network::MCC_COMMPROTO_KEYWORD_SERVER_ACK_STR,
|
||||
ASIBFM700_COMMPROTO_KEYWORD_SITEGEO_STR, lon, lat);
|
||||
} else if (input_msg.withKey(ASIBFM700_COMMPROTO_KEYWORD_RELOADCFG_STR)) {
|
||||
if (input_msg.paramSize()) {
|
||||
auto vp = input_msg.paramValue<std::string>(0);
|
||||
auto err = mount_ptr->updateMountConfig(vp.value());
|
||||
if (err) {
|
||||
output_msg.construct(mcc::network::MCC_COMMPROTO_KEYWORD_SERVER_ERROR_STR, err);
|
||||
} else {
|
||||
output_msg.construct(mcc::network::MCC_COMMPROTO_KEYWORD_SERVER_ACK_STR,
|
||||
ASIBFM700_COMMPROTO_KEYWORD_RELOADCFG_STR);
|
||||
}
|
||||
} else { // a filename must be given
|
||||
output_msg.construct(mcc::network::MCC_COMMPROTO_KEYWORD_SERVER_ERROR_STR,
|
||||
std::make_error_code(std::errc::invalid_argument));
|
||||
Asibfm700Mount::error_t err;
|
||||
|
||||
auto vp = input_msg.paramValue<std::string>(0);
|
||||
if (vp) { // filename is given
|
||||
err = mount_ptr->updateMountConfig(vp.value());
|
||||
} else { // reload with previous filename
|
||||
err = mount_ptr->updateMountConfig();
|
||||
}
|
||||
|
||||
if (err) {
|
||||
output_msg.construct(mcc::network::MCC_COMMPROTO_KEYWORD_SERVER_ERROR_STR, err);
|
||||
} else {
|
||||
output_msg.construct(mcc::network::MCC_COMMPROTO_KEYWORD_SERVER_ACK_STR,
|
||||
ASIBFM700_COMMPROTO_KEYWORD_RELOADCFG_STR);
|
||||
}
|
||||
} else {
|
||||
// basic network message processing
|
||||
|
||||
Reference in New Issue
Block a user