TODO LIST - VERSION 1.0

Preface

Liquid (version 1.0) is currently at the prototype stage of its development cycle. About 70% of its framework and functionality has already been implemented and successfully tested (enough to get a feel for what the finished product may be like).

This page lists the areas that need implementing/tidying up in the toolkits source code.

GETTING STARTED

Before attempting the list download the toolkit project spaces (Liquid and the LDD/LCA templates) from the following web page http://sensors.comp.lancs.ac.uk/liquid/downloads.html.

INFO: The Liquid, LDD and LCA source files are written in C and are provided with a VC++ 6 Project File.

LIQUID PROJECT SPACE

The Liquid project space is laid out as follows:

Source File
Extension
Description
Main
.cpp
directs Liquid's methodology of operation
glLibrary
.cpp
general-purpose graphics library
Loader
.cpp
loads LDD's into memory
Selection
.cpp
directs the sensor selection process
Vis
.cpp
renders and collects sensor readings
Network
.cpp
manages the DS and its servers
Resource
.rc
stores toolkit resources e.g. bitmaps, dialog templates, etc
Device Driver
.h
stores application definitions and variables
Resource
.h
stores resource identifiers
Sensor Codes
.h
stores Purpose-Property-Means (PPM) definitions
Utilities
.h
provides a series of utility functions e.g. EXIT CODE interpreter
glLibrary
.h
stores glLibrary.cpp definitions
Loader
.h
store Loader.cpp definitions
Selection
.h
stores Selection.cpp definitions
Vis
.h
stores Vis.cpp definitions
Network
.h
stores Network.cpp definitions

FEATURES LIST

Items as of yet to be implemented in the toolkit.

1. Implement a save feature for the options configuration.

2. Implement a save feature for the SM/DS session setup (save selected sensors list).

3. Implement a time-out configuration dialog (delay before sensor input is timed out, default is 400 milliseconds).

4. Implement an input comparison feature (for sensor accuracy analysis). The SM session should provide the ability to compare the input obtained from sensors of an identical class and sensors of the same purpose-property combination and output format.

5. Implement an input logging feature (save recorded sensor readings to a file).

6. Implement a selective LDD shutdown feature. Currently all LDD's must be shut down at once, this may cause problems during input visualization in the SM session because when a sensor/LDD fails Liquid retains a link to it.

TIDYUP LIST

Items of source code that require tidying up.

1. getLastError() in the LDD template doesn't reset after an error has been corrected. May cause inconsistent error messages to be retrieved by Liquid.

2. Loader.cpp (Liquid project space) locks all the .dll files that exist in the drivers folder on scanning for valid LDD's. If an LDD requires the presence of another .dll to access the sensor you mustn't store it (required .dll) in the drivers folder (LDD won't be able to access it). Instead the .dll should be placed in the Windows system folder.

3. Selection.cpp (Liquid project space) needs to be configured to reject erroneous sensors (currently only displays an error message advising not to add it to the session).

4. Remove the DOSFLAG from the LDD method openSensor(..).

5. Remove the DISPLAY_TYPES structure and supporting methods e.g. getParseTypeFlag(..). Simply stick with using the output type value in all instances were it is required. Was intended to support LDD's with multiple output formats (this feature was dropped midway into Liquid's implementation).

6. Remove the SENSOR_DATA structure, replace with a nondescript buffer. The buffer must be capable of handling input of any kind, possibly model as a character buffer (this is done when input has to be passed over a network, see Network.cpp of the Liquid project space). Remember to pass the buffer byte size before passing the contents of the buffer (see item 9 of this list).

7. Remove the visualization mode declarations from the Liquid source code (see Vis.cpp). Model each mode as a Dynamic Link Library (akin to an LDD) so, the supported library of vis modes can be extended at will. Package the methods beginning with the prefix collectXX(..), drawXXX(..) and networkXXX(..) with the respective .dll file (see Vis.cpp and Network.cpp respectively).

8. Provide ability to change the recommended input range.

9. Remove the output format (type) declaration stored in the LDD template and place it in Liquid's sensor class library. The sensor class declarations in class.ini should link to the relevant output format and mode of visualization (rather than relying on the LDD to link the output format to the sensor class).

Was intended to use type declaraction as a backup feature (never finished), to make sure the LDD knows what format sensor input should be delievered in. Possibly set buffer mentioned in item 6 of this list to start with the type declaraction followed by the buffer byte size (this also links with item 7 of the review list).

Figure 5 of the What is Liquid? page (LDD illustration) uses the current interpretation of an LDD. Would require modification on carrying out this item (remove output format).

10. Network.cpp is unable to transmit input beyond the maximum packet size.

