Basic outline
authorJohn Hodge <[email protected]>
Sun, 11 Jul 2010 10:24:05 +0000 (18:24 +0800)
committerJohn Hodge <[email protected]>
Sun, 11 Jul 2010 10:24:05 +0000 (18:24 +0800)
plan.txt [new file with mode: 0644]
proto.txt [new file with mode: 0644]

diff --git a/plan.txt b/plan.txt
new file mode 100644 (file)
index 0000000..cc67aba
--- /dev/null
+++ b/plan.txt
@@ -0,0 +1,15 @@
+
+Central "dispense" server
+- Accounting Section
+ > Linking to a static libary for the cokebank
+  + int AlterBalance(UID, int Delta)
+  + int GetBalance(UID)
+- Device Control Section
+ > Snack - Controls Vending Machine and accepts logins
+ > Coke - Controls Coke Machine
+ > Misc Server
+  - int Dispense(int ID, int UID)
+- Remote Control
+ > Accepts commands from dispense app.
+  - See `proto.txt`
+
diff --git a/proto.txt b/proto.txt
new file mode 100644 (file)
index 0000000..278abc0
--- /dev/null
+++ b/proto.txt
@@ -0,0 +1,52 @@
+OpenDispense^2
+Client/Server Dispense Protocol
+
+The protocol is ASCII based, similar to the FTP protocol
+All server responses are on one line and are prefixed by a three digit response code.
+
+== Response Codes ==
+100    Information
+200    Command succeeded, no extra information
+201    Command succeeded, array follows (<length> <items> <items> ...)
+202    Command succeeded, per-command format
+400    Unknown Command
+401    Not Authenticated (or Authentication failure)
+402    Balance insufficient
+403    User not allowed to perform this action
+404    Bad other username
+406    Bad Item ID
+500    Unknown Dispense Failure
+
+
+=== User Auth ===
+c      USER <username>\n
+s      100 SALT <string 4-8>\n
+c      PASS <SHA-512 Hash>\n   (Hash of <username><salt><password>)
+s      200 Auth OK\n or 401 Auth Failure\n
+User is now authenticated
+
+=== Commands ===
+--- Get Item list ---
+c      ENUM_ITEMS\n
+s      201 Items <count> <item_id> <item_id> ...\n
+--- Get Item Information ---
+c      ITEM_INFO <item_id>\n
+s      202 Item <item_id> <price> "<description>"\n
+--- Dispense an item ---
+c      DISPENSE <item_id>\n
+s      200 Dispense OK\n or 402 Poor You\n or 500 Dispense Error\n or 406 Bad Item\n
+--- Give to another user ---
+c      GIVE <user> <ammount> <reason>\n
+s      200 Give OK\n or 402 Poor You\n or 404 Bad User\n
+--- Update balance ---
+c      ADD <user> <ammount> "<reason>"\n
+s      200 Add OK\n or 403 Not Coke\n or 404 Bad User\n
+--- Set Balance ---
+c      SET <user> <balance> "<reason>"\n
+s      200 Set OK\n or 403 Not allowed\n or 404 Bad User\n
+--- Get Users Balances ---
+c      ENUM_USERS[ <max balance>]\n
+s      201 Users <count> <username> <username> ...\n
+--- Get a User's Balance ---
+c      USERINFO\n
+s      202 User <username> <balance>\n

UCC git Repository :: git.ucc.asn.au