DevBot, like any piece of software, represents a particular trade-off between performance and features. Our goals in designing DevBot were to:
- Provide a rich, practical feature set whilst minimising runtime overhead and development cost.
- Create a layered set of interoperating technologies that scale from embedded consumer applications production models to multi-body research applications.
- Enable the development of applications that have deterministic performance and resource requirements.
- Support development using existing languages (C, C++, C#, Java, Python and all .NET languages).
- Support development and deployment across multiple platforms (Windows, Linux and OS X).
Unlike other systems, which begin by assuming a very complex set of requirements we start with a very, simple lightweight core which can operate effectively with limited resources in terms of processing, memory and storage.
DevBot supports classes of hardware through the use of naming conventions. This approach is more flexible than the scheme employed by other systems.
A network transparent design uses a single API to manipulate both remote and local objects. We say that DevBot is network-transparent because the functions for subscribing to and accessing properties satisfy this condition.
DevBot promotes fully asynchronous, event-driven code design. This improves flexibility and performance by only giving drivers the CPU time they need. It also allows programs to be written that can do powerful things (like wait for new readings, threshold a value, etc.) without requiring users to write their own event loop.
Properties generally represent a single value, but an array of the same type is considered acceptable (for example strings, or vectors). In this respect, Properties are similar to databases or the Linux
sysfs filesystem (which subscribes to a similar "one value per file" philosophy).
The property abstraction also allows DevBot to provide a powerful, yet intuitive functionality for reflection. Determining a device's capabilities is a simple matter of querying its properties and examining their metadata. This allows completely generic tools (such as our monitoring and recording applications) that do not need to be altered to accommodate new classes of device (unlike interface based systems).
The core DevBot library is written in C and its memory footprint is minimal, under 1MB.
DevBot can be run on any processor that can support Linux. Thus many embedded platforms with sufficient power to run Linux can support DevBot.
DevBot supports
DevBot has high-quality bindings for Java and .NET (C#, IronPython etc). This allows components written in these high-level languages to be utilised within DevBot. We believe that for most professional embedded software, established programming languages are the right choice. However for certain applications a simpler, more domain-specific language may be appropriate.
DevBot also provides the flexibility to deploy on your preferred target platform. DevBot now supports
- Linux / RT
- MacOSX
- Windows 98/2000/XP/Vista