11. Modify LDD getSensorInput(..) so operates as a callback function.

12. Liquid stops collecting input if minimized, correct Main.cpp (Liquid project space) so it carries on data retrieval.

13. Current implementation of collectArray(..) does not support any error checking (before solving see item 1 of the review list).

14. Remove the System Test->System Status->Test Driver sensor class. Used for demo purposes.

15. Enhance the error checking facilites used to monitor the network connection between Liquid and an LCA e.g. to detect when the connection is dropped.

16. Remove obsolete dynamic memory allocation procedures.

17. Add time-outs to network commands e.g receive(..) in Network.cpp. Should prevents system from hanging if connection disrupted or lost.

18. Allow the DS servers to be reset for another LCA session on completion of current one (see source file Network.cpp). Currently requires application restart.

19. Loader.cpp does not check if all the LDD methods are loaded correctly. Finish implementing success checks for all the loaded LDD methods (the LDD Test Program has this already implemented).

20. drawArray(..) does not allow for horizontal scrolling when more than 3 numeric values require displaying, as said would be allowed in Output Descriptors for Casual Users.

PROBLEM LIST

Items that require solving.

1. Liquid and LCA RELEASE MODE compilations fail to function properly. Unknown cause, backtracking reveals network code is the source of the problem.

2. collectGraph(..) fails if input is made available at a rate higher than 33 new entries per second. LDD's that support the GRAPH output format should be designed to return data once every 100 milliseconds (10 new entries per second). At all other times the method getSensorInput(..) should inform the method collectGraph(..) no further input has been retrieved by the sensor.

Any data that requires to be sent in the meantime can be buffered, as each entry is time stamped the effect of the low poll rate is neglible.

3. During a DS session if a sensor fails and then reactivates itself the LCA may not register it activate again until the sensors are deactivated and subsquently reactivated (currently only the complete activation/deactivation of sensors is supported, not individual activation/deactivation).

4. Sometimes the C&C server fails to close down because one of the LDD closeSensor() methods failed. For example the WaveRider LDD requires the presence of another application to run (WaveWare) which sometimes fails to kill itself and so freezes the application.

5. LCA template has difficulty disconnecting from the DS servers (disconnects automatically if Liquid is exited).

REVIEW LIST

Features that may require reviewing, possibly leading to insertion/removal or overhauling of program source.

1. Overhaul the ARRAY output format as its currently geared for only videogame controllers. Possibly introduce ability to declare central/neutral points in order to handle input collected in a similar fashion to videogame controllers.

2. Possibly remove openSensor(..) constraint parameters e.g. maximum acceptable input value. Developers would be required to read the documentation on Sensor Class Output Formats and make sure their input assumes the correct shape. Liquid is already set-up to check data follows the constraint parameters.

Output Descriptors for Developers will need to be modifyed in light of any changes made under this item.

3. Timestamp all input entries (rather than just with input of type GRAPH).

4. Review frameworks ability to extend sensor classes and output formats. Possibly model each output format as an ini file inside a folder designated formats.Each output format would be represented as a text file going by the same name as the output format (so can be easily identified). The constraint parameters would be listed inside.

5. Allow LDD's to support more than 1 sensor at once i.e. for multi-sensor devices.

6. Overhaul EXIT CODES described in Device Driver.h. Make positive states return positive numbers and negative states return only negative numbers. Currently everything returns a negative number unless the method was a success in that case it returns TRUE.

7. Overhaul DS communication protocol. Possibly develop personalised data packets.

EXTRAS

Misc items.

1. Means of sensing for an MS SideWinder Force Feedback Wheel may be wrong (currently described as a slotted disk).

2. Provide COMM port / channel selection in the configuration dialog of the WaveRider ECG LDD.

3. Implement input validation in WaveRider LDD (currently does not check if input value is valid, leaves for Liquid to carry out).

4. The WaveRider ECG LDD is highly unstable when run under Win NT/2000/XP. Supplied sensor-specific API was developed for use on 16 bit platforms. Although the instructions included with the LDD/LDD source indicate that the driver requires manual configuration when run under the fore mentioned operating systems that is not necessarily true.

The LDD will work function correctly when used in an SM session, although not in a DS session (fails to turn on the power).

5. The WaveRider ECG LDD is unable to locate sensor faults (requires modifications to wwddle32.dll, upgraded version of the 16 bit sensor-specific API).

6. The WaveRider ECG LDD has difficulty closing the instance of WaveWare (sensor-specific monitoing software) it spawns when used in a DS session. Before running a new SM/DS session open the task manager and manually close WaveWare.exe.

. . back to Manual Index


Best Viewed in IE6
Copyright © 2003, Kiel Gilleade