This is an old revision of the document!
Table of Contents
Artefact
The data transportation path
When an apparatus is connected the following must be crafted:
- Feed parser so file and conf.
- Artefact classifier.
- Makes superficial parsing of the data to identify whether the data is valid.
- Figure out what classes are contained in the data, and report this.
(data) => network -> [lua] Parser -> [lua] Classifier (data, classes) -> (c) Store (db/disk)
- Artefact interpreter.
- Parses and interprets the data, translating it into an internal tree structure.
(data, class) => [lua] Parser -> [lua] Interpretation -> [lua/c] Tree structure -> [c] Pretty printer -> network
Patient registration
The system stores data. These data is connected to a patient ID, a timestamp, a location and an apparatus.
Getting the patient ID is a non-trivial task at best.
See the registration section for a description of the framework surrounding the registration system.
RFID tag project
Network communication (protocol)
All network communication are done via XML documents.
Every XML document is terminated by the zero character ('\0' in c/c++)
Sending the zero character to a process will reset it, and thereby cleaning up all mess made by illegal documents.
A connection can only be created in client-mode, and will exists as long as the client intends it to.
A server listen will run in a read loop until the client terminates the connection.
The server must reply to all request with an answer, no matter if the preceding processing went well or not.
The client
The client reads its config file, and forks for each config section it encounters.
Every fork handles a single apparatus according to the attached config section.
The main thread runs infinitely and makes sure to terminate all client forks upon termination.
Every client is connected physically to a port on the host computer, and a LUA program runs to determine whether data is ready to be read or not.
The LUA programs hereafter sends this data to the server indirectly through a number of exposed c methods.
Each LUA program must run in an infinite loop, terminating only when the function stop() returns true, and it must not hang waiting on read, but rather have a time-out, and loop again.
Data types
Problem: An apparatus produces more than one type of data, but stores all measured values in the same data block.
How to make a query that will hit this multi-data block?
Solutions:
- Make the validator insert one entry in the db for each data type, referring to the same data block (file).
- The data are only stored once in the file system.
- We don't need to make drastic changes to the server code (or client for that matter).