CHANGELOG
This file contains the list of changes made to the Joulescope driver.
1.5.1
2024 Apr 27
Fixed JSDRV_DOWNSAMPLE_MODE_AVERAGE glitches due to C type conversion.
Fixed incorrect downsampling initialization.
1.5.0
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.
1.4.10
2024 Mar 20
Fixed JS110 to only issue one CTRL IN status request at a time.
1.4.9
2024 Mar 18
Refactored record entry point.
Fixed JS110 performance degradation (blocking status in device thread) #8
1.4.8
2024 Feb 26
Fixed python statistics entry point to remove 1.0 second default duration.
1.4.7
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.
1.4.6
2023 Dec 9
Fixed timestamp on POSIX (macOS, linux) systems.
1.4.5
2023 Dec 8
Fixed stream buffer use-after-free and remove timeout.
Added fuzz tester.
1.4.4
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.
1.4.1
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.
1.4.0
2023 Nov 11
Added jsdrv_calibration_hash and pyjoulescope_driver.calibration_hash.
1.3.21
2023 Nov 10
Updated to FW 1.1.1.
Added measure entry point to pyjoulescope_driver.
1.3.20
2023 Oct 26
Updated to FPGA 1.1.0 for beta release (was mistakenly left at 1.0.4).
1.3.19
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.
1.3.18
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.
1.3.17
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.
1.3.16
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.
1.3.15
2023 Jun 8
Fixed JS220 firmware images omitted by 1.3.14 build process changes.
Changed firmware image download to script invoke, not import.
1.3.14
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.
1.3.12
2023 May 31
Reduced libusb backend log level. Was too active for JS110 statistics.
Bumped JLS version to 0.7.0.
1.3.11
2023 May 24
Added JS110 on-instrument (sensor) statistics option #3.
1.3.10
2023 May 19
Improved threading and priorities on Windows.
Improved Windows timer resolution (timeBeginPeriod).
1.3.9
2023 May 17
Fixed installation on Ubuntu #6.
1.3.8
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 ..”
1.3.7
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).
1.3.6
2023 Apr 27
Fixed JS110 sample_id for downsampled 1-bit channels.
Updated to pyjls 0.6.1 for improved robustness.
1.3.5
2023 Apr 26
Added JS220 FW 1.0.7 and FPGA 1.0.4 as alpha & beta.
1.3.4
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.
1.3.3
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.
1.3.2
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.
1.3.1
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.
1.3.0
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.
1.2.2
2023 Mar 19
Fixed intermittent timeout broken for API calls.
1.2.1
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.
1.2.0
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.
1.1.4
2023 Jan 25
Added JS110 GPI read request: s/gpi/+/!req -> s/gpi/+/!value.
Fixed incorrect topic match on {device}/@/!finalize
1.1.3
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.
1.1.2
2022 Dec 20
Fixed i128 math functions js220_i128_neg() and js220_i128_lshift().
Fixed incorrect constant for platforms with i32 constants.
1.1.1
2022 Nov 30
Fixed build dependencies.
Specified python 3.10 for GitHub actions.
1.1.0
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.
1.0.7
2022 Nov 8
Improved documentation.
1.0.6
2022 Nov 2
Fixed build from tar.gz package.
Updated README.
1.0.5
2022 Nov 1
Fixed JS110 current range processing for window N and M.
Fixed JS110 sample alignment.
Fixed JS110 statistics generation time and rate.
1.0.4
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.
1.0.3
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.
1.0.2
2022 Oct 15
Fixed jsdrv_util app_match to work with multiple Joulescopes.
1.0.1
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.
1.0.0
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).
0.2.7
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.
0.2.6
2022 Sep 29
Reduced POSIX file descriptor limit request to 4096 max.
0.2.5
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.
0.2.4
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.
0.2.3
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.
0.2.2
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.
0.2.1
2022 Aug 1
Initial public commit.