Difference between revisions of "TODO"

From sigrok
Jump to navigation Jump to search
m
 
(14 intermediate revisions by 5 users not shown)
Line 4: Line 4:


* Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver: fx2lafw, zeroplus-logic-cube, others(?)
* Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver: fx2lafw, zeroplus-logic-cube, others(?)
* Asix SIGMA driver: support multiple devices properly (currently only one is supported).
* Chronovu LA8/LA16 driver: support multiple devices properly (currently only one is supported).
* Chronovu LA8/LA16 driver: support multiple devices properly (currently only one is supported).


Line 11: Line 10:
* Add OLS input module support.
* Add OLS input module support.
* Add gnuplot input module support ([[User:Uwe Hermann|Uwe Hermann]]).
* Add gnuplot input module support ([[User:Uwe Hermann|Uwe Hermann]]).
* Add Scanalogic input module support ([[User:Uwe Hermann|Uwe Hermann]]).
=== Output modules ===
* Add Scanalogic output module support ([[User:Uwe Hermann|Uwe Hermann]]).
* Add output for latex package [http://www.ctan.org/tex-archive/graphics/pgf/contrib/tikz-timing tikz-timing].


=== Miscellaneous ===
=== Miscellaneous ===


* Check all public API calls to see whether they need an sr_context parameter.
* Check all public API calls to see whether they need an sr_context parameter.
* struct sr_channel.index: Drivers relying on the GSList order should be changed back to use the index field.
* Use glib functions for file handling, not manual fopen/fclose etc., for portability reasons.
* Run the code receiving the samples as quickly as possible, run output format code and other non-timing-critical stuff (protocol decoders) in an extra thread. The problem is nicely visible with FX2-based logic analyzers, the longer an output format takes to produce its output, the better your chances to get "oops, I just lost samples" errors.
* sr_errno:
* sr_errno:
** Most functions should return SR_OK or SR_ERR_* (same for SRD_OK etc).
** Most functions should return SR_OK or SR_ERR_* (same for SRD_OK etc).
Line 32: Line 22:


== libsigrokdecode ==
== libsigrokdecode ==
== Major features ==
==== Major features ====
* Add high-precision timer to runtc
* Add high-precision timer to runtc
* Annotations need an additional 'type' field, so that PDs/GUIs can differentiate between different output "things".
* Add annotation mime types
** Types are not yet defined, but could be things like DEFAULT, ERR, WARN, DBG, and others.
* Add annotation metadata (type/value/unit) to allow clients to format the value as the user desires (ASCII/dec/hex/bin/whatever)
** Best handled with a keyword arg to put(), which defaults to srd.ANN_DEFAULT.
 
==== Other ====
* Test/implement support for multiple outputs of one PD, and stacking different additional PDs on those outputs.
* Test/implement support for multiple outputs of one PD, and stacking different additional PDs on those outputs.
* Test/implement multiple inputs support.
* Test/implement multiple inputs support.
* Add srd_context parameter, and check all public API calls to see whether they need it (?)
* Python exception handling in libsrd: add full traceback support with srd_dbg().


== sigrok-cli ==
== sigrok-cli ==
* Python exception handling in libsrd: add full traceback support with srd_dbg().
* Make specification of triggering capabilities more detailed, so that frontends/GUIs can auto-generate GUI forms out of that metadata.
* Add a --run option, which just starts sampling with the supplied or default samplerate. Contrary to --time or --samples you don't need to explicitly specify a duration or number of samples here, that's automatically determined by the available memory of the logic analyzer and the selected samplerate. Devices that can stream continuously will do so, others will just fill a buffer and then stop.
** TODO: Similar to --continuous? Merge both?


== fx2lafw ==
== fx2lafw ==
Line 64: Line 50:


* Deduplicate property setting functionality between SamplingBar and DeviceOptions - make SamplingBar a properties container
* Deduplicate property setting functionality between SamplingBar and DeviceOptions - make SamplingBar a properties container
* Analog support
* Analog interpolation (cosine? sinc? some kind of interpolation filter?)
** Add signal v-scale control (Volts/div).
* Signal overview
** Add interpolation (cosine? sinc? some kind of interpolation filter?)
* Add support for other open/import file formats
* Add signal overview
* Paint speed profiling information.
* Code documentation
* Transition coding
* Transition coding
* Store more config options with QSettings
 
== sigrok-meter ==
 
* Make the list of measurements look nicer without using too much additional space.
* Add graphs.
** [http://www.pyqtgraph.org/ PyQtGraph] looks like a nice graphing library.
*** Works with PyQt and PySide.
*** Pure python, easy to install.
*** Few dependencies: '''scipy''' is not required any more in the upcoming version 0.9.9, '''numpy''' is already a dependency of the python bindings.
*** From looking at the examples, it seems more than fast enough for our requirements.
** Pass all samples (not only the most recent one) to the GUI thread and store them there.
*** The packet payload object is currently not thread save.

Latest revision as of 13:11, 19 July 2020

libsigrok

Hardware support

  • Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver: fx2lafw, zeroplus-logic-cube, others(?)
  • Chronovu LA8/LA16 driver: support multiple devices properly (currently only one is supported).

Input modules

  • Add OLS input module support.
  • Add gnuplot input module support (Uwe Hermann).

Miscellaneous

  • Check all public API calls to see whether they need an sr_context parameter.
  • sr_errno:
    • Most functions should return SR_OK or SR_ERR_* (same for SRD_OK etc).
    • Most backend functions return status as an integer, which is SR_OK if all went well, or SR_ERR_* if an error occurred.
    • However, there is no way to pass any information back as to what went wrong — and this is important for user-friendliness.
    • Perhaps an error code is not enough; maybe something like sigrok_errno(errorcode, "unsupported device") is better.
  • Support specifying the firmware directory at runtime.

libsigrokdecode

Major features

  • Add high-precision timer to runtc
  • Add annotation mime types
  • Add annotation metadata (type/value/unit) to allow clients to format the value as the user desires (ASCII/dec/hex/bin/whatever)

Other

  • Test/implement support for multiple outputs of one PD, and stacking different additional PDs on those outputs.
  • Test/implement multiple inputs support.
  • Python exception handling in libsrd: add full traceback support with srd_dbg().

sigrok-cli

fx2lafw

  • Analog sampling: 1-channel, 2-channel, voltage meter
  • Trigger pin
  • Clock input
  • Clock output
  • Frequency/pulse counter
  • Signal generator
  • Fix power consumption during enumeration.
    • Non-LP FX2's consume more than 100mA during enumeration. This is outside of the USB specification
    • Official workaround is to enumerate first as full-speed, then as high-speed. This is overkill for sigrok.
    • Investigate putting the CPU to sleep (except for processing interrupts) until enumerated.

PulseView

  • Deduplicate property setting functionality between SamplingBar and DeviceOptions - make SamplingBar a properties container
  • Analog interpolation (cosine? sinc? some kind of interpolation filter?)
  • Signal overview
  • Transition coding

sigrok-meter

  • Make the list of measurements look nicer without using too much additional space.
  • Add graphs.
    • PyQtGraph looks like a nice graphing library.
      • Works with PyQt and PySide.
      • Pure python, easy to install.
      • Few dependencies: scipy is not required any more in the upcoming version 0.9.9, numpy is already a dependency of the python bindings.
      • From looking at the examples, it seems more than fast enough for our requirements.
    • Pass all samples (not only the most recent one) to the GUI thread and store them there.
      • The packet payload object is currently not thread save.