Software Development Kit (SDK)
Our SDK provides a structure and contains contains a range of commonly used features for embedded projects:
- Consistent approach between projects – easier onboarding
- Modular design – promotes maintainability, easy to remove / modify / add modules
- Application / driver separation – separates project-specific logic from the hardware integration, adhering to orthogonal coding principles
- Real-time CLI diagnostics support – for developer interaction or integration with automation systems
- Task scheduling – suitable for low-power requirements
- Database
- Configurable – generated from JSON so other tools can use these parameters (backend/phone apps)
- Dual-redundancy – reduces risk of corruption
- Event log and statistics
- CPU and stack monitoring
- And more…
Collaborate Effectively
Our Git workflow enables developers to work on features and fixes in parallel, facilitating independent progress without disrupting the main codebase. Through branching and code reviews we separate tasks and empower every team member to contribute effectively.
Unit Testing Support
By detecting and rectifying bugs as code is written, unit tests significantly reduce the time and resources typically consumed by debugging and troubleshooting in later stages of development. Unit tests are run automatically on any firmware changes in a mater of seconds. The SDK itself is unit tested and provides structure for any project using the SDK to also be unit tested, fostering efficiency and reliability throughout the entire lifecycle of your projects.
Coding Standard
We understand the importance of clean, consistent, and maintainable code. A strong coding standard promotes best practices and prevents common pitfalls, reducing errors and technical debt while future-proofing your projects for continued success.
Development Tools
Docker streamlines our development process to ensure consistency across all developers.. By encapsulating our built tools and dependencies in lightweight, portable containers, Docker eliminates the need for manual installs or bulky IDE setups. This agility not only accelerates development but also promotes consistency in testing and deployment environments, leading to more reliable and predictable results across the board.