51 lines
2.1 KiB
Plaintext
51 lines
2.1 KiB
Plaintext
|
|
AqHome Node Operating System
|
|
============================
|
|
|
|
This is a very simple operating system for AVR nodes using ATtiny and ATmega MCUs.
|
|
|
|
It doesn't use administration objects in RAM, it just defines some routine calls which
|
|
have to be added into the system to add new drivers and modules.
|
|
|
|
|
|
The following routine types are defined:
|
|
|
|
Function Description required add to file
|
|
INIT init module/app yes modules_init.asm or apps_init.asm
|
|
RUN called from the main loop no modules_run.asm or apps_run.asm
|
|
MSGRECVD called when new messages arrive no modules_msg.asm or apps_msg.asm
|
|
EVERY100MS called every 100 millisecs (system timer tick) no modules_100ms.asm or apps_100ms.asm
|
|
EVERY1S called every second no modules_1s.asm or apps_1s.asm
|
|
EVERY1M called every minute no modules_1m.asm or apps_1m.asm
|
|
EVERY1H called every hour no modules_1h.asm or apps_1h.asm
|
|
EVERY1D called every day no modules_1d.asm or apps_1d.asm
|
|
|
|
|
|
Not all modules implement all those functions. Some modules only need to be called
|
|
once every main loop, others need to be called periodically every once in a while.
|
|
|
|
If a module implements a function a call to that routine must be inserted into the appropriate
|
|
file in "avr/devices/all/".
|
|
|
|
In order to make it easier for devices to optionally include modules/apps those calls need to be
|
|
between preprocessor directives like in:
|
|
|
|
----------------------------------X8
|
|
#ifdef MODULES_DS18B20
|
|
bigcall Ds18b20_OnEverySecond
|
|
#endif
|
|
----------------------------------X8
|
|
|
|
|
|
This way it is very easy to use a module (like that DS18B20 module) by using the
|
|
following line in your main code:
|
|
|
|
----------------------------------X8
|
|
#define MODULES_DS18B20
|
|
----------------------------------X8
|
|
|
|
This enables all the function calls for this module. Nothing else needs to be changed in your main
|
|
code file in order to enable that module.
|
|
|
|
|