cisst-saw
|
Can we activate the buttons from code, i.e. not using external 3Dconnexion control panel.
Use prm type for API? At osa level, use vctTypes?
Add calibrate/bias function.
Add bypassing wizard settings, looks like overall speed setting should be at max, button numbers, ...
Test connection robustness.
Standardize values. (max is 1600 with full speed setting for both trans and rot).
Add button events.
Check update rate seems sluggish with latency.
Remove the loop timer, use the automatic one.
Use wizard to set the buttons to 1, and 2 (keystroke #s).
Replace current custom video player with an svl Qt widget (mtsMicronTracker already provides an svlSampleBuffer).
ComputeCameraModel method needs error analysis.
Mapping from markerName to markerHandle.
Refactor the method of obtaining marker projections for the controller Qt Component.
Check for mtMeasurementHazardCode using Xform3D_HazardCodeGet.
Fix/suppress _WIN32_WINNT macro redefinition warning.
See sawNDITracker for other common tracking related todos.
Consider deriving from mtsTaskContinuous using an "adaptive" sleep.
Verify the need for existing sleep times.
Enable/disable individual tools on-the-fly (or dynamically disable their interfaces).
Move CalibratePivot to cisstNumerical?
Handle other main types of tools (besides pointer, reference, etc.).
Parse port/system status, in order to get "partially out of volume", etc..
Refactor ComputeCRC and implement a CRC check in CommandSend (move CRC check to osaSerialPort?).
Every sscanf should check if valid number of items have been read (wrapper for sscanf?).
Error handling for all strncpy.
Check for buffer overflow in CommandAppend.
Support for the extra features of newer Polaris versions.
Pretty print for SerialNumber, to extract date, etc..
Overload Tool class to have a stream.
Use frame number to decide if timestamp should be refreshed.
Use a map to convert Tool's MainType to human readable text.
Strategies for error recovery, send an event with a human readable payload, implement in CheckResponse.
Handle multiple connections by storing the returned socket pointer in an array.
Check for cyclic redundancy (CRC).
Handle message types besides TRANSFORM.
maybe rename this class to mtsRobotIO1394{Robot,DigitalInputs,Log}QtWidget and create using mtsRobotIO1394FactoryQtWidget
cisst Qt convention is now to start with the Qt prefix, i.e. mtsQtWidgetRobotIO1394 ...
GetIP() could be static or external to the osaSocket class.
Perhaps GetLocalhostIP() should be outside the class.
Check if we could use an stl container to manager the list of samples
Change API to define latency in seconds
Remove up/down by a hard coded number of samples
In Release, make sure memory is freed for linked list
Is memcpy the best way to copy the in/out samples, is there a more generic way?
Add interface provided to set latency
Add method to report memory size used
Rename "trace" to "signal", "data set", "set", "point set", ...
Add "grid" and/or "axis" (maybe a special grid) to all scales
Add a flag to all elements to determine if they should be used or not in auto fit methods (e.g. user might {not} want to see y=0 line)
Cleanup pointSize vs lineWidth in traces, lines, etc. use linewidth for everything
Create a base class "element"/"data" for all elements visible (i.e. signal, vertical line, grid, ...), modifiedSinceLastRender, maybe even render method ...
Fit/Render should probably be defined at plot/scale/data level
Add flag/method Modified to all elements type to optimize fit/render
use rotation matrix to rotate axis instead of euler angles
use a GL list to create the axes once and re-use later
remove reference frame?