14416fce6SCezary Zwolak #include "utils/conversion_trigger.hpp" 24416fce6SCezary Zwolak 34416fce6SCezary Zwolak #include "utils/transform.hpp" 44416fce6SCezary Zwolak 54416fce6SCezary Zwolak #include <sdbusplus/exception.hpp> 64416fce6SCezary Zwolak 74416fce6SCezary Zwolak namespace utils 84416fce6SCezary Zwolak { 94416fce6SCezary Zwolak namespace ts = utils::tstring; 104416fce6SCezary Zwolak 114416fce6SCezary Zwolak LabeledTriggerThresholdParams ToLabeledThresholdParamConversion::operator()( 124416fce6SCezary Zwolak const std::monostate& arg) const 134416fce6SCezary Zwolak { 144416fce6SCezary Zwolak throw sdbusplus::exception::SdBusError( 154416fce6SCezary Zwolak static_cast<int>(std::errc::invalid_argument), 164416fce6SCezary Zwolak "Provided threshold parameter is invalid"); 174416fce6SCezary Zwolak } 184416fce6SCezary Zwolak 194416fce6SCezary Zwolak LabeledTriggerThresholdParams ToLabeledThresholdParamConversion::operator()( 204416fce6SCezary Zwolak const std::vector<numeric::ThresholdParam>& arg) const 214416fce6SCezary Zwolak { 224416fce6SCezary Zwolak return utils::transform(arg, [](const auto& thresholdParam) { 234416fce6SCezary Zwolak const auto& [type, dwellTime, direction, thresholdValue] = 244416fce6SCezary Zwolak thresholdParam; 2551497a0cSKrzysztof Grobelny return numeric::LabeledThresholdParam(numeric::toType(type), dwellTime, 2651497a0cSKrzysztof Grobelny numeric::toDirection(direction), 2751497a0cSKrzysztof Grobelny thresholdValue); 284416fce6SCezary Zwolak }); 294416fce6SCezary Zwolak } 304416fce6SCezary Zwolak 314416fce6SCezary Zwolak LabeledTriggerThresholdParams ToLabeledThresholdParamConversion::operator()( 324416fce6SCezary Zwolak const std::vector<discrete::ThresholdParam>& arg) const 334416fce6SCezary Zwolak { 344416fce6SCezary Zwolak return utils::transform(arg, [](const auto& thresholdParam) { 354416fce6SCezary Zwolak const auto& [userId, severity, dwellTime, thresholdValue] = 364416fce6SCezary Zwolak thresholdParam; 374416fce6SCezary Zwolak return discrete::LabeledThresholdParam( 3851497a0cSKrzysztof Grobelny userId, discrete::toSeverity(severity), dwellTime, thresholdValue); 394416fce6SCezary Zwolak }); 404416fce6SCezary Zwolak } 414416fce6SCezary Zwolak 424416fce6SCezary Zwolak TriggerThresholdParams FromLabeledThresholdParamConversion::operator()( 434416fce6SCezary Zwolak const std::vector<numeric::LabeledThresholdParam>& arg) const 444416fce6SCezary Zwolak { 454416fce6SCezary Zwolak return utils::transform( 464416fce6SCezary Zwolak arg, [](const numeric::LabeledThresholdParam& labeledThresholdParam) { 474416fce6SCezary Zwolak return numeric::ThresholdParam( 484416fce6SCezary Zwolak numeric::typeToString( 494416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::Type>()), 504416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::DwellTime>(), 514416fce6SCezary Zwolak numeric::directionToString( 524416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::Direction>()), 534416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::ThresholdValue>()); 544416fce6SCezary Zwolak }); 554416fce6SCezary Zwolak } 564416fce6SCezary Zwolak 574416fce6SCezary Zwolak TriggerThresholdParams FromLabeledThresholdParamConversion::operator()( 584416fce6SCezary Zwolak const std::vector<discrete::LabeledThresholdParam>& arg) const 594416fce6SCezary Zwolak { 604416fce6SCezary Zwolak return utils::transform( 614416fce6SCezary Zwolak arg, [](const discrete::LabeledThresholdParam& labeledThresholdParam) { 624416fce6SCezary Zwolak return discrete::ThresholdParam( 634416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::UserId>(), 644416fce6SCezary Zwolak discrete::severityToString( 654416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::Severity>()), 664416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::DwellTime>(), 674416fce6SCezary Zwolak labeledThresholdParam.at_label<ts::ThresholdValue>()); 684416fce6SCezary Zwolak }); 694416fce6SCezary Zwolak } 704416fce6SCezary Zwolak 714416fce6SCezary Zwolak SensorsInfo fromLabeledSensorsInfo(const std::vector<LabeledSensorInfo>& infos) 724416fce6SCezary Zwolak { 734416fce6SCezary Zwolak return utils::transform(infos, [](const LabeledSensorInfo& val) { 744416fce6SCezary Zwolak return SensorsInfo::value_type( 754416fce6SCezary Zwolak sdbusplus::message::object_path(val.at_label<ts::SensorPath>()), 76*b8cc78ddSKrzysztof Grobelny val.at_label<ts::Metadata>()); 774416fce6SCezary Zwolak }); 784416fce6SCezary Zwolak } 794416fce6SCezary Zwolak 804416fce6SCezary Zwolak nlohmann::json labeledThresholdParamsToJson( 814416fce6SCezary Zwolak const LabeledTriggerThresholdParams& labeledThresholdParams) 824416fce6SCezary Zwolak { 834416fce6SCezary Zwolak return std::visit([](const auto& lt) { return nlohmann::json(lt); }, 844416fce6SCezary Zwolak labeledThresholdParams); 854416fce6SCezary Zwolak } 864416fce6SCezary Zwolak 874416fce6SCezary Zwolak } // namespace utils 88