Logic 2.2.6 - High Level Analyzers!

Download Links

Python high-level analyzers are finally here! We haven’t polished the feature at all yet, so expect a lot of changes and improvements over the next few weeks. Please send us your issues, your suggestions for improvements, and please share the high-level analyzers you write!

Documentation and examples can be found here: github.com/saleae/logic2-examples

We have a new changelog page! check it out here

What’s new

  • High-Level Analyzer Extensions! You can now write a short Python script and process decoded protocol results - change the text, merge multiple results, filter or create new results from scratch.
  • Added an RMS analog measurement and digital clock frequency measurements - Python measurements are coming soon!
  • Analyzer Export

Bug fixes

  • Right-click analyzer text will now open its menu
  • Stream to terminal button is now working properly
  • Behind the scenes: performance tracing, integration tests, dll downloads, channel reordering refactor

2 Likes

Huzzah! I just finished my bare bones register decoder, so this is great timing!

2 Likes

I just tried out the Gyro example HLA and it does seem to work as advertised!

I hope that you’ll add support for viewing the HLA output in a table. What’s there is nice but it’s a bit hard to get a high level picture of what’s happening.

Along those same lines, exporting the analyzer results would be great. I’ve developed a workflow that involves diffing my own analyzer output. While diffing captures in Logic would be nice, there’s already a plethora of diff tools so maybe it wouldn’t be the best use of your time

Woot! Glad to hear it works on a computer outside of our office - it took quite a bit of effort just to get it to this point.

There is more work ahead than behind - we’re going to build a completely new results table that will support protocol specific (or HLA specific) columns, and we’ll also hook up HLAs to the terminal view. Export will definitely happen too.

I should mention that 2.2.6 now includes regular analyzer export, I know users have been waiting for that for a while. Hope it helps! And, in the short term, you could simply save the frames you produce to a file while you produce them in python.

1 Like

Yup, I’m actually using the I2C analyzer at the moment.

Two bits of feedback:

  • Exporting analyzer results is a bit counter-intuitive. Ideally there would be a floppy glyph, arrow or something similar right next to the terminal slider, or somewhere else visible and near the Decoded Protocols table. I suppose next to the analyzer name would work as well.
    Unless I’m missing something, you have to hover over the analyzer name to bring up the menu glyph, click it, then select export. Now that I know where to find it it’s not so bad but finding it was a bit frustrating. I understand the desire to keep the UI from getting cluttered (and appreciate it) however I think for now exporting the data will be a common task

  • Please consider adding Hex+Binary as a formatting option.

I think I found a few bugs with the I2C analyzer export:

  • The analyzer export does not respect the selected data format (hex/bin/ascii)
  • Selecting “7-bit, address bits only” in the Address Display dropdown results in “i” being filled in for the address when exported
  • “Packet Id” is always set to 0
  • Address and Data are single quoted

when working under heavy load (4 channels, 50mhz analog, 125mbps digital) the stop button is not responding after the recording has begun, need to force shut down of the software to stop.
happened consistently on my pc.
im working with saleas 16 pro on windows 10 if it matters.

Seems like this version doesn’t run on High Sierra & Mojave anymore (2.2.5 did):

MacBook-Pro:~ romuald$ /Users/romuald/Downloads/Logic2.app/Contents/MacOS/Logic ; exit;
Environment
  Executable path: /Users/romuald/Downloads/Logic2.app/Contents/MacOS/Logic
  Executable directory: /Users/romuald/Downloads/Logic2.app/Contents/MacOS
  Original working directory: /Users/romuald
  Current working directory: /Users/romuald/Downloads/Logic2.app/Contents/MacOS
Python Home: /Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs
(node:70003) UnhandledPromiseRejectionWarning: Error: Dynamic Linking Error: dlopen(/Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs/lib/libpython3.8.dylib, 2): Symbol not found: ____chkstk_darwin
  Referenced from: /Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs/lib/libpython3.8.dylib (which was built for Mac OS X 10.15)
  Expected in: /usr/lib/libSystem.B.dylib
 in /Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs/lib/libpython3.8.dylib
    at new DynamicLibrary (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/node_modules/ffi-napi/lib/dynamic_library.js:74:11)
    at Object.Library (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/node_modules/ffi-napi/lib/library.js:45:14)
    at startGraphServer (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/dist/index.js:68:13)
    at App.<anonymous> (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/dist/index.js:178:48)
    at App.emit (events.js:208:15)
