fix
This commit is contained in:
48
main.cpp
48
main.cpp
@ -897,8 +897,6 @@ void expect_ok(const Api& api, int32_t err, const std::string& what) {
|
||||
constexpr uint32_t kE502DiSyn2Mask =
|
||||
(static_cast<uint32_t>(1U) << 13U) | (static_cast<uint32_t>(1U) << 17U);
|
||||
constexpr uint32_t kE502Digital1Mask = (static_cast<uint32_t>(1U) << 0U);
|
||||
constexpr uint32_t kStreamInputAdcFlag = 0x80000000U;
|
||||
constexpr uint32_t kStreamInputCalibratedAdcFlag = 0x40000000U;
|
||||
|
||||
using TickMs = uint64_t;
|
||||
|
||||
@ -1058,30 +1056,6 @@ int16_t pack_raw_code_to_int16(double avg_raw_code) {
|
||||
return static_cast<int16_t>(clamped);
|
||||
}
|
||||
|
||||
bool try_extract_raw_adc_code(uint32_t word, double& raw_code) {
|
||||
if ((word & kStreamInputAdcFlag) == 0U) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int32_t value = 0;
|
||||
if ((word & kStreamInputCalibratedAdcFlag) != 0U) {
|
||||
const uint32_t payload = word & 0x00FFFFFFU;
|
||||
value = static_cast<int32_t>(payload);
|
||||
if ((payload & 0x00800000U) != 0U) {
|
||||
value |= static_cast<int32_t>(0xFF000000U);
|
||||
}
|
||||
} else {
|
||||
const uint32_t payload = word & 0x0000FFFFU;
|
||||
value = static_cast<int32_t>(payload);
|
||||
if ((payload & 0x00008000U) != 0U) {
|
||||
value |= static_cast<int32_t>(0xFFFF0000U);
|
||||
}
|
||||
}
|
||||
|
||||
raw_code = static_cast<double>(value);
|
||||
return true;
|
||||
}
|
||||
|
||||
struct ConsoleCtrlGuard {
|
||||
bool installed = false;
|
||||
|
||||
@ -1679,18 +1653,18 @@ int run(const Config& cfg) {
|
||||
|
||||
uint32_t raw_adc_count = 0;
|
||||
if (tty_writer) {
|
||||
for (std::size_t i = 0; i < recvd; ++i) {
|
||||
double raw_code = 0.0;
|
||||
if (!try_extract_raw_adc_code(raw[i], raw_code)) {
|
||||
continue;
|
||||
}
|
||||
if (raw_adc_count >= adc_raw_buffer.size()) {
|
||||
fail("Raw ADC parsing overflowed the temporary buffer");
|
||||
}
|
||||
adc_raw_buffer[raw_adc_count++] = raw_code;
|
||||
}
|
||||
raw_adc_count = static_cast<uint32_t>(adc_raw_buffer.size());
|
||||
const int32_t raw_process_err = api.ProcessData(device.hnd,
|
||||
raw.data(),
|
||||
static_cast<uint32_t>(recvd),
|
||||
0,
|
||||
adc_raw_buffer.data(),
|
||||
&raw_adc_count,
|
||||
nullptr,
|
||||
nullptr);
|
||||
expect_ok(api, raw_process_err, "Process raw ADC data");
|
||||
if (raw_adc_count != adc_count) {
|
||||
fail("Raw ADC parsing returned a different sample count than voltage processing");
|
||||
fail("Raw ADC processing returned a different sample count than voltage processing");
|
||||
}
|
||||
|
||||
if (!tty_di1_group_average) {
|
||||
|
||||
Reference in New Issue
Block a user