The task is to implement a linux deamon in plain c that reads and writes ascii-data to/from a tcp socket and provides the data received on the socket as a webservice (see wsdl file), and vice versa receiving data from the webservices-interface and puts them out on a tcp socket.
Between the two worlds of crisp embedded controller commands and bloated webservice xml has to be a translator, which is to be implemented into the deamon.
So we want to switch Light on and of in different rooms, that have an ID.
Also we want lock and unlock doors in that building using the webservices
Housekeeping like service disable, reset and diagnsis are described in wsdl file.
Client (webservice-client maybe mobile "app")
Server-Node (to be implemented in c using linux and webservies.
<> Endpoint-Nodes which control a room or a flat. Endpoint is microcontroller with limited tcp/ip.
Software of endpoint will talk like this
tcp connect to 10.0.0.1
Node 2312 Flat Controller Node
resp: nr 8 //8 rooms
if we are in cofig mode:
reqset: nr=2 //set rooms to 2
sr 3 //select room 3
l? /status of light?
l 0 //light off
l=1 //order light on
l 1 //light on state message from endpoint
d? //door state
d 1 //open door door is open
s? //get state of endpoint
s OK //ok
d=0 //lock door
s PEND //door motor moves knob
[url removed, login to view] //what is the outcome? door locked? (swich detected movement of lock)
[url removed, login to view] ERR //door was blocked
d=1 //unlock door
[url removed, login to view]
[url removed, login to view] OK //door unlocked and lock is ok.
d 1 //door is again open
More Use Cases like diagnosis can be seen from WSDL.
It is not so important to have the socket browser speaking exactly like the endpoints, since they are not developped,
as this is for learning and playing around in the house with automated systems.
But there might be a complete system later.
No 3rd-party closed source, deliver all sources, provide employer with all rights to the the source code and products.
No GPLv3, GPLv2. LGPL needs discussiuon. BSD is ok.
Because I might want to recycle the code for possible later commercial projects.
use doxygen and @syntax
Please document all variables function calls with doxygen @ tags like @returns.
Speification might change a bit. You can also suggest nice ideas for that thing.