(node:70003) UnhandledPromiseRejectionWarning: Error: Dynamic Linking Error: dlopen(/Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs/lib/libpython3.8.dylib, 2): Symbol not found: ____chkstk_darwin
  Referenced from: /Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs/lib/libpython3.8.dylib (which was built for Mac OS X 10.15)
  Expected in: /usr/lib/libSystem.B.dylib
 in /Users/romuald/Downloads/Logic2.app/Contents/Resources/osx/pythonlibs/lib/libpython3.8.dylib
    at new DynamicLibrary (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/node_modules/ffi-napi/lib/dynamic_library.js:74:11)
    at Object.Library (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/node_modules/ffi-napi/lib/library.js:45:14)
    at startGraphServer (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/dist/index.js:68:13)
    at App.<anonymous> (/Users/romuald/Downloads/Logic2.app/Contents/Resources/app.asar/dist/index.js:178:48)
    at App.emit (events.js:208:15)
(node:70003) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:70003) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:70003) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
	(node:70003) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I’m running mojave and not having issues

@Romke sorry about that! Looks like our python 3.8 build is targeting the 10.15 MacOS SDK, but haven’t looked into it yet. We’ll take a look today.
Quick question - are you planning on updating to Catalina?
I ask because I want to drop support for everything except for 10.1, 10.15, and newer, because the 10.14 SDK included some new C++17 features that we have available on Linux and Windows, but have to work around on MacOS. There are other solutions for that though.

I’ve seen this many times too, it’s related to our performance problems. Now that high level analyzers have shipped, we’re putting the whole team on it!

I am planning on updating to Catalina, just have to set the time aside to pull the trigger and deal with the consequences

Whoops, sorry about that @siddacious! I implemented the feature and set the display base to a fixed value for testing, but forgot to go back and connect it to the settings in the UI.
I think the “i” problem is related to the export using the ASCII format. inthe 8 bit decode version, the address isn’t a valid low-ascii character, so the legacy export code displayed it as a decimal number instead.

“Packet Id” is always set to 0

Whoops, I think that’s another bug in the adapter layer that connected the analyzer API from the old software to the new system, something that mainly affected export.

Address and Data are single quoted

The single quotes are added because of the way the legacy analyzer export code handles non-standard ascii characters when in the ASCII mode. adding display base support will fix most of these issues.

1 Like

I have been planning to switch to Mojave & Catalina for over a year :slightly_frowning_face:. Time & disk space are holding me back…

But I think 3 year support should be desirable… Maybe just disable certain things selectively? Or would that become too complex?

Let me know if I need to test something. (btw, I found the inspector: just pres alt-apple-i at startup :wink:)

2.2.6 is getting a segmentation fault after the memory buffer has filled.
Ubuntu 20.04 x64 on an i5, Logic Pro 8.

I am monitoring 4 channels digital at 6.25MS/s, 1 analog at 1.562MS/s. 3GB buffer.
Keeping a 5 second backlog, stopping recording on trigger of one channel.

Once Logic crashes and I restart it, I have to power-cycle the Logic Pro or I get a connection error.

When is the app crashing? at the end of the capture or while looking for a trigger? How long is the capture before the crash?

Thanks!

The trigger has not happened when it crashes; it is still recording. What I see is that the progress bar showing the amount of memory used in the buffer increases until it hits the 3GB limit. Here are the last several lines of terminal output:

State Handler [59685]
State Handler [422146]
State Handler [59688]
State Handler [422188]
State Handler [59690]
State Handler [422220]
State Handler [59693]
State Handler [422278]
State Handler [59696]
State Handler [422322]
State Handler [59699]
State Handler [422380]
State Handler [59702]
State Handler [422422]
State Handler [59704]
State Handler [422461]
State Handler [59707]
State Handler [422513]
State Handler [59710]
State Handler [422555]
State Handler [59713]
State Handler [422610]
State Handler [59715]
State Handler [422646]
State Handler [59718]
State Handler [422690]
State Handler [59721]
State Handler [422739]
State Handler [59724]
State Handler [422789]
State Handler [59727]
State Handler [422845]
State Handler [59729]
State Handler [422880]
State Handler [59732]
State Handler [422926]
State Handler [59735]
terminate called after throwing an instance of 'Saleae::SaleaeException'
  what():  Invalid data sequence or position
1 Like