Skip to content
Snippets Groups Projects
Commit 06198f84 authored by John Hodge's avatar John Hodge
Browse files

Basic outline

parents
Branches
Tags
No related merge requests found
plan.txt 0 → 100644
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`
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
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment