tttool 1.5.0.1 → 1.5.1
raw patch · 4 files changed
+21/−12 lines, 4 files
Files
- README.md +11/−5
- src/KnownCodes.hs +4/−1
- src/TipToiYaml.hs +5/−5
- tttool.cabal +1/−1
README.md view
@@ -93,26 +93,32 @@ Otherwise, installation from source is not difficult either: - 1. First install the *Haskell platform*, see http://www.haskell.org/platform/+ 1. If you have not done so yet, fetch the source code and change to the+ directory containing the code:++ git clone https://github.com/entropia/tip-toi-reveng.git tttool+ cd tttool++ 2. Install the *Haskell platform*, see http://www.haskell.org/platform/ for details for your system. Users of Debian or Ubuntu simply run apt-get install haskell-platform - 2. Install the development packages for ncurses, i.e.+ 3. Install the development packages for ncurses, i.e. apt-get install libncurses5-dev - 3. Install the Haskell dependencies. The Haskell platform comes with a tool+ 4. Install the Haskell dependencies. The Haskell platform comes with a tool called `cabal`, and you should run the two commands cabal update cabal install --only-dependencies - 4. Now you can build the program using+ 5. Now you can build the program using cabal install --bindir=. - 5. At this point, `tttool` should be ready to go. If you run+ 6. At this point, `tttool` should be ready to go. If you run ./tttool
src/KnownCodes.hs view
@@ -14,7 +14,10 @@ firstObjectCode = 1000 lastObjectCode :: Word16-lastObjectCode = fromIntegral $ V.length knownRawCodes - 1+-- Empirically, the pen does not recognize OIDs >= 15000:+lastObjectCode = 14999+-- Last object code accoring to the known raw codes:+-- lastObjectCode = fromIntegral $ V.length knownRawCodes - 1 knownRawCodes :: V.Vector Word16 knownRawCodes =
src/TipToiYaml.hs view
@@ -178,19 +178,19 @@ -- objectCodeOffsetMax = lastObjectCode - firstObjectCode. -- This would assign perfectly usable object codes, and would minimize the -- probability of object code collisions between products, but sometimes --- object codes would wrap around from 16383 to 1000 even for small projects +-- object codes would wrap around from 14999 to 1000 even for small projects -- which may be undesirable. We arbitrarily do not use the last 999 possible -- offsets to avoid a wrap around in object codes for projects with <= 1000 -- object codes. This does not impose any limit on the number of object codes --- per project. Every project can always use all 15384 object codes.+-- per project. Every project can always use all 14000 object codes. objectCodeOffsetMax = lastObjectCode - firstObjectCode - 999 -- Distribute the used object codes for different projects across the whole -- range of usable object codes. We do this by multiplying the productId with -- the golden ratio to achive a maximum distance between different projects, --- indepedent of the total number of different projects.--- 8890 = (16383-1000-999+1)*((sqrt(5)-1)/2)- objectCodeOffset = toWord16(rem (productId * 8890) (toWord32(objectCodeOffsetMax) + 1))+-- independent of the total number of different projects.+-- 8035 = (14999-1000-999+1)*((sqrt(5)-1)/2)+ objectCodeOffset = toWord16(rem (productId * 8035) (toWord32(objectCodeOffsetMax) + 1)) -- objectCodes always contains _all_ possible object codes [firstObjectCode..lastObjectCode], -- starting at firstObjectCode+objectCodeOffset and then wrapping around.
tttool.cabal view
@@ -1,5 +1,5 @@ name: tttool-version: 1.5.0.1+version: 1.5.1 synopsis: Working with files for the Tiptoi® pen description: The Ravensburger Tiptoi® pen is programmed via special files. Their file format has been reverse engineered; this