What Am I
I am a C/C++ API or library to write automation applications for the Raspberry Pi. I ease the programming of applications by providing an abstraction layer with the most common ready-to-use functions used in automation applications.
My main goal is to allow non C/C++ and linux experts to write reliable applications to automate stuff. Examples could be home automation, automated gardens, hobbyists’ experimets, etc.
With me you can access GPIOS (inputs and outputs) and communication buses. You can create high priority automation deamons and threads with defined cycle times. On top of that, I provide logging functions to track errors, messages with state to avoid spamming your log and much more.
I am free like free beer under the LGPL and aim to promote the idea of give something back to the world.
General
- This is a C/C++ API for the Raspberry Pi.
- It is being developed with the Raspberry Pi 2 Model B, Raspbian Jessie
- Compiler: SysGcc cross-compiler arm-linux-gnueabihf-4.9.2
- You can get it here: http://gnutoolchains.com/raspberry/
- The project file included is from eclipse CDT LUNA
Architecture
- This API is based on small libraries with a couple of headers each.
- The external headers of each library contain only pure C functions and or a C++ pure virtual classes with its respective pure C factories
- Each library is in its own folder and has its respective unit test application
- The CppUnit test framework is included in this project and is always statically linked to the test applications
Values
- User friendly API
- Mantainability
- Extensibility
- Backwards compatibility
Functionality Goals
- Core functions (sleeps, threads, soft real-time, timers, clocks)
- Configuration file parser
- GPIOs
- Communication (One Wire Bus, Serial, SPI, I2C)
- Control structures (PID, PT1, debouncer, Schmitt trigger)
- Error handling, logs, status reports
- Control tasks with cycle time and priority