Difference between revisions of "TODO"

From sigrok
Jump to navigation Jump to search
m (Updates.)
Line 1: Line 1:
== sigrok 0.2 ==
== sigrok 0.3 ==


* <s>Support OLS file format output (https://github.com/jawi/ols/wiki/OLS-data-file-format).</s>
* <s>CLI: Fix save session</s>
* <s>implement load session.</s>
* <s>Don't initialize and scan for hardware on all plugins if the '''-d <plugin>''' option is used; instead, only initialize the specified plugin.</s>
* Make sure all combinations of --enable-*/--disable-* options works for configure.
* Make sure all combinations of --enable-*/--disable-* options works for configure.
** <s>There are possible issues if no libusb-device is enabled (e.g. only OLS or only demo).</s>
** There may be issue if none of the drivers is enabled, print useful error in that case(?)
** There may be issue if none of the drivers is enabled, print useful error in that case(?)
* <s>output modules shouldn't assume the device has SR_DI_CUR_SAMPLERATE, and segfault when they get NULL -- HWCAPs should be checked for SR_HWCAP_SAMPLERATE.</s>
* libsigrok.h/libsigrokdecode.h: Only list public API functions.
* libsigrok.h/libsigrokdecode.h: Only list public API functions.
** <s>Prefix all public functions with sr_ or srd_.</s>
* Windows port: Implement anykey.c replacement.
* Windows port: Implement anykey.c replacement.
* <s>CLI: Restructure command line option syntax.</s>
* <s>libsigrok, libsigrokdecode: Proper shared libs setup and version numbers to be able to handle API/ABI compatibility issues sanely later.</s>
** <s>Also, provide correct and complete libsigrok.pc/libsigrokdecode.pc files.</s>
* <s>Fix segfaults in protocol decoders, e.g. '''sigrok-cli --samples 2050 -a transitioncounter'''.</s>
* <s>demo driver: Add a mechanism to set/report a samplerate, needed for some output file formats and other stuff.</s>
** hex output: Not all lines/columns are of the same length (as they are with real LAs).
** hex output: Not all lines/columns are of the same length (as they are with real LAs).
** VCD: All samplenumbers are 0 (instead of the proper samplecount).
** VCD: All samplenumbers are 0 (instead of the proper samplecount).
Line 24: Line 12:
* MinGW: Fix Python path decoder issues due to Windows vs. Linux path specification.
* MinGW: Fix Python path decoder issues due to Windows vs. Linux path specification.


== sigrok 0.3 ==
== sigrok 0.4 ==


* stackable protocol decoder implementation
* stackable protocol decoder implementation
Line 45: Line 33:
** have OLS driver use udev if available, fall back to serial port probing otherwise
** have OLS driver use udev if available, fall back to serial port probing otherwise
** Find alternative to udev for windows and macos
** Find alternative to udev for windows and macos
* <s>Add support for downloading/installing the Python Windows installer.</s>
* Fix/workaround libusb 1.0 [[Windows]] port issues:
* Fix/workaround libusb 1.0 [[Windows]] port issues:
** Device renumeration not yet supported (needed for FX2 based LAs)
** Device renumeration not yet supported (needed for FX2 based LAs)

Revision as of 00:27, 16 April 2011

sigrok 0.3

  • Make sure all combinations of --enable-*/--disable-* options works for configure.
    • There may be issue if none of the drivers is enabled, print useful error in that case(?)
  • libsigrok.h/libsigrokdecode.h: Only list public API functions.
  • Windows port: Implement anykey.c replacement.
    • hex output: Not all lines/columns are of the same length (as they are with real LAs).
    • VCD: All samplenumbers are 0 (instead of the proper samplecount).
    • OLS, gnuplot: Hangs on MinGW for some reasons (not sure if related).
  • Finish protocol decoder API design.
  • CLI: Eliminate all printing to stdout, only sample data or decoder output should end up there. Error/debug messages should go to stderr always.
  • MinGW: Fix Python path decoder issues due to Windows vs. Linux path specification.

sigrok 0.4

  • stackable protocol decoder implementation
  • modular filter system
    • take arguments in the regular thing:key=value format
    • integrate current probe compression filter
    • resampling module: sample up/down based on factor argument
    • noise filter: filter out pulses shorter than the samplerate's period

Before 1.0

  • all output modules should use GString API instead of estimating output size
  • VCD input modules
  • OLS format input module

Future

  • udev:
    • Make udev optional, only build MSO driver if it's available
    • have OLS driver use udev if available, fall back to serial port probing otherwise
    • Find alternative to udev for windows and macos
  • Fix/workaround libusb 1.0 Windows port issues:
    • Device renumeration not yet supported (needed for FX2 based LAs)
    • File descriptor / socket based polling not supported in Windows. Workaround (short-term): Use a thread in sigrok.
  • Make sure all optional components are really optional in the build system:
    • Only require Python if the users wants protocol decoders, the rest should also build/compile/run fine without Python installed.
  • sigrok uses uint64_t as an internal datatype to represent a sample, limiting the number of probes on supported hardware to 64. But high-end logic analyzers can have hundreds of probes. A solution would be to switch to either a roll-our-own byte array type, or use GMP. In any case, the overhead of switching over shouldn't be too bad: the filter code and frontend datafeed callback functions will need to use it, but hardware drivers should have enough with a couple of lightweight wrappers.
  • 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_* and similar 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.
  • Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver: asix-sigma, demo (not relevant), link-mso19, openbench-logic-sniffer, saleae-logic, zeroplus-logic-cube
  • Python bindings for libsigrok and libsigrokdecode.

Contributors wanted

  • Add output for latex package tikz-timing.
  • Linux distro packages for non-Debian distros.
  • FreeBSD packages/ports.
  • Open-source firmware for the FX2 devices

The Cypress FX2-based devices, such as the Saleae Logic and the USBee SX, use only a minimal vendor-provided firmware. The only thing it really does is set the sample rate and turn on the chip's auto-mode. Nevertheless, the vendors provide the firmware as a binary blob, with no source. It would be great if sigrok could ship with an own firmware implementation for these devices. Some links:

    • SDCC, the Small Devices C Compiler, is a compiler specifically suited to small MCUs, and has support for the 8051 core in the FX2.
    • fx2lib is an open-source library for writing firmware on the FX2. It has a number of interesting functions, including implementing custom USB vendor commands.
    • GNU Radio's USRP2 board has an FX2 on it, and GNU Radio has extensive custom firmware for it.