Jump to main content | Jump to Primary Navigation | Jump to Sub Navigation


 

Design goals

DevBot, like any piece of software, represents a particular trade-off between performance and features. Our goals in designing DevBot were to:

  1. Provide a rich, practical feature set whilst minimising runtime overhead and development cost.
  2. Create a layered set of interoperating technologies that scale from embedded consumer applications production models to multi-body research applications.
  3. Enable the development of applications that have deterministic performance and resource requirements.
  4. Support development using existing languages (C, C++, C#, Java, Python and all .NET languages).
  5. 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.

Feature set

Hardware abstraction

DevBot supports classes of hardware through the use of naming conventions. This approach is more flexible than the scheme employed by other systems.

Network transparent

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.

Asynchronous

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.

Thread-safe

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).

Reflection

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).

Performance

Memory footprint

The core DevBot library is written in C and its memory footprint is minimal, under 1MB.

Processing requirements

DevBot can be run on any processor that can support Linux. Thus many embedded platforms with sufficient power to run Linux can support DevBot.

Free choice of implementation language

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.

Multi-platform

DevBot also provides the flexibility to deploy on your preferred target platform. DevBot now supports