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