1% 2% Copyright 2014, NICTA 3% 4% This software may be distributed and modified according to the terms of 5% the GNU General Public License version 2. Note that NO WARRANTY is provided. 6% See "LICENSE_GPLv2.txt" for details. 7% 8% @TAG(NICTA_GPL) 9% 10 11\chapter{Introduction} 12CAmkES is a component platform for embedded microkernel-based systems, offering 13many of the standard features available in component platforms. 14Some relevant features of CAmkES that are not common to all component platforms 15are: 16\begin{itemize} 17 \item \emph{Explicit composite components.} CAmkES components can be 18 assembled to form a re-usable composite, that can then be referenced within 19 a containing system. 20 \item \emph{Multiple instantiation of a single component.} Multiple copies of 21 a component can exist within a system, distinguished by different 22 identifiers. 23 \item \emph{Multiple implementations of an interface.} A single component can 24 implement an interface more than once. This can be useful for providing a 25 dedicated interface for each client or functionally different 26 implementations. 27 \item \emph{Distinction between active and passive components.} Components 28 can have a thread of control or be invoked via an event loop. CAmkES 29 distinguishes these modes of operation at an architectural level. 30 \item \emph{``Provides'' interfaces can be left unsatisfied at runtime.} When 31 a component implements a given interface, it does not have to be connected 32 to a component that uses that interface. The converse is not true. 33 \item \emph{Hardware devices are components.} Hardware devices can be 34 specified in ADL that generates interface methods for accessing the device. 35\end{itemize} 36