Application is composed from few parts:
- Main. Starts all needed threads. Runs as a daemon in unix or as a service in Windows environment.
- Database. SQLight is used. Becase the database does not work in multihread environment, there must be only one common interface accessible via slots and signals from other threads. The database functionality is covered by DATABASE object. Database runs within main thread.
- Invertors. There is one common interface - virtual class INVERTOR. Every invertor's communication protocol is based on this class. Every object runs in standalone thread. There can be multiple objects of the same class - one for every communication line. At this time only Fronius communication protocol is implemented.
- Webserver. The QtWebApp library is used with small modifications for Qt 4.6. All configuration and data communication is made via this object.