| 104 | |
| 105 | template <> |
| 106 | bool IChannelObserver::GetChannelValue(uint64_t sample, std::string& value, uint64_t array_index) const { |
| 107 | bool valid = false; |
| 108 | value.clear(); |
| 109 | switch (channel_.DataType()) { |
| 110 | case ChannelDataType::UnsignedIntegerLe: |
| 111 | case ChannelDataType::UnsignedIntegerBe: { |
| 112 | uint64_t v = 0; |
| 113 | valid = GetSampleUnsigned(sample, v, array_index); |
| 114 | value = std::to_string(v); |
| 115 | break; |
| 116 | } |
| 117 | |
| 118 | case ChannelDataType::SignedIntegerLe: |
| 119 | case ChannelDataType::SignedIntegerBe: { |
| 120 | int64_t v = 0; |
| 121 | valid = GetSampleSigned(sample, v, array_index); |
| 122 | value = std::to_string(v); |
| 123 | break; |
| 124 | } |
| 125 | |
| 126 | case ChannelDataType::FloatLe: |
| 127 | case ChannelDataType::FloatBe: { |
| 128 | double v = 0.0; |
| 129 | valid = GetSampleFloat(sample, v, array_index); |
| 130 | value = MdfHelper::FormatDouble( |
| 131 | v, channel_.IsDecimalUsed() ? channel_.Decimals() : 6); |
| 132 | break; |
| 133 | } |
| 134 | |
| 135 | case ChannelDataType::StringAscii: |
| 136 | case ChannelDataType::StringUTF8: |
| 137 | case ChannelDataType::StringUTF16Le: |
| 138 | case ChannelDataType::StringUTF16Be: |
| 139 | case ChannelDataType::MimeStream: |
| 140 | case ChannelDataType::MimeSample: |
| 141 | case ChannelDataType::ByteArray: { |
| 142 | valid = GetSampleText(sample, value, array_index); |
| 143 | break; |
| 144 | } |
| 145 | |
| 146 | case ChannelDataType::CanOpenDate: |
| 147 | case ChannelDataType::CanOpenTime: { |
| 148 | uint64_t ns_since_1970 = 0; |
| 149 | valid = GetSampleUnsigned(sample, ns_since_1970, array_index); |
| 150 | value = MdfHelper::NsToLocalIsoTime(ns_since_1970); |
| 151 | break; |
| 152 | } |
| 153 | default: |
| 154 | break; |
| 155 | } |
| 156 | return valid; |
| 157 | } |
| 158 | |
| 159 | template <> |
| 160 | bool IChannelObserver::GetChannelValue(uint64_t sample, |
nothing calls this directly
no test coverage detected