summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2017-03-14 16:45:27 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2017-03-14 16:52:51 -0400
commit93a7796023b680abee16081b17d1b3eb2f70d9fb (patch)
tree53f96913f9c486b6e7f692da263297f969d6c3d2
parent17365c1bf397423e4973f5b431bea44bf199076a (diff)
-rw-r--r--README.md112
1 files changed, 112 insertions, 0 deletions
diff --git a/README.md b/README.md
index 17db575..1114f7a 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,113 @@
+# dslog-reader
+
+`dslog-reader` is an alternative viewer for the (binary) `.dslog`,
+`.dsevents`, and `.pdplog` files produced by the official FRC Driver
+Station provided in the [FRC Update Suite][].
+
+While the [QDriverStation][] is wonderful for removing the need for
+Windows (or Wine--I have verified that the FRC Update Suite 2017.2.0
+log reader does work in wine 2.3) on anything but your competition
+driver station computer, it doesn't help you answer "what the hell
+happened during that match!?" You could look at the log files on the
+driver station computer itself, but the drive team will be taking it
+in a few minutes for the next match.
+
+# Supported formats
+
+| | 0 | 1 | 2 | 3 |
+|-----------+-----+-----+-----+-----|
+| .dslog | yes | yes | no | yes |
+| .dsevents | no | yes | yes | yes |
+| .pdplog | no | no | N/A | N/A |
+
+Regarding when each version was in use:
+
+| | dslog | dsevents | pdplog |
+|------+-------+----------+--------|
+| 2009 | | | |
+| 2010 | | | |
+| 2011 | | | |
+| 2012 | 0 | 0 | |
+| 2013 | | | |
+| 2014 | 1 | 1 | |
+| 2015 | 2 | 2 | 1 |
+| 2016 | 3 | 3 | - |
+| 2017 | 3 | 3 | - |
+
+I don't know that the dslog/dsevents 2->3 transition happened between
+seasons, it could have happened during the 2014 season. Blanks are
+unknowns, "-" means not-in-use.
+
+# TODO
+
+ 1. [ ] real user interface
+ 2. [ ] figure out how to robustly handle dsevents that have been
+ munged together into one event.
+ 3. [ ] parse tagged dsevents data (blocked by #2).
+ 4. [ ] figure out how to parse `.pdplog` version 0
+ - [ ] find some `.pdplog` version 0 files to test with
+ 5. [ ] figure out how to parse `.pdplog` version 1
+ 6. [ ] figure out how to parse `.dslog` version 2
+
+# References
+
+Most of the details on file formats came from posts by National
+Instruments employee Greg McKaskle on Chief Delphi:
https://www.chiefdelphi.com/forums/showthread.php?t=104689
+
+# Alternatives
+
+## FRC Update Suite
+
+Obviously, one could run the National Instruments' "Driver Station Log
+File Viewer" (`C:\Program Files\FRC Driver
+Station\DS_LogFileViewer.exe`) that is distributed in the
+[FRC Update Suite][].
+
+Downsides:
+ - it is not Free Softare
+ - the source is not available
+ - Windows-only, though I did get it to work in Wine.
+ - no CSV export... honestly, just limited functionality, and since no
+ source code, good luck doing what you want.
+ - Almost unusable on small screens like my x60.
+
+I got the version from FRC Update Suite 2017.2.0 working with Wine on
+Parabola GNU/Linux-libre (a derivative of Arch Linux). The tricky
+part was the dependency on .NET 4.6.1.
+
+Packages installed:
+ - wine (2.3)
+ - winetricks (20170207, imported from Arch Linux)
+ - lib32-gnutls
+ - samba (for the ntlm_auth program)
+
+Instructions:
+
+ - Run `WINEARCH=win32 winetricks --unattended dotnet461`
+ It wouldn't work with a 64-bit Wine directory, and one of the
+ installers fails unless run --unattended.
+ - Run `wine setup.exe` on the `setup.exe` file from the
+ FRCUpdateSuite `.zip` file.
+ - Lauch the program with `wine '.wine/dosdevices/c:/Program Files/FRC Driver Station/DS_LogFileViewer.exe'`
+
+## DSLOG-Reader
+
+FRC Team 548 (the Robostangs) also wrote a Free Software alternative
+to the National Instruments log viewer, [DSLOG-Reader][].
+
+Downsides:
+ - Windows-only. It is written in C#; and while I could get it to
+ compile with Mono, much of of the plotting functionionality that it
+ uses is implemented by Mono as
+ [`throw new NotImplementedException ();`][mono source].
+ - only parses version 3 of the log format
+ - no parsing of tagged dsevents data
+
+While I did not use any of the code, I did find referencing it to be
+very helpful when writing my implementation,
+
+[FRC Update Suite]: http://www.ni.com/download/first-robotics-software-2015/5112/en/
+[QDriverStation]: https://github.com/frc-utilities/QDriverStation
+[DSLOG-Reader]: https://github.com/orangelight/DSLOG-Reader
+[mono source]: https://github.com/mono/mono/blob/master/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Chart.cs