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

Method ConvertValueRangeToText

lib/mdflib/mdflib/src/cc4block.cpp:388–439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

386}
387
388bool Cc4Block::ConvertValueRangeToText(double channel_value,
389 std::string& eng_value) const {
390 if (ref_list_.empty()) {
391 return false;
392 }
393
394 // First iterate to find the ref
395 size_t ref_index = ref_list_.size() - 1; // Default CC/TX
396 for (uint16_t n = 0; n < nof_values_; ++n) {
397 const uint16_t key_min_index = n * 2;
398 const uint16_t key_max_index = key_min_index + 1;
399 if (key_max_index >= value_list_.size()) {
400 break;
401 }
402 const auto key_min = Parameter(key_min_index);
403 const auto key_max = Parameter(key_max_index);
404 if (IsChannelInteger() && channel_value >= key_min &&
405 channel_value <= key_max) {
406 ref_index = n;
407 break;
408 }
409
410 if (IsChannelFloat() && channel_value >= key_min &&
411 channel_value < key_max) {
412 ref_index = n;
413 break;
414 }
415 }
416 if (ref_index >= ref_list_.size()) {
417 return false;
418 }
419 const auto& block = ref_list_[ref_index];
420 if (!block) {
421 eng_value.clear();
422 eng_value.shrink_to_fit();
423 } else if (block->BlockType() == "TX") {
424 const auto* tx = dynamic_cast<const Tx4Block*>(block.get());
425 if (tx == nullptr) {
426 return false;
427 }
428 eng_value = tx->Text();
429 } else if (block->BlockType() == "CC") {
430 const auto* cc = dynamic_cast<const IChannelConversion*>(block.get());
431 if (cc == nullptr) {
432 return false;
433 }
434 return cc->Convert(channel_value, eng_value);
435 } else {
436 return false;
437 }
438 return true;
439}
440
441bool Cc4Block::ConvertTextToValue(const std::string& channel_value,
442 double& eng_value) const {

Callers

nothing calls this directly

Calls 7

emptyMethod · 0.80
sizeMethod · 0.45
clearMethod · 0.45
BlockTypeMethod · 0.45
getMethod · 0.45
TextMethod · 0.45
ConvertMethod · 0.45

Tested by

no test coverage detected