summaryrefslogtreecommitdiff
path: root/0.14/html/libamb_8h.html
blob: 9e9b3e362e0b26f1440dad9f97b6f9c346cc6085 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>automotive-message-broker: libamb.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">automotive-message-broker
   &#160;<span id="projectnumber">0.14.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">libamb.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><a href="libamb_8h_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h1><a class="anchor" id="libamb"></a>
Automotive Message Broker Library Documentation</h1>
<dl class="section version"><dt>Version</dt><dd>0.14.0</dd></dl>
<h1><a class="anchor" id="libamb_intro"></a>
Introduction</h1>
<p>Automotive Message Broker (AMB) Library documentation outlines the internal classes and structures for building plugins for AMB.</p>
<h1><a class="anchor" id="libamb_architecture"></a>
General Architecture</h1>
<p>AMB has 3 main parts. Source plugins which provide data, a routing engine that routes data and sink plugins that consume the data.</p>
<h1><a class="anchor" id="libamb_properties"></a>
Properties</h1>
<p>AMB defines a number of properties itself. These properties are defined in <a class="el" href="vehicleproperty_8h_source.html">vehicleproperty.h</a>. The DBus plugin will take many of these properties and combine them in DBus interfaces. The mappings of AMB internal properties to DBus Interface properties can be found in the <a href="ambdbusmappings_8idl.html">mappings documentation</a>. This file will come in handy when you want to implement a particular AMB DBus interface in your source plugin.</p>
<p>By default, for any property not explicitly included in a DBus interface, the DBus plugin will generate a custom interface. The pattern is as follows:</p>
<p>CustomProperty = "org.automotive.CustomProperty.CustomProperty"</p>
<p>"org.automotive.CustomProperty is the DBus interface and CustomProperty is a DBus property in that interface.</p>
<h1><a class="anchor" id="libamb_plugins"></a>
Plugins</h1>
<p>There are two types of plugins: plugins that provide data, called "sources" (<a class="el" href="classAbstractSource.html">AbstractSource</a>) and plugins that consume data, called "sinks" (<a class="el" href="classAbstractSink.html">AbstractSink</a>). A typical source would get data from the vehicle and then translate the raw data into AMB property types. Sinks then subscribe to the property types and do useful things with the data.</p>
<p>Example plugins can be found in plugins/exampleplugin.{h,cpp} for an example source plugin and plugins/examplesink.{h,cpp} for an example sink plugin. There are also many different types of plugins useful for testing and development in the plugins/ directory.</p>
<p>Various plugins have separate documentation found in /usr/local/share/doc/automotive-message-broker/0.14/plugins/.</p>
<h1><a class="anchor" id="libamb_plugin_creation"></a>
Creating your own plugin</h1>
<p>AMB allows you to create your own plugins. Plugins inherit from either <a class="el" href="classAbstractSource.html">AbstractSource</a>, <a class="el" href="classAbstractSink.html">AbstractSink</a>, or <a class="el" href="classAmbPluginImpl.html" title="AmbPlugin private class implementation - base class for all plugin implementations. ">AmbPluginImpl</a>.</p>
<p>It is recommended that new plugins be written using <a class="el" href="classAmbPlugin.html">AmbPlugin</a> and <a class="el" href="classAmbPluginImpl.html" title="AmbPlugin private class implementation - base class for all plugin implementations. ">AmbPluginImpl</a>.</p>
<h1><a class="anchor" id="routing_engine"></a>
Routing Engine Plugins</h1>
<p>As of 0.12, the routing engine itself can be exchanged for a plugin. This allows users to swap in routing engines with different behaviors, additional security, and custom throttling and filtering features.</p>
<p>The easiest way to get started creating a routing engine plugin would be to look at <a class="el" href="classAbstractRoutingEngine.html">AbstractRoutingEngine</a>, the base class for all routing engines and the default routing engine in ambd/core.cpp. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>