
Functions

AqHome knows these driver/module/app functions:
- INIT: initialize the driver
- RUN:  called on every loop
- MSGRECEIVED: called whenever a message has been received
- EVERY100MS:  called every 100ms (the system timer tick)
- EVERY1S:     called every second
- EVERY1M:     called every minute
- EVERY1H:     called every hour
- EVERY1D:     called every day


Modules and Apps

Modules are lowlevel drivers for specific hardware (like for the environment
sensor SI7021).

Apps on the other hand are kind of sub-programs running in parallel on the
microprocessor. E.g. there are apps for networking, motion-activated-light, statistics
reporting and sensor value reporting.


Modules

If your driver/module implements those functions they need to be added
to the appropriate files:
- include instructions to the file "modules_include.asm"
- calls to INIT function to        "modules_init.asm"
- calls to RUN function to         "modules_run.asm"
- calls to MSGRECEIVED function to "modules_msg.asm"
- calls to EVERY100MS function to  "modules_100ms.asm"
- calls to EVERY1S function to     "modules_1s.asm"
- calls to EVERY1M function to     "modules_1m.asm"
- calls to EVERY1H function to     "modules_1h.asm"
- calls to EVERY1D function to     "modules_1d.asm"

Only implemented routine calls need to be added, e.g. if a driver doesn't need
the RUN functionality it doesn't need to be implemented.


Apps

The same rules apply to apps. The only difference is the prefix of the files calls and
include directives need to be added (using "apps_xxx.asm" instead of "modules_xxx.asm").


