MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / GetEngValue

Method GetEngValue

lib/mdflib/mdflib/src/isamplereduction.cpp:79–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77
78template<>
79void ISampleReduction::GetEngValue( const IChannel& channel, uint64_t sample,
80 uint64_t array_index, SrValue<std::string>& value ) const {
81 value = {};
82 const auto* channel_conversion = channel.ChannelConversion();
83
84 switch (channel.DataType()) {
85 case ChannelDataType::UnsignedIntegerLe:
86 case ChannelDataType::UnsignedIntegerBe: {
87 SrValue<uint64_t> temp;
88 GetChannelValueUint(channel, sample, array_index, temp);
89 if (channel_conversion != 0) {
90 const bool mean_valid = channel_conversion->Convert(temp.MeanValue, value.MeanValue);
91 const bool min_valid = channel_conversion->Convert(temp.MinValue, value.MinValue);
92 const bool max_valid = channel_conversion->Convert(temp.MaxValue, value.MaxValue);
93 value.MeanValid = temp.MeanValid && mean_valid;
94 value.MinValid = temp.MinValid && min_valid;
95 value.MaxValid = temp.MaxValid && max_valid;
96 } else {
97 value.MeanValue = std::to_string(temp.MeanValue);
98 value.MinValue = std::to_string(temp.MinValue);
99 value.MaxValue = std::to_string(temp.MaxValue);
100 value.MeanValid = temp.MeanValid;
101 value.MinValid = temp.MinValid;
102 value.MaxValid = temp.MaxValid;
103 }
104 break;
105 }
106
107 case ChannelDataType::SignedIntegerLe:
108 case ChannelDataType::SignedIntegerBe: {
109 SrValue<int64_t> temp;
110 GetChannelValueInt(channel, sample, array_index, temp);
111 if (channel_conversion != 0) {
112 const bool mean_valid = channel_conversion->Convert(temp.MeanValue, value.MeanValue);
113 const bool min_valid = channel_conversion->Convert(temp.MinValue, value.MinValue);
114 const bool max_valid = channel_conversion->Convert(temp.MaxValue, value.MaxValue);
115 value.MeanValid = temp.MeanValid && mean_valid;
116 value.MinValid = temp.MinValid && min_valid;
117 value.MaxValid = temp.MaxValid && max_valid;
118 } else {
119 value.MeanValue = std::to_string(temp.MeanValue);
120 value.MinValue = std::to_string(temp.MinValue);
121 value.MaxValue = std::to_string(temp.MaxValue);
122 value.MeanValid = temp.MeanValid;
123 value.MinValid = temp.MinValid;
124 value.MaxValid = temp.MaxValid;
125 }
126 break;
127 }
128
129 case ChannelDataType::FloatLe:
130 case ChannelDataType::FloatBe: {
131 SrValue<double> temp;
132 GetChannelValueDouble(channel, sample, array_index, temp);
133 if (channel_conversion != 0) {
134 const bool mean_valid = channel_conversion->Convert(temp.MeanValue, value.MeanValue);
135 const bool min_valid = channel_conversion->Convert(temp.MinValue, value.MinValue);
136 const bool max_valid = channel_conversion->Convert(temp.MaxValue, value.MaxValue);

Callers

nothing calls this directly

Calls 3

ChannelConversionMethod · 0.45
DataTypeMethod · 0.45
ConvertMethod · 0.45

Tested by

no test coverage detected