Introduction
The DominoOS is a small footprint open source embedded operation system with graphical
interface. Originally it is developed for home automation system as a central control
panel. However the operation system itself works without the graphical system or
with the graphical system it's not limited to use only in home automation system.
Details
It's written in standard C language with separated driver modules so it's easy to
port to virtually any eight bit or bigger processor. The operation system is build
around a flexible and robust message queue and resource operation.
The operation system uses resource file to store fonts, bitmaps, wave file, string
lists, etc. The resource can be located eighter in the internal flash memory of
the processor (e.q. in the case of ATmega128 64k of the total 128k flash memory
is used to store progam code and another 64k used to store resources. The resource
file generated by a resource compiler eighter in binary or intel hex format. Both
can be directly programmed into the flash memory (even using a bootloader).
The resource compiler uses XML format to declare and define resource objects. The
XML contans DTD (document type descriptor) to declare resurce objects. Using DTD
any kind of resource (new type os buttons, sliders, boxes, etc.) can be declared
without modifying the resource compiler. The resource compiler generates a standard
C header file wich contains all of the declaration of the DTD in C language syntax.
With this header file all of the generated binary resource data structure can be
interpreted by using C language. The resource compiler is not limited to store graphical
data only. It can be used to store any kind of structured binary or string data.
Forget about the binary to C source converter programs.
Unique feature of this graphical system is the flexible messaging structure. One
message or group of messages can be passed to a specific function using simple message
filtering. The controls are not limited to send only one type of message. Any control
can send any kind of message. Which means without any additional programming (writing
event handler) a simple button can have different functions depending on which message
is assigned to the button. The controls also can catch and respond to any message.
A label can display data from any received message without any further programming.
Forget to write event handlers, only assign messages to the controls.
|