aboutsummaryrefslogtreecommitdiff
path: root/client/readme.md
diff options
context:
space:
mode:
Diffstat (limited to 'client/readme.md')
-rw-r--r--client/readme.md56
1 files changed, 41 insertions, 15 deletions
diff --git a/client/readme.md b/client/readme.md
index 04471d2..da48cf1 100644
--- a/client/readme.md
+++ b/client/readme.md
@@ -1,21 +1,47 @@
# puzzle box client
-goal (in order of implementation):
-```
-(pbc) help
- exit exit pbc
- test send a test puzbus message
- help show this help
- send <addr> <data> [debug] send raw message
- status show global puzzle box state (main controller state)
- reset reset entire game state
- ls list connected puzzle modules
-```
+This folder contains the source code for the puzzle box client (pbc). This is a
+desktop application that communicates with the main controller over TCP to
+send/receive I<sup>2</sup>C messages. This application is not only used by a
+game operator to control and monitor the state of a puzzle box, but is also a
+useful debugging tool when developing puzzle modules, as it allows you to send
+arbitrary data over the puzzle bus.
+
+## WIP TODO
+
+- cleanup
+ - separate ../shared/pb/moddrv.c into a puzzle module specific and 'common' bit
+ - use the common bit in i2c.cpp instead
+ - cast to structs in ../shared/pb/moddrv.c
+- functionality
+ - print pretty tree of connected puzzle modules
+ - add enum to string functions in CLIENT ONLY
+
+## Features
+
+- List detected puzzle modules
+- Reset puzzle modules (individually or all to reset the box)
+- Skip puzzle modules (individually or all)
+- Request puzzle box state
+Debug only:
+- Send arbitrary messages
+
+## Building
+
+PBC is a standard CMake project, but a [makefile](./makefile) is provided for
+convenience (still requires CMake and Ninja are installed).
+
+## Send data
```
-send 0x39 "Hello world!" de:ad:be:ef 0xff 5 0a 0750
- ^~~~~~~~~~~~~~ ^~~~~~~~~~~ ~^~~ ~^ ~^ ~~~~^
- STR_INTP BYTE_ARR UNSIGNED UNSIGNED UNSIGNED UNSIGNED
- (hex+0x) (dec) (hex) (oct)
+ ADDRESS DATA
+ v~~~ v~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+send 0x39 68:65:6c:6c:6f 44 0x20 'world' 33
+ ^~~~~~~~~~~~~~ ^~ ^~~~ ^~~~~~~ ^~
+ HEXSTR NUMBER NUMBER STRING NUMBER
+ (binary) (dec) (hex) (literal) (dec)
```
+
+The data is concatenated, and may contain mixed types of literals
+