During the frontend redesign, I found some bugs in the SCPI server. I was able to fix a simple buffer overflow in ACQ:SRAT? command. It’s not a big problem, because I can use the ACQ:DEC? instead. But there is more boring bugs. For example the binary output format and voltage getters (amplitude and offset) doesn’t work.
I have already written a binding for the redpitaya C api for fun (it’s my first crate idea) thus it’s easy to create a TCP server to handle strings.
After two weeks of work, including a big segfault fixing, I publish a new SCPI server, compatible with the legacy server.
This server pass all scpi client tests (± f32::EPSILON of course) :
$ cargo test -j1 -- --test-threads=1 Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs Running target/debug/deps/redpitaya_scpi-a9e9b34583454096 running 42 tests test acquire::test::test_average ... ok test acquire::test::test_decimation ... ok test acquire::test::test_gain ... ok test acquire::test::test_sampling_rate_get_buffer_duration ... ok test acquire::test::test_status ... ok test analog::test::test_reset ... ok test analog::test::test_value ... ok test burst::test::test_count ... ok test burst::test::test_mode ... ok test burst::test::test_period ... FAILED test burst::test::test_repetitions ... ok test data::test::test_buffer_size ... ok test data::test::test_get_write_pointer ... ok test data::test::test_get_write_pointer_at_trigger ... ok test data::test::test_read ... ok test data::test::test_read_all ... ok test data::test::test_read_latest ... ok test data::test::test_read_oldest ... ok test data::test::test_read_slice ... ok test data::test::test_set_format ... ok test data::test::test_units ... thread '' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', /checkout/src/libcore/result.rs:859 ok test digital::test::test_reset ... ok test digital::test::test_set_direction_in ... ok test digital::test::test_set_direction_out ... ok test digital::test::test_state ... ok test generator::test::test_amplitude ... ok test generator::test::test_arbitrary_waveform ... ok test generator::test::test_duty_cycle ... ok test generator::test::test_form ... ok test generator::test::test_frequency ... ok test generator::test::test_offset ... FAILED test generator::test::test_phase ... ok test generator::test::test_reset ... ok test generator::test::test_status ... ok test generator::test::test_trigger ... ok test generator::test::test_trigger_all ... ok test generator::test::test_trigger_source ... ok test trigger::test::test_delay ... ok test trigger::test::test_delay_in_ns ... ok test trigger::test::test_hysteresis ... ok test trigger::test::test_level ... FAILED test trigger::test::test_status ... ok failures: ---- burst::test::test_period stdout ---- thread 'burst::test::test_period' panicked at 'assertion failed: `(left == right)` (left: `Ok(999999)`, right: `Ok(1000000)`)', src/burst.rs:176 note: Run with `RUST_BACKTRACE=1` for a backtrace. ---- generator::test::test_offset stdout ---- thread 'generator::test::test_offset' panicked at 'assertion failed: `(left == right)` (left: `Ok(0.30004883)`, right: `Ok(0.3)`)', src/generator.rs:418 ---- trigger::test::test_level stdout ---- thread 'trigger::test::test_level' panicked at 'assertion failed: `(left == right)` (left: `Ok(0.4000244)`, right: `Ok(0.4)`)', src/trigger.rs:221 failures: burst::test::test_period generator::test::test_offset trigger::test::test_level test result: FAILED. 39 passed; 3 failed; 0 ignored; 0 measured error: test failed, to rerun pass '--lib'
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.