This file contains the list of changes made to the Joulescope driver.
2024 Jun 28
- Pinned numpy version dependency to < 2.
2024 May 28
- Improved libusb (macOS, linux) backend message processing.
- Handle closed command queues to improve firmware update reliability.
- Added device command queues to poll for improved performance.
- Handle all pending device commands with each pass.
2024 May 8
- Added "capture" subcommand to jsdrv example executable.
2024 Apr 27
- Fixed JSDRV_DOWNSAMPLE_MODE_AVERAGE glitches due to C type conversion.
- Fixed incorrect downsampling initialization.
2024 Apr 24
- Added node.js binding.
- Fixed downsampling to round to nearest integer for integer types.
- Added downsampling mode JSDRV_DOWNSAMPLE_MODE_AVERAGE, but not yet connected.
2024 Mar 20
- Fixed JS110 to only issue one CTRL IN status request at a time.
2024 Mar 18
- Refactored record entry point.
- Fixed JS110 performance degradation (blocking status in device thread) #8
2024 Feb 26
- Fixed python statistics entry point to remove 1.0 second default duration.
2024 Feb 14
- Initialized buffer_mgr_s instance_.context to NULL.
- Improved python binding error reporting.
- Added optional duration to statistics entry point.
- Bumped minimum pyjls version from 0.8.2 to 0.9.2.
2023 Dec 9
- Fixed timestamp on POSIX (macOS, linux) systems.
2023 Dec 8
- Fixed stream buffer use-after-free and remove timeout.
- Added fuzz tester.
2023 Dec 7
- Improved J110 & JS220 state reset on open. Fixes JS110 fixes UTC time sync.
- Fixed JS220 communication reliability with FPGA 1.2.1 and FW 1.2.1.
- Improved JS110 time map for long-term stability.
2023 Nov 30
- Fixed JS220 "h/fs" restore.
- Improved JS220 UTC time sync with FW 1.2.0 & FPGA 1.2.0 support.
- Improved JS220 skip / drop sample handling.
2023 Nov 11
- Added jsdrv_calibration_hash and pyjoulescope_driver.calibration_hash.
2023 Nov 10
- Updated to FW 1.1.1.
- Added measure entry point to pyjoulescope_driver.
2023 Oct 26
- Updated to FPGA 1.1.0 for beta release (was mistakenly left at 1.0.4).
2023 Oct 25
- Fixed help text for "program" entry point.
- Build for Python 3.12.
- Upgraded to FW & FPGA 1.1.0 stable releases.
- Upgraded record entry point to pyjls 0.8.2 to 1.0.0.
2023 Jul 24
- Fixed buffer_signal summaryN incorrect when computing multiple values in a single call.
- Added "noexcept" to python callbacks. Cython 3.0 deprecates implicit noexcept.
2023 Jul 11
- Fixed "in frame_id mismatch" warning log message on first frame.
- Fixed JS220 signal "s/X/ctrl" 0 not correctly closing signal.
- Added Record "auto" parameter to optionally bypass automatic signal enable/disable.
2023 Jun 14
- Parallelized GitHub Actions build. Removed cibuildwheel.
- Fixed JS220 statistics for macOS. 1.3.15 was segfaulting on unaligned accesses.
- Added args parameter to pyjoulescope_driver.main.run().
- Added quit_ handling to jsdrv.exe examples.
- Bumped pyjls version check from 0.7.0 to 0.7.2.
2023 Jun 8
- Fixed JS220 firmware images omitted by 1.3.14 build process changes.
- Changed firmware image download to script invoke, not import.
2023 Jun 8
- Improved documentation.
- Improved GitHub Actions build process.
- Moved test/jsdrv_util to example/jsdrv.
- Bumped minimum python version from 3.8 to 3.9.
2023 May 31
- Reduced libusb backend log level. Was too active for JS110 statistics.
- Bumped JLS version to 0.7.0.
2023 May 24
- Added JS110 on-instrument (sensor) statistics option #3.
2023 May 19
- Improved threading and priorities on Windows.
- Improved Windows timer resolution (timeBeginPeriod).
2023 May 17
- Fixed installation on Ubuntu #6.
2023 May 16
- Updated info entry point.
- Added automatic include path for jsdrv static CMake builds.
- Added support for building a shared library. Initialize build subdir with "cmake -DBUILD_SHARED_LIBS=ON .."
2023 Apr 28
- Fixed "info" entry point to correctly display multiple Joulescopes.
- Fixed "record" entry point to correctly add first UTC timestamp.
- Cleaned up build & install process (needs more work).
2023 Apr 27
- Fixed JS110 sample_id for downsampled 1-bit channels.
- Updated to pyjls 0.6.1 for improved robustness.
2023 Apr 26
- Added JS220 FW 1.0.7 and FPGA 1.0.4 as alpha & beta.
2023 Apr 26
- Fixed record jls version check.
- Send buffer signal clear on free.
- Updated to pyjls 0.6.0.
- Fixed pyjoulescope_driver.record to not remove sample_id offset.
2023 Apr 19
- Cleared all message fields at allocation.
- Added api_timeout entry point test.
- Improved thread entry point test.
- Reordered unsubscribe to ensure callback validity.
- Added malloc/free mutex for guaranteed thread safety.
- Added runtime pyjls version check.
- Improved logging robustness and thread safety.
- Fixed JS110 open causing IN+ to OUT+ disconnect.
- Added JS110 open modes: defaults, resume.
2023 Apr 13
- Improved record close error handling.
- Added JS220 streaming data ignore when device not open.
- Improved record entry point.
- Open in "defaults" mode by default with optional "restore".
- Added parameter "--set" option.
2023 Apr 4
- Decreased JS110 status polling interval to reduce USB message spamming.
- Added JS110 streaming when only statistics requested (uses host-side stats).
- Increased process priority and backend thread priority for Windows.
2023 Mar 30
- Added pyjoulescope_driver.time64 module (from UI).
- Fixed buffer_signal summary_get handling on zero size.
- Added "record" module and entry point to record streaming samples.
- Fixed buffer_signal range advertisement when empty.
- Improved skipped / duplicate sample handling for JS220.
2023 Mar 19
- Fixed intermittent timeout broken for API calls.
2023 Mar 16
- Truncate memory buffer sample responses that are too long (segfault).
- Fixed buffer signal shift correction overflowing buffer (segfault).
- Fixed garbage data at end when shift required for u1 and u4 data types.
- Fixed zero length message send for highly downsampled signals.
2023 Mar 9
- Added memory buffer for f32, u4, u1 data types.
- Bumped python support (3.8 - 3.11). Dropped 3.7.
- Added API struct jsdrv_time_map_s and functions jsdrv_time_from_counter(), jsdrv_time_to_counter.
- Added jsdrv_time_map_s to jsdrv_stream_signal_s and jsdrv_statistics_s.
- Added host-side time map.
- Fixed JS110 sample stream message size.
- Fixed buffer_signal sample and utc response time entries.
2023 Jan 25
- Added JS110 GPI read request: s/gpi/+/!req -> s/gpi/+/!value.
- Fixed incorrect topic match on {device}/@/!finalize
2023 Jan 24
- Fixed open to correctly handle error on lower-level device open.
- Improved statistics output to include time/sample_freq and time/range.
- Reduced DEVICES_MAX for libusb backend to prevent breaking select.
2022 Dec 20
- Fixed i128 math functions js220_i128_neg() and js220_i128_lshift().
- Fixed incorrect constant for platforms with i32 constants.
2022 Nov 30
- Fixed build dependencies.
- Specified python 3.10 for GitHub actions.
2022 Nov 11
- Modified jsdrv_stream_signal_s (requires app recompile).
- Fixes pyjoulescope and pyjoulescope_ui integration.
- Added sample_rate.
- Added decimate_factor.
- Added JS220 host-side downsampling.
- Rename JS110 topic s/fs to h/fs, matches new JS220 topic.
- Fixed old JS220 data sent on stream enable after disable.
- Added free for partial input stream messages on device close.
- Fixed firmware image include and added pkgdata load check.
2022 Nov 8
- Improved documentation.
2022 Nov 2
- Fixed build from tar.gz package.
- Updated README.
2022 Nov 1
- Fixed JS110 current range processing for window N and M.
- Fixed JS110 sample alignment.
- Fixed JS110 statistics generation time and rate.
2022 Oct 30
- Added JS220_CTRL_OP_DISCONNECT for cleaner disconnect/reconnect. Requires js220_ctrl firmware 1.0.4, no effect on earlier versions.
- Fixed JS110 support.
- Improve firmware update support.
2022 Oct 24
- Fixed linux by disabling BULK IN timeout. Linux was losing data on timeout. Fixed cancel, which still allows graceful shutdown.
- Added JS110 downsampling on host.
- Switched from obsolete pypiwin32 to pywin32.
- Fixed js110_sp_process when i_range was off or missing.
2022 Oct 15
- Fixed jsdrv_util app_match to work with multiple Joulescopes.
2022 Oct 9
- Added native and python threading demonstrations.
- Improve python binding to support u64 and i64 types.
- Added firmware/gateware updates.
- Added build support for including most recent firmware images.
- Added "program" entry point.
- Fixed access violation on publish to close device.
- Fixed python Driver.device_paths returning [""] instead of [] when no devices found.
- Reduced bulk in error on device removal to warning.
2022 Oct 6
- Fixed JS220 power computation.
- Fixed trigger GPI spec (7 not 255).
- Fixed sample_id 32-bit rollover handling.
- Added publish bytes support (needed for memory writes).
2022 Oct 4
- Added host-side power computation to JS220.
- Improved JS110 driver to provide current_range, gpi0, gpi1.
- Fixed power, charge and energy computation. Power fixes require FPGA 0.2.6 upgrade.
- Fixed JS110 stop/start streaming.
- Added JS110 statistics.
2022 Sep 29
- Reduced POSIX file descriptor limit request to 4096 max.
2022 Sep 26
- Fixed process hang due to logging on macOS & Linux.
- Fixed device disconnect for macOS & Linux.
- Increased file handle limit on macOS & Linux.
2022 Sep 24
- Added responder for removed devices.
- Fixed JSDRV_MSG_DEVICE_ADD retained subscribe. Was sending each device then full comma-separated list.
- Added check for API call from jsdrv frontend thread.
2022 Sep 21
- Fixed support for multiple (not just first found) of same device type.
- Improved JS110 support.
- Added macOS and Linux support using libusb library.
2022 Sep 9
- Completed JS220 memory read operation.
- Completed JS220 memory erase operation.
- Modifed jsdrvp_msg_alloc_value to support heap allocated values, not just jsdrv_publish(). Needed for read data messages.
- Added jsdrv_topic_remove().
- Completed controller-side signed & encrypted & signed firmware update.
- Move UI to private repository. Need to avoid Qt dependencies here.
- Removed "noise.py" entry point, which is not meaningful to end users.
- Added python command-line --log_level and --jsdrv_log_level options.
- Fixed python publish string values encoding.
- Improved native metadata validating to accept integer values as strings.
- Renamed python "set.py" to "set_parameter.py" to avoid reserved word "set".
- Added JS220 "opening" state to "h/state" metadata.
- Simplified native jsdrv_util set to use native support for string values.
- Fixed driver based upon beta build feedback.
- Fixed JS220 handling of missing/duplicated sample ids.
- Converted to element_size_bits from element_size_pow2.
- Added GPIO streaming support (u1 data type).
- Redefined JSDRV_DATA_TYPE_FLOAT to align with JLS v2.
- Reduced logging verbosity.
2022 Aug 1
- Initial public commit.