This software-package contains the generated AceSmartSoft Application-Programing-Interface (API) documentation. This includes the component-internal API of the Communication-Patterns, Coordination-Patterns and other infrastructure interfaces such as the Task interface.
The SmartSoft API is used by the SmartMDSD Toolchain as a basis for platform independent code generation. Further information on existing components based on SmartSoft can be found in the Component Github repository.
- Components are technically implemented as processes. A component can contain several threads and interacts with other components via predefined communication-patterns and communication-objects. Components can be (re-)wired dynamically at runtime.
- Communication-Patterns assist the component builder and the application builder in building and using distributed components in such a way that the semantics of the interface is predefined by the patterns, irrespective of where they are applied. A communication pattern defines the communication mode, provides predefined access methods and hides all the communication and synchronization issues. It always consists of two complementary parts named the service requestor and the service provider representing a client/server, a master/slave or a publisher/subscriber relationship.
- Communication-Objects parameterize the communication pattern templates. They represent the content to be transmitted via a communication-pattern. They are always transmitted by value to avoid fine grained intercomponent communication each time an attribute is accessed. Furthermore, object responsibilities are much simpler with locally maintained objects than with remote objects. Communication objects are ordinary objects decorated with additional member functions for use by the framework.
- Service. Each instantiation of a communication-pattern within a component provides a service. A service comprises the communication mode as defined by the communication-pattern and the content as defined by the communication-objects.
The set of communication patterns comprises the following patterns:
- send
- query
- push newest
- event
and
The framework explicitly supports dynamic wiring of components at run-time by a separate wiring-pattern. Dynamic wiring can be considered as the pattern of robotics. Making both the control flow and the data flow configurable from outside a component is for example the key to situated skill compositions and is required in nearly any robotic architecture. The dynamic wiring pattern tightly interacts with the communication primitives and makes one of the major difference to other approaches.
Additionally patterns mainly for user convenience are for example
- state management pattern
- ini-file parameter management
- task management
Finaly some global Typedefs, Enumerations and Functions are defined in namespace SmartACE.