diff --git a/README.md b/README.md index 11eb5bc..58273a9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,28 @@ # OC-DSS2 -Networked storage drawer based inventory system for OpenComputers. AKA AEn't v2 \ No newline at end of file +Networked storage drawer based inventory system for OpenComputers. AKA AEn't v2 + +## Design + +OC-DSS2 uses a client-server model in that there is a server that is actually attached to the transposers that talk to the inventory system, and a number of clients that use the services remotely over the network. + +Clients submit a search request (in the format described later) to the server, which responds with a liblz16-compressed stream of the search results. Clients can then use RPC endpoints on the server to request items be extracted to their location, if an alias has been set up for it. + +## Requirements + +- Minitel +- Minitel RPC +- liblz16 +- libsyslog (server only) + +## Setup + +## Network protocol + +In addition to standard RPC calls, OC-DSS2 uses a stream protocol on port 15 (by default). + +Requests are submitted as a single line, in the form of key=value pairs, separated by tab characters. The keys map to itemstack values, such as name, label or maxSize. + +The server responds with a liblz16-compressed stream, with one serialised table per line, each containing one resulting item stack. + +RPC endpoints exported by OC-DSS2 are directly from the server-side "inv" library, contained in OpenOS/server/usr/lib/inv.lua.