first commit

This commit is contained in:
Jérôme Delacotte
2025-03-06 11:15:32 +01:00
commit 7b30d6e298
5276 changed files with 2108927 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,284 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Firmata.h Source File</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Firmata.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> Firmata.h - Firmata library v2.5.8 - 2018-04-15</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> Copyright (c) 2006-2008 Hans-Christoph Steiner. All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (C) 2009-2017 Jeff Hoefs. All rights reserved.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> This library is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> License as published by the Free Software Foundation; either</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> See file LICENSE.txt for further informations on licensing terms.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef Firmata_h</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define Firmata_h</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;Boards.h&quot;</span> <span class="comment">/* Hardware Abstraction Layer + Wiring/Arduino */</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;FirmataDefines.h&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;FirmataMarshaller.h&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;FirmataParser.h&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">/* DEPRECATED as of Firmata v2.5.1. As of 2.5.1 there are separate version numbers for</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * the protocol version and the firmware version.</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define FIRMATA_MAJOR_VERSION 2 // same as FIRMATA_PROTOCOL_MAJOR_VERSION</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#define FIRMATA_MINOR_VERSION 5 // same as FIRMATA_PROTOCOL_MINOR_VERSION</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define FIRMATA_BUGFIX_VERSION 1 // same as FIRMATA_PROTOCOL_BUGFIX_VERSION</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// extended command set using sysex (0-127/0x00-0x7F)</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">/* 0x00-0x0F reserved for user-defined commands */</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// these are DEPRECATED to make the naming more consistent</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#define FIRMATA_STRING 0x71 // same as STRING_DATA</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#define SYSEX_I2C_REQUEST 0x76 // same as I2C_REQUEST</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#define SYSEX_I2C_REPLY 0x77 // same as I2C_REPLY</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#define SYSEX_SAMPLING_INTERVAL 0x7A // same as SAMPLING_INTERVAL</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// pin modes</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">//#define INPUT 0x00 // defined in Arduino.h</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">//#define OUTPUT 0x01 // defined in Arduino.h</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// DEPRECATED as of Firmata v2.5</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#define ANALOG 0x02 // same as PIN_MODE_ANALOG</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#define PWM 0x03 // same as PIN_MODE_PWM</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define SERVO 0x04 // same as PIN_MODE_SERVO</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#define SHIFT 0x05 // same as PIN_MODE_SHIFT</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define I2C 0x06 // same as PIN_MODE_I2C</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#define ONEWIRE 0x07 // same as PIN_MODE_ONEWIRE</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define STEPPER 0x08 // same as PIN_MODE_STEPPER</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define ENCODER 0x09 // same as PIN_MODE_ENCODER</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#define IGNORE 0x7F // same as PIN_MODE_IGNORE</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">namespace </span>firmata {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// TODO make it a subclass of a generic Serial/Stream base class</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classfirmata_1_1_firmata_class.html"> 54</a></span>&#160;<span class="keyword">class </span><a class="code" href="classfirmata_1_1_firmata_class.html">FirmataClass</a></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">typedef</span> void (*callbackFunction)(uint8_t, int);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">typedef</span> void (*systemCallbackFunction)(void);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">typedef</span> void (*stringCallbackFunction)(<span class="keywordtype">char</span> *);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">typedef</span> void (*sysexCallbackFunction)(uint8_t command, uint8_t argc, uint8_t *argv);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a">FirmataClass</a>();</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">/* Arduino constructors */</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">begin</a>();</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">begin</a>(<span class="keywordtype">long</span>);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">begin</a>(Stream &amp;s);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">/* querying functions */</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a">printVersion</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606">blinkVersion</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a">printFirmwareVersion</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">//void setFirmwareVersion(byte major, byte minor); // see macro below</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89">setFirmwareNameAndVersion</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">byte</span> major, <span class="keywordtype">byte</span> minor);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307">disableBlinkVersion</a>();</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">/* serial receive handling */</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d">available</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676">processInput</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432">parse</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> value);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">boolean</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6">isParsingMessage</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">/* serial send handling */</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda">sendAnalog</a>(<span class="keywordtype">byte</span> pin, <span class="keywordtype">int</span> value);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">void</span> sendDigital(<span class="keywordtype">byte</span> pin, <span class="keywordtype">int</span> value); <span class="comment">// TODO implement this</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68">sendDigitalPort</a>(<span class="keywordtype">byte</span> portNumber, <span class="keywordtype">int</span> portData);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">sendString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">sendString</a>(<span class="keywordtype">byte</span> command, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc">sendSysex</a>(<span class="keywordtype">byte</span> command, <span class="keywordtype">byte</span> bytec, <span class="keywordtype">byte</span> *bytev);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807">write</a>(<span class="keywordtype">byte</span> c);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">/* attach &amp; detach callback functions to messages */</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">void</span> attach(uint8_t command, callbackFunction newFunction);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">void</span> attach(uint8_t command, systemCallbackFunction newFunction);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> attach(uint8_t command, stringCallbackFunction newFunction);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">void</span> attach(uint8_t command, sysexCallbackFunction newFunction);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1">detach</a>(uint8_t command);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/* access pin state and config */</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">byte</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96">getPinMode</a>(<span class="keywordtype">byte</span> pin);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">setPinMode</a>(<span class="keywordtype">byte</span> pin, <span class="keywordtype">byte</span> config);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">/* access pin state */</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe">getPinState</a>(<span class="keywordtype">byte</span> pin);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8">setPinState</a>(<span class="keywordtype">byte</span> pin, <span class="keywordtype">int</span> state);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/* utility methods */</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39">sendValueAsTwo7bitBytes</a>(<span class="keywordtype">int</span> value);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3">startSysex</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9">endSysex</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; uint8_t parserBuffer[MAX_DATA_BYTES];</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a> marshaller;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classfirmata_1_1_firmata_parser.html">FirmataParser</a> parser;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Stream *FirmataStream;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">/* firmware name and version */</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">byte</span> firmwareVersionCount;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">byte</span> *firmwareVersionVector;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">/* pin configuration */</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">byte</span> pinConfig[TOTAL_PINS];</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">int</span> pinState[TOTAL_PINS];</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">boolean</span> blinkVersionDisabled;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">/* private methods ------------------------------ */</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">void</span> strobeBlinkPin(<span class="keywordtype">byte</span> pin, <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> onInterval, <span class="keywordtype">int</span> offInterval);</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">void</span> FirmataMarshaller::encodeByteStream (<span class="keywordtype">size_t</span> bytec, uint8_t * bytev, <span class="keywordtype">size_t</span> max_bytes = 0) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">/* callback functions */</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">static</span> callbackFunction currentAnalogCallback;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">static</span> callbackFunction currentDigitalCallback;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">static</span> callbackFunction currentPinModeCallback;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">static</span> callbackFunction currentPinValueCallback;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">static</span> callbackFunction currentReportAnalogCallback;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">static</span> callbackFunction currentReportDigitalCallback;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">static</span> stringCallbackFunction currentStringCallback;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">static</span> sysexCallbackFunction currentSysexCallback;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">static</span> systemCallbackFunction currentSystemResetCallback;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">/* static callbacks */</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticAnalogCallback (<span class="keywordtype">void</span> *, uint8_t command, uint16_t value) { <span class="keywordflow">if</span> ( currentAnalogCallback ) { currentAnalogCallback(command,(<span class="keywordtype">int</span>)value); } }</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticDigitalCallback (<span class="keywordtype">void</span> *, uint8_t command, uint16_t value) { <span class="keywordflow">if</span> ( currentDigitalCallback ) { currentDigitalCallback(command, (<span class="keywordtype">int</span>)value); } }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticPinModeCallback (<span class="keywordtype">void</span> *, uint8_t command, uint16_t value) { <span class="keywordflow">if</span> ( currentPinModeCallback ) { currentPinModeCallback(command, (<span class="keywordtype">int</span>)value); } }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticPinValueCallback (<span class="keywordtype">void</span> *, uint8_t command, uint16_t value) { <span class="keywordflow">if</span> ( currentPinValueCallback ) { currentPinValueCallback(command, (<span class="keywordtype">int</span>)value); } }</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticReportAnalogCallback (<span class="keywordtype">void</span> *, uint8_t command, uint16_t value) { <span class="keywordflow">if</span> ( currentReportAnalogCallback ) { currentReportAnalogCallback(command, (<span class="keywordtype">int</span>)value); } }</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticReportDigitalCallback (<span class="keywordtype">void</span> *, uint8_t command, uint16_t value) { <span class="keywordflow">if</span> ( currentReportDigitalCallback ) { currentReportDigitalCallback(command, (<span class="keywordtype">int</span>)value); } }</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticStringCallback (<span class="keywordtype">void</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> * c_str) { <span class="keywordflow">if</span> ( currentStringCallback ) { currentStringCallback((<span class="keywordtype">char</span> *)c_str); } }</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticSysexCallback (<span class="keywordtype">void</span> *, uint8_t command, <span class="keywordtype">size_t</span> argc, uint8_t *argv) { <span class="keywordflow">if</span> ( currentSysexCallback ) { currentSysexCallback(command, (uint8_t)argc, argv); } }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticReportFirmwareCallback (<span class="keywordtype">void</span> * context, <span class="keywordtype">size_t</span>, <span class="keywordtype">size_t</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *) { <span class="keywordflow">if</span> ( context ) { ((<a class="code" href="classfirmata_1_1_firmata_class.html">FirmataClass</a> *)context)-&gt;printFirmwareVersion(); } }</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticReportVersionCallback (<span class="keywordtype">void</span> * context) { <span class="keywordflow">if</span> ( context ) { ((<a class="code" href="classfirmata_1_1_firmata_class.html">FirmataClass</a> *)context)-&gt;printVersion(); } }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> staticSystemResetCallback (<span class="keywordtype">void</span> *) { <span class="keywordflow">if</span> ( currentSystemResetCallback ) { currentSystemResetCallback(); } }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;};</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;} <span class="comment">// namespace firmata</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// callback function types</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">typedef</span> firmata::FirmataClass::callbackFunction callbackFunction;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">typedef</span> firmata::FirmataClass::systemCallbackFunction systemCallbackFunction;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">typedef</span> firmata::FirmataClass::stringCallbackFunction stringCallbackFunction;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">typedef</span> firmata::FirmataClass::sysexCallbackFunction sysexCallbackFunction;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword">extern</span> <a class="code" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a> Firmata;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment">/*==============================================================================</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * MACROS</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> *============================================================================*/</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">/* shortcut for setFirmwareNameAndVersion() that uses __FILE__ to set the</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * firmware name. It needs to be a macro so that __FILE__ is included in the</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * firmware source file rather than the library source file.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor">#define setFirmwareVersion(x, y) setFirmwareNameAndVersion(__FILE__, x, y)</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* Firmata_h */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_aa698f5f5a234173d5eebb54831350676"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676">firmata::FirmataClass::processInput</a></div><div class="ttdeci">void processInput(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:252</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a32c41dd94c1d23aa0e6d3d1dbe5c0c04"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">firmata::FirmataClass::setPinMode</a></div><div class="ttdeci">void setPinMode(byte pin, byte config)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:486</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a58e9d787957c3085f22d33b59b1f6ea6"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6">firmata::FirmataClass::isParsingMessage</a></div><div class="ttdeci">boolean isParsingMessage(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:272</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_abe11f621154afd308926129de349fc6e"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">firmata::FirmataClass::sendString</a></div><div class="ttdeci">void sendString(const char *string)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:363</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_ae8f29a829e17379602fcb9fd6a497807"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807">firmata::FirmataClass::write</a></div><div class="ttdeci">void write(byte c)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:373</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_abe49261eab0bd4892a09fa8b8980b11a"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a">firmata::FirmataClass::printFirmwareVersion</a></div><div class="ttdeci">void printFirmwareVersion(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:187</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_aa9f98ba5069823b4c1d08db9f8999ba8"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8">firmata::FirmataClass::setPinState</a></div><div class="ttdeci">void setPinState(byte pin, int state)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:509</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_acf5d4f460b9a2298653d4a71de918dfe"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe">firmata::FirmataClass::getPinState</a></div><div class="ttdeci">int getPinState(byte pin)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:498</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a119734b867186567c1cd011e52e59d2d"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d">firmata::FirmataClass::available</a></div><div class="ttdeci">int available(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:244</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a0c434227456ce2ba97b3b1142c329f96"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96">firmata::FirmataClass::getPinMode</a></div><div class="ttdeci">byte getPinMode(byte pin)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:474</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_abd8a0370db6d9e923e7e3d5836e78d7a"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a">firmata::FirmataClass::printVersion</a></div><div class="ttdeci">void printVersion(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:147</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_ab7aa66b528027566c15b7d64c8cd0f89"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89">firmata::FirmataClass::setFirmwareNameAndVersion</a></div><div class="ttdeci">void setFirmwareNameAndVersion(const char *name, byte major, byte minor)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:201</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_ae14e1d8d9bd72068f6e8ca07721e8dda"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda">firmata::FirmataClass::sendAnalog</a></div><div class="ttdeci">void sendAnalog(byte pin, int value)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:289</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></div><div class="ttdef"><b>Definition:</b> FirmataParser.h:27</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a9bb68afbb1d37a7990f59a1d419e64c9"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9">firmata::FirmataClass::endSysex</a></div><div class="ttdeci">void endSysex(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:67</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a9421550f2501fc1df60fd174b154e606"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606">firmata::FirmataClass::blinkVersion</a></div><div class="ttdeci">void blinkVersion(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:159</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a81e2de5b37eb2372c8a3d9a43d5eb0cc"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc">firmata::FirmataClass::sendSysex</a></div><div class="ttdeci">void sendSysex(byte command, byte bytec, byte *bytev)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:342</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a5db0faee74b9291d1b783d2dde0929d1"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1">firmata::FirmataClass::detach</a></div><div class="ttdeci">void detach(uint8_t command)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:452</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a75b035ab8d96d87d28deeb87badfe11a"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a">firmata::FirmataClass::FirmataClass</a></div><div class="ttdeci">FirmataClass()</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:80</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a5ddba465c3772f841828ef82c79d4307"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307">firmata::FirmataClass::disableBlinkVersion</a></div><div class="ttdeci">void disableBlinkVersion()</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:177</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_aaeaac8b1f8facf070615b0035120c432"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432">firmata::FirmataClass::parse</a></div><div class="ttdeci">void parse(unsigned char value)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:264</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></div><div class="ttdef"><b>Definition:</b> Firmata.h:54</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a799b91e5a888dd21b066a2020d8e2b68"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68">firmata::FirmataClass::sendDigitalPort</a></div><div class="ttdeci">void sendDigitalPort(byte portNumber, int portData)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:330</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a3cc7ea1af348bca3ea0bd570314cada3"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3">firmata::FirmataClass::startSysex</a></div><div class="ttdeci">void startSysex(void)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:59</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.h:29</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a770e43f26f18204e43acebf9202a6d39"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39">firmata::FirmataClass::sendValueAsTwo7bitBytes</a></div><div class="ttdeci">void sendValueAsTwo7bitBytes(int value)</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:51</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html_a2fddcc643892bec2f4aa7aef6dba70eb"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">firmata::FirmataClass::begin</a></div><div class="ttdeci">void begin()</div><div class="ttdef"><b>Definition:</b> Firmata.cpp:109</div></div>
<!-- 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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,174 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: FirmataConstants.h Source File</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">FirmataConstants.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> FirmataConstants.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> Copyright (c) 2006-2008 Hans-Christoph Steiner. All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (C) 2009-2017 Jeff Hoefs. All rights reserved.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> This library is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> License as published by the Free Software Foundation; either</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> See file LICENSE.txt for further informations on licensing terms.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef FirmataConstants_h</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define FirmataConstants_h</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span>firmata {</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/* Version numbers for the Firmata library.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * The firmware version will not always equal the protocol version going forward.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Query using the REPORT_FIRMWARE message.</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> FIRMWARE_MAJOR_VERSION = 2;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> FIRMWARE_MINOR_VERSION = 5;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> FIRMWARE_BUGFIX_VERSION = 7;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">/* Version numbers for the protocol. The protocol is still changing, so these</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * version numbers are important.</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Query using the REPORT_VERSION message.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PROTOCOL_MAJOR_VERSION = 2; <span class="comment">// for non-compatible changes</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PROTOCOL_MINOR_VERSION = 5; <span class="comment">// for backwards compatible changes</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PROTOCOL_BUGFIX_VERSION = 1; <span class="comment">// for bugfix releases</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> MAX_DATA_BYTES = 64; <span class="comment">// max number of data bytes in incoming messages</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">// message command bytes (128-255/0x80-0xFF)</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> DIGITAL_MESSAGE = 0x90; <span class="comment">// send data for a digital port (collection of 8 pins)</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ANALOG_MESSAGE = 0xE0; <span class="comment">// send data for an analog pin (or PWM)</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> REPORT_ANALOG = 0xC0; <span class="comment">// enable analog input by pin #</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> REPORT_DIGITAL = 0xD0; <span class="comment">// enable digital input by port pair</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SET_PIN_MODE = 0xF4; <span class="comment">// set a pin to INPUT/OUTPUT/PWM/etc</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SET_DIGITAL_PIN_VALUE = 0xF5; <span class="comment">// set value of an individual digital pin</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> REPORT_VERSION = 0xF9; <span class="comment">// report protocol version</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SYSTEM_RESET = 0xFF; <span class="comment">// reset from MIDI</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> START_SYSEX = 0xF0; <span class="comment">// start a MIDI Sysex message</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> END_SYSEX = 0xF7; <span class="comment">// end a MIDI Sysex message</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">// extended command set using sysex (0-127/0x00-0x7F)</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">/* 0x00-0x0F reserved for user-defined commands */</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SERIAL_DATA = 0x60; <span class="comment">// communicate with serial devices, including other boards</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ENCODER_DATA = 0x61; <span class="comment">// reply with encoders current positions</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SERVO_CONFIG = 0x70; <span class="comment">// set max angle, minPulse, maxPulse, freq</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> STRING_DATA = 0x71; <span class="comment">// a string message with 14-bits per char</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> STEPPER_DATA = 0x72; <span class="comment">// control a stepper motor</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ONEWIRE_DATA = 0x73; <span class="comment">// send an OneWire read/write/reset/select/skip/search request</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SHIFT_DATA = 0x75; <span class="comment">// a bitstream to/from a shift register</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> I2C_REQUEST = 0x76; <span class="comment">// send an I2C read/write request</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> I2C_REPLY = 0x77; <span class="comment">// a reply to an I2C read request</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> I2C_CONFIG = 0x78; <span class="comment">// config I2C settings such as delay times and power pins</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> REPORT_FIRMWARE = 0x79; <span class="comment">// report name and version of the firmware</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> EXTENDED_ANALOG = 0x6F; <span class="comment">// analog write (PWM, Servo, etc) to any pin</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_STATE_QUERY = 0x6D; <span class="comment">// ask for a pin&#39;s current mode and value</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_STATE_RESPONSE = 0x6E; <span class="comment">// reply with pin&#39;s current mode and value</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> CAPABILITY_QUERY = 0x6B; <span class="comment">// ask for supported modes and resolution of all pins</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> CAPABILITY_RESPONSE = 0x6C; <span class="comment">// reply with supported modes and resolution</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ANALOG_MAPPING_QUERY = 0x69; <span class="comment">// ask for mapping of analog to pin numbers</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ANALOG_MAPPING_RESPONSE = 0x6A; <span class="comment">// reply with mapping info</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SAMPLING_INTERVAL = 0x7A; <span class="comment">// set the poll rate of the main loop</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SCHEDULER_DATA = 0x7B; <span class="comment">// send a createtask/deletetask/addtotask/schedule/querytasks/querytask request to the scheduler</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SYSEX_NON_REALTIME = 0x7E; <span class="comment">// MIDI Reserved for non-realtime messages</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SYSEX_REALTIME = 0x7F; <span class="comment">// MIDI Reserved for realtime messages</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// pin modes</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_INPUT = 0x00; <span class="comment">// same as INPUT defined in Arduino.h</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_OUTPUT = 0x01; <span class="comment">// same as OUTPUT defined in Arduino.h</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_ANALOG = 0x02; <span class="comment">// analog pin in analogInput mode</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_PWM = 0x03; <span class="comment">// digital pin in PWM output mode</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_SERVO = 0x04; <span class="comment">// digital pin in Servo output mode</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_SHIFT = 0x05; <span class="comment">// shiftIn/shiftOut mode</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_I2C = 0x06; <span class="comment">// pin included in I2C setup</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_ONEWIRE = 0x07; <span class="comment">// pin configured for 1-wire</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_STEPPER = 0x08; <span class="comment">// pin configured for stepper motor</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_ENCODER = 0x09; <span class="comment">// pin configured for rotary encoders</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_SERIAL = 0x0A; <span class="comment">// pin configured for serial communication</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_PULLUP = 0x0B; <span class="comment">// enable internal pull-up resistor for pin</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PIN_MODE_IGNORE = 0x7F; <span class="comment">// pin configured to be ignored by digitalWrite and capabilityResponse</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> TOTAL_PIN_MODES = 13;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;} <span class="comment">// namespace firmata</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif // FirmataConstants_h</span></div>
</div><!-- fragment --></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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,360 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: FirmataDefines.h Source File</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">FirmataDefines.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> FirmataDefines.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> Copyright (c) 2006-2008 Hans-Christoph Steiner. All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (C) 2009-2016 Jeff Hoefs. All rights reserved.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> This library is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> License as published by the Free Software Foundation; either</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> See file LICENSE.txt for further informations on licensing terms.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef FirmataDefines_h</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define FirmataDefines_h</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;FirmataConstants.h&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">/* Version numbers for the Firmata library.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * The firmware version will not always equal the protocol version going forward.</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * Query using the REPORT_FIRMWARE message.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#define FIRMATA_FIRMWARE_MAJOR_VERSION firmata::FIRMWARE_MAJOR_VERSION</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#define FIRMATA_FIRMWARE_MINOR_VERSION firmata::FIRMWARE_MINOR_VERSION</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define FIRMATA_FIRMWARE_BUGFIX_VERSION firmata::FIRMWARE_BUGFIX_VERSION</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/* Version numbers for the protocol. The protocol is still changing, so these</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * version numbers are important.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * Query using the REPORT_VERSION message.</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define FIRMATA_PROTOCOL_MAJOR_VERSION firmata::PROTOCOL_MAJOR_VERSION // for non-compatible changes</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#define FIRMATA_PROTOCOL_MINOR_VERSION firmata::PROTOCOL_MINOR_VERSION // for backwards compatible changes</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#define FIRMATA_PROTOCOL_BUGFIX_VERSION firmata::PROTOCOL_BUGFIX_VERSION // for bugfix releases</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#ifdef MAX_DATA_BYTES</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#undef MAX_DATA_BYTES</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define MAX_DATA_BYTES firmata::MAX_DATA_BYTES // max number of data bytes in incoming messages</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// message command bytes (128-255/0x80-0xFF)</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifdef DIGITAL_MESSAGE</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#undef DIGITAL_MESSAGE</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define DIGITAL_MESSAGE firmata::DIGITAL_MESSAGE // send data for a digital port (collection of 8 pins)</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#ifdef ANALOG_MESSAGE</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#undef ANALOG_MESSAGE</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define ANALOG_MESSAGE firmata::ANALOG_MESSAGE // send data for an analog pin (or PWM)</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#ifdef REPORT_ANALOG</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#undef REPORT_ANALOG</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#define REPORT_ANALOG firmata::REPORT_ANALOG // enable analog input by pin #</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#ifdef REPORT_DIGITAL</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#undef REPORT_DIGITAL</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#define REPORT_DIGITAL firmata::REPORT_DIGITAL // enable digital input by port pair</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#ifdef SET_PIN_MODE</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#undef SET_PIN_MODE</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#define SET_PIN_MODE firmata::SET_PIN_MODE // set a pin to INPUT/OUTPUT/PWM/etc</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#ifdef SET_DIGITAL_PIN_VALUE</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#undef SET_DIGITAL_PIN_VALUE</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#define SET_DIGITAL_PIN_VALUE firmata::SET_DIGITAL_PIN_VALUE // set value of an individual digital pin</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#ifdef REPORT_VERSION</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#undef REPORT_VERSION</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#define REPORT_VERSION firmata::REPORT_VERSION // report protocol version</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#ifdef SYSTEM_RESET</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#undef SYSTEM_RESET</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#define SYSTEM_RESET firmata::SYSTEM_RESET // reset from MIDI</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#ifdef START_SYSEX</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor">#undef START_SYSEX</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#define START_SYSEX firmata::START_SYSEX // start a MIDI Sysex message</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#ifdef END_SYSEX</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#undef END_SYSEX</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor">#define END_SYSEX firmata::END_SYSEX // end a MIDI Sysex message</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// extended command set using sysex (0-127/0x00-0x7F)</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">/* 0x00-0x0F reserved for user-defined commands */</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor">#ifdef SERIAL_MESSAGE</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#undef SERIAL_MESSAGE</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#define SERIAL_MESSAGE firmata::SERIAL_DATA // communicate with serial devices, including other boards</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#ifdef ENCODER_DATA</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor">#undef ENCODER_DATA</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#define ENCODER_DATA firmata::ENCODER_DATA // reply with encoders current positions</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#ifdef SERVO_CONFIG</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor">#undef SERVO_CONFIG</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define SERVO_CONFIG firmata::SERVO_CONFIG // set max angle, minPulse, maxPulse, freq</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#ifdef STRING_DATA</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#undef STRING_DATA</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#define STRING_DATA firmata::STRING_DATA // a string message with 14-bits per char</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#ifdef STEPPER_DATA</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#undef STEPPER_DATA</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#define STEPPER_DATA firmata::STEPPER_DATA // control a stepper motor</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor">#ifdef ONEWIRE_DATA</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#undef ONEWIRE_DATA</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#define ONEWIRE_DATA firmata::ONEWIRE_DATA // send an OneWire read/write/reset/select/skip/search request</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#ifdef SHIFT_DATA</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor">#undef SHIFT_DATA</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor">#define SHIFT_DATA firmata::SHIFT_DATA // a bitstream to/from a shift register</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor">#ifdef I2C_REQUEST</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor">#undef I2C_REQUEST</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor">#define I2C_REQUEST firmata::I2C_REQUEST // send an I2C read/write request</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor">#ifdef I2C_REPLY</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor">#undef I2C_REPLY</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor">#define I2C_REPLY firmata::I2C_REPLY // a reply to an I2C read request</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor">#ifdef I2C_CONFIG</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#undef I2C_CONFIG</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#define I2C_CONFIG firmata::I2C_CONFIG // config I2C settings such as delay times and power pins</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#ifdef REPORT_FIRMWARE</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor">#undef REPORT_FIRMWARE</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor">#define REPORT_FIRMWARE firmata::REPORT_FIRMWARE // report name and version of the firmware</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#ifdef EXTENDED_ANALOG</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor">#undef EXTENDED_ANALOG</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#define EXTENDED_ANALOG firmata::EXTENDED_ANALOG // analog write (PWM, Servo, etc) to any pin</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#ifdef PIN_STATE_QUERY</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#undef PIN_STATE_QUERY</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#define PIN_STATE_QUERY firmata::PIN_STATE_QUERY // ask for a pin&#39;s current mode and value</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#ifdef PIN_STATE_RESPONSE</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor">#undef PIN_STATE_RESPONSE</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor">#define PIN_STATE_RESPONSE firmata::PIN_STATE_RESPONSE // reply with pin&#39;s current mode and value</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor">#ifdef CAPABILITY_QUERY</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor">#undef CAPABILITY_QUERY</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#define CAPABILITY_QUERY firmata::CAPABILITY_QUERY // ask for supported modes and resolution of all pins</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor">#ifdef CAPABILITY_RESPONSE</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor">#undef CAPABILITY_RESPONSE</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#define CAPABILITY_RESPONSE firmata::CAPABILITY_RESPONSE // reply with supported modes and resolution</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#ifdef ANALOG_MAPPING_QUERY</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor">#undef ANALOG_MAPPING_QUERY</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor">#define ANALOG_MAPPING_QUERY firmata::ANALOG_MAPPING_QUERY // ask for mapping of analog to pin numbers</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor">#ifdef ANALOG_MAPPING_RESPONSE</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor">#undef ANALOG_MAPPING_RESPONSE</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor">#define ANALOG_MAPPING_RESPONSE firmata::ANALOG_MAPPING_RESPONSE // reply with mapping info</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#ifdef SAMPLING_INTERVAL</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor">#undef SAMPLING_INTERVAL</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor">#define SAMPLING_INTERVAL firmata::SAMPLING_INTERVAL // set the poll rate of the main loop</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor">#ifdef SCHEDULER_DATA</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#undef SCHEDULER_DATA</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#define SCHEDULER_DATA firmata::SCHEDULER_DATA // send a createtask/deletetask/addtotask/schedule/querytasks/querytask request to the scheduler</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; </div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor">#ifdef SYSEX_NON_REALTIME</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#undef SYSEX_NON_REALTIME</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor">#define SYSEX_NON_REALTIME firmata::SYSEX_NON_REALTIME // MIDI Reserved for non-realtime messages</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor">#ifdef SYSEX_REALTIME</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#undef SYSEX_REALTIME</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#define SYSEX_REALTIME firmata::SYSEX_REALTIME // MIDI Reserved for realtime messages</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">// pin modes</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_INPUT</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#undef PIN_MODE_INPUT</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor">#define PIN_MODE_INPUT firmata::PIN_MODE_INPUT // same as INPUT defined in Arduino.h</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_OUTPUT</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor">#undef PIN_MODE_OUTPUT</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor">#define PIN_MODE_OUTPUT firmata::PIN_MODE_OUTPUT // same as OUTPUT defined in Arduino.h</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_ANALOG</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#undef PIN_MODE_ANALOG</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor">#define PIN_MODE_ANALOG firmata::PIN_MODE_ANALOG // analog pin in analogInput mode</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_PWM</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#undef PIN_MODE_PWM</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor">#define PIN_MODE_PWM firmata::PIN_MODE_PWM // digital pin in PWM output mode</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_SERVO</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="preprocessor">#undef PIN_MODE_SERVO</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor">#define PIN_MODE_SERVO firmata::PIN_MODE_SERVO // digital pin in Servo output mode</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_SHIFT</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor">#undef PIN_MODE_SHIFT</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor">#define PIN_MODE_SHIFT firmata::PIN_MODE_SHIFT // shiftIn/shiftOut mode</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_I2C</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor">#undef PIN_MODE_I2C</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#define PIN_MODE_I2C firmata::PIN_MODE_I2C // pin included in I2C setup</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_ONEWIRE</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor">#undef PIN_MODE_ONEWIRE</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor">#define PIN_MODE_ONEWIRE firmata::PIN_MODE_ONEWIRE // pin configured for 1-wire</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_STEPPER</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor">#undef PIN_MODE_STEPPER</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor">#define PIN_MODE_STEPPER firmata::PIN_MODE_STEPPER // pin configured for stepper motor</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_ENCODER</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor">#undef PIN_MODE_ENCODER</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor">#define PIN_MODE_ENCODER firmata::PIN_MODE_ENCODER // pin configured for rotary encoders</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_SERIAL</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor">#undef PIN_MODE_SERIAL</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor">#define PIN_MODE_SERIAL firmata::PIN_MODE_SERIAL // pin configured for serial communication</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_PULLUP</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#undef PIN_MODE_PULLUP</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#define PIN_MODE_PULLUP firmata::PIN_MODE_PULLUP // enable internal pull-up resistor for pin</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#ifdef PIN_MODE_IGNORE</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor">#undef PIN_MODE_IGNORE</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#define PIN_MODE_IGNORE firmata::PIN_MODE_IGNORE // pin configured to be ignored by digitalWrite and capabilityResponse</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; </div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#ifdef TOTAL_PIN_MODES</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#undef TOTAL_PIN_MODES</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#define TOTAL_PIN_MODES firmata::TOTAL_PIN_MODES</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; </div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor">#endif // FirmataConstants_h</span></div>
</div><!-- fragment --></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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,176 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: FirmataMarshaller.h Source File</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">FirmataMarshaller.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> FirmataMarshaller.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> Copyright (c) 2006-2008 Hans-Christoph Steiner. All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (C) 2009-2016 Jeff Hoefs. All rights reserved.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> This library is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> License as published by the Free Software Foundation; either</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> See file LICENSE.txt for further informations on licensing terms.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef FirmataMarshaller_h</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define FirmataMarshaller_h</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if defined(__cplusplus) &amp;&amp; !defined(ARDUINO)</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"> #include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"> #include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"> #include &lt;stddef.h&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"> #include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;Stream.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span>firmata {</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classfirmata_1_1_firmata_marshaller.html"> 29</a></span>&#160;<span class="keyword">class </span><a class="code" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classfirmata_1_1_firmata_class.html">FirmataClass</a>;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* constructors */</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829">FirmataMarshaller</a>();</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">/* public methods */</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76">begin</a>(Stream &amp;s);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de">end</a>();</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">/* serial send handling */</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697">queryFirmwareVersion</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167">queryVersion</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30">reportAnalogDisable</a>(uint8_t pin) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db">reportAnalogEnable</a>(uint8_t pin) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad">reportDigitalPortDisable</a>(uint8_t portNumber) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c">reportDigitalPortEnable</a>(uint8_t portNumber) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a">sendAnalog</a>(uint8_t pin, uint16_t value) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3">sendAnalogMappingQuery</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781">sendCapabilityQuery</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3">sendDigital</a>(uint8_t pin, uint8_t value) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951">sendDigitalPort</a>(uint8_t portNumber, uint16_t portData) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c">sendFirmwareVersion</a>(uint8_t major, uint8_t minor, <span class="keywordtype">size_t</span> bytec, uint8_t *bytev) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29">sendVersion</a>(uint8_t major, uint8_t minor) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221">sendPinMode</a>(uint8_t pin, uint8_t config) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b">sendPinStateQuery</a>(uint8_t pin) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f">sendString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e">sendSysex</a>(uint8_t command, <span class="keywordtype">size_t</span> bytec, uint8_t *bytev) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c">setSamplingInterval</a>(uint16_t interval_ms) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206">systemReset</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">/* utility methods */</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> reportAnalog(uint8_t pin, <span class="keywordtype">bool</span> stream_enable) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> reportDigitalPort(uint8_t portNumber, <span class="keywordtype">bool</span> stream_enable) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> sendExtendedAnalog(uint8_t pin, <span class="keywordtype">size_t</span> bytec, uint8_t * bytev) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">void</span> encodeByteStream (<span class="keywordtype">size_t</span> bytec, uint8_t * bytev, <span class="keywordtype">size_t</span> max_bytes = 0) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Stream * FirmataStream;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;} <span class="comment">// namespace firmata</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* FirmataMarshaller_h */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a608c28cdc966c33d0cc2239d9465ef7c"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c">firmata::FirmataMarshaller::reportDigitalPortEnable</a></div><div class="ttdeci">void reportDigitalPortEnable(uint8_t portNumber) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:230</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_af954bcf09b77458b3c4f032897d14697"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697">firmata::FirmataMarshaller::queryFirmwareVersion</a></div><div class="ttdeci">void queryFirmwareVersion(void) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:165</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_aa00582e6e014605a65a8953f8275a5ad"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad">firmata::FirmataMarshaller::reportDigitalPortDisable</a></div><div class="ttdeci">void reportDigitalPortDisable(uint8_t portNumber) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:217</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_ad1a42532bdf77088c47c1a62f5a03829"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829">firmata::FirmataMarshaller::FirmataMarshaller</a></div><div class="ttdeci">FirmataMarshaller()</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:129</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a1c987a534cc8dd197eb2f2a728bdacb3"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3">firmata::FirmataMarshaller::sendAnalogMappingQuery</a></div><div class="ttdeci">void sendAnalogMappingQuery(void) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:262</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a483ac2dea885ab3472dc38b99bfdec2f"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f">firmata::FirmataMarshaller::sendString</a></div><div class="ttdeci">void sendString(const char *string) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:405</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a2668d1332704bbf9938f386e247a8f30"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30">firmata::FirmataMarshaller::reportAnalogDisable</a></div><div class="ttdeci">void reportAnalogDisable(uint8_t pin) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:191</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a5be18ca3658875dbe5580c2254071c76"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76">firmata::FirmataMarshaller::begin</a></div><div class="ttdeci">void begin(Stream &amp;s)</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:145</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a1f1c5ce29ba4488306c9a1e3f158b781"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781">firmata::FirmataMarshaller::sendCapabilityQuery</a></div><div class="ttdeci">void sendCapabilityQuery(void) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:273</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a3a585937f94b1f9e51797e5950a33206"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206">firmata::FirmataMarshaller::systemReset</a></div><div class="ttdeci">void systemReset(void) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:426</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a67b3db7232143acf63bd48b765fcc4db"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db">firmata::FirmataMarshaller::reportAnalogEnable</a></div><div class="ttdeci">void reportAnalogEnable(uint8_t pin) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:204</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_afc378ab4a39c843d4419acdee944972b"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b">firmata::FirmataMarshaller::sendPinStateQuery</a></div><div class="ttdeci">void sendPinStateQuery(uint8_t pin) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:371</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_ab856434fc577b1e069cba51c39daf1de"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de">firmata::FirmataMarshaller::end</a></div><div class="ttdeci">void end()</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:153</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_ade4f4592877ec0b9f8d6c74e909bad8e"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e">firmata::FirmataMarshaller::sendSysex</a></div><div class="ttdeci">void sendSysex(uint8_t command, size_t bytec, uint8_t *bytev) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:388</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_aed71d62cc41f2e0bf3f161894b91be7c"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c">firmata::FirmataMarshaller::sendFirmwareVersion</a></div><div class="ttdeci">void sendFirmwareVersion(uint8_t major, uint8_t minor, size_t bytec, uint8_t *bytev) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:319</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a2d90627f0543b6298be71f7d903399b3"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3">firmata::FirmataMarshaller::sendDigital</a></div><div class="ttdeci">void sendDigital(uint8_t pin, uint8_t value) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:284</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a488fbbd372c894ec78ebb99e0faf5167"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167">firmata::FirmataMarshaller::queryVersion</a></div><div class="ttdeci">void queryVersion(void) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:177</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a346dcb4487a51efaa95de42d292ad951"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951">firmata::FirmataMarshaller::sendDigitalPort</a></div><div class="ttdeci">void sendDigitalPort(uint8_t portNumber, uint16_t portData) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:302</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_class_html"><div class="ttname"><a href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></div><div class="ttdef"><b>Definition:</b> Firmata.h:54</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a95d58949e32ad285088705dbe5680b29"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29">firmata::FirmataMarshaller::sendVersion</a></div><div class="ttdeci">void sendVersion(uint8_t major, uint8_t minor) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:339</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.h:29</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a4d9f2d3bb058237404dfe433cfe7571a"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a">firmata::FirmataMarshaller::sendAnalog</a></div><div class="ttdeci">void sendAnalog(uint8_t pin, uint16_t value) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:245</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_abb8f4c79dd8a0dbee3f5e04c587ae20c"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c">firmata::FirmataMarshaller::setSamplingInterval</a></div><div class="ttdeci">void setSamplingInterval(uint16_t interval_ms) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:416</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_marshaller_html_a36b6cc103609d900cce36149a239f221"><div class="ttname"><a href="classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221">firmata::FirmataMarshaller::sendPinMode</a></div><div class="ttdeci">void sendPinMode(uint8_t pin, uint8_t config) const</div><div class="ttdef"><b>Definition:</b> FirmataMarshaller.cpp:355</div></div>
<!-- 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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,189 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: FirmataParser.h Source File</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">FirmataParser.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> FirmataParser.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> Copyright (c) 2006-2008 Hans-Christoph Steiner. All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (C) 2009-2016 Jeff Hoefs. All rights reserved.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> This library is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> License as published by the Free Software Foundation; either</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> See file LICENSE.txt for further informations on licensing terms.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef FirmataParser_h</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define FirmataParser_h</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if defined(__cplusplus) &amp;&amp; !defined(ARDUINO)</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"> #include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"> #include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"> #include &lt;stddef.h&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"> #include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span>firmata {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classfirmata_1_1_firmata_parser.html"> 27</a></span>&#160;<span class="keyword">class </span><a class="code" href="classfirmata_1_1_firmata_parser.html">FirmataParser</a></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">/* callback function types */</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">typedef</span> void (*callbackFunction)(<span class="keywordtype">void</span> * context, uint8_t command, uint16_t value);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">typedef</span> void (*dataBufferOverflowCallbackFunction)(<span class="keywordtype">void</span> * context);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">typedef</span> void (*stringCallbackFunction)(<span class="keywordtype">void</span> * context, <span class="keyword">const</span> <span class="keywordtype">char</span> * c_str);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">typedef</span> void (*sysexCallbackFunction)(<span class="keywordtype">void</span> * context, uint8_t command, <span class="keywordtype">size_t</span> argc, uint8_t * argv);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">typedef</span> void (*systemCallbackFunction)(<span class="keywordtype">void</span> * context);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">typedef</span> void (*versionCallbackFunction)(<span class="keywordtype">void</span> * context, <span class="keywordtype">size_t</span> sv_major, <span class="keywordtype">size_t</span> sv_minor, <span class="keyword">const</span> <span class="keywordtype">char</span> * firmware);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b">FirmataParser</a>(uint8_t * dataBuffer = (uint8_t *)NULL, <span class="keywordtype">size_t</span> dataBufferSize = 0);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">/* serial receive handling */</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf">parse</a>(uint8_t value);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902">isParsingMessage</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516">setDataBufferOfSize</a>(uint8_t * dataBuffer, <span class="keywordtype">size_t</span> dataBufferSize);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">/* attach &amp; detach callback functions to messages */</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(uint8_t command, callbackFunction newFunction, <span class="keywordtype">void</span> * context = NULL);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(dataBufferOverflowCallbackFunction newFunction, <span class="keywordtype">void</span> * context = NULL);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(uint8_t command, stringCallbackFunction newFunction, <span class="keywordtype">void</span> * context = NULL);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(uint8_t command, sysexCallbackFunction newFunction, <span class="keywordtype">void</span> * context = NULL);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(uint8_t command, systemCallbackFunction newFunction, <span class="keywordtype">void</span> * context = NULL);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(uint8_t command, versionCallbackFunction newFunction, <span class="keywordtype">void</span> * context = NULL);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">detach</a>(uint8_t command);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">detach</a>(dataBufferOverflowCallbackFunction);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">/* input message handling */</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">bool</span> allowBufferUpdate;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; uint8_t * dataBuffer; <span class="comment">// multi-byte data</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">size_t</span> dataBufferSize;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; uint8_t executeMultiByteCommand; <span class="comment">// execute this after getting multi-byte data</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; uint8_t multiByteChannel; <span class="comment">// channel data for multiByteCommands</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">size_t</span> waitForData; <span class="comment">// this flag says the next serial input will be data</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">/* sysex */</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">bool</span> parsingSysex;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">size_t</span> sysexBytesRead;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">/* callback context */</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> * currentAnalogCallbackContext;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> * currentDigitalCallbackContext;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span> * currentReportAnalogCallbackContext;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">void</span> * currentReportDigitalCallbackContext;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">void</span> * currentPinModeCallbackContext;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> * currentPinValueCallbackContext;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">void</span> * currentReportFirmwareCallbackContext;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> * currentReportVersionCallbackContext;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">void</span> * currentDataBufferOverflowCallbackContext;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">void</span> * currentStringCallbackContext;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">void</span> * currentSysexCallbackContext;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">void</span> * currentSystemResetCallbackContext;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">/* callback functions */</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; callbackFunction currentAnalogCallback;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; callbackFunction currentDigitalCallback;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; callbackFunction currentReportAnalogCallback;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; callbackFunction currentReportDigitalCallback;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; callbackFunction currentPinModeCallback;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; callbackFunction currentPinValueCallback;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; dataBufferOverflowCallbackFunction currentDataBufferOverflowCallback;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; stringCallbackFunction currentStringCallback;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; sysexCallbackFunction currentSysexCallback;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; versionCallbackFunction currentReportFirmwareCallback;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; systemCallbackFunction currentReportVersionCallback;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; systemCallbackFunction currentSystemResetCallback;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">/* private methods ------------------------------ */</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">bool</span> bufferDataAtPosition(<span class="keyword">const</span> uint8_t data, <span class="keyword">const</span> <span class="keywordtype">size_t</span> pos);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">size_t</span> decodeByteStream(<span class="keywordtype">size_t</span> bytec, uint8_t * bytev);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">void</span> processSysexMessage(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> systemReset(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;} <span class="comment">// firmata</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* FirmataParser_h */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html_a67902b70695eaf0cf8f7b06175ca3902"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902">firmata::FirmataParser::isParsingMessage</a></div><div class="ttdeci">bool isParsingMessage(void) const</div><div class="ttdef"><b>Definition:</b> FirmataParser.cpp:176</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html_ac8c388b593a00e88856646712beae68b"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b">firmata::FirmataParser::FirmataParser</a></div><div class="ttdeci">FirmataParser(uint8_t *dataBuffer=(uint8_t *) NULL, size_t dataBufferSize=0)</div><div class="ttdef"><b>Definition:</b> FirmataParser.cpp:33</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></div><div class="ttdef"><b>Definition:</b> FirmataParser.h:27</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html_a2a472a925ed7e626ed36dee94ceae45e"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">firmata::FirmataParser::attach</a></div><div class="ttdeci">void attach(uint8_t command, callbackFunction newFunction, void *context=NULL)</div><div class="ttdef"><b>Definition:</b> FirmataParser.cpp:216</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html_a7cd707386c0807bee733a3e27d161c7d"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">firmata::FirmataParser::detach</a></div><div class="ttdeci">void detach(uint8_t command)</div><div class="ttdef"><b>Definition:</b> FirmataParser.cpp:337</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html_a8fbe143ddb428a97c00a15993c31a516"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516">firmata::FirmataParser::setDataBufferOfSize</a></div><div class="ttdeci">int setDataBufferOfSize(uint8_t *dataBuffer, size_t dataBufferSize)</div><div class="ttdef"><b>Definition:</b> FirmataParser.cpp:189</div></div>
<div class="ttc" id="aclassfirmata_1_1_firmata_parser_html_a754c97b890b7fd66c8d953a3e615acbf"><div class="ttname"><a href="classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf">firmata::FirmataParser::parse</a></div><div class="ttdeci">void parse(uint8_t value)</div><div class="ttdef"><b>Definition:</b> FirmataParser.cpp:81</div></div>
<!-- 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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Class List</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>firmata</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfirmata_1_1_firmata_class.html" target="_self">FirmataClass</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfirmata_1_1_firmata_marshaller.html" target="_self">FirmataMarshaller</a></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfirmata_1_1_firmata_parser.html" target="_self">FirmataParser</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</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.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Class Index</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_f">f</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_f"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;f&#160;&#160;</div></td></tr></table>
</td>
<td valign="top"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a> (firmata)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="classfirmata_1_1_firmata_parser.html">FirmataParser</a> (firmata)&#160;&#160;&#160;</td>
<td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td valign="top"><a class="el" href="classfirmata_1_1_firmata_class.html">FirmataClass</a> (firmata)&#160;&#160;&#160;</td>
<td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_f">f</a></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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,121 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Member List</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>firmata</b></li><li class="navelem"><a class="el" href="classfirmata_1_1_firmata_class.html">FirmataClass</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">firmata::FirmataClass Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>attach</b>(uint8_t command, callbackFunction newFunction) (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#adc3db897058f33e902097ce89bb01bb3">attach</a>(uint8_t command, systemCallbackFunction newFunction)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a074887a70f9aca0c0aae7e9bdc103f77">attach</a>(uint8_t command, stringCallbackFunction newFunction)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a78e360c0c8d70cffeb9c935fdec23f77">attach</a>(uint8_t command, sysexCallbackFunction newFunction)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d">available</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">begin</a>()</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#ab0b7b837d2c32b4ce79e62895ced2731">begin</a>(long)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a0c7b0e10168e3c5dc6442d77c65a156e">begin</a>(Stream &amp;s)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606">blinkVersion</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>callbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1">detach</a>(uint8_t command)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307">disableBlinkVersion</a>()</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9">endSysex</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a">FirmataClass</a>()</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FirmataMarshaller::encodeByteStream</b> (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96">getPinMode</a>(byte pin)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe">getPinState</a>(byte pin)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6">isParsingMessage</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432">parse</a>(unsigned char value)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a">printFirmwareVersion</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a">printVersion</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676">processInput</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda">sendAnalog</a>(byte pin, int value)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>sendDigital</b>(byte pin, int value) (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68">sendDigitalPort</a>(byte portNumber, int portData)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">sendString</a>(const char *string)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#ab139c0d784e69003c88eb5be8807dcdf">sendString</a>(byte command, const char *string)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc">sendSysex</a>(byte command, byte bytec, byte *bytev)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39">sendValueAsTwo7bitBytes</a>(int value)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89">setFirmwareNameAndVersion</a>(const char *name, byte major, byte minor)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">setPinMode</a>(byte pin, byte config)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8">setPinState</a>(byte pin, int state)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3">startSysex</a>(void)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>stringCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sysexCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>systemCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807">write</a>(byte c)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_class.html">firmata::FirmataClass</a></td><td class="entry"></td></tr>
</table></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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,972 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: firmata::FirmataClass Class 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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>firmata</b></li><li class="navelem"><a class="el" href="classfirmata_1_1_firmata_class.html">FirmataClass</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classfirmata_1_1_firmata_class-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">firmata::FirmataClass Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a3e5ee128a6c5054863dc7718d7a1f285"><td class="memItemLeft" align="right" valign="top"><a id="a3e5ee128a6c5054863dc7718d7a1f285"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>callbackFunction</b>) (uint8_t, int)</td></tr>
<tr class="separator:a3e5ee128a6c5054863dc7718d7a1f285"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0a7eb3dbe1432de1727d9f14b5b1dab"><td class="memItemLeft" align="right" valign="top"><a id="af0a7eb3dbe1432de1727d9f14b5b1dab"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>systemCallbackFunction</b>) (void)</td></tr>
<tr class="separator:af0a7eb3dbe1432de1727d9f14b5b1dab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb5aa833e160037296f447ac208c95c1"><td class="memItemLeft" align="right" valign="top"><a id="afb5aa833e160037296f447ac208c95c1"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>stringCallbackFunction</b>) (char *)</td></tr>
<tr class="separator:afb5aa833e160037296f447ac208c95c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7c5e806cee9fd7dfe3600525f86c595"><td class="memItemLeft" align="right" valign="top"><a id="ab7c5e806cee9fd7dfe3600525f86c595"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>sysexCallbackFunction</b>) (uint8_t command, uint8_t argc, uint8_t *argv)</td></tr>
<tr class="separator:ab7c5e806cee9fd7dfe3600525f86c595"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a75b035ab8d96d87d28deeb87badfe11a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a">FirmataClass</a> ()</td></tr>
<tr class="separator:a75b035ab8d96d87d28deeb87badfe11a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fddcc643892bec2f4aa7aef6dba70eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">begin</a> ()</td></tr>
<tr class="separator:a2fddcc643892bec2f4aa7aef6dba70eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0b7b837d2c32b4ce79e62895ced2731"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#ab0b7b837d2c32b4ce79e62895ced2731">begin</a> (long)</td></tr>
<tr class="separator:ab0b7b837d2c32b4ce79e62895ced2731"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c7b0e10168e3c5dc6442d77c65a156e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a0c7b0e10168e3c5dc6442d77c65a156e">begin</a> (Stream &amp;s)</td></tr>
<tr class="separator:a0c7b0e10168e3c5dc6442d77c65a156e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd8a0370db6d9e923e7e3d5836e78d7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a">printVersion</a> (void)</td></tr>
<tr class="separator:abd8a0370db6d9e923e7e3d5836e78d7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9421550f2501fc1df60fd174b154e606"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606">blinkVersion</a> (void)</td></tr>
<tr class="separator:a9421550f2501fc1df60fd174b154e606"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe49261eab0bd4892a09fa8b8980b11a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a">printFirmwareVersion</a> (void)</td></tr>
<tr class="separator:abe49261eab0bd4892a09fa8b8980b11a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7aa66b528027566c15b7d64c8cd0f89"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89">setFirmwareNameAndVersion</a> (const char *name, byte major, byte minor)</td></tr>
<tr class="separator:ab7aa66b528027566c15b7d64c8cd0f89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ddba465c3772f841828ef82c79d4307"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307">disableBlinkVersion</a> ()</td></tr>
<tr class="separator:a5ddba465c3772f841828ef82c79d4307"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a119734b867186567c1cd011e52e59d2d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d">available</a> (void)</td></tr>
<tr class="separator:a119734b867186567c1cd011e52e59d2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa698f5f5a234173d5eebb54831350676"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676">processInput</a> (void)</td></tr>
<tr class="separator:aa698f5f5a234173d5eebb54831350676"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeaac8b1f8facf070615b0035120c432"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432">parse</a> (unsigned char value)</td></tr>
<tr class="separator:aaeaac8b1f8facf070615b0035120c432"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58e9d787957c3085f22d33b59b1f6ea6"><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6">isParsingMessage</a> (void)</td></tr>
<tr class="separator:a58e9d787957c3085f22d33b59b1f6ea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae14e1d8d9bd72068f6e8ca07721e8dda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda">sendAnalog</a> (byte pin, int value)</td></tr>
<tr class="separator:ae14e1d8d9bd72068f6e8ca07721e8dda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50a87e8339cf46fb787759603603e225"><td class="memItemLeft" align="right" valign="top"><a id="a50a87e8339cf46fb787759603603e225"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sendDigital</b> (byte pin, int value)</td></tr>
<tr class="separator:a50a87e8339cf46fb787759603603e225"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a799b91e5a888dd21b066a2020d8e2b68"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68">sendDigitalPort</a> (byte portNumber, int portData)</td></tr>
<tr class="separator:a799b91e5a888dd21b066a2020d8e2b68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe11f621154afd308926129de349fc6e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">sendString</a> (const char *string)</td></tr>
<tr class="separator:abe11f621154afd308926129de349fc6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab139c0d784e69003c88eb5be8807dcdf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#ab139c0d784e69003c88eb5be8807dcdf">sendString</a> (byte command, const char *string)</td></tr>
<tr class="separator:ab139c0d784e69003c88eb5be8807dcdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81e2de5b37eb2372c8a3d9a43d5eb0cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc">sendSysex</a> (byte command, byte bytec, byte *bytev)</td></tr>
<tr class="separator:a81e2de5b37eb2372c8a3d9a43d5eb0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8f29a829e17379602fcb9fd6a497807"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807">write</a> (byte c)</td></tr>
<tr class="separator:ae8f29a829e17379602fcb9fd6a497807"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ae572e88ec810dd49516e53c5f32d2d"><td class="memItemLeft" align="right" valign="top"><a id="a1ae572e88ec810dd49516e53c5f32d2d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>attach</b> (uint8_t command, callbackFunction newFunction)</td></tr>
<tr class="separator:a1ae572e88ec810dd49516e53c5f32d2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc3db897058f33e902097ce89bb01bb3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#adc3db897058f33e902097ce89bb01bb3">attach</a> (uint8_t command, systemCallbackFunction newFunction)</td></tr>
<tr class="separator:adc3db897058f33e902097ce89bb01bb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a074887a70f9aca0c0aae7e9bdc103f77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a074887a70f9aca0c0aae7e9bdc103f77">attach</a> (uint8_t command, stringCallbackFunction newFunction)</td></tr>
<tr class="separator:a074887a70f9aca0c0aae7e9bdc103f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78e360c0c8d70cffeb9c935fdec23f77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a78e360c0c8d70cffeb9c935fdec23f77">attach</a> (uint8_t command, sysexCallbackFunction newFunction)</td></tr>
<tr class="separator:a78e360c0c8d70cffeb9c935fdec23f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5db0faee74b9291d1b783d2dde0929d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1">detach</a> (uint8_t command)</td></tr>
<tr class="separator:a5db0faee74b9291d1b783d2dde0929d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c434227456ce2ba97b3b1142c329f96"><td class="memItemLeft" align="right" valign="top">byte&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96">getPinMode</a> (byte pin)</td></tr>
<tr class="separator:a0c434227456ce2ba97b3b1142c329f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32c41dd94c1d23aa0e6d3d1dbe5c0c04"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">setPinMode</a> (byte pin, byte config)</td></tr>
<tr class="separator:a32c41dd94c1d23aa0e6d3d1dbe5c0c04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf5d4f460b9a2298653d4a71de918dfe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe">getPinState</a> (byte pin)</td></tr>
<tr class="separator:acf5d4f460b9a2298653d4a71de918dfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9f98ba5069823b4c1d08db9f8999ba8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8">setPinState</a> (byte pin, int state)</td></tr>
<tr class="separator:aa9f98ba5069823b4c1d08db9f8999ba8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a770e43f26f18204e43acebf9202a6d39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39">sendValueAsTwo7bitBytes</a> (int value)</td></tr>
<tr class="separator:a770e43f26f18204e43acebf9202a6d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cc7ea1af348bca3ea0bd570314cada3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3">startSysex</a> (void)</td></tr>
<tr class="separator:a3cc7ea1af348bca3ea0bd570314cada3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bb68afbb1d37a7990f59a1d419e64c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9">endSysex</a> (void)</td></tr>
<tr class="separator:a9bb68afbb1d37a7990f59a1d419e64c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a24ee418692c759b3093398218cd63a17"><td class="memItemLeft" align="right" valign="top"><a id="a24ee418692c759b3093398218cd63a17"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>FirmataMarshaller::encodeByteStream</b> (size_t bytec, uint8_t *bytev, size_t max_bytes=0) const</td></tr>
<tr class="separator:a24ee418692c759b3093398218cd63a17"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a75b035ab8d96d87d28deeb87badfe11a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b035ab8d96d87d28deeb87badfe11a">&#9670;&nbsp;</a></span>FirmataClass()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FirmataClass::FirmataClass </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The Firmata class. An instance named "Firmata" is created automatically for the user. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a074887a70f9aca0c0aae7e9bdc103f77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a074887a70f9aca0c0aae7e9bdc103f77">&#9670;&nbsp;</a></span>attach() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">stringCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a callback function for the STRING_DATA command. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>Must be set to STRING_DATA or it will be ignored. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the string callback function to attach. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a78e360c0c8d70cffeb9c935fdec23f77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78e360c0c8d70cffeb9c935fdec23f77">&#9670;&nbsp;</a></span>attach() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">sysexCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a generic sysex callback function to sysex command. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to attach a callback function to. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the sysex callback function to attach. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="adc3db897058f33e902097ce89bb01bb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc3db897058f33e902097ce89bb01bb3">&#9670;&nbsp;</a></span>attach() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">systemCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a callback function for the SYSTEM_RESET command. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>Must be set to SYSTEM_RESET or it will be ignored. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the system reset callback function to attach. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a119734b867186567c1cd011e52e59d2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a119734b867186567c1cd011e52e59d2d">&#9670;&nbsp;</a></span>available()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FirmataClass::available </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A wrapper for Stream::available() </p><dl class="section return"><dt>Returns</dt><dd>The number of bytes remaining in the input stream buffer. </dd></dl>
</div>
</div>
<a id="a2fddcc643892bec2f4aa7aef6dba70eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fddcc643892bec2f4aa7aef6dba70eb">&#9670;&nbsp;</a></span>begin() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::begin </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the default Serial transport at the default baud of 57600. </p>
</div>
</div>
<a id="ab0b7b837d2c32b4ce79e62895ced2731"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0b7b837d2c32b4ce79e62895ced2731">&#9670;&nbsp;</a></span>begin() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::begin </td>
<td>(</td>
<td class="paramtype">long&#160;</td>
<td class="paramname"><em>speed</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the default Serial transport and override the default baud. Sends the protocol version to the host application followed by the firmware version and name. blinkVersion is also called. To skip the call to blinkVersion, call Firmata.disableBlinkVersion() before calling Firmata.begin(baud). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">speed</td><td>The baud to use. 57600 baud is the default value. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0c7b0e10168e3c5dc6442d77c65a156e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c7b0e10168e3c5dc6442d77c65a156e">&#9670;&nbsp;</a></span>begin() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::begin </td>
<td>(</td>
<td class="paramtype">Stream &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reassign the Firmata stream transport. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>A reference to the Stream transport object. This can be any type of transport that implements the Stream interface. Some examples include Ethernet, WiFi and other UARTs on the board (Serial1, Serial2, etc). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9421550f2501fc1df60fd174b154e606"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9421550f2501fc1df60fd174b154e606">&#9670;&nbsp;</a></span>blinkVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::blinkVersion </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Blink the Firmata protocol version to the onboard LEDs (if the board has an onboard LED). If VERSION_BLINK_PIN is not defined in <a class="el" href="_boards_8h_source.html">Boards.h</a> for a particular board, then this method does nothing. The first series of flashes indicates the firmware major version (2 flashes = 2). The second series of flashes indicates the firmware minor version (5 flashes = 5). </p>
</div>
</div>
<a id="a5db0faee74b9291d1b783d2dde0929d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5db0faee74b9291d1b783d2dde0929d1">&#9670;&nbsp;</a></span>detach()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::detach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Detach a callback function for a specified command (such as SYSTEM_RESET, STRING_DATA, ANALOG_MESSAGE, DIGITAL_MESSAGE, etc). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to detatch the callback function from. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5ddba465c3772f841828ef82c79d4307"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ddba465c3772f841828ef82c79d4307">&#9670;&nbsp;</a></span>disableBlinkVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::disableBlinkVersion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Provides a means to disable the version blink sequence on the onboard LED, trimming startup time by a couple of seconds. Call this before Firmata.begin(). It only applies when using the default Serial transport. </p>
</div>
</div>
<a id="a9bb68afbb1d37a7990f59a1d419e64c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bb68afbb1d37a7990f59a1d419e64c9">&#9670;&nbsp;</a></span>endSysex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::endSysex </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A helper method to write the end of a Sysex message transmission. </p>
</div>
</div>
<a id="a0c434227456ce2ba97b3b1142c329f96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c434227456ce2ba97b3b1142c329f96">&#9670;&nbsp;</a></span>getPinMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">byte FirmataClass::getPinMode </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>pin</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin to get the configuration of. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The configuration of the specified pin. </dd></dl>
</div>
</div>
<a id="acf5d4f460b9a2298653d4a71de918dfe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf5d4f460b9a2298653d4a71de918dfe">&#9670;&nbsp;</a></span>getPinState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FirmataClass::getPinState </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>pin</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin to get the state of. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The state of the specified pin. </dd></dl>
</div>
</div>
<a id="a58e9d787957c3085f22d33b59b1f6ea6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58e9d787957c3085f22d33b59b1f6ea6">&#9670;&nbsp;</a></span>isParsingMessage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boolean FirmataClass::isParsingMessage </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Returns true if the parser is actively parsing data. </dd></dl>
</div>
</div>
<a id="aaeaac8b1f8facf070615b0035120c432"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaeaac8b1f8facf070615b0035120c432">&#9670;&nbsp;</a></span>parse()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::parse </td>
<td>(</td>
<td class="paramtype">unsigned char&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parse data from the input stream. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inputData</td><td>A single byte to be added to the parser. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abe49261eab0bd4892a09fa8b8980b11a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe49261eab0bd4892a09fa8b8980b11a">&#9670;&nbsp;</a></span>printFirmwareVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::printFirmwareVersion </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends the firmware name and version to the Firmata host application. The major and minor version numbers are the first 2 bytes in the message. The following bytes are the characters of the firmware name. </p>
</div>
</div>
<a id="abd8a0370db6d9e923e7e3d5836e78d7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd8a0370db6d9e923e7e3d5836e78d7a">&#9670;&nbsp;</a></span>printVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::printVersion </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the Firmata protocol version to the Firmata host application. </p>
</div>
</div>
<a id="aa698f5f5a234173d5eebb54831350676"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa698f5f5a234173d5eebb54831350676">&#9670;&nbsp;</a></span>processInput()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::processInput </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read a single int from the input stream. If the value is not = -1, pass it on to parse(byte) </p>
</div>
</div>
<a id="ae14e1d8d9bd72068f6e8ca07721e8dda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae14e1d8d9bd72068f6e8ca07721e8dda">&#9670;&nbsp;</a></span>sendAnalog()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::sendAnalog </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an analog message to the Firmata host application. The range of pins is limited to [0..15] when using the ANALOG_MESSAGE. The maximum value of the ANALOG_MESSAGE is limited to 14 bits (16384). To increase the pin range or value, see the documentation for the EXTENDED_ANALOG message. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The analog pin to send the value of (limited to pins 0 - 15). </td></tr>
<tr><td class="paramname">value</td><td>The value of the analog pin (0 - 1024 for 10-bit analog, 0 - 4096 for 12-bit, etc). The maximum value is 14-bits (16384). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a799b91e5a888dd21b066a2020d8e2b68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a799b91e5a888dd21b066a2020d8e2b68">&#9670;&nbsp;</a></span>sendDigitalPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::sendDigitalPort </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>portNumber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>portData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an 8-bit port in a single digital message (protocol v2 and later). Send 14-bits in a single digital message (protocol v1). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">portNumber</td><td>The port number to send. Note that this is not the same as a "port" on the physical microcontroller. Ports are defined in order per every 8 pins in ascending order of the Arduino digital pin numbering scheme. Port 0 = pins D0 - D7, port 1 = pins D8 - D15, etc. </td></tr>
<tr><td class="paramname">portData</td><td>The value of the port. The value of each pin in the port is represented by a bit. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab139c0d784e69003c88eb5be8807dcdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab139c0d784e69003c88eb5be8807dcdf">&#9670;&nbsp;</a></span>sendString() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::sendString </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>string</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a string to the Firmata host application. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>Must be STRING_DATA </td></tr>
<tr><td class="paramname">string</td><td>A pointer to the char string </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abe11f621154afd308926129de349fc6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe11f621154afd308926129de349fc6e">&#9670;&nbsp;</a></span>sendString() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::sendString </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>string</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a string to the Firmata host application. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">string</td><td>A pointer to the char string </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a81e2de5b37eb2372c8a3d9a43d5eb0cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81e2de5b37eb2372c8a3d9a43d5eb0cc">&#9670;&nbsp;</a></span>sendSysex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::sendSysex </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>bytec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte *&#160;</td>
<td class="paramname"><em>bytev</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a sysex message where all values after the command byte are packet as 2 7-bit bytes (this is not always the case so this function is not always used to send sysex messages). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The sysex command byte. </td></tr>
<tr><td class="paramname">bytec</td><td>The number of data bytes in the message (excludes start, command and end bytes). </td></tr>
<tr><td class="paramname">bytev</td><td>A pointer to the array of data bytes to send in the message. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a770e43f26f18204e43acebf9202a6d39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a770e43f26f18204e43acebf9202a6d39">&#9670;&nbsp;</a></span>sendValueAsTwo7bitBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::sendValueAsTwo7bitBytes </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Split a 16-bit byte into two 7-bit values and write each value. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>The 16-bit value to be split and written separately. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab7aa66b528027566c15b7d64c8cd0f89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7aa66b528027566c15b7d64c8cd0f89">&#9670;&nbsp;</a></span>setFirmwareNameAndVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::setFirmwareNameAndVersion </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>major</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>minor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the name and version of the firmware. This is not the same version as the Firmata protocol (although at times the firmware version and protocol version may be the same number). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>A pointer to the name char array </td></tr>
<tr><td class="paramname">major</td><td>The major version number </td></tr>
<tr><td class="paramname">minor</td><td>The minor version number </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a32c41dd94c1d23aa0e6d3d1dbe5c0c04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">&#9670;&nbsp;</a></span>setPinMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::setPinMode </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the pin mode/configuration. The pin configuration (or mode) in Firmata represents the current function of the pin. Examples are digital input or output, analog input, pwm, i2c, serial (uart), etc. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin to configure. </td></tr>
<tr><td class="paramname">config</td><td>The configuration value for the specified pin. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa9f98ba5069823b4c1d08db9f8999ba8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9f98ba5069823b4c1d08db9f8999ba8">&#9670;&nbsp;</a></span>setPinState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::setPinState </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>state</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the pin state. The pin state of an output pin is the pin value. The state of an input pin is 0, unless the pin has it's internal pull up resistor enabled, then the value is 1. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin to set the state of </td></tr>
<tr><td class="paramname">state</td><td>Set the state of the specified pin </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3cc7ea1af348bca3ea0bd570314cada3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cc7ea1af348bca3ea0bd570314cada3">&#9670;&nbsp;</a></span>startSysex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::startSysex </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A helper method to write the beginning of a Sysex message transmission. </p>
</div>
</div>
<a id="ae8f29a829e17379602fcb9fd6a497807"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8f29a829e17379602fcb9fd6a497807">&#9670;&nbsp;</a></span>write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataClass::write </td>
<td>(</td>
<td class="paramtype">byte&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A wrapper for Stream::available(). Write a single byte to the output stream. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">c</td><td>The byte to be written. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_firmata_8h_source.html">Firmata.h</a></li>
<li>Firmata.cpp</li>
</ul>
</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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,107 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Member List</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>firmata</b></li><li class="navelem"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">firmata::FirmataMarshaller Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76">begin</a>(Stream &amp;s)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de">end</a>()</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FirmataClass</b> (defined in <a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829">FirmataMarshaller</a>()</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697">queryFirmwareVersion</a>(void) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167">queryVersion</a>(void) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30">reportAnalogDisable</a>(uint8_t pin) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db">reportAnalogEnable</a>(uint8_t pin) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad">reportDigitalPortDisable</a>(uint8_t portNumber) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c">reportDigitalPortEnable</a>(uint8_t portNumber) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a">sendAnalog</a>(uint8_t pin, uint16_t value) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3">sendAnalogMappingQuery</a>(void) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781">sendCapabilityQuery</a>(void) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3">sendDigital</a>(uint8_t pin, uint8_t value) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951">sendDigitalPort</a>(uint8_t portNumber, uint16_t portData) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c">sendFirmwareVersion</a>(uint8_t major, uint8_t minor, size_t bytec, uint8_t *bytev) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221">sendPinMode</a>(uint8_t pin, uint8_t config) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b">sendPinStateQuery</a>(uint8_t pin) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f">sendString</a>(const char *string) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e">sendSysex</a>(uint8_t command, size_t bytec, uint8_t *bytev) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29">sendVersion</a>(uint8_t major, uint8_t minor) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c">setSamplingInterval</a>(uint16_t interval_ms) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206">systemReset</a>(void) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">firmata::FirmataMarshaller</a></td><td class="entry"></td></tr>
</table></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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,738 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: firmata::FirmataMarshaller Class 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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>firmata</b></li><li class="navelem"><a class="el" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classfirmata_1_1_firmata_marshaller-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">firmata::FirmataMarshaller Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad1a42532bdf77088c47c1a62f5a03829"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829">FirmataMarshaller</a> ()</td></tr>
<tr class="separator:ad1a42532bdf77088c47c1a62f5a03829"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be18ca3658875dbe5580c2254071c76"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76">begin</a> (Stream &amp;s)</td></tr>
<tr class="separator:a5be18ca3658875dbe5580c2254071c76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab856434fc577b1e069cba51c39daf1de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de">end</a> ()</td></tr>
<tr class="separator:ab856434fc577b1e069cba51c39daf1de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af954bcf09b77458b3c4f032897d14697"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697">queryFirmwareVersion</a> (void) const</td></tr>
<tr class="separator:af954bcf09b77458b3c4f032897d14697"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a488fbbd372c894ec78ebb99e0faf5167"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167">queryVersion</a> (void) const</td></tr>
<tr class="separator:a488fbbd372c894ec78ebb99e0faf5167"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2668d1332704bbf9938f386e247a8f30"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30">reportAnalogDisable</a> (uint8_t pin) const</td></tr>
<tr class="separator:a2668d1332704bbf9938f386e247a8f30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67b3db7232143acf63bd48b765fcc4db"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db">reportAnalogEnable</a> (uint8_t pin) const</td></tr>
<tr class="separator:a67b3db7232143acf63bd48b765fcc4db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa00582e6e014605a65a8953f8275a5ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad">reportDigitalPortDisable</a> (uint8_t portNumber) const</td></tr>
<tr class="separator:aa00582e6e014605a65a8953f8275a5ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a608c28cdc966c33d0cc2239d9465ef7c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c">reportDigitalPortEnable</a> (uint8_t portNumber) const</td></tr>
<tr class="separator:a608c28cdc966c33d0cc2239d9465ef7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d9f2d3bb058237404dfe433cfe7571a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a">sendAnalog</a> (uint8_t pin, uint16_t value) const</td></tr>
<tr class="separator:a4d9f2d3bb058237404dfe433cfe7571a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c987a534cc8dd197eb2f2a728bdacb3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3">sendAnalogMappingQuery</a> (void) const</td></tr>
<tr class="separator:a1c987a534cc8dd197eb2f2a728bdacb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f1c5ce29ba4488306c9a1e3f158b781"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781">sendCapabilityQuery</a> (void) const</td></tr>
<tr class="separator:a1f1c5ce29ba4488306c9a1e3f158b781"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d90627f0543b6298be71f7d903399b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3">sendDigital</a> (uint8_t pin, uint8_t value) const</td></tr>
<tr class="separator:a2d90627f0543b6298be71f7d903399b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a346dcb4487a51efaa95de42d292ad951"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951">sendDigitalPort</a> (uint8_t portNumber, uint16_t portData) const</td></tr>
<tr class="separator:a346dcb4487a51efaa95de42d292ad951"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed71d62cc41f2e0bf3f161894b91be7c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c">sendFirmwareVersion</a> (uint8_t major, uint8_t minor, size_t bytec, uint8_t *bytev) const</td></tr>
<tr class="separator:aed71d62cc41f2e0bf3f161894b91be7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95d58949e32ad285088705dbe5680b29"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29">sendVersion</a> (uint8_t major, uint8_t minor) const</td></tr>
<tr class="separator:a95d58949e32ad285088705dbe5680b29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36b6cc103609d900cce36149a239f221"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221">sendPinMode</a> (uint8_t pin, uint8_t config) const</td></tr>
<tr class="separator:a36b6cc103609d900cce36149a239f221"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc378ab4a39c843d4419acdee944972b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b">sendPinStateQuery</a> (uint8_t pin) const</td></tr>
<tr class="separator:afc378ab4a39c843d4419acdee944972b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a483ac2dea885ab3472dc38b99bfdec2f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f">sendString</a> (const char *string) const</td></tr>
<tr class="separator:a483ac2dea885ab3472dc38b99bfdec2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade4f4592877ec0b9f8d6c74e909bad8e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e">sendSysex</a> (uint8_t command, size_t bytec, uint8_t *bytev) const</td></tr>
<tr class="separator:ade4f4592877ec0b9f8d6c74e909bad8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb8f4c79dd8a0dbee3f5e04c587ae20c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c">setSamplingInterval</a> (uint16_t interval_ms) const</td></tr>
<tr class="separator:abb8f4c79dd8a0dbee3f5e04c587ae20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a585937f94b1f9e51797e5950a33206"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206">systemReset</a> (void) const</td></tr>
<tr class="separator:a3a585937f94b1f9e51797e5950a33206"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a5c93a0c3b726fc5e47058f5ec4853aaa"><td class="memItemLeft" align="right" valign="top"><a id="a5c93a0c3b726fc5e47058f5ec4853aaa"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>FirmataClass</b></td></tr>
<tr class="separator:a5c93a0c3b726fc5e47058f5ec4853aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad1a42532bdf77088c47c1a62f5a03829"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1a42532bdf77088c47c1a62f5a03829">&#9670;&nbsp;</a></span>FirmataMarshaller()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FirmataMarshaller::FirmataMarshaller </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The <a class="el" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a> class. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5be18ca3658875dbe5580c2254071c76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5be18ca3658875dbe5580c2254071c76">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::begin </td>
<td>(</td>
<td class="paramtype">Stream &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reassign the Firmata stream transport. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>A reference to the Stream transport object. This can be any type of transport that implements the Stream interface. Some examples include Ethernet, WiFi and other UARTs on the board (Serial1, Serial2, etc). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab856434fc577b1e069cba51c39daf1de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab856434fc577b1e069cba51c39daf1de">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::end </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Closes the <a class="el" href="classfirmata_1_1_firmata_marshaller.html">FirmataMarshaller</a> stream by setting its stream reference to <code>(Stream *)NULL</code> </p>
</div>
</div>
<a id="af954bcf09b77458b3c4f032897d14697"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af954bcf09b77458b3c4f032897d14697">&#9670;&nbsp;</a></span>queryFirmwareVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::queryFirmwareVersion </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the target's firmware name and version </p>
</div>
</div>
<a id="a488fbbd372c894ec78ebb99e0faf5167"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a488fbbd372c894ec78ebb99e0faf5167">&#9670;&nbsp;</a></span>queryVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::queryVersion </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the target's Firmata protocol version </p>
</div>
</div>
<a id="a2668d1332704bbf9938f386e247a8f30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2668d1332704bbf9938f386e247a8f30">&#9670;&nbsp;</a></span>reportAnalogDisable()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::reportAnalogDisable </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Halt the stream of analog readings from the Firmata host application. The range of pins is limited to [0..15] when using the REPORT_ANALOG. The maximum result of the REPORT_ANALOG is limited to 14 bits (16384). To increase the pin range or value, see the documentation for the EXTENDED_ANALOG message. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The analog pin for which to request the value (limited to pins 0 - 15). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a67b3db7232143acf63bd48b765fcc4db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67b3db7232143acf63bd48b765fcc4db">&#9670;&nbsp;</a></span>reportAnalogEnable()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::reportAnalogEnable </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Request a stream of analog readings from the Firmata host application. The range of pins is limited to [0..15] when using the REPORT_ANALOG. The maximum result of the REPORT_ANALOG is limited to 14 bits (16384). To increase the pin range or value, see the documentation for the EXTENDED_ANALOG message. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The analog pin for which to request the value (limited to pins 0 - 15). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa00582e6e014605a65a8953f8275a5ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa00582e6e014605a65a8953f8275a5ad">&#9670;&nbsp;</a></span>reportDigitalPortDisable()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::reportDigitalPortDisable </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>portNumber</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Halt an 8-bit port stream from the Firmata host application (protocol v2 and later). Send 14-bits in a single digital message (protocol v1). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">portNumber</td><td>The port number for which to request the value. Note that this is not the same as a "port" on the physical microcontroller. Ports are defined in order per every 8 pins in ascending order of the Arduino digital pin numbering scheme. Port 0 = pins D0 - D7, port 1 = pins D8 - D15, etc. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a608c28cdc966c33d0cc2239d9465ef7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a608c28cdc966c33d0cc2239d9465ef7c">&#9670;&nbsp;</a></span>reportDigitalPortEnable()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::reportDigitalPortEnable </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>portNumber</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Request an 8-bit port stream from the Firmata host application (protocol v2 and later). Send 14-bits in a single digital message (protocol v1). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">portNumber</td><td>The port number for which to request the value. Note that this is not the same as a "port" on the physical microcontroller. Ports are defined in order per every 8 pins in ascending order of the Arduino digital pin numbering scheme. Port 0 = pins D0 - D7, port 1 = pins D8 - D15, etc. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4d9f2d3bb058237404dfe433cfe7571a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d9f2d3bb058237404dfe433cfe7571a">&#9670;&nbsp;</a></span>sendAnalog()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendAnalog </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an analog message to the Firmata host application. The range of pins is limited to [0..15] when using the ANALOG_MESSAGE. The maximum value of the ANALOG_MESSAGE is limited to 14 bits (16384). To increase the pin range or value, see the documentation for the EXTENDED_ANALOG message. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The analog pin to which the value is sent. </td></tr>
<tr><td class="paramname">value</td><td>The value of the analog pin (0 - 1024 for 10-bit analog, 0 - 4096 for 12-bit, etc). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The maximum value is 14-bits (16384). </dd></dl>
</div>
</div>
<a id="a1c987a534cc8dd197eb2f2a728bdacb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c987a534cc8dd197eb2f2a728bdacb3">&#9670;&nbsp;</a></span>sendAnalogMappingQuery()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendAnalogMappingQuery </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an analog mapping query to the Firmata host application. The resulting sysex message will have an ANALOG_MAPPING_RESPONSE command byte, followed by a list of pins [0-n]; where each pin will specify its corresponding analog pin number or 0x7F (127) if not applicable. </p>
</div>
</div>
<a id="a1f1c5ce29ba4488306c9a1e3f158b781"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f1c5ce29ba4488306c9a1e3f158b781">&#9670;&nbsp;</a></span>sendCapabilityQuery()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendCapabilityQuery </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a capability query to the Firmata host application. The resulting sysex message will have a CAPABILITY_RESPONSE command byte, followed by a list of byte tuples (mode and mode resolution) for each pin; where each pin list is terminated by 0x7F (127). </p>
</div>
</div>
<a id="a2d90627f0543b6298be71f7d903399b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d90627f0543b6298be71f7d903399b3">&#9670;&nbsp;</a></span>sendDigital()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendDigital </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a single digital pin value to the Firmata host application. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The digital pin to send the value of. </td></tr>
<tr><td class="paramname">value</td><td>The value of the pin. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a346dcb4487a51efaa95de42d292ad951"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a346dcb4487a51efaa95de42d292ad951">&#9670;&nbsp;</a></span>sendDigitalPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendDigitalPort </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>portNumber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>portData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an 8-bit port in a single digital message (protocol v2 and later). Send 14-bits in a single digital message (protocol v1). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">portNumber</td><td>The port number to send. Note that this is not the same as a "port" on the physical microcontroller. Ports are defined in order per every 8 pins in ascending order of the Arduino digital pin numbering scheme. Port 0 = pins D0 - D7, port 1 = pins D8 - D15, etc. </td></tr>
<tr><td class="paramname">portData</td><td>The value of the port. The value of each pin in the port is represented by a bit. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aed71d62cc41f2e0bf3f161894b91be7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed71d62cc41f2e0bf3f161894b91be7c">&#9670;&nbsp;</a></span>sendFirmwareVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendFirmwareVersion </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>major</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>minor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>bytec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>bytev</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends the firmware name and version to the Firmata host application. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">major</td><td>The major verison number </td></tr>
<tr><td class="paramname">minor</td><td>The minor version number </td></tr>
<tr><td class="paramname">bytec</td><td>The length of the firmware name </td></tr>
<tr><td class="paramname">bytev</td><td>The firmware name array </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a36b6cc103609d900cce36149a239f221"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36b6cc103609d900cce36149a239f221">&#9670;&nbsp;</a></span>sendPinMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendPinMode </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the pin mode/configuration. The pin configuration (or mode) in Firmata represents the current function of the pin. Examples are digital input or output, analog input, pwm, i2c, serial (uart), etc. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin to configure. </td></tr>
<tr><td class="paramname">config</td><td>The configuration value for the specified pin. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afc378ab4a39c843d4419acdee944972b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc378ab4a39c843d4419acdee944972b">&#9670;&nbsp;</a></span>sendPinStateQuery()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendPinStateQuery </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>pin</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a pin state query to the Firmata host application. The resulting sysex message will have a PIN_STATE_RESPONSE command byte, followed by the pin number, the pin mode and a stream of bits to indicate any <em>data</em> written to the pin (pin state). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pin</td><td>The pin to query </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The pin state is any data written to the pin (i.e. pin state != pin value) </dd></dl>
</div>
</div>
<a id="a483ac2dea885ab3472dc38b99bfdec2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a483ac2dea885ab3472dc38b99bfdec2f">&#9670;&nbsp;</a></span>sendString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendString </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>string</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a string to the Firmata host application. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">string</td><td>A pointer to the char string </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ade4f4592877ec0b9f8d6c74e909bad8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade4f4592877ec0b9f8d6c74e909bad8e">&#9670;&nbsp;</a></span>sendSysex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendSysex </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>bytec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>bytev</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a sysex message where all values after the command byte are packet as 2 7-bit bytes (this is not always the case so this function is not always used to send sysex messages). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The sysex command byte. </td></tr>
<tr><td class="paramname">bytec</td><td>The number of data bytes in the message (excludes start, command and end bytes). </td></tr>
<tr><td class="paramname">bytev</td><td>A pointer to the array of data bytes to send in the message. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a95d58949e32ad285088705dbe5680b29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95d58949e32ad285088705dbe5680b29">&#9670;&nbsp;</a></span>sendVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::sendVersion </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>major</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>minor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the Firmata protocol version to the Firmata host application. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">major</td><td>The major verison number </td></tr>
<tr><td class="paramname">minor</td><td>The minor version number </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abb8f4c79dd8a0dbee3f5e04c587ae20c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb8f4c79dd8a0dbee3f5e04c587ae20c">&#9670;&nbsp;</a></span>setSamplingInterval()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::setSamplingInterval </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>interval_ms</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>The sampling interval sets how often analog data and i2c data is reported to the client. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">interval_ms</td><td>The interval (in milliseconds) at which to sample </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The default sampling interval is 19ms </dd></dl>
</div>
</div>
<a id="a3a585937f94b1f9e51797e5950a33206"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a585937f94b1f9e51797e5950a33206">&#9670;&nbsp;</a></span>systemReset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataMarshaller::systemReset </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Perform a software reset on the target. For example, StandardFirmata.ino will initialize everything to a known state and reset the parsing buffer. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_firmata_marshaller_8h_source.html">FirmataMarshaller.h</a></li>
<li>FirmataMarshaller.cpp</li>
</ul>
</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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Member List</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>firmata</b></li><li class="navelem"><a class="el" href="classfirmata_1_1_firmata_parser.html">FirmataParser</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">firmata::FirmataParser Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a>(uint8_t command, callbackFunction newFunction, void *context=NULL)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#ae176414892a2d240b921c2b8037a8ade">attach</a>(dataBufferOverflowCallbackFunction newFunction, void *context=NULL)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a239b37e09dea042d229fc2171d3a1979">attach</a>(uint8_t command, stringCallbackFunction newFunction, void *context=NULL)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#aaa1d755b20b21e528bfa62d6a7c2dc0f">attach</a>(uint8_t command, sysexCallbackFunction newFunction, void *context=NULL)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#affc821e7742d889965e61b248c204842">attach</a>(uint8_t command, systemCallbackFunction newFunction, void *context=NULL)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a876105f2203f5e8f1fb06c8236a96933">attach</a>(uint8_t command, versionCallbackFunction newFunction, void *context=NULL)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>callbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>dataBufferOverflowCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">detach</a>(uint8_t command)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a280ac17e428f8374afd30bce75e9a861">detach</a>(dataBufferOverflowCallbackFunction)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b">FirmataParser</a>(uint8_t *dataBuffer=(uint8_t *) NULL, size_t dataBufferSize=0)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902">isParsingMessage</a>(void) const</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf">parse</a>(uint8_t value)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516">setDataBufferOfSize</a>(uint8_t *dataBuffer, size_t dataBufferSize)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stringCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>sysexCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>systemCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>versionCallbackFunction</b> typedef (defined in <a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a>)</td><td class="entry"><a class="el" href="classfirmata_1_1_firmata_parser.html">firmata::FirmataParser</a></td><td class="entry"></td></tr>
</table></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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,552 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: firmata::FirmataParser Class 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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>firmata</b></li><li class="navelem"><a class="el" href="classfirmata_1_1_firmata_parser.html">FirmataParser</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classfirmata_1_1_firmata_parser-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">firmata::FirmataParser Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a40cc69b4997fad3335a34cc083894ea1"><td class="memItemLeft" align="right" valign="top"><a id="a40cc69b4997fad3335a34cc083894ea1"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>callbackFunction</b>) (void *context, uint8_t command, uint16_t value)</td></tr>
<tr class="separator:a40cc69b4997fad3335a34cc083894ea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ba04f2773f1052fc014c93d309fe069"><td class="memItemLeft" align="right" valign="top"><a id="a7ba04f2773f1052fc014c93d309fe069"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>dataBufferOverflowCallbackFunction</b>) (void *context)</td></tr>
<tr class="separator:a7ba04f2773f1052fc014c93d309fe069"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cee4285d9cd5cdba702b720ae10a9b8"><td class="memItemLeft" align="right" valign="top"><a id="a6cee4285d9cd5cdba702b720ae10a9b8"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>stringCallbackFunction</b>) (void *context, const char *c_str)</td></tr>
<tr class="separator:a6cee4285d9cd5cdba702b720ae10a9b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f1b158e9366cdca7f9f743011359b13"><td class="memItemLeft" align="right" valign="top"><a id="a9f1b158e9366cdca7f9f743011359b13"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>sysexCallbackFunction</b>) (void *context, uint8_t command, size_t argc, uint8_t *argv)</td></tr>
<tr class="separator:a9f1b158e9366cdca7f9f743011359b13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0655dab3f791c7c46c8412ae13f0d3a"><td class="memItemLeft" align="right" valign="top"><a id="ad0655dab3f791c7c46c8412ae13f0d3a"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>systemCallbackFunction</b>) (void *context)</td></tr>
<tr class="separator:ad0655dab3f791c7c46c8412ae13f0d3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6be4a3c92941c1de63b44918bbbda545"><td class="memItemLeft" align="right" valign="top"><a id="a6be4a3c92941c1de63b44918bbbda545"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>versionCallbackFunction</b>) (void *context, size_t sv_major, size_t sv_minor, const char *firmware)</td></tr>
<tr class="separator:a6be4a3c92941c1de63b44918bbbda545"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac8c388b593a00e88856646712beae68b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b">FirmataParser</a> (uint8_t *dataBuffer=(uint8_t *) NULL, size_t dataBufferSize=0)</td></tr>
<tr class="separator:ac8c388b593a00e88856646712beae68b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a754c97b890b7fd66c8d953a3e615acbf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf">parse</a> (uint8_t value)</td></tr>
<tr class="separator:a754c97b890b7fd66c8d953a3e615acbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67902b70695eaf0cf8f7b06175ca3902"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902">isParsingMessage</a> (void) const</td></tr>
<tr class="separator:a67902b70695eaf0cf8f7b06175ca3902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fbe143ddb428a97c00a15993c31a516"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516">setDataBufferOfSize</a> (uint8_t *dataBuffer, size_t dataBufferSize)</td></tr>
<tr class="separator:a8fbe143ddb428a97c00a15993c31a516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a472a925ed7e626ed36dee94ceae45e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">attach</a> (uint8_t command, callbackFunction newFunction, void *context=NULL)</td></tr>
<tr class="separator:a2a472a925ed7e626ed36dee94ceae45e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae176414892a2d240b921c2b8037a8ade"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#ae176414892a2d240b921c2b8037a8ade">attach</a> (dataBufferOverflowCallbackFunction newFunction, void *context=NULL)</td></tr>
<tr class="separator:ae176414892a2d240b921c2b8037a8ade"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a239b37e09dea042d229fc2171d3a1979"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a239b37e09dea042d229fc2171d3a1979">attach</a> (uint8_t command, stringCallbackFunction newFunction, void *context=NULL)</td></tr>
<tr class="separator:a239b37e09dea042d229fc2171d3a1979"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa1d755b20b21e528bfa62d6a7c2dc0f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#aaa1d755b20b21e528bfa62d6a7c2dc0f">attach</a> (uint8_t command, sysexCallbackFunction newFunction, void *context=NULL)</td></tr>
<tr class="separator:aaa1d755b20b21e528bfa62d6a7c2dc0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affc821e7742d889965e61b248c204842"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#affc821e7742d889965e61b248c204842">attach</a> (uint8_t command, systemCallbackFunction newFunction, void *context=NULL)</td></tr>
<tr class="separator:affc821e7742d889965e61b248c204842"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a876105f2203f5e8f1fb06c8236a96933"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a876105f2203f5e8f1fb06c8236a96933">attach</a> (uint8_t command, versionCallbackFunction newFunction, void *context=NULL)</td></tr>
<tr class="separator:a876105f2203f5e8f1fb06c8236a96933"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cd707386c0807bee733a3e27d161c7d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">detach</a> (uint8_t command)</td></tr>
<tr class="separator:a7cd707386c0807bee733a3e27d161c7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a280ac17e428f8374afd30bce75e9a861"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfirmata_1_1_firmata_parser.html#a280ac17e428f8374afd30bce75e9a861">detach</a> (dataBufferOverflowCallbackFunction)</td></tr>
<tr class="separator:a280ac17e428f8374afd30bce75e9a861"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ac8c388b593a00e88856646712beae68b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8c388b593a00e88856646712beae68b">&#9670;&nbsp;</a></span>FirmataParser()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FirmataParser::FirmataParser </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dataBuffer</em> = <code>(uint8_t&#160;*)NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>dataBufferSize</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The <a class="el" href="classfirmata_1_1_firmata_parser.html">FirmataParser</a> class. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dataBuffer</td><td>A pointer to an external buffer used to store parsed data </td></tr>
<tr><td class="paramname">dataBufferSize</td><td>The size of the external buffer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae176414892a2d240b921c2b8037a8ade"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae176414892a2d240b921c2b8037a8ade">&#9670;&nbsp;</a></span>attach() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::attach </td>
<td>(</td>
<td class="paramtype">dataBufferOverflowCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>context</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a buffer overflow callback </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">newFunction</td><td>A reference to the buffer overflow callback function to attach. </td></tr>
<tr><td class="paramname">context</td><td>An optional context to be provided to the callback function (NULL by default). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The context parameter is provided so you can pass a parameter, by reference, to your callback function. </dd></dl>
</div>
</div>
<a id="a2a472a925ed7e626ed36dee94ceae45e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a472a925ed7e626ed36dee94ceae45e">&#9670;&nbsp;</a></span>attach() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">callbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>context</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a generic sysex callback function to a command (options are: ANALOG_MESSAGE, DIGITAL_MESSAGE, REPORT_ANALOG, REPORT DIGITAL, SET_PIN_MODE and SET_DIGITAL_PIN_VALUE). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to attach a callback function to. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the callback function to attach. </td></tr>
<tr><td class="paramname">context</td><td>An optional context to be provided to the callback function (NULL by default). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The context parameter is provided so you can pass a parameter, by reference, to your callback function. </dd></dl>
</div>
</div>
<a id="a239b37e09dea042d229fc2171d3a1979"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a239b37e09dea042d229fc2171d3a1979">&#9670;&nbsp;</a></span>attach() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">stringCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>context</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a callback function for the STRING_DATA command. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>Must be set to STRING_DATA or it will be ignored. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the string callback function to attach. </td></tr>
<tr><td class="paramname">context</td><td>An optional context to be provided to the callback function (NULL by default). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The context parameter is provided so you can pass a parameter, by reference, to your callback function. </dd></dl>
</div>
</div>
<a id="aaa1d755b20b21e528bfa62d6a7c2dc0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa1d755b20b21e528bfa62d6a7c2dc0f">&#9670;&nbsp;</a></span>attach() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">sysexCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>context</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a generic sysex callback function to sysex command. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to attach a callback function to. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the sysex callback function to attach. </td></tr>
<tr><td class="paramname">context</td><td>An optional context to be provided to the callback function (NULL by default). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The context parameter is provided so you can pass a parameter, by reference, to your callback function. </dd></dl>
</div>
</div>
<a id="affc821e7742d889965e61b248c204842"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affc821e7742d889965e61b248c204842">&#9670;&nbsp;</a></span>attach() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">systemCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>context</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a system callback function (supported options are: SYSTEM_RESET, REPORT_VERSION). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to attach a callback function to. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the callback function to attach. </td></tr>
<tr><td class="paramname">context</td><td>An optional context to be provided to the callback function (NULL by default). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The context parameter is provided so you can pass a parameter, by reference, to your callback function. </dd></dl>
</div>
</div>
<a id="a876105f2203f5e8f1fb06c8236a96933"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a876105f2203f5e8f1fb06c8236a96933">&#9670;&nbsp;</a></span>attach() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::attach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">versionCallbackFunction&#160;</td>
<td class="paramname"><em>newFunction</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>context</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Attach a version callback function (supported option: REPORT_FIRMWARE). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to attach a callback function to. </td></tr>
<tr><td class="paramname">newFunction</td><td>A reference to the callback function to attach. </td></tr>
<tr><td class="paramname">context</td><td>An optional context to be provided to the callback function (NULL by default). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The context parameter is provided so you can pass a parameter, by reference, to your callback function. </dd></dl>
</div>
</div>
<a id="a280ac17e428f8374afd30bce75e9a861"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a280ac17e428f8374afd30bce75e9a861">&#9670;&nbsp;</a></span>detach() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::detach </td>
<td>(</td>
<td class="paramtype">dataBufferOverflowCallbackFunction&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Detach the buffer overflow callback </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">&lt;unused&gt;</td><td>Any pointer of type dataBufferOverflowCallbackFunction. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7cd707386c0807bee733a3e27d161c7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cd707386c0807bee733a3e27d161c7d">&#9670;&nbsp;</a></span>detach() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::detach </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>command</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Detach a callback function for a specified command (such as SYSTEM_RESET, STRING_DATA, ANALOG_MESSAGE, DIGITAL_MESSAGE, etc). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The ID of the command to detatch the callback function from. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a67902b70695eaf0cf8f7b06175ca3902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67902b70695eaf0cf8f7b06175ca3902">&#9670;&nbsp;</a></span>isParsingMessage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool FirmataParser::isParsingMessage </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Returns true if the parser is actively parsing data. </dd></dl>
</div>
</div>
<a id="a754c97b890b7fd66c8d953a3e615acbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a754c97b890b7fd66c8d953a3e615acbf">&#9670;&nbsp;</a></span>parse()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FirmataParser::parse </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>inputData</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parse data from the input stream. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inputData</td><td>A single byte to be added to the parser. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8fbe143ddb428a97c00a15993c31a516"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fbe143ddb428a97c00a15993c31a516">&#9670;&nbsp;</a></span>setDataBufferOfSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FirmataParser::setDataBufferOfSize </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>dataBuffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>dataBufferSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Provides a mechanism to either set or update the working buffer of the parser. The method will be enabled when no buffer has been provided, or an overflow condition exists. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dataBuffer</td><td>A pointer to an external buffer used to store parsed data </td></tr>
<tr><td class="paramname">dataBufferSize</td><td>The size of the external buffer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_firmata_parser_8h_source.html">FirmataParser.h</a></li>
<li>FirmataParser.cpp</li>
</ul>
</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.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,120 @@
/*
@licstart The following is the entire license notice for the
JavaScript code in this file.
Copyright (C) 1997-2017 by Dimitri van Heesch
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
@licend The above is the entire license notice
for the JavaScript code in this file
*/
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
/* @license-end */

View File

@@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: File List</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_boards_8h_source.html"><span class="icondoc"></span></a><b>Boards.h</b></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_firmata_8h_source.html"><span class="icondoc"></span></a><b>Firmata.h</b></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_firmata_constants_8h_source.html"><span class="icondoc"></span></a><b>FirmataConstants.h</b></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_firmata_defines_8h_source.html"><span class="icondoc"></span></a><b>FirmataDefines.h</b></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_firmata_marshaller_8h_source.html"><span class="icondoc"></span></a><b>FirmataMarshaller.h</b></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_firmata_parser_8h_source.html"><span class="icondoc"></span></a><b>FirmataParser.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</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.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

View File

@@ -0,0 +1,262 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Class Members</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div>
<h3><a id="index_a"></a>- a -</h3><ul>
<li>attach()
: <a class="el" href="classfirmata_1_1_firmata_class.html#adc3db897058f33e902097ce89bb01bb3">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">firmata::FirmataParser</a>
</li>
<li>available()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_b"></a>- b -</h3><ul>
<li>begin()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76">firmata::FirmataMarshaller</a>
</li>
<li>blinkVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_d"></a>- d -</h3><ul>
<li>detach()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">firmata::FirmataParser</a>
</li>
<li>disableBlinkVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_e"></a>- e -</h3><ul>
<li>end()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de">firmata::FirmataMarshaller</a>
</li>
<li>endSysex()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_f"></a>- f -</h3><ul>
<li>FirmataClass()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a">firmata::FirmataClass</a>
</li>
<li>FirmataMarshaller()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829">firmata::FirmataMarshaller</a>
</li>
<li>FirmataParser()
: <a class="el" href="classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b">firmata::FirmataParser</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getPinMode()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96">firmata::FirmataClass</a>
</li>
<li>getPinState()
: <a class="el" href="classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>isParsingMessage()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902">firmata::FirmataParser</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>parse()
: <a class="el" href="classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf">firmata::FirmataParser</a>
</li>
<li>printFirmwareVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a">firmata::FirmataClass</a>
</li>
<li>printVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a">firmata::FirmataClass</a>
</li>
<li>processInput()
: <a class="el" href="classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_q"></a>- q -</h3><ul>
<li>queryFirmwareVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697">firmata::FirmataMarshaller</a>
</li>
<li>queryVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167">firmata::FirmataMarshaller</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>reportAnalogDisable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30">firmata::FirmataMarshaller</a>
</li>
<li>reportAnalogEnable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db">firmata::FirmataMarshaller</a>
</li>
<li>reportDigitalPortDisable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad">firmata::FirmataMarshaller</a>
</li>
<li>reportDigitalPortEnable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c">firmata::FirmataMarshaller</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>sendAnalog()
: <a class="el" href="classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a">firmata::FirmataMarshaller</a>
</li>
<li>sendAnalogMappingQuery()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3">firmata::FirmataMarshaller</a>
</li>
<li>sendCapabilityQuery()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781">firmata::FirmataMarshaller</a>
</li>
<li>sendDigital()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3">firmata::FirmataMarshaller</a>
</li>
<li>sendDigitalPort()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951">firmata::FirmataMarshaller</a>
</li>
<li>sendFirmwareVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c">firmata::FirmataMarshaller</a>
</li>
<li>sendPinMode()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221">firmata::FirmataMarshaller</a>
</li>
<li>sendPinStateQuery()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b">firmata::FirmataMarshaller</a>
</li>
<li>sendString()
: <a class="el" href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f">firmata::FirmataMarshaller</a>
</li>
<li>sendSysex()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e">firmata::FirmataMarshaller</a>
</li>
<li>sendValueAsTwo7bitBytes()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39">firmata::FirmataClass</a>
</li>
<li>sendVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29">firmata::FirmataMarshaller</a>
</li>
<li>setDataBufferOfSize()
: <a class="el" href="classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516">firmata::FirmataParser</a>
</li>
<li>setFirmwareNameAndVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89">firmata::FirmataClass</a>
</li>
<li>setPinMode()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">firmata::FirmataClass</a>
</li>
<li>setPinState()
: <a class="el" href="classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8">firmata::FirmataClass</a>
</li>
<li>setSamplingInterval()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c">firmata::FirmataMarshaller</a>
</li>
<li>startSysex()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3">firmata::FirmataClass</a>
</li>
<li>systemReset()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206">firmata::FirmataMarshaller</a>
</li>
</ul>
<h3><a id="index_w"></a>- w -</h3><ul>
<li>write()
: <a class="el" href="classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807">firmata::FirmataClass</a>
</li>
</ul>
</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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,262 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Class Members - Functions</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="contents">
&#160;
<h3><a id="index_a"></a>- a -</h3><ul>
<li>attach()
: <a class="el" href="classfirmata_1_1_firmata_class.html#adc3db897058f33e902097ce89bb01bb3">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e">firmata::FirmataParser</a>
</li>
<li>available()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_b"></a>- b -</h3><ul>
<li>begin()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76">firmata::FirmataMarshaller</a>
</li>
<li>blinkVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_d"></a>- d -</h3><ul>
<li>detach()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d">firmata::FirmataParser</a>
</li>
<li>disableBlinkVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_e"></a>- e -</h3><ul>
<li>end()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de">firmata::FirmataMarshaller</a>
</li>
<li>endSysex()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_f"></a>- f -</h3><ul>
<li>FirmataClass()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a">firmata::FirmataClass</a>
</li>
<li>FirmataMarshaller()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829">firmata::FirmataMarshaller</a>
</li>
<li>FirmataParser()
: <a class="el" href="classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b">firmata::FirmataParser</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getPinMode()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96">firmata::FirmataClass</a>
</li>
<li>getPinState()
: <a class="el" href="classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>isParsingMessage()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902">firmata::FirmataParser</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>parse()
: <a class="el" href="classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf">firmata::FirmataParser</a>
</li>
<li>printFirmwareVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a">firmata::FirmataClass</a>
</li>
<li>printVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a">firmata::FirmataClass</a>
</li>
<li>processInput()
: <a class="el" href="classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676">firmata::FirmataClass</a>
</li>
</ul>
<h3><a id="index_q"></a>- q -</h3><ul>
<li>queryFirmwareVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697">firmata::FirmataMarshaller</a>
</li>
<li>queryVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167">firmata::FirmataMarshaller</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>reportAnalogDisable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30">firmata::FirmataMarshaller</a>
</li>
<li>reportAnalogEnable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db">firmata::FirmataMarshaller</a>
</li>
<li>reportDigitalPortDisable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad">firmata::FirmataMarshaller</a>
</li>
<li>reportDigitalPortEnable()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c">firmata::FirmataMarshaller</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>sendAnalog()
: <a class="el" href="classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a">firmata::FirmataMarshaller</a>
</li>
<li>sendAnalogMappingQuery()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3">firmata::FirmataMarshaller</a>
</li>
<li>sendCapabilityQuery()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781">firmata::FirmataMarshaller</a>
</li>
<li>sendDigital()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3">firmata::FirmataMarshaller</a>
</li>
<li>sendDigitalPort()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951">firmata::FirmataMarshaller</a>
</li>
<li>sendFirmwareVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c">firmata::FirmataMarshaller</a>
</li>
<li>sendPinMode()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221">firmata::FirmataMarshaller</a>
</li>
<li>sendPinStateQuery()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b">firmata::FirmataMarshaller</a>
</li>
<li>sendString()
: <a class="el" href="classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f">firmata::FirmataMarshaller</a>
</li>
<li>sendSysex()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc">firmata::FirmataClass</a>
, <a class="el" href="classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e">firmata::FirmataMarshaller</a>
</li>
<li>sendValueAsTwo7bitBytes()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39">firmata::FirmataClass</a>
</li>
<li>sendVersion()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29">firmata::FirmataMarshaller</a>
</li>
<li>setDataBufferOfSize()
: <a class="el" href="classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516">firmata::FirmataParser</a>
</li>
<li>setFirmwareNameAndVersion()
: <a class="el" href="classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89">firmata::FirmataClass</a>
</li>
<li>setPinMode()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04">firmata::FirmataClass</a>
</li>
<li>setPinState()
: <a class="el" href="classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8">firmata::FirmataClass</a>
</li>
<li>setSamplingInterval()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c">firmata::FirmataMarshaller</a>
</li>
<li>startSysex()
: <a class="el" href="classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3">firmata::FirmataClass</a>
</li>
<li>systemReset()
: <a class="el" href="classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206">firmata::FirmataMarshaller</a>
</li>
</ul>
<h3><a id="index_w"></a>- w -</h3><ul>
<li>write()
: <a class="el" href="classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807">firmata::FirmataClass</a>
</li>
</ul>
</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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,275 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Firmata</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">Firmata </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a href="https://gitter.im/firmata/arduino?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge"><img src="https://badges.gitter.im/Join%20Chat.svg" alt="Gitter" class="inline"/></a></p>
<p>Firmata is a protocol for communicating with microcontrollers from software on a host computer. The <a href="https://github.com/firmata/protocol">protocol</a> can be implemented in firmware on any microcontroller architecture as well as software on any host computer software package. The Arduino repository described here is a Firmata library for Arduino and Arduino-compatible devices. If you would like to contribute to Firmata, please see the <a href="#contributing">Contributing</a> section below.</p>
<h1><a class="anchor" id="autotoc_md1"></a>
Contents</h1>
<ul>
<li><a href="#usage">Usage</a></li>
<li><a href="#firmata-client-libraries">Firmata Client Libraries</a></li>
<li><a href="#updating-firmata-in-the-arduino-ide---arduino-164-and-higher">Updating Firmata in the Arduino IDE - Arduino 1.6.4 and higher</a></li>
<li><a href="#cloning-firmata">Cloning Firmata</a></li>
<li><a href="#updating-firmata-in-the-arduino-ide---older-versions--163-or-10x">Updating Firmata in the Arduino IDE - older versions (&lt;= 1.6.3 or 1.0.x)</a><ul>
<li><a href="#mac-osx">Mac OSX:</a></li>
<li><a href="#windows">Windows</a></li>
<li><a href="#linux">Linux</a></li>
</ul>
</li>
<li><a href="#using-the-source-code-rather-than-release-archive-only-for-versions-older-than-arduino-163">Using the Source code rather than release archive (only for versions older than Arduino 1.6.3)</a></li>
<li><a href="#contributing">Contributing</a></li>
</ul>
<h2><a class="anchor" id="autotoc_md2"></a>
Usage</h2>
<p>There are two main models of usage of Firmata. In one model, the author of the Arduino sketch uses the various methods provided by the Firmata library to selectively send and receive data between the Arduino device and the software running on the host computer. For example, a user can send analog data to the host using <code>Firmata.sendAnalog(analogPin, analogRead(analogPin))</code> or send data packed in a string using <code>Firmata.sendString(stringToSend)</code>. See File -&gt; Examples -&gt; Firmata -&gt; AnalogFirmata &amp; EchoString respectively for examples.</p>
<p>The second and more common model is to load a general purpose sketch called StandardFirmata (or one of the variants such as StandardFirmataPlus or StandardFirmataEthernet depending on your needs) on the Arduino board and then use the host computer exclusively to interact with the Arduino board. StandardFirmata is located in the Arduino IDE in File -&gt; Examples -&gt; Firmata.</p>
<h2><a class="anchor" id="autotoc_md3"></a>
Firmata Client Libraries</h2>
<p>Most of the time you will be interacting with Arduino with a client library on the host computers. Several Firmata client libraries have been implemented in a variety of popular programming languages:</p>
<ul>
<li>processing<ul>
<li><a href="https://github.com/firmata/processing">https://github.com/firmata/processing</a></li>
<li><a href="http://funnel.cc">http://funnel.cc</a></li>
</ul>
</li>
<li>python<ul>
<li><a href="https://github.com/MrYsLab/pymata-aio">https://github.com/MrYsLab/pymata-aio</a></li>
<li><a href="[https://github.com/MrYsLab/PyMata">https://github.com/MrYsLab/PyMata</a></li>
<li><a href="https://github.com/tino/pyFirmata">https://github.com/tino/pyFirmata</a></li>
<li><a href="https://github.com/lupeke/python-firmata">https://github.com/lupeke/python-firmata</a></li>
<li><a href="https://github.com/firmata/pyduino">https://github.com/firmata/pyduino</a></li>
</ul>
</li>
<li>perl<ul>
<li><a href="https://github.com/ntruchsess/perl-firmata">https://github.com/ntruchsess/perl-firmata</a></li>
<li><a href="https://github.com/rcaputo/rx-firmata">https://github.com/rcaputo/rx-firmata</a></li>
</ul>
</li>
<li>ruby<ul>
<li><a href="https://github.com/hardbap/firmata">https://github.com/hardbap/firmata</a></li>
<li><a href="https://github.com/PlasticLizard/rufinol">https://github.com/PlasticLizard/rufinol</a></li>
<li><a href="http://funnel.cc">http://funnel.cc</a></li>
</ul>
</li>
<li>clojure<ul>
<li><a href="https://github.com/nakkaya/clodiuno">https://github.com/nakkaya/clodiuno</a></li>
<li><a href="https://github.com/peterschwarz/clj-firmata">https://github.com/peterschwarz/clj-firmata</a></li>
</ul>
</li>
<li>javascript<ul>
<li><a href="https://github.com/firmata/firmata.js">https://github.com/firmata/firmata.js</a></li>
<li><a href="https://github.com/rwldrn/johnny-five">https://github.com/rwldrn/johnny-five</a></li>
<li><a href="http://breakoutjs.com">http://breakoutjs.com</a></li>
</ul>
</li>
<li>java<ul>
<li><a href="https://github.com/kurbatov/firmata4j">https://github.com/kurbatov/firmata4j</a></li>
<li><a href="https://github.com/4ntoine/Firmata">https://github.com/4ntoine/Firmata</a></li>
<li><a href="https://github.com/reapzor/FiloFirmata">https://github.com/reapzor/FiloFirmata</a></li>
</ul>
</li>
<li>.NET<ul>
<li><a href="https://github.com/SolidSoils/Arduino">https://github.com/SolidSoils/Arduino</a></li>
<li><a href="http://www.acraigie.com/programming/firmatavb/default.html">http://www.acraigie.com/programming/firmatavb/default.html</a></li>
</ul>
</li>
<li>Flash/AS3<ul>
<li><a href="http://funnel.cc">http://funnel.cc</a></li>
<li><a href="http://code.google.com/p/as3glue/">http://code.google.com/p/as3glue/</a></li>
</ul>
</li>
<li>Pharo<ul>
<li><a href="https://github.com/pharo-iot/Firmata">https://github.com/pharo-iot/Firmata</a></li>
</ul>
</li>
<li>PHP<ul>
<li>[<a href="https://github.com/ThomasWeinert/carica-firmata">https://github.com/ThomasWeinert/carica-firmata</a>]()</li>
<li><a href="https://github.com/oasynnoum/phpmake_firmata">https://github.com/oasynnoum/phpmake_firmata</a></li>
</ul>
</li>
<li>Haskell<ul>
<li><a href="http://hackage.haskell.org/package/hArduino">http://hackage.haskell.org/package/hArduino</a></li>
</ul>
</li>
<li>iOS<ul>
<li><a href="https://github.com/jacobrosenthal/iosfirmata">https://github.com/jacobrosenthal/iosfirmata</a></li>
</ul>
</li>
<li>Dart<ul>
<li><a href="https://github.com/nfrancois/firmata">https://github.com/nfrancois/firmata</a></li>
</ul>
</li>
<li>Max/MSP<ul>
<li><a href="http://www.maxuino.org/">http://www.maxuino.org/</a></li>
</ul>
</li>
<li>Elixir<ul>
<li><a href="https://github.com/kfatehi/firmata">https://github.com/kfatehi/firmata</a></li>
</ul>
</li>
<li>Modelica<ul>
<li><a href="https://www.wolfram.com/system-modeler/libraries/model-plug/">https://www.wolfram.com/system-modeler/libraries/model-plug/</a></li>
</ul>
</li>
<li>Go<ul>
<li><a href="https://github.com/kraman/go-firmata">https://github.com/kraman/go-firmata</a></li>
</ul>
</li>
<li>vvvv<ul>
<li><a href="https://vvvv.org/blog/arduino-second-service">https://vvvv.org/blog/arduino-second-service</a></li>
</ul>
</li>
<li>openFrameworks<ul>
<li><a href="http://openframeworks.cc/documentation/communication/ofArduino/">http://openframeworks.cc/documentation/communication/ofArduino/</a></li>
</ul>
</li>
<li>Rust<ul>
<li><a href="https://github.com/zankich/rust-firmata">https://github.com/zankich/rust-firmata</a></li>
</ul>
</li>
</ul>
<p>Note: The above libraries may support various versions of the Firmata protocol and therefore may not support all features of the latest Firmata spec nor all Arduino and Arduino-compatible boards. Refer to the respective projects for details.</p>
<h2><a class="anchor" id="autotoc_md4"></a>
Updating Firmata in the Arduino IDE - Arduino 1.6.4 and higher</h2>
<p>If you want to update to the latest stable version:</p>
<ol type="1">
<li>Open the Arduino IDE and navigate to: <code>Sketch &gt; Include Library &gt; Manage Libraries</code></li>
<li>Filter by "Firmata" and click on the "Firmata by Firmata Developers" item in the list of results.</li>
<li>Click the <code>Select version</code> dropdown and select the most recent version (note you can also install previous versions)</li>
<li>Click <code>Install</code>.</li>
</ol>
<h3><a class="anchor" id="autotoc_md5"></a>
Cloning Firmata</h3>
<p>If you are contributing to Firmata or otherwise need a version newer than the latest tagged release, you can clone Firmata directly to your Arduino/libraries/ directory (where 3rd party libraries are installed). This only works for Arduino 1.6.4 and higher, for older versions you need to clone into the Arduino application directory (see section below titled "Using the Source code rather than release archive"). Be sure to change the name to Firmata as follows:</p>
<div class="fragment"><div class="line">$ git clone git@github.com:firmata/arduino.git ~/Documents/Arduino/libraries/Firmata</div>
</div><!-- fragment --><p><em>Update path above if you're using Windows or Linux or changed the default Arduino directory on OS X</em></p>
<h2><a class="anchor" id="autotoc_md6"></a>
Updating Firmata in the Arduino IDE - older versions (&lt;= 1.6.3 or 1.0.x)</h2>
<p>Download the latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">release</a> (for Arduino 1.0.x or Arduino 1.5.6 or higher) and replace the existing Firmata folder in your Arduino application. See the instructions below for your platform.</p>
<p><em>Note that Arduino 1.5.0 - 1.5.5 are not supported. Please use Arduino 1.5.6 or higher (or Arduino 1.0.5 or 1.0.6).</em></p>
<h3><a class="anchor" id="autotoc_md7"></a>
Mac OSX:</h3>
<p>The Firmata library is contained within the Arduino package.</p>
<ol type="1">
<li>Navigate to the Arduino application</li>
<li>Right click on the application icon and select <code>Show Package Contents</code></li>
<li>Navigate to: <code>/Contents/Resources/Java/libraries/</code> and replace the existing <code>Firmata</code> folder with latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">Firmata release</a> (note there is a different download for Arduino 1.0.x vs 1.6.x)</li>
<li>Restart the Arduino application and the latest version of Firmata will be available.</li>
</ol>
<p><em>If you are using the Java 7 version of Arduino 1.5.7 or higher, the file path will differ slightly: <code>Contents/Java/libraries/Firmata</code> (no Resources directory).</em></p>
<h3><a class="anchor" id="autotoc_md8"></a>
Windows:</h3>
<ol type="1">
<li>Navigate to <code>c:/Program\ Files/arduino-1.x/libraries/</code> and replace the existing <code>Firmata</code> folder with the latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">Firmata release</a> (note there is a different download for Arduino 1.0.x vs 1.6.x).</li>
<li>Restart the Arduino application and the latest version of Firmata will be available.</li>
</ol>
<p><em>Update the path and Arduino version as necessary</em></p>
<h3><a class="anchor" id="autotoc_md9"></a>
Linux:</h3>
<ol type="1">
<li>Navigate to <code>~/arduino-1.x/libraries/</code> and replace the existing <code>Firmata</code> folder with the latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">Firmata release</a> (note there is a different download for Arduino 1.0.x vs 1.6.x).</li>
<li>Restart the Arduino application and the latest version of Firmata will be available.</li>
</ol>
<p><em>Update the path and Arduino version as necessary</em></p>
<h3><a class="anchor" id="autotoc_md10"></a>
Using the Source code rather than release archive (only for versions older than Arduino 1.6.3)</h3>
<p><em>It is recommended you update to Arduino 1.6.4 or higher if possible, that way you can clone directly into the external Arduino/libraries/ directory which persists between Arduino application updates. Otherwise you will need to move your clone each time you update to a newer version of the Arduino IDE.</em></p>
<p>If you're stuck with an older version of the IDE, then follow these keep reading otherwise jump up to the "Cloning Firmata section above".</p>
<p>Clone this repo directly into the core Arduino application libraries directory. If you are using Arduino 1.5.x or &lt;= 1.6.3, the repo directory structure will not match the Arduino library format, however it should still compile as long as you are using Arduino 1.5.7 or higher.</p>
<p>You will first need to remove the existing Firmata library, then clone firmata/arduino into an empty Firmata directory:</p>
<div class="fragment"><div class="line">$ rm -r /Applications/Arduino.app/Contents/Resources/Java/libraries/Firmata</div>
<div class="line">$ git clone git@github.com:firmata/arduino.git /Applications/Arduino.app/Contents/Resources/Java/libraries/Firmata</div>
</div><!-- fragment --><p><em>Update paths if you're using Windows or Linux</em></p>
<p>To generate properly formatted versions of Firmata (for Arduino 1.0.x and Arduino 1.6.x), run the <code>release.sh</code> script.</p>
<h2><a class="anchor" id="autotoc_md11"></a>
Contributing</h2>
<p>If you discover a bug or would like to propose a new feature, please open a new <a href="https://github.com/firmata/arduino/issues?sort=created&amp;state=open">issue</a>. Due to the limited memory of standard Arduino boards we cannot add every requested feature to StandardFirmata. Requests to add new features to StandardFirmata will be evaluated by the Firmata developers. However it is still possible to add new features to other Firmata implementations (Firmata is a protocol whereas StandardFirmata is just one of many possible implementations).</p>
<p>To contribute, fork this repository and create a new topic branch for the bug, feature or other existing issue you are addressing. Submit the pull request against the <em>master</em> branch.</p>
<p>If you would like to contribute but don't have a specific bugfix or new feature to contribute, you can take on an existing issue, see issues labeled "pull-request-encouraged". Add a comment to the issue to express your intent to begin work and/or to get any additional information about the issue.</p>
<p>You must thoroughly test your contributed code. In your pull request, describe tests performed to ensure that no existing code is broken and that any changes maintain backwards compatibility with the existing api. Test on multiple Arduino board variants if possible. We hope to enable some form of automated (or at least semi-automated) testing in the future, but for now any tests will need to be executed manually by the contributor and reviewers.</p>
<p>Use <a href="http://astyle.sourceforge.net/">Artistic Style</a> (astyle) to format your code. Set the following rules for the astyle formatter:</p>
<div class="fragment"><div class="line">style = &quot;&quot;</div>
<div class="line">indent-spaces = 2</div>
<div class="line">indent-classes = true</div>
<div class="line">indent-switches = true</div>
<div class="line">indent-cases = true</div>
<div class="line">indent-col1-comments = true</div>
<div class="line">pad-oper = true</div>
<div class="line">pad-header = true</div>
<div class="line">keep-one-line-statements = true</div>
</div><!-- fragment --><p>If you happen to use Sublime Text, <a href="https://github.com/timonwong/SublimeAStyleFormatter">this astyle plugin</a> is helpful. Set the above rules in the user settings file. </p>
</div></div><!-- PageDoc -->
</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.16
</small></address>
</body>
</html>

35
libraries/Firmata/docs/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,275 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Firmata</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">Firmata </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a href="https://gitter.im/firmata/arduino?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge"><img src="https://badges.gitter.im/Join%20Chat.svg" alt="Gitter" class="inline"/></a></p>
<p>Firmata is a protocol for communicating with microcontrollers from software on a host computer. The <a href="https://github.com/firmata/protocol">protocol</a> can be implemented in firmware on any microcontroller architecture as well as software on any host computer software package. The Arduino repository described here is a Firmata library for Arduino and Arduino-compatible devices. If you would like to contribute to Firmata, please see the <a href="#contributing">Contributing</a> section below.</p>
<h1><a class="anchor" id="autotoc_md1"></a>
Contents</h1>
<ul>
<li><a href="#usage">Usage</a></li>
<li><a href="#firmata-client-libraries">Firmata Client Libraries</a></li>
<li><a href="#updating-firmata-in-the-arduino-ide---arduino-164-and-higher">Updating Firmata in the Arduino IDE - Arduino 1.6.4 and higher</a></li>
<li><a href="#cloning-firmata">Cloning Firmata</a></li>
<li><a href="#updating-firmata-in-the-arduino-ide---older-versions--163-or-10x">Updating Firmata in the Arduino IDE - older versions (&lt;= 1.6.3 or 1.0.x)</a><ul>
<li><a href="#mac-osx">Mac OSX:</a></li>
<li><a href="#windows">Windows</a></li>
<li><a href="#linux">Linux</a></li>
</ul>
</li>
<li><a href="#using-the-source-code-rather-than-release-archive-only-for-versions-older-than-arduino-163">Using the Source code rather than release archive (only for versions older than Arduino 1.6.3)</a></li>
<li><a href="#contributing">Contributing</a></li>
</ul>
<h2><a class="anchor" id="autotoc_md2"></a>
Usage</h2>
<p>There are two main models of usage of Firmata. In one model, the author of the Arduino sketch uses the various methods provided by the Firmata library to selectively send and receive data between the Arduino device and the software running on the host computer. For example, a user can send analog data to the host using <code>Firmata.sendAnalog(analogPin, analogRead(analogPin))</code> or send data packed in a string using <code>Firmata.sendString(stringToSend)</code>. See File -&gt; Examples -&gt; Firmata -&gt; AnalogFirmata &amp; EchoString respectively for examples.</p>
<p>The second and more common model is to load a general purpose sketch called StandardFirmata (or one of the variants such as StandardFirmataPlus or StandardFirmataEthernet depending on your needs) on the Arduino board and then use the host computer exclusively to interact with the Arduino board. StandardFirmata is located in the Arduino IDE in File -&gt; Examples -&gt; Firmata.</p>
<h2><a class="anchor" id="autotoc_md3"></a>
Firmata Client Libraries</h2>
<p>Most of the time you will be interacting with Arduino with a client library on the host computers. Several Firmata client libraries have been implemented in a variety of popular programming languages:</p>
<ul>
<li>processing<ul>
<li><a href="https://github.com/firmata/processing">https://github.com/firmata/processing</a></li>
<li><a href="http://funnel.cc">http://funnel.cc</a></li>
</ul>
</li>
<li>python<ul>
<li><a href="https://github.com/MrYsLab/pymata-aio">https://github.com/MrYsLab/pymata-aio</a></li>
<li><a href="[https://github.com/MrYsLab/PyMata">https://github.com/MrYsLab/PyMata</a></li>
<li><a href="https://github.com/tino/pyFirmata">https://github.com/tino/pyFirmata</a></li>
<li><a href="https://github.com/lupeke/python-firmata">https://github.com/lupeke/python-firmata</a></li>
<li><a href="https://github.com/firmata/pyduino">https://github.com/firmata/pyduino</a></li>
</ul>
</li>
<li>perl<ul>
<li><a href="https://github.com/ntruchsess/perl-firmata">https://github.com/ntruchsess/perl-firmata</a></li>
<li><a href="https://github.com/rcaputo/rx-firmata">https://github.com/rcaputo/rx-firmata</a></li>
</ul>
</li>
<li>ruby<ul>
<li><a href="https://github.com/hardbap/firmata">https://github.com/hardbap/firmata</a></li>
<li><a href="https://github.com/PlasticLizard/rufinol">https://github.com/PlasticLizard/rufinol</a></li>
<li><a href="http://funnel.cc">http://funnel.cc</a></li>
</ul>
</li>
<li>clojure<ul>
<li><a href="https://github.com/nakkaya/clodiuno">https://github.com/nakkaya/clodiuno</a></li>
<li><a href="https://github.com/peterschwarz/clj-firmata">https://github.com/peterschwarz/clj-firmata</a></li>
</ul>
</li>
<li>javascript<ul>
<li><a href="https://github.com/firmata/firmata.js">https://github.com/firmata/firmata.js</a></li>
<li><a href="https://github.com/rwldrn/johnny-five">https://github.com/rwldrn/johnny-five</a></li>
<li><a href="http://breakoutjs.com">http://breakoutjs.com</a></li>
</ul>
</li>
<li>java<ul>
<li><a href="https://github.com/kurbatov/firmata4j">https://github.com/kurbatov/firmata4j</a></li>
<li><a href="https://github.com/4ntoine/Firmata">https://github.com/4ntoine/Firmata</a></li>
<li><a href="https://github.com/reapzor/FiloFirmata">https://github.com/reapzor/FiloFirmata</a></li>
</ul>
</li>
<li>.NET<ul>
<li><a href="https://github.com/SolidSoils/Arduino">https://github.com/SolidSoils/Arduino</a></li>
<li><a href="http://www.acraigie.com/programming/firmatavb/default.html">http://www.acraigie.com/programming/firmatavb/default.html</a></li>
</ul>
</li>
<li>Flash/AS3<ul>
<li><a href="http://funnel.cc">http://funnel.cc</a></li>
<li><a href="http://code.google.com/p/as3glue/">http://code.google.com/p/as3glue/</a></li>
</ul>
</li>
<li>Pharo<ul>
<li><a href="https://github.com/pharo-iot/Firmata">https://github.com/pharo-iot/Firmata</a></li>
</ul>
</li>
<li>PHP<ul>
<li>[<a href="https://github.com/ThomasWeinert/carica-firmata">https://github.com/ThomasWeinert/carica-firmata</a>]()</li>
<li><a href="https://github.com/oasynnoum/phpmake_firmata">https://github.com/oasynnoum/phpmake_firmata</a></li>
</ul>
</li>
<li>Haskell<ul>
<li><a href="http://hackage.haskell.org/package/hArduino">http://hackage.haskell.org/package/hArduino</a></li>
</ul>
</li>
<li>iOS<ul>
<li><a href="https://github.com/jacobrosenthal/iosfirmata">https://github.com/jacobrosenthal/iosfirmata</a></li>
</ul>
</li>
<li>Dart<ul>
<li><a href="https://github.com/nfrancois/firmata">https://github.com/nfrancois/firmata</a></li>
</ul>
</li>
<li>Max/MSP<ul>
<li><a href="http://www.maxuino.org/">http://www.maxuino.org/</a></li>
</ul>
</li>
<li>Elixir<ul>
<li><a href="https://github.com/kfatehi/firmata">https://github.com/kfatehi/firmata</a></li>
</ul>
</li>
<li>Modelica<ul>
<li><a href="https://www.wolfram.com/system-modeler/libraries/model-plug/">https://www.wolfram.com/system-modeler/libraries/model-plug/</a></li>
</ul>
</li>
<li>Go<ul>
<li><a href="https://github.com/kraman/go-firmata">https://github.com/kraman/go-firmata</a></li>
</ul>
</li>
<li>vvvv<ul>
<li><a href="https://vvvv.org/blog/arduino-second-service">https://vvvv.org/blog/arduino-second-service</a></li>
</ul>
</li>
<li>openFrameworks<ul>
<li><a href="http://openframeworks.cc/documentation/communication/ofArduino/">http://openframeworks.cc/documentation/communication/ofArduino/</a></li>
</ul>
</li>
<li>Rust<ul>
<li><a href="https://github.com/zankich/rust-firmata">https://github.com/zankich/rust-firmata</a></li>
</ul>
</li>
</ul>
<p>Note: The above libraries may support various versions of the Firmata protocol and therefore may not support all features of the latest Firmata spec nor all Arduino and Arduino-compatible boards. Refer to the respective projects for details.</p>
<h2><a class="anchor" id="autotoc_md4"></a>
Updating Firmata in the Arduino IDE - Arduino 1.6.4 and higher</h2>
<p>If you want to update to the latest stable version:</p>
<ol type="1">
<li>Open the Arduino IDE and navigate to: <code>Sketch &gt; Include Library &gt; Manage Libraries</code></li>
<li>Filter by "Firmata" and click on the "Firmata by Firmata Developers" item in the list of results.</li>
<li>Click the <code>Select version</code> dropdown and select the most recent version (note you can also install previous versions)</li>
<li>Click <code>Install</code>.</li>
</ol>
<h3><a class="anchor" id="autotoc_md5"></a>
Cloning Firmata</h3>
<p>If you are contributing to Firmata or otherwise need a version newer than the latest tagged release, you can clone Firmata directly to your Arduino/libraries/ directory (where 3rd party libraries are installed). This only works for Arduino 1.6.4 and higher, for older versions you need to clone into the Arduino application directory (see section below titled "Using the Source code rather than release archive"). Be sure to change the name to Firmata as follows:</p>
<div class="fragment"><div class="line">$ git clone git@github.com:firmata/arduino.git ~/Documents/Arduino/libraries/Firmata</div>
</div><!-- fragment --><p><em>Update path above if you're using Windows or Linux or changed the default Arduino directory on OS X</em></p>
<h2><a class="anchor" id="autotoc_md6"></a>
Updating Firmata in the Arduino IDE - older versions (&lt;= 1.6.3 or 1.0.x)</h2>
<p>Download the latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">release</a> (for Arduino 1.0.x or Arduino 1.5.6 or higher) and replace the existing Firmata folder in your Arduino application. See the instructions below for your platform.</p>
<p><em>Note that Arduino 1.5.0 - 1.5.5 are not supported. Please use Arduino 1.5.6 or higher (or Arduino 1.0.5 or 1.0.6).</em></p>
<h3><a class="anchor" id="autotoc_md7"></a>
Mac OSX:</h3>
<p>The Firmata library is contained within the Arduino package.</p>
<ol type="1">
<li>Navigate to the Arduino application</li>
<li>Right click on the application icon and select <code>Show Package Contents</code></li>
<li>Navigate to: <code>/Contents/Resources/Java/libraries/</code> and replace the existing <code>Firmata</code> folder with latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">Firmata release</a> (note there is a different download for Arduino 1.0.x vs 1.6.x)</li>
<li>Restart the Arduino application and the latest version of Firmata will be available.</li>
</ol>
<p><em>If you are using the Java 7 version of Arduino 1.5.7 or higher, the file path will differ slightly: <code>Contents/Java/libraries/Firmata</code> (no Resources directory).</em></p>
<h3><a class="anchor" id="autotoc_md8"></a>
Windows:</h3>
<ol type="1">
<li>Navigate to <code>c:/Program\ Files/arduino-1.x/libraries/</code> and replace the existing <code>Firmata</code> folder with the latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">Firmata release</a> (note there is a different download for Arduino 1.0.x vs 1.6.x).</li>
<li>Restart the Arduino application and the latest version of Firmata will be available.</li>
</ol>
<p><em>Update the path and Arduino version as necessary</em></p>
<h3><a class="anchor" id="autotoc_md9"></a>
Linux:</h3>
<ol type="1">
<li>Navigate to <code>~/arduino-1.x/libraries/</code> and replace the existing <code>Firmata</code> folder with the latest <a href="https://github.com/firmata/arduino/releases/tag/2.5.8">Firmata release</a> (note there is a different download for Arduino 1.0.x vs 1.6.x).</li>
<li>Restart the Arduino application and the latest version of Firmata will be available.</li>
</ol>
<p><em>Update the path and Arduino version as necessary</em></p>
<h3><a class="anchor" id="autotoc_md10"></a>
Using the Source code rather than release archive (only for versions older than Arduino 1.6.3)</h3>
<p><em>It is recommended you update to Arduino 1.6.4 or higher if possible, that way you can clone directly into the external Arduino/libraries/ directory which persists between Arduino application updates. Otherwise you will need to move your clone each time you update to a newer version of the Arduino IDE.</em></p>
<p>If you're stuck with an older version of the IDE, then follow these keep reading otherwise jump up to the "Cloning Firmata section above".</p>
<p>Clone this repo directly into the core Arduino application libraries directory. If you are using Arduino 1.5.x or &lt;= 1.6.3, the repo directory structure will not match the Arduino library format, however it should still compile as long as you are using Arduino 1.5.7 or higher.</p>
<p>You will first need to remove the existing Firmata library, then clone firmata/arduino into an empty Firmata directory:</p>
<div class="fragment"><div class="line">$ rm -r /Applications/Arduino.app/Contents/Resources/Java/libraries/Firmata</div>
<div class="line">$ git clone git@github.com:firmata/arduino.git /Applications/Arduino.app/Contents/Resources/Java/libraries/Firmata</div>
</div><!-- fragment --><p><em>Update paths if you're using Windows or Linux</em></p>
<p>To generate properly formatted versions of Firmata (for Arduino 1.0.x and Arduino 1.6.x), run the <code>release.sh</code> script.</p>
<h2><a class="anchor" id="autotoc_md11"></a>
Contributing</h2>
<p>If you discover a bug or would like to propose a new feature, please open a new <a href="https://github.com/firmata/arduino/issues?sort=created&amp;state=open">issue</a>. Due to the limited memory of standard Arduino boards we cannot add every requested feature to StandardFirmata. Requests to add new features to StandardFirmata will be evaluated by the Firmata developers. However it is still possible to add new features to other Firmata implementations (Firmata is a protocol whereas StandardFirmata is just one of many possible implementations).</p>
<p>To contribute, fork this repository and create a new topic branch for the bug, feature or other existing issue you are addressing. Submit the pull request against the <em>master</em> branch.</p>
<p>If you would like to contribute but don't have a specific bugfix or new feature to contribute, you can take on an existing issue, see issues labeled "pull-request-encouraged". Add a comment to the issue to express your intent to begin work and/or to get any additional information about the issue.</p>
<p>You must thoroughly test your contributed code. In your pull request, describe tests performed to ensure that no existing code is broken and that any changes maintain backwards compatibility with the existing api. Test on multiple Arduino board variants if possible. We hope to enable some form of automated (or at least semi-automated) testing in the future, but for now any tests will need to be executed manually by the contributor and reviewers.</p>
<p>Use <a href="http://astyle.sourceforge.net/">Artistic Style</a> (astyle) to format your code. Set the following rules for the astyle formatter:</p>
<div class="fragment"><div class="line">style = &quot;&quot;</div>
<div class="line">indent-spaces = 2</div>
<div class="line">indent-classes = true</div>
<div class="line">indent-switches = true</div>
<div class="line">indent-cases = true</div>
<div class="line">indent-col1-comments = true</div>
<div class="line">pad-oper = true</div>
<div class="line">pad-header = true</div>
<div class="line">keep-one-line-statements = true</div>
</div><!-- fragment --><p>If you happen to use Sublime Text, <a href="https://github.com/timonwong/SublimeAStyleFormatter">this astyle plugin</a> is helpful. Set the above rules in the user settings file. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- 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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,50 @@
/*
@licstart The following is the entire license notice for the
JavaScript code in this file.
Copyright (C) 1997-2017 by Dimitri van Heesch
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
@licend The above is the entire license notice
for the JavaScript code in this file
*/
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchEnabled) {
if (serverSide) {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
} else {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'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="'+relPath+'search/close.png" alt=""/></a></span></div></li>');
}
}
$('#main-menu').smartmenus();
}
/* @license-end */

View File

@@ -0,0 +1,56 @@
/*
@licstart The following is the entire license notice for the
JavaScript code in this file.
Copyright (C) 1997-2019 by Dimitri van Heesch
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License as published by
the Free Software Foundation
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
@licend The above is the entire license notice
for the JavaScript code in this file
*/
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
{text:"a",url:"functions.html#index_a"},
{text:"b",url:"functions.html#index_b"},
{text:"d",url:"functions.html#index_d"},
{text:"e",url:"functions.html#index_e"},
{text:"f",url:"functions.html#index_f"},
{text:"g",url:"functions.html#index_g"},
{text:"i",url:"functions.html#index_i"},
{text:"p",url:"functions.html#index_p"},
{text:"q",url:"functions.html#index_q"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"w",url:"functions.html#index_w"}]},
{text:"Functions",url:"functions_func.html",children:[
{text:"a",url:"functions_func.html#index_a"},
{text:"b",url:"functions_func.html#index_b"},
{text:"d",url:"functions_func.html#index_d"},
{text:"e",url:"functions_func.html#index_e"},
{text:"f",url:"functions_func.html#index_f"},
{text:"g",url:"functions_func.html#index_g"},
{text:"i",url:"functions_func.html#index_i"},
{text:"p",url:"functions_func.html#index_p"},
{text:"q",url:"functions_func.html#index_q"},
{text:"r",url:"functions_func.html#index_r"},
{text:"s",url:"functions_func.html#index_s"},
{text:"w",url:"functions_func.html#index_w"}]}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@@ -0,0 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Firmata firmware for Arduino: Related Pages</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>
<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">Firmata firmware for Arduino
</div>
<div id="projectbrief">Firmata is a protocol for communicating with microcontrollers from software on a host computer</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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 class="header">
<div class="headertitle">
<div class="title">Related Pages</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="md_readme.html" target="_self">Firmata</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</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.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['attach_0',['attach',['../classfirmata_1_1_firmata_class.html#adc3db897058f33e902097ce89bb01bb3',1,'firmata::FirmataClass::attach(uint8_t command, systemCallbackFunction newFunction)'],['../classfirmata_1_1_firmata_class.html#a074887a70f9aca0c0aae7e9bdc103f77',1,'firmata::FirmataClass::attach(uint8_t command, stringCallbackFunction newFunction)'],['../classfirmata_1_1_firmata_class.html#a78e360c0c8d70cffeb9c935fdec23f77',1,'firmata::FirmataClass::attach(uint8_t command, sysexCallbackFunction newFunction)'],['../classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e',1,'firmata::FirmataParser::attach(uint8_t command, callbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#ae176414892a2d240b921c2b8037a8ade',1,'firmata::FirmataParser::attach(dataBufferOverflowCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#a239b37e09dea042d229fc2171d3a1979',1,'firmata::FirmataParser::attach(uint8_t command, stringCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#aaa1d755b20b21e528bfa62d6a7c2dc0f',1,'firmata::FirmataParser::attach(uint8_t command, sysexCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#affc821e7742d889965e61b248c204842',1,'firmata::FirmataParser::attach(uint8_t command, systemCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#a876105f2203f5e8f1fb06c8236a96933',1,'firmata::FirmataParser::attach(uint8_t command, versionCallbackFunction newFunction, void *context=NULL)']]],
['available_1',['available',['../classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['begin_2',['begin',['../classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb',1,'firmata::FirmataClass::begin()'],['../classfirmata_1_1_firmata_class.html#ab0b7b837d2c32b4ce79e62895ced2731',1,'firmata::FirmataClass::begin(long)'],['../classfirmata_1_1_firmata_class.html#a0c7b0e10168e3c5dc6442d77c65a156e',1,'firmata::FirmataClass::begin(Stream &amp;s)'],['../classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76',1,'firmata::FirmataMarshaller::begin()']]],
['blinkversion_3',['blinkVersion',['../classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['detach_4',['detach',['../classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1',1,'firmata::FirmataClass::detach()'],['../classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d',1,'firmata::FirmataParser::detach(uint8_t command)'],['../classfirmata_1_1_firmata_parser.html#a280ac17e428f8374afd30bce75e9a861',1,'firmata::FirmataParser::detach(dataBufferOverflowCallbackFunction)']]],
['disableblinkversion_5',['disableBlinkVersion',['../classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['end_6',['end',['../classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de',1,'firmata::FirmataMarshaller']]],
['endsysex_7',['endSysex',['../classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,7 @@
var searchData=
[
['firmataclass_8',['FirmataClass',['../classfirmata_1_1_firmata_class.html',1,'firmata::FirmataClass'],['../classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a',1,'firmata::FirmataClass::FirmataClass()']]],
['firmatamarshaller_9',['FirmataMarshaller',['../classfirmata_1_1_firmata_marshaller.html',1,'firmata::FirmataMarshaller'],['../classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829',1,'firmata::FirmataMarshaller::FirmataMarshaller()']]],
['firmataparser_10',['FirmataParser',['../classfirmata_1_1_firmata_parser.html',1,'firmata::FirmataParser'],['../classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b',1,'firmata::FirmataParser::FirmataParser()']]],
['firmata_11',['Firmata',['../index.html',1,'']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['getpinmode_12',['getPinMode',['../classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96',1,'firmata::FirmataClass']]],
['getpinstate_13',['getPinState',['../classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
var searchData=
[
['isparsingmessage_14',['isParsingMessage',['../classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6',1,'firmata::FirmataClass::isParsingMessage()'],['../classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902',1,'firmata::FirmataParser::isParsingMessage()']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,7 @@
var searchData=
[
['parse_15',['parse',['../classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432',1,'firmata::FirmataClass::parse()'],['../classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf',1,'firmata::FirmataParser::parse()']]],
['printfirmwareversion_16',['printFirmwareVersion',['../classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a',1,'firmata::FirmataClass']]],
['printversion_17',['printVersion',['../classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a',1,'firmata::FirmataClass']]],
['processinput_18',['processInput',['../classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['queryfirmwareversion_19',['queryFirmwareVersion',['../classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697',1,'firmata::FirmataMarshaller']]],
['queryversion_20',['queryVersion',['../classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167',1,'firmata::FirmataMarshaller']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,7 @@
var searchData=
[
['reportanalogdisable_21',['reportAnalogDisable',['../classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30',1,'firmata::FirmataMarshaller']]],
['reportanalogenable_22',['reportAnalogEnable',['../classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db',1,'firmata::FirmataMarshaller']]],
['reportdigitalportdisable_23',['reportDigitalPortDisable',['../classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad',1,'firmata::FirmataMarshaller']]],
['reportdigitalportenable_24',['reportDigitalPortEnable',['../classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c',1,'firmata::FirmataMarshaller']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,22 @@
var searchData=
[
['sendanalog_25',['sendAnalog',['../classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda',1,'firmata::FirmataClass::sendAnalog()'],['../classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a',1,'firmata::FirmataMarshaller::sendAnalog()']]],
['sendanalogmappingquery_26',['sendAnalogMappingQuery',['../classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3',1,'firmata::FirmataMarshaller']]],
['sendcapabilityquery_27',['sendCapabilityQuery',['../classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781',1,'firmata::FirmataMarshaller']]],
['senddigital_28',['sendDigital',['../classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3',1,'firmata::FirmataMarshaller']]],
['senddigitalport_29',['sendDigitalPort',['../classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68',1,'firmata::FirmataClass::sendDigitalPort()'],['../classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951',1,'firmata::FirmataMarshaller::sendDigitalPort()']]],
['sendfirmwareversion_30',['sendFirmwareVersion',['../classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c',1,'firmata::FirmataMarshaller']]],
['sendpinmode_31',['sendPinMode',['../classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221',1,'firmata::FirmataMarshaller']]],
['sendpinstatequery_32',['sendPinStateQuery',['../classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b',1,'firmata::FirmataMarshaller']]],
['sendstring_33',['sendString',['../classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e',1,'firmata::FirmataClass::sendString(const char *string)'],['../classfirmata_1_1_firmata_class.html#ab139c0d784e69003c88eb5be8807dcdf',1,'firmata::FirmataClass::sendString(byte command, const char *string)'],['../classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f',1,'firmata::FirmataMarshaller::sendString()']]],
['sendsysex_34',['sendSysex',['../classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc',1,'firmata::FirmataClass::sendSysex()'],['../classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e',1,'firmata::FirmataMarshaller::sendSysex()']]],
['sendvalueastwo7bitbytes_35',['sendValueAsTwo7bitBytes',['../classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39',1,'firmata::FirmataClass']]],
['sendversion_36',['sendVersion',['../classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29',1,'firmata::FirmataMarshaller']]],
['setdatabufferofsize_37',['setDataBufferOfSize',['../classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516',1,'firmata::FirmataParser']]],
['setfirmwarenameandversion_38',['setFirmwareNameAndVersion',['../classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89',1,'firmata::FirmataClass']]],
['setpinmode_39',['setPinMode',['../classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04',1,'firmata::FirmataClass']]],
['setpinstate_40',['setPinState',['../classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8',1,'firmata::FirmataClass']]],
['setsamplinginterval_41',['setSamplingInterval',['../classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c',1,'firmata::FirmataMarshaller']]],
['startsysex_42',['startSysex',['../classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3',1,'firmata::FirmataClass']]],
['systemreset_43',['systemReset',['../classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206',1,'firmata::FirmataMarshaller']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
var searchData=
[
['write_44',['write',['../classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,6 @@
var searchData=
[
['firmataclass_45',['FirmataClass',['../classfirmata_1_1_firmata_class.html',1,'firmata']]],
['firmatamarshaller_46',['FirmataMarshaller',['../classfirmata_1_1_firmata_marshaller.html',1,'firmata']]],
['firmataparser_47',['FirmataParser',['../classfirmata_1_1_firmata_parser.html',1,'firmata']]]
];

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['attach_48',['attach',['../classfirmata_1_1_firmata_class.html#adc3db897058f33e902097ce89bb01bb3',1,'firmata::FirmataClass::attach(uint8_t command, systemCallbackFunction newFunction)'],['../classfirmata_1_1_firmata_class.html#a074887a70f9aca0c0aae7e9bdc103f77',1,'firmata::FirmataClass::attach(uint8_t command, stringCallbackFunction newFunction)'],['../classfirmata_1_1_firmata_class.html#a78e360c0c8d70cffeb9c935fdec23f77',1,'firmata::FirmataClass::attach(uint8_t command, sysexCallbackFunction newFunction)'],['../classfirmata_1_1_firmata_parser.html#a2a472a925ed7e626ed36dee94ceae45e',1,'firmata::FirmataParser::attach(uint8_t command, callbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#ae176414892a2d240b921c2b8037a8ade',1,'firmata::FirmataParser::attach(dataBufferOverflowCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#a239b37e09dea042d229fc2171d3a1979',1,'firmata::FirmataParser::attach(uint8_t command, stringCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#aaa1d755b20b21e528bfa62d6a7c2dc0f',1,'firmata::FirmataParser::attach(uint8_t command, sysexCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#affc821e7742d889965e61b248c204842',1,'firmata::FirmataParser::attach(uint8_t command, systemCallbackFunction newFunction, void *context=NULL)'],['../classfirmata_1_1_firmata_parser.html#a876105f2203f5e8f1fb06c8236a96933',1,'firmata::FirmataParser::attach(uint8_t command, versionCallbackFunction newFunction, void *context=NULL)']]],
['available_49',['available',['../classfirmata_1_1_firmata_class.html#a119734b867186567c1cd011e52e59d2d',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['begin_50',['begin',['../classfirmata_1_1_firmata_class.html#a2fddcc643892bec2f4aa7aef6dba70eb',1,'firmata::FirmataClass::begin()'],['../classfirmata_1_1_firmata_class.html#ab0b7b837d2c32b4ce79e62895ced2731',1,'firmata::FirmataClass::begin(long)'],['../classfirmata_1_1_firmata_class.html#a0c7b0e10168e3c5dc6442d77c65a156e',1,'firmata::FirmataClass::begin(Stream &amp;s)'],['../classfirmata_1_1_firmata_marshaller.html#a5be18ca3658875dbe5580c2254071c76',1,'firmata::FirmataMarshaller::begin()']]],
['blinkversion_51',['blinkVersion',['../classfirmata_1_1_firmata_class.html#a9421550f2501fc1df60fd174b154e606',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['detach_52',['detach',['../classfirmata_1_1_firmata_class.html#a5db0faee74b9291d1b783d2dde0929d1',1,'firmata::FirmataClass::detach()'],['../classfirmata_1_1_firmata_parser.html#a7cd707386c0807bee733a3e27d161c7d',1,'firmata::FirmataParser::detach(uint8_t command)'],['../classfirmata_1_1_firmata_parser.html#a280ac17e428f8374afd30bce75e9a861',1,'firmata::FirmataParser::detach(dataBufferOverflowCallbackFunction)']]],
['disableblinkversion_53',['disableBlinkVersion',['../classfirmata_1_1_firmata_class.html#a5ddba465c3772f841828ef82c79d4307',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['end_54',['end',['../classfirmata_1_1_firmata_marshaller.html#ab856434fc577b1e069cba51c39daf1de',1,'firmata::FirmataMarshaller']]],
['endsysex_55',['endSysex',['../classfirmata_1_1_firmata_class.html#a9bb68afbb1d37a7990f59a1d419e64c9',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,6 @@
var searchData=
[
['firmataclass_56',['FirmataClass',['../classfirmata_1_1_firmata_class.html#a75b035ab8d96d87d28deeb87badfe11a',1,'firmata::FirmataClass']]],
['firmatamarshaller_57',['FirmataMarshaller',['../classfirmata_1_1_firmata_marshaller.html#ad1a42532bdf77088c47c1a62f5a03829',1,'firmata::FirmataMarshaller']]],
['firmataparser_58',['FirmataParser',['../classfirmata_1_1_firmata_parser.html#ac8c388b593a00e88856646712beae68b',1,'firmata::FirmataParser']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['getpinmode_59',['getPinMode',['../classfirmata_1_1_firmata_class.html#a0c434227456ce2ba97b3b1142c329f96',1,'firmata::FirmataClass']]],
['getpinstate_60',['getPinState',['../classfirmata_1_1_firmata_class.html#acf5d4f460b9a2298653d4a71de918dfe',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
var searchData=
[
['isparsingmessage_61',['isParsingMessage',['../classfirmata_1_1_firmata_class.html#a58e9d787957c3085f22d33b59b1f6ea6',1,'firmata::FirmataClass::isParsingMessage()'],['../classfirmata_1_1_firmata_parser.html#a67902b70695eaf0cf8f7b06175ca3902',1,'firmata::FirmataParser::isParsingMessage()']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,7 @@
var searchData=
[
['parse_62',['parse',['../classfirmata_1_1_firmata_class.html#aaeaac8b1f8facf070615b0035120c432',1,'firmata::FirmataClass::parse()'],['../classfirmata_1_1_firmata_parser.html#a754c97b890b7fd66c8d953a3e615acbf',1,'firmata::FirmataParser::parse()']]],
['printfirmwareversion_63',['printFirmwareVersion',['../classfirmata_1_1_firmata_class.html#abe49261eab0bd4892a09fa8b8980b11a',1,'firmata::FirmataClass']]],
['printversion_64',['printVersion',['../classfirmata_1_1_firmata_class.html#abd8a0370db6d9e923e7e3d5836e78d7a',1,'firmata::FirmataClass']]],
['processinput_65',['processInput',['../classfirmata_1_1_firmata_class.html#aa698f5f5a234173d5eebb54831350676',1,'firmata::FirmataClass']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['queryfirmwareversion_66',['queryFirmwareVersion',['../classfirmata_1_1_firmata_marshaller.html#af954bcf09b77458b3c4f032897d14697',1,'firmata::FirmataMarshaller']]],
['queryversion_67',['queryVersion',['../classfirmata_1_1_firmata_marshaller.html#a488fbbd372c894ec78ebb99e0faf5167',1,'firmata::FirmataMarshaller']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,7 @@
var searchData=
[
['reportanalogdisable_68',['reportAnalogDisable',['../classfirmata_1_1_firmata_marshaller.html#a2668d1332704bbf9938f386e247a8f30',1,'firmata::FirmataMarshaller']]],
['reportanalogenable_69',['reportAnalogEnable',['../classfirmata_1_1_firmata_marshaller.html#a67b3db7232143acf63bd48b765fcc4db',1,'firmata::FirmataMarshaller']]],
['reportdigitalportdisable_70',['reportDigitalPortDisable',['../classfirmata_1_1_firmata_marshaller.html#aa00582e6e014605a65a8953f8275a5ad',1,'firmata::FirmataMarshaller']]],
['reportdigitalportenable_71',['reportDigitalPortEnable',['../classfirmata_1_1_firmata_marshaller.html#a608c28cdc966c33d0cc2239d9465ef7c',1,'firmata::FirmataMarshaller']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,22 @@
var searchData=
[
['sendanalog_72',['sendAnalog',['../classfirmata_1_1_firmata_class.html#ae14e1d8d9bd72068f6e8ca07721e8dda',1,'firmata::FirmataClass::sendAnalog()'],['../classfirmata_1_1_firmata_marshaller.html#a4d9f2d3bb058237404dfe433cfe7571a',1,'firmata::FirmataMarshaller::sendAnalog()']]],
['sendanalogmappingquery_73',['sendAnalogMappingQuery',['../classfirmata_1_1_firmata_marshaller.html#a1c987a534cc8dd197eb2f2a728bdacb3',1,'firmata::FirmataMarshaller']]],
['sendcapabilityquery_74',['sendCapabilityQuery',['../classfirmata_1_1_firmata_marshaller.html#a1f1c5ce29ba4488306c9a1e3f158b781',1,'firmata::FirmataMarshaller']]],
['senddigital_75',['sendDigital',['../classfirmata_1_1_firmata_marshaller.html#a2d90627f0543b6298be71f7d903399b3',1,'firmata::FirmataMarshaller']]],
['senddigitalport_76',['sendDigitalPort',['../classfirmata_1_1_firmata_class.html#a799b91e5a888dd21b066a2020d8e2b68',1,'firmata::FirmataClass::sendDigitalPort()'],['../classfirmata_1_1_firmata_marshaller.html#a346dcb4487a51efaa95de42d292ad951',1,'firmata::FirmataMarshaller::sendDigitalPort()']]],
['sendfirmwareversion_77',['sendFirmwareVersion',['../classfirmata_1_1_firmata_marshaller.html#aed71d62cc41f2e0bf3f161894b91be7c',1,'firmata::FirmataMarshaller']]],
['sendpinmode_78',['sendPinMode',['../classfirmata_1_1_firmata_marshaller.html#a36b6cc103609d900cce36149a239f221',1,'firmata::FirmataMarshaller']]],
['sendpinstatequery_79',['sendPinStateQuery',['../classfirmata_1_1_firmata_marshaller.html#afc378ab4a39c843d4419acdee944972b',1,'firmata::FirmataMarshaller']]],
['sendstring_80',['sendString',['../classfirmata_1_1_firmata_class.html#abe11f621154afd308926129de349fc6e',1,'firmata::FirmataClass::sendString(const char *string)'],['../classfirmata_1_1_firmata_class.html#ab139c0d784e69003c88eb5be8807dcdf',1,'firmata::FirmataClass::sendString(byte command, const char *string)'],['../classfirmata_1_1_firmata_marshaller.html#a483ac2dea885ab3472dc38b99bfdec2f',1,'firmata::FirmataMarshaller::sendString()']]],
['sendsysex_81',['sendSysex',['../classfirmata_1_1_firmata_class.html#a81e2de5b37eb2372c8a3d9a43d5eb0cc',1,'firmata::FirmataClass::sendSysex()'],['../classfirmata_1_1_firmata_marshaller.html#ade4f4592877ec0b9f8d6c74e909bad8e',1,'firmata::FirmataMarshaller::sendSysex()']]],
['sendvalueastwo7bitbytes_82',['sendValueAsTwo7bitBytes',['../classfirmata_1_1_firmata_class.html#a770e43f26f18204e43acebf9202a6d39',1,'firmata::FirmataClass']]],
['sendversion_83',['sendVersion',['../classfirmata_1_1_firmata_marshaller.html#a95d58949e32ad285088705dbe5680b29',1,'firmata::FirmataMarshaller']]],
['setdatabufferofsize_84',['setDataBufferOfSize',['../classfirmata_1_1_firmata_parser.html#a8fbe143ddb428a97c00a15993c31a516',1,'firmata::FirmataParser']]],
['setfirmwarenameandversion_85',['setFirmwareNameAndVersion',['../classfirmata_1_1_firmata_class.html#ab7aa66b528027566c15b7d64c8cd0f89',1,'firmata::FirmataClass']]],
['setpinmode_86',['setPinMode',['../classfirmata_1_1_firmata_class.html#a32c41dd94c1d23aa0e6d3d1dbe5c0c04',1,'firmata::FirmataClass']]],
['setpinstate_87',['setPinState',['../classfirmata_1_1_firmata_class.html#aa9f98ba5069823b4c1d08db9f8999ba8',1,'firmata::FirmataClass']]],
['setsamplinginterval_88',['setSamplingInterval',['../classfirmata_1_1_firmata_marshaller.html#abb8f4c79dd8a0dbee3f5e04c587ae20c',1,'firmata::FirmataMarshaller']]],
['startsysex_89',['startSysex',['../classfirmata_1_1_firmata_class.html#a3cc7ea1af348bca3ea0bd570314cada3',1,'firmata::FirmataClass']]],
['systemreset_90',['systemReset',['../classfirmata_1_1_firmata_marshaller.html#a3a585937f94b1f9e51797e5950a33206',1,'firmata::FirmataMarshaller']]]
];

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
var searchData=
[
['write_91',['write',['../classfirmata_1_1_firmata_class.html#ae8f29a829e17379602fcb9fd6a497807',1,'firmata::FirmataClass']]]
];

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
var searchData=
[
['firmata_92',['Firmata',['../index.html',1,'']]]
];

View File

@@ -0,0 +1,271 @@
/*---------------- Search Box */
#FSearchBox {
float: left;
}
#MSearchBox {
white-space : nowrap;
float: none;
margin-top: 8px;
right: 0px;
width: 170px;
height: 24px;
z-index: 102;
}
#MSearchBox .left
{
display:block;
position:absolute;
left:10px;
width:20px;
height:19px;
background:url('search_l.png') no-repeat;
background-position:right;
}
#MSearchSelect {
display:block;
position:absolute;
width:20px;
height:19px;
}
.left #MSearchSelect {
left:4px;
}
.right #MSearchSelect {
right:5px;
}
#MSearchField {
display:block;
position:absolute;
height:19px;
background:url('search_m.png') repeat-x;
border:none;
width:115px;
margin-left:20px;
padding-left:4px;
color: #909090;
outline: none;
font: 9pt Arial, Verdana, sans-serif;
-webkit-border-radius: 0px;
}
#FSearchBox #MSearchField {
margin-left:15px;
}
#MSearchBox .right {
display:block;
position:absolute;
right:10px;
top:8px;
width:20px;
height:19px;
background:url('search_r.png') no-repeat;
background-position:left;
}
#MSearchClose {
display: none;
position: absolute;
top: 4px;
background : none;
border: none;
margin: 0px 4px 0px 0px;
padding: 0px 0px;
outline: none;
}
.left #MSearchClose {
left: 6px;
}
.right #MSearchClose {
right: 2px;
}
.MSearchBoxActive #MSearchField {
color: #000000;
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #90A5CE;
background-color: #F9FAFC;
z-index: 10001;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt Arial, Verdana, sans-serif;
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: monospace;
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: #000000;
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: #000000;
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: #FFFFFF;
background-color: #3D578C;
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
width: 60ex;
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #000;
background-color: #EEF1F7;
z-index:10000;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
padding-bottom: 15px;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
body.SRPage {
margin: 5px 2px;
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: #425E97;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
}
.SRResult {
display: none;
}
DIV.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.searchresult {
background-color: #F0F3F8;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}

View File

@@ -0,0 +1,814 @@
/*
@licstart The following is the entire license notice for the
JavaScript code in this file.
Copyright (C) 1997-2017 by Dimitri van Heesch
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
@licend The above is the entire license notice
for the JavaScript code in this file
*/
function convertToId(search)
{
var result = '';
for (i=0;i<search.length;i++)
{
var c = search.charAt(i);
var cn = c.charCodeAt(0);
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
{
result+=c;
}
else if (cn<16)
{
result+="_0"+cn.toString(16);
}
else
{
result+="_"+cn.toString(16);
}
}
return result;
}
function getXPos(item)
{
var x = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
x += item.offsetLeft;
item = item.offsetParent;
}
}
return x;
}
function getYPos(item)
{
var y = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
y += item.offsetTop;
item = item.offsetParent;
}
}
return y;
}
/* A class handling everything associated with the search panel.
Parameters:
name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, inFrame, label)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
this.keyTimeout = 0;
this.keyTimeoutLength = 500;
this.closeSelectionTimeout = 300;
this.lastSearchValue = "";
this.lastResultsPage = "";
this.hideTimeout = 0;
this.searchIndex = 0;
this.searchActive = false;
this.insideFrame = inFrame;
this.searchLabel = label;
// ----------- DOM Elements
this.DOMSearchField = function()
{ return document.getElementById("MSearchField"); }
this.DOMSearchSelect = function()
{ return document.getElementById("MSearchSelect"); }
this.DOMSearchSelectWindow = function()
{ return document.getElementById("MSearchSelectWindow"); }
this.DOMPopupSearchResults = function()
{ return document.getElementById("MSearchResults"); }
this.DOMPopupSearchResultsWindow = function()
{ return document.getElementById("MSearchResultsWindow"); }
this.DOMSearchClose = function()
{ return document.getElementById("MSearchClose"); }
this.DOMSearchBox = function()
{ return document.getElementById("MSearchBox"); }
// ------------ Event Handlers
// Called when focus is added or removed from the search field.
this.OnSearchFieldFocus = function(isActive)
{
this.Activate(isActive);
}
this.OnSearchSelectShow = function()
{
var searchSelectWindow = this.DOMSearchSelectWindow();
var searchField = this.DOMSearchSelect();
if (this.insideFrame)
{
var left = getXPos(searchField);
var top = getYPos(searchField);
left += searchField.offsetWidth + 6;
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
left -= searchSelectWindow.offsetWidth;
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
else
{
var left = getXPos(searchField);
var top = getYPos(searchField);
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
}
// stop selection hide timer
if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
return false; // to avoid "image drag" default event
}
this.OnSearchSelectHide = function()
{
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
this.closeSelectionTimeout);
}
// Called when the content of the search field is changed.
this.OnSearchFieldChange = function(evt)
{
if (this.keyTimeout) // kill running timer
{
clearTimeout(this.keyTimeout);
this.keyTimeout = 0;
}
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 || e.keyCode==13)
{
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
child.focus();
return;
}
}
return;
}
else if (window.frames.MSearchResults.searchResults)
{
var elem = window.frames.MSearchResults.searchResults.NavNext(0);
if (elem) elem.focus();
}
}
else if (e.keyCode==27) // Escape out of the search field
{
this.DOMSearchField().blur();
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
this.Activate(false);
return;
}
// strip whitespaces
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue != this.lastSearchValue) // search value has changed
{
if (searchValue != "") // non-empty search
{
// set timer for search update
this.keyTimeout = setTimeout(this.name + '.Search()',
this.keyTimeoutLength);
}
else // empty search field
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
}
}
}
this.SelectItemCount = function(id)
{
var count=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
count++;
}
}
return count;
}
this.SelectItemSet = function(id)
{
var i,j=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
var node = child.firstChild;
if (j==id)
{
node.innerHTML='&#8226;';
}
else
{
node.innerHTML='&#160;';
}
j++;
}
}
}
// Called when an search filter selection is made.
// set item with index id as the active item
this.OnSelectItem = function(id)
{
this.searchIndex = id;
this.SelectItemSet(id);
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue!="" && this.searchActive) // something was found -> do a search
{
this.Search();
}
}
this.OnSearchSelectKey = function(evt)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
{
this.searchIndex++;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==38 && this.searchIndex>0) // Up
{
this.searchIndex--;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==13 || e.keyCode==27)
{
this.OnSelectItem(this.searchIndex);
this.CloseSelectionWindow();
this.DOMSearchField().focus();
}
return false;
}
// --------- Actions
// Closes the results window.
this.CloseResultsWindow = function()
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.Activate(false);
}
this.CloseSelectionWindow = function()
{
this.DOMSearchSelectWindow().style.display = 'none';
}
// Performs a search.
this.Search = function()
{
this.keyTimeout = 0;
// strip leading whitespace
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
var idxChar = searchValue.substr(0, 1).toLowerCase();
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
var resultsPage;
var resultsPageWithSearch;
var hasResultsPage;
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
if (idx!=-1)
{
var hexCode=idx.toString(16);
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
hasResultsPage = true;
}
else // nothing available for this search term
{
resultsPage = this.resultsPath + '/nomatches.html';
resultsPageWithSearch = resultsPage;
hasResultsPage = false;
}
window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block')
{
var domSearchBox = this.DOMSearchBox();
this.DOMSearchClose().style.display = 'inline';
if (this.insideFrame)
{
var domPopupSearchResults = this.DOMPopupSearchResults();
domPopupSearchResultsWindow.style.position = 'relative';
domPopupSearchResultsWindow.style.display = 'block';
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
domPopupSearchResultsWindow.style.width = width + 'px';
domPopupSearchResults.style.width = width + 'px';
}
else
{
var domPopupSearchResults = this.DOMPopupSearchResults();
var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
domPopupSearchResultsWindow.style.display = 'block';
left -= domPopupSearchResults.offsetWidth;
domPopupSearchResultsWindow.style.top = top + 'px';
domPopupSearchResultsWindow.style.left = left + 'px';
}
}
this.lastSearchValue = searchValue;
this.lastResultsPage = resultsPage;
}
// -------- Activation Functions
// Activates or deactivates the search panel, resetting things to
// their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
var searchField = this.DOMSearchField();
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
{
searchField.value = '';
this.searchActive = true;
}
}
else if (!isActive) // directly remove the panel
{
this.DOMSearchBox().className = 'MSearchBoxInactive';
this.DOMSearchField().value = this.searchLabel;
this.searchActive = false;
this.lastSearchValue = ''
this.lastResultsPage = '';
}
}
}
// -----------------------------------------------------------------------
// The class that handles everything on the search results page.
function SearchResults(name)
{
// The number of matches from the last run of <Search()>.
this.lastMatchCount = 0;
this.lastKey = 0;
this.repeatOn = false;
// Toggles the visibility of the passed element ID.
this.FindChildElement = function(id)
{
var parentElement = document.getElementById(id);
var element = parentElement.firstChild;
while (element && element!=parentElement)
{
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
{
return element;
}
if (element.nodeName == 'DIV' && element.hasChildNodes())
{
element = element.firstChild;
}
else if (element.nextSibling)
{
element = element.nextSibling;
}
else
{
do
{
element = element.parentNode;
}
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
{
element = element.nextSibling;
}
}
}
}
this.Toggle = function(id)
{
var element = this.FindChildElement(id);
if (element)
{
if (element.style.display == 'block')
{
element.style.display = 'none';
}
else
{
element.style.display = 'block';
}
}
}
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this.Search = function(search)
{
if (!search) // get search word from URL
{
search = window.location.search;
search = search.substring(1); // Remove the leading '?'
search = unescape(search);
}
search = search.replace(/^ +/, ""); // strip leading spaces
search = search.replace(/ +$/, ""); // strip trailing spaces
search = search.toLowerCase();
search = convertToId(search);
var resultRows = document.getElementsByTagName("div");
var matches = 0;
var i = 0;
while (i < resultRows.length)
{
var row = resultRows.item(i);
if (row.className == "SRResult")
{
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
matches++;
}
else
{
row.style.display = 'none';
}
}
i++;
}
document.getElementById("Searching").style.display='none';
if (matches == 0) // no results
{
document.getElementById("NoMatches").style.display='block';
}
else // at least one result
{
document.getElementById("NoMatches").style.display='none';
}
this.lastMatchCount = matches;
return true;
}
// return the first item with index index or higher that is visible
this.NavNext = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index++;
}
return focusItem;
}
this.NavPrev = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index--;
}
return focusItem;
}
this.ProcessKeys = function(e)
{
if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
}
else if (e.type == "keypress")
{
if (!this.repeatOn)
{
if (this.lastKey) this.repeatOn = true;
return false; // ignore first keypress after keydown
}
}
else if (e.type == "keyup")
{
this.lastKey = 0;
this.repeatOn = false;
}
return this.lastKey!=0;
}
this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
var newIndex = itemIndex-1;
var focusItem = this.NavPrev(newIndex);
if (focusItem)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
{
var n=0;
var tmpElem;
while (1) // search for last child
{
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
if (tmpElem)
{
focusItem = tmpElem;
}
else // found it!
{
break;
}
n++;
}
}
}
if (focusItem)
{
focusItem.focus();
}
else // return focus to search field
{
parent.document.getElementById("MSearchField").focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = itemIndex+1;
var focusItem;
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem && elem.style.display == 'block') // children visible
{
focusItem = document.getElementById('Item'+itemIndex+'_c0');
}
if (!focusItem) focusItem = this.NavNext(newIndex);
if (focusItem) focusItem.focus();
}
else if (this.lastKey==39) // Right
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'block';
}
else if (this.lastKey==37) // Left
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'none';
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
this.NavChild = function(evt,itemIndex,childIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
if (childIndex>0)
{
var newIndex = childIndex-1;
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
}
else // already at first child, jump to parent
{
document.getElementById('Item'+itemIndex).focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = childIndex+1;
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
if (!elem) // last child, jump to parent next parent
{
elem = this.NavNext(itemIndex+1);
}
if (elem)
{
elem.focus();
}
}
else if (this.lastKey==27) // Escape
{
parent.searchBox.CloseResultsWindow();
parent.document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
}
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults()
{
var results = document.getElementById("SRResults");
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',searchData[e][1][1][0]);
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',searchData[e][1][c+1][0]);
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}
function init_search()
{
var results = document.getElementById("MSearchSelectWindow");
for (var key in indexSectionLabels)
{
var link = document.createElement('a');
link.setAttribute('class','SelectItem');
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
link.href='javascript:void(0)';
link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
results.appendChild(link);
}
searchBox.OnSelectItem(0);
}
/* @license-end */

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

View File

@@ -0,0 +1,24 @@
var indexSectionsWithContent =
{
0: "abdefgipqrsw",
1: "f",
2: "abdefgipqrsw",
3: "f"
};
var indexSectionNames =
{
0: "all",
1: "classes",
2: "functions",
3: "pages"
};
var indexSectionLabels =
{
0: "All",
1: "Classes",
2: "Functions",
3: "Pages"
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Some files were not shown because too many files have changed in this diff Show More