Kiso was built to answer the challenges that comes with the development of the IoT market. It was built with a strong focus on the constraints that IoT devices have. Its key features are:
- Battery management
- Small memory footprint
- Broad sensor support
- Broad MCUs support
- Broad connectivity support
- Firmware update mechanisms and device management
The key challenges in defining the architecture were:
- How can we design enough abstraction from the hardware to have generic applications running on specific hardware?
- How can we design Kiso in a way that supports application development but does enforce strict behaviour patterns (How to stream data, etc.)
- What should be Kiso code, what should be application code?
- Which components should exist within Kiso, what do they contain?
We also need to consider our quality goals
The abstracted overview
The components overview
The component’s expected design
Base pattern (for all)
Each component, besides their outside dependencies, are free to choose its architecture based on its owns needs.
Base components (Essentials, Utils)
Low layer components (Drivers, Cellular, …)
High layer components (ServalPAL)