diff --git a/main.cpp b/main.cpp index bd72654..38d67d2 100644 --- a/main.cpp +++ b/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(1U) << 13U) | (static_cast(1U) << 17U); constexpr uint32_t kE502Digital1Mask = (static_cast(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(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(payload); - if ((payload & 0x00800000U) != 0U) { - value |= static_cast(0xFF000000U); - } - } else { - const uint32_t payload = word & 0x0000FFFFU; - value = static_cast(payload); - if ((payload & 0x00008000U) != 0U) { - value |= static_cast(0xFFFF0000U); - } - } - - raw_code = static_cast(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(adc_raw_buffer.size()); + const int32_t raw_process_err = api.ProcessData(device.hnd, + raw.data(), + static_cast(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) { diff --git a/run_di1_group_avg.sh b/run_di1_group_avg.sh index 9c93f82..e900b5e 100755 --- a/run_di1_group_avg.sh +++ b/run_di1_group_avg.sh @@ -8,12 +8,17 @@ BIN="${BIN:-./main.exe}" TTY_PATH="${TTY_PATH:-/tmp/ttyADC_data}" CSV_PATH="${CSV_PATH:-capture.csv}" SVG_PATH="${SVG_PATH:-capture.svg}" +LIB_DIR="${LIB_DIR:-$HOME/.local/lib}" if [[ ! -x "$BIN" ]]; then echo "Binary '$BIN' not found or not executable. Run ./build_main.sh first." >&2 exit 1 fi +if [[ -d "$LIB_DIR" ]]; then + export LD_LIBRARY_PATH="${LIB_DIR}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" +fi + exec "$BIN" \ clock:internal \ internal_ref_hz:2000000 \