Difference between revisions of "TODO"
Jump to navigation
Jump to search
Uwe Hermann (talk | contribs) |
|||
Line 1: | Line 1: | ||
This is a random list of TODO items for the code and/or ideas for improvements. | This is a random list of TODO items for the code and/or ideas for improvements. | ||
== sigrok 0.1 release-critical issues == | == sigrok 0.1 release-critical issues == | ||
Line 25: | Line 21: | ||
** Test that they're not corrupted by stray errors printed on stdout instead of stderr. | ** Test that they're not corrupted by stray errors printed on stdout instead of stderr. | ||
** Test all of the above without SIGROK_DEBUG, with SIGROK_DEBUG=1, and SIGROK_DEBUG=2. | ** Test all of the above without SIGROK_DEBUG, with SIGROK_DEBUG=1, and SIGROK_DEBUG=2. | ||
== sigrok 0.2 features == | |||
* support OLS file format input and output (https://github.com/jawi/ols/wiki/OLS-data-file-format) | |||
== General == | |||
* 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 [http://gmplib.org/ 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. | |||
== libsigrok == | == libsigrok == | ||
Line 37: | Line 41: | ||
** Perhaps an error code is not enough; maybe something like sigrok_errno(errorcode, "unsupported device") is better. | ** Perhaps an error code is not enough; maybe something like sigrok_errno(errorcode, "unsupported device") is better. | ||
** Both the cmdline and GUI interfaces need this, really, so it should be a backend library thing. | ** Both the cmdline and GUI interfaces need this, really, so it should be a backend library thing. | ||
* Make sure all optional components are really optional in the build system: | * 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. | ** Only require Python if the users wants protocol decoders, the rest should also build/compile/run fine without Python installed. | ||
** ... | ** ... | ||
* Add output for latex package [http://www.ctan.org/tex-archive/graphics/pgf/contrib/tikz-timing tikz-timing] | * Add output for latex package [http://www.ctan.org/tex-archive/graphics/pgf/contrib/tikz-timing tikz-timing] | ||
== Hardware drivers == | == Hardware drivers == | ||
** Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver. | ** Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver. | ||
==== Open-source firmware for the FX2 devices ==== | ==== Open-source firmware for the FX2 devices ==== | ||
Line 75: | Line 61: | ||
[[User:Uwe Hermann|Uwe Hermann]] is working on an open-source FX2 firmware for use with various logic analyzers. | [[User:Uwe Hermann|Uwe Hermann]] is working on an open-source FX2 firmware for use with various logic analyzers. | ||
== Windows installer == | == Windows installer == | ||
* Add support for downloading/installing the Python Windows installer. | * Add support for downloading/installing the Python Windows installer. | ||
Revision as of 00:43, 14 January 2011
This is a random list of TODO items for the code and/or ideas for improvements.
sigrok 0.1 release-critical issues
sigrok 0.1 comprises only sigrok-cli, i.e. GUI and protocol decoders are not part of the release.
- Ensure that segfaults are rare / non-existing in CLI. Use code reviews and valgrind or similar to check.
- Windows port
- At least a working sigrok-cli with the demo driver is required.
- Implement anykey.c replacement.
- Update sigrok-cli man page.
- Document --continuous option.
- Document --input-file option.
- Add examples of basic usage with -o samplerate.
Make sure all output modules handle unknown DF types gracefully (problem in event handlers)- Temporarily remove non-functional options from CLI (PDs, load session).
- sigrok-cli: pack list of drivers, modules etc into one option which displays all of those. Update manpage accordingly.
- libsigrok, libsigrokdecode: Proper shared libs setup and version numbers to be able to handle API/ABI compatibility issues sanely later.
- Ensure that "make distcheck" works fine, and that you can build sigrok using that generated tarball (i.e. no missing files etc).
- Make sure all output formats work OK and there are no segfaults.
- Test that they're not corrupted by stray errors printed on stdout instead of stderr.
- Test all of the above without SIGROK_DEBUG, with SIGROK_DEBUG=1, and SIGROK_DEBUG=2.
sigrok 0.2 features
- support OLS file format input and output (https://github.com/jawi/ols/wiki/OLS-data-file-format)
General
- 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.
libsigrok
- 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.
- Session loading from file.
- sigrok_errno:
- Most backend functions return status as an integer, which is SIGROK_OK if all went well, or SIGROK_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.
- Both the cmdline and GUI interfaces need this, really, so it should be a backend library thing.
- 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.
- ...
- Add output for latex package tikz-timing
Hardware drivers
- Clean up device-specific globals in hardware drivers, to properly permit multiple devices per driver.
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.
Uwe Hermann is working on an open-source FX2 firmware for use with various logic analyzers.
Windows installer
- Add support for downloading/installing the Python Windows installer.