├── .gitignore
├── Images
└── ArduinoDriver.png
├── LICENSE.md
├── README.md
└── Source
├── ArduinoDriver.Samples.SMBTune
├── App.config
├── ArduinoDriver.Samples.SMBTune.csproj
├── NLog.config
├── NLog.xsd
├── Program.cs
├── Properties
│ └── AssemblyInfo.cs
└── packages.config
├── ArduinoDriver.sln
└── ArduinoDriver
├── ArduinoDriver.cs
├── ArduinoDriver.csproj
├── ArduinoDriver.nuspec
├── ArduinoDriverConfiguration.cs
├── ArduinoDriverSerialPort.cs
├── ArduinoListener
├── ArduinoListener.ino
├── ArduinoListener.ino.Leonardo.hex
├── ArduinoListener.ino.Mega2560.hex
├── ArduinoListener.ino.Micro.hex
├── ArduinoListener.ino.NanoR3.hex
└── ArduinoListener.ino.UnoR3.hex
├── DigitalValue.cs
├── Properties
├── AssemblyInfo.cs
├── Resources.Designer.cs
└── Resources.resx
├── SerialProtocol
├── AnalogReadRequest.cs
├── AnalogReadResponse.cs
├── AnalogReferenceRequest.cs
├── AnalogReferenceResponse.cs
├── AnalogReferenceType.cs
├── AnalogWriteRequest.cs
├── AnalogWriteResponse.cs
├── ArduinoMessage.cs
├── ArduinoRequest.cs
├── ArduinoResponse.cs
├── BitOrder.cs
├── CommandConstants.cs
├── DigitalReadRequest.cs
├── DigitalReadResponse.cs
├── DigitalWriteReponse.cs
├── DigitalWriteRequest.cs
├── ErrorResponse.cs
├── HandShakeRequest.cs
├── HandShakeResponse.cs
├── NoToneRequest.cs
├── NoToneResponse.cs
├── PinMode.cs
├── PinModeRequest.cs
├── PinModeResponse.cs
├── ShiftInRequest.cs
├── ShiftInResponse.cs
├── ShiftOutRequest.cs
├── ShiftOutResponse.cs
├── ToneRequest.cs
└── ToneResponse.cs
├── app.config
└── packages.config
/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin
4 | obj
5 | packages
6 | .nuget/
--------------------------------------------------------------------------------
/Images/ArduinoDriver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christophediericx/ArduinoDriver/8788dbe421ecf04983787de1d86f06d2212030b2/Images/ArduinoDriver.png
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Christophe Diericx
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ArduinoDriver
2 |
3 | A .NET library to easily connect, drive and debug an Arduino through a simple and highly Arduino syntax compatible request / response protocol running over the serial (USB) connection.
4 |
5 | 
6 |
7 | ## Summary ##
8 | A two-line snippet can illustrate some of the library's features:
9 | ```csharp
10 | var driver = new ArduinoDriver(ArduinoModel.UnoR3, true);
11 | driver.Send(new ToneRequest(8, 200, 1000));
12 | ```
13 |
14 | * This creates an ArduinoDriver for a specific Arduino Model (in this case an Uno).
15 |
16 | * The relevant COM port is autodetected (although a constructor overload for specifying the port exists).
17 |
18 | * The second parameter to the constructor (*autoBootstrap*) enables automated deployment of our [protocol listener](Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino) onto the Arduino (if necessary). This means you don't have to compile / deploy anything on the Arduino itself in order to start using this library (the library uses the related [ArduinoSketchUploader](https://github.com/christophediericx/ArduinoSketchUploader) library to achieve this).
19 |
20 | * Use the *Send* method on the driver in order to send a message to the Arduino, and receive a response. Most of the typical Arduino library methods have completely analogous request / counterparts:
21 |
22 | * AnalogReadRequest / AnalogReadResponse
23 | * AnalogWriteRequest / AnalogWriteResponse
24 | * DigitalReadRequest / DigitalReadResponse
25 | * DigitalWriteRequest / DigitalWriteResponse
26 | * PinModeRequest / PinModeResponse
27 | * ...
28 |
29 | The protocol itself supports:
30 | * Handshaking and version negotation
31 | * High speed communication
32 | * Fault tolerance and error detection (through fletcher-16 checksums)
33 |
34 | ## Compatibility ##
35 |
36 | The library has been tested with the following configurations:
37 |
38 | | Arduino Model | MCU | Bootloader protocol |
39 | | ------------- |:-------------:| -------------------:|
40 | | Leonardo | ATMega32U4 | AVR109 |
41 | | Mega 2560 | ATMega2560 | STK500v2 |
42 | | Micro | ATMega32U4 | AVR109 |
43 | | Nano (R3) | ATMega328P | STK500v1 |
44 | | Uno (R3) | ATMega328P | STK500v1 |
45 |
46 | > *If you have a need for this library to run on another Arduino model, feel free to open an issue on GitHub, it should be relatively straightforward to add support (for most).*
47 |
48 | ## How to use the .NET library ##
49 |
50 | [](https://badge.fury.io/nu/ArduinoDriver)
51 |
52 | Link the following nuget package in your project in order to use the ArduinoDriver: https://www.nuget.org/packages/ArduinoDriver/
53 |
54 | Alternatively, install the package using the nuget package manager console:
55 |
56 | ```
57 | Install-Package ArduinoDriver
58 | ```
59 |
60 | ## Logging ##
61 |
62 | The library channels log messages (in varying levels, from Info to Trace) via NLog. Optionally, add a nuget NLog dependency (and configuration file) in any project that uses ArduinoDriver in order to redirect these log messages to preferred log targets.
63 |
64 | ## Sample Code Project: Super Mario Bros "Underworld" theme ##
65 |
66 | This sample project uses the library above to play this classic retro tune on an Arduino with C#.
67 |
68 | One pin of the buzzer should be connected to digital pin 8. The other pin should be connected to GND.
69 |
70 | The sample code is configured for an UNO. Don't forget to change the following line if you have another Arduino model attached:
71 |
72 | ```csharp
73 | // ----------> CHANGE THIS!
74 | private const ArduinoModel AttachedArduino = ArduinoModel.UnoR3;
75 | ```
76 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver.Samples.SMBTune/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver.Samples.SMBTune/ArduinoDriver.Samples.SMBTune.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {0E5DBA42-2330-4C41-9826-146C3BBC367D}
8 | Exe
9 | Properties
10 | ArduinoDriver.Samples.SMBTune
11 | ArduinoDriver.Samples.SMBTune
12 | v4.5.2
13 | 512
14 |
15 | ..\
16 |
17 |
18 | AnyCPU
19 | true
20 | full
21 | false
22 | bin\Debug\
23 | DEBUG;TRACE
24 | prompt
25 | 4
26 |
27 |
28 | AnyCPU
29 | none
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 |
38 | ..\packages\ArduinoUploader.3.1.0\lib\net452\ArduinoUploader.dll
39 |
40 |
41 | False
42 | ..\packages\IntelHexFormatReader.2.2.3\lib\net45\IntelHexFormatReader.dll
43 |
44 |
45 | False
46 | ..\packages\NLog.4.4.10\lib\net45\NLog.dll
47 |
48 |
49 | False
50 | ..\packages\SerialPortStream.2.1.2\lib\net45\RJCP.SerialPortStream.dll
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | Always
63 | Designer
64 |
65 |
66 | Designer
67 |
68 |
69 |
70 |
71 |
72 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}
73 | ArduinoDriver
74 |
75 |
76 |
77 |
84 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver.Samples.SMBTune/NLog.config:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver.Samples.SMBTune/Program.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using ArduinoDriver.SerialProtocol;
3 | using ArduinoUploader.Hardware;
4 |
5 | namespace ArduinoDriver.Samples.SMBTune
6 | {
7 | ///
8 | /// This program uses the ArduinoLibCSharp libraries to play the Super Mario Bros *Underworld* tune on a connected Arduino.
9 | ///
10 | /// Since the constructor for the ArduinoDriver is passed 'true' for autobootstrap, this will automatically deploy the listener
11 | /// on the Arduino itself.
12 | ///
13 | /// The only thing that should be changed in this program is the Arduino "model".
14 | ///
15 | /// One pin of the buzzer should be connected to digital pin 8 ("DigitalPinBuzzer").
16 | /// The other pin should be connected to GND.
17 | ///
18 | /// Credit for tones and tempo: http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and-piezo-buzzer/
19 | ///
20 | internal class Program
21 | {
22 | // ----------> CHANGE THIS!
23 | private const ArduinoModel AttachedArduino = ArduinoModel.UnoR3;
24 |
25 | private const int DigitalPinBuzzer = 8;
26 |
27 | private const int D3 = 147;
28 | private const int DS3 = 156;
29 | private const int E3 = 165;
30 | private const int F3 = 175;
31 | private const int G3 = 196;
32 | private const int GS3 = 208;
33 | private const int A3 = 220;
34 | private const int AS3 = 233;
35 | private const int B3 = 247;
36 | private const int C4 = 262;
37 | private const int CS4 = 277;
38 | private const int D4 = 294;
39 | private const int DS4 = 311;
40 | private const int F4 = 349;
41 | private const int FS4 = 370;
42 | private const int GS4 = 415;
43 | private const int A4 = 440;
44 | private const int AS4 = 466;
45 | private const int E5 = 523;
46 |
47 | private static readonly int[] melody =
48 | {
49 | C4, E5, A3, A4, AS3, AS4, 0, 0, C4, E5, A3, A4, AS3, AS4, 0, 0, F3, F4, D3, D4, DS3, DS4, 0, 0, F3, F4, D3, D4, DS3, DS4, 0,
50 | 0, DS4, D4, CS4, C4, DS4, D4, GS3, G3, CS4, C4, FS4, F4, E3, AS4, A4, GS4, DS4, B3, AS3, A3, GS3, 0, 0, 0
51 | };
52 |
53 | private static readonly int[] tempo =
54 | {
55 | 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6,
56 | 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3, 3
57 | };
58 |
59 | private static void Main(string[] args)
60 | {
61 | using (var driver = new ArduinoDriver(AttachedArduino, true))
62 | {
63 | for (var i = 0; i < melody.Length; i++)
64 | {
65 | var noteDuration = 1000 / tempo[i];
66 | driver.Send(new ToneRequest(DigitalPinBuzzer, (ushort)melody[i], (uint)noteDuration));
67 | Thread.Sleep((int)(noteDuration * 1.40));
68 | driver.Send(new NoToneRequest(DigitalPinBuzzer));
69 | }
70 | }
71 |
72 | }
73 | }
74 | }
--------------------------------------------------------------------------------
/Source/ArduinoDriver.Samples.SMBTune/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("ArduinoDriver.Samples.SMBTune")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("ArduinoDriver.Samples.SMBTune")]
12 | [assembly: AssemblyCopyright("Copyright © 2016")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("0c4ab773-488f-48a1-ad48-38a59c13b713")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver.Samples.SMBTune/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.31101.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Library", "Library", "{21F7D77A-B524-4E67-B032-5AA9A37BB107}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArduinoDriver", "ArduinoDriver\ArduinoDriver.csproj", "{1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}"
9 | EndProject
10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sample Code", "Sample Code", "{CA9C6727-9E34-4382-ABA3-2ECED485DC51}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArduinoDriver.Samples.SMBTune", "ArduinoDriver.Samples.SMBTune\ArduinoDriver.Samples.SMBTune.csproj", "{0E5DBA42-2330-4C41-9826-146C3BBC367D}"
13 | EndProject
14 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{ED0AB22C-2D09-4CEA-A4B5-CEE537A35FC7}"
15 | ProjectSection(SolutionItems) = preProject
16 | .nuget\NuGet.Config = .nuget\NuGet.Config
17 | .nuget\NuGet.exe = .nuget\NuGet.exe
18 | .nuget\NuGet.targets = .nuget\NuGet.targets
19 | EndProjectSection
20 | EndProject
21 | Global
22 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
23 | Debug|Any CPU = Debug|Any CPU
24 | Release|Any CPU = Release|Any CPU
25 | EndGlobalSection
26 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
27 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
29 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
30 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}.Release|Any CPU.Build.0 = Release|Any CPU
31 | {0E5DBA42-2330-4C41-9826-146C3BBC367D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32 | {0E5DBA42-2330-4C41-9826-146C3BBC367D}.Debug|Any CPU.Build.0 = Debug|Any CPU
33 | {0E5DBA42-2330-4C41-9826-146C3BBC367D}.Release|Any CPU.ActiveCfg = Release|Any CPU
34 | {0E5DBA42-2330-4C41-9826-146C3BBC367D}.Release|Any CPU.Build.0 = Release|Any CPU
35 | EndGlobalSection
36 | GlobalSection(SolutionProperties) = preSolution
37 | HideSolutionNode = FALSE
38 | EndGlobalSection
39 | GlobalSection(NestedProjects) = preSolution
40 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7} = {21F7D77A-B524-4E67-B032-5AA9A37BB107}
41 | {0E5DBA42-2330-4C41-9826-146C3BBC367D} = {CA9C6727-9E34-4382-ABA3-2ECED485DC51}
42 | EndGlobalSection
43 | EndGlobal
44 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoDriver.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Reflection;
7 | using System.Threading;
8 | using ArduinoDriver.SerialProtocol;
9 | using ArduinoUploader;
10 | using ArduinoUploader.Hardware;
11 | using NLog;
12 | using RJCP.IO.Ports;
13 |
14 | namespace ArduinoDriver
15 | {
16 | ///
17 | /// An ArduinoDriver can be used to communicate with an attached Arduino by way of sending requests and receiving responses.
18 | /// These messages are sent over a live serial connection (via a serial protocol) to the Arduino. The required listener can be
19 | /// automatically deployed to the Arduino.
20 | ///
21 | public class ArduinoDriver : IDisposable
22 | {
23 | private static readonly Logger logger = LogManager.GetCurrentClassLogger();
24 | private readonly IList alwaysRedeployListeners =
25 | new List { ArduinoModel.NanoR3 };
26 | private const int defaultRebootGraceTime = 2000;
27 | private readonly IDictionary rebootGraceTimes =
28 | new Dictionary
29 | {
30 | {ArduinoModel.Micro, 8000},
31 | {ArduinoModel.Mega2560, 4000}
32 | };
33 | private const int CurrentProtocolMajorVersion = 1;
34 | private const int CurrentProtocolMinorVersion = 2;
35 | private const int DriverBaudRate = 115200;
36 | private ArduinoDriverSerialPort port;
37 | private ArduinoDriverConfiguration config;
38 | private Func serialFunc;
39 |
40 | private const string ArduinoListenerHexResourceFileName =
41 | "ArduinoDriver.ArduinoListener.ArduinoListener.ino.{0}.hex";
42 |
43 | ///
44 | /// Creates a new ArduinoDriver instance. The relevant portname will be autodetected if possible.
45 | ///
46 | ///
47 | ///
48 | public ArduinoDriver(ArduinoModel arduinoModel, bool autoBootstrap = false)
49 | {
50 | logger.Info(
51 | "Instantiating ArduinoDriver (model {0}) with autoconfiguration of port name...",
52 | arduinoModel);
53 |
54 | var possiblePortNames = SerialPortStream.GetPortNames().Distinct();
55 | string unambiguousPortName = null;
56 | try
57 | {
58 | unambiguousPortName = possiblePortNames.SingleOrDefault();
59 | }
60 | catch (InvalidOperationException)
61 | {
62 | // More than one posible hit.
63 | }
64 | if (unambiguousPortName == null)
65 | throw new IOException(
66 | "Unable to autoconfigure ArduinoDriver port name, since there is not exactly a single "
67 | + "COM port available. Please use the ArduinoDriver with the named port constructor!");
68 |
69 | Initialize(new ArduinoDriverConfiguration
70 | {
71 | ArduinoModel = arduinoModel,
72 | PortName = unambiguousPortName,
73 | AutoBootstrap = autoBootstrap
74 | });
75 | }
76 |
77 | ///
78 | /// Creates a new ArduinoDriver instance for a specified portName.
79 | ///
80 | ///
81 | /// The COM portname to create the ArduinoDriver instance for.
82 | /// Determines if an listener is automatically deployed to the Arduino if required.
83 | public ArduinoDriver(ArduinoModel arduinoModel, string portName, bool autoBootstrap = false)
84 | {
85 | Initialize(new ArduinoDriverConfiguration
86 | {
87 | ArduinoModel = arduinoModel,
88 | PortName = portName,
89 | AutoBootstrap = autoBootstrap
90 | });
91 | }
92 |
93 | ///
94 | /// Sends a Analog Read Request to the Arduino.
95 | ///
96 | /// Analog Read Request
97 | /// The Analog Read Response
98 | public AnalogReadResponse Send(AnalogReadRequest request)
99 | {
100 | return (AnalogReadResponse) InternalSend(request);
101 | }
102 |
103 | ///
104 | /// Sends a Analog Write Request to the Arduino.
105 | ///
106 | /// Analog Write Request
107 | /// The Analog Write Response
108 | public AnalogWriteResponse Send(AnalogWriteRequest request)
109 | {
110 | return (AnalogWriteResponse) InternalSend(request);
111 | }
112 |
113 | ///
114 | /// Sends a Digital Read Request to the Arduino.
115 | ///
116 | /// Digital Read Request
117 | /// The Digital Read Response
118 | public DigitalReadResponse Send(DigitalReadRequest request)
119 | {
120 | return (DigitalReadResponse) InternalSend(request);
121 | }
122 |
123 | ///
124 | /// Sends a Digital Write Request to the Arduino.
125 | ///
126 | /// Digital Write Request
127 | /// The Digital Write Response
128 | public DigitalWriteReponse Send(DigitalWriteRequest request)
129 | {
130 | return (DigitalWriteReponse) InternalSend(request);
131 | }
132 |
133 | ///
134 | /// Sends a PinMode Request to the Arduino.
135 | ///
136 | /// PinMode Request
137 | /// The PinMode Response
138 | public PinModeResponse Send(PinModeRequest request)
139 | {
140 | return (PinModeResponse) InternalSend(request);
141 | }
142 |
143 | ///
144 | /// Sends a Tone Request to the Arduino.
145 | ///
146 | /// Tone Request
147 | /// The Tone Response
148 | public ToneResponse Send(ToneRequest request)
149 | {
150 | return (ToneResponse) InternalSend(request);
151 | }
152 |
153 | ///
154 | /// Sends a NoTone Request to the Arduino.
155 | ///
156 | /// NoTone Request
157 | /// The NoTone Response
158 | public NoToneResponse Send(NoToneRequest request)
159 | {
160 | return (NoToneResponse) InternalSend(request);
161 | }
162 |
163 | ///
164 | /// Sends a AnalogReference Request to the Arduino.
165 | ///
166 | /// AnalogReference Request
167 | /// AnalogReference Response
168 | public AnalogReferenceResponse Send(AnalogReferenceRequest request)
169 | {
170 | return (AnalogReferenceResponse) InternalSend(request);
171 | }
172 |
173 | ///
174 | /// Sends a ShiftOut Request to the Arduino.
175 | ///
176 | /// ShiftOut Request
177 | /// ShiftOut Response
178 | public ShiftOutResponse Send(ShiftOutRequest request)
179 | {
180 | return (ShiftOutResponse) InternalSend(request);
181 | }
182 |
183 | ///
184 | /// Sends a ShiftIn Request to the Arduino;
185 | ///
186 | ///
187 | ///
188 | public ShiftInResponse Send(ShiftInRequest request)
189 | {
190 | return (ShiftInResponse) InternalSend(request);
191 | }
192 |
193 | ///
194 | /// Disposes the ArduinoDriver instance.
195 | ///
196 | public void Dispose()
197 | {
198 | try
199 | {
200 | port.Close();
201 | port.Dispose();
202 | }
203 | catch (Exception)
204 | {
205 | // Ignore
206 | }
207 | }
208 |
209 | #region Private Methods
210 |
211 | private void Initialize(ArduinoDriverConfiguration arduinoConfig)
212 | {
213 | logger.Info("Instantiating ArduinoDriver: {0} - {1}...", arduinoConfig.ArduinoModel, arduinoConfig.PortName);
214 |
215 | config = arduinoConfig;
216 | serialFunc = () => new SerialPortStream() { PortName = config.PortName, BaudRate = DriverBaudRate };
217 |
218 | if (!config.AutoBootstrap) InitializeWithoutAutoBootstrap();
219 | else InitializeWithAutoBootstrap();
220 | }
221 |
222 | private void InitializeWithoutAutoBootstrap()
223 | {
224 | // Without auto bootstrap, we just try to send a handshake request (the listener should already be
225 | // deployed). If that fails, we try nothing else.
226 | logger.Info("Initiating handshake...");
227 | InitializePort();
228 | var handshakeResponse = ExecuteHandshake();
229 | if (handshakeResponse == null)
230 | {
231 | port.Close();
232 | port.Dispose();
233 | throw new IOException(
234 | string.Format(
235 | "Unable to get a handshake ACK when sending a handshake request to the Arduino on port {0}. "
236 | +
237 | "Pass 'true' for optional parameter autoBootStrap in one of the ArduinoDriver constructors to "
238 | + "automatically configure the Arduino (please note: this will overwrite the existing sketch "
239 | + "on the Arduino).", config.PortName));
240 | }
241 | }
242 |
243 | private void InitializeWithAutoBootstrap()
244 | {
245 | var alwaysReDeployListener = alwaysRedeployListeners.Count > 500;
246 | HandShakeResponse handshakeResponse = null;
247 | var handShakeAckReceived = false;
248 | var handShakeIndicatesOutdatedProtocol = false;
249 | if (!alwaysReDeployListener)
250 | {
251 | logger.Info("Initiating handshake...");
252 | InitializePort();
253 | handshakeResponse = ExecuteHandshake();
254 | handShakeAckReceived = handshakeResponse != null;
255 | if (handShakeAckReceived)
256 | {
257 | logger.Info("Handshake ACK Received ...");
258 | const int currentVersion = (CurrentProtocolMajorVersion * 10) + CurrentProtocolMinorVersion;
259 | var listenerVersion = (handshakeResponse.ProtocolMajorVersion * 10) + handshakeResponse.ProtocolMinorVersion;
260 | logger.Info("Current ArduinoDriver C# Protocol: {0}.{1}.",
261 | CurrentProtocolMajorVersion, CurrentProtocolMinorVersion);
262 | logger.Info("Arduino Listener Protocol Version: {0}.{1}",
263 | handshakeResponse.ProtocolMajorVersion, handshakeResponse.ProtocolMinorVersion);
264 | handShakeIndicatesOutdatedProtocol = currentVersion > listenerVersion;
265 | if (handShakeIndicatesOutdatedProtocol)
266 | {
267 | logger.Debug("Closing port...");
268 | port.Close();
269 | port.Dispose();
270 | }
271 | }
272 | else
273 | {
274 | logger.Debug("Closing port...");
275 | port.Close();
276 | port.Dispose();
277 | }
278 | }
279 |
280 | // If we have received a handshake ack, and we have no need to upgrade, simply return.
281 | if (handShakeAckReceived && !handShakeIndicatesOutdatedProtocol) return;
282 |
283 | var arduinoModel = config.ArduinoModel;
284 | // At this point we will have to redeploy our listener
285 | logger.Info("Boostrapping ArduinoDriver Listener...");
286 | var stopwatch = new Stopwatch();
287 | stopwatch.Start();
288 | ExecuteAutoBootStrap(arduinoModel, config.PortName);
289 | stopwatch.Stop();
290 | logger.Info("Bootstrapping device took {0}ms.", stopwatch.ElapsedMilliseconds);
291 |
292 | // Now wait a bit, since the bootstrapped Arduino might still be restarting !
293 | var graceTime =
294 | rebootGraceTimes.ContainsKey(arduinoModel) ?
295 | rebootGraceTimes[arduinoModel] : defaultRebootGraceTime;
296 | logger.Info("Grace time after reboot, waiting {0}ms...", graceTime);
297 | Thread.Sleep(graceTime);
298 |
299 |
300 | // Listener should now (always) be deployed, handshake should yield success.
301 | InitializePort();
302 | handshakeResponse = ExecuteHandshake();
303 | if (handshakeResponse == null)
304 | throw new IOException("Unable to get a handshake ACK after executing auto bootstrap on the Arduino!");
305 | logger.Info("ArduinoDriver fully initialized!");
306 | }
307 |
308 | private void InitializePort()
309 | {
310 | var serialEngine = serialFunc();
311 | var portName = serialEngine.PortName;
312 | var baudRate = serialEngine.BaudRate;
313 | logger.Debug("Initializing port {0} - {1}...", portName, baudRate);
314 | serialEngine.WriteTimeout = 200;
315 | serialEngine.ReadTimeout = 500;
316 | port = new ArduinoDriverSerialPort(serialEngine);
317 | port.Open();
318 | }
319 |
320 | private ArduinoResponse InternalSend(ArduinoRequest request)
321 | {
322 | return port.Send(request);
323 | }
324 |
325 | private HandShakeResponse ExecuteHandshake()
326 | {
327 | var response = port.Send(new HandShakeRequest(), 1);
328 | return response as HandShakeResponse;
329 | }
330 |
331 | private static void ExecuteAutoBootStrap(ArduinoModel arduinoModel, string portName)
332 | {
333 | logger.Info("Executing AutoBootStrap!");
334 | logger.Info("Deploying protocol version {0}.{1}.", CurrentProtocolMajorVersion, CurrentProtocolMinorVersion);
335 |
336 | logger.Debug("Reading internal resource stream with Arduino Listener HEX file...");
337 | var assembly = Assembly.GetExecutingAssembly();
338 | var textStream = assembly.GetManifestResourceStream(
339 | string.Format(ArduinoListenerHexResourceFileName, arduinoModel));
340 | if (textStream == null)
341 | throw new IOException("Unable to configure auto bootstrap, embedded resource missing!");
342 |
343 | var hexFileContents = new List();
344 | using (var reader = new StreamReader(textStream))
345 | while (reader.Peek() >= 0) hexFileContents.Add(reader.ReadLine());
346 |
347 | logger.Debug("Uploading HEX file...");
348 | var uploader = new ArduinoSketchUploader(new ArduinoSketchUploaderOptions
349 | {
350 | PortName = portName,
351 | ArduinoModel = arduinoModel
352 | });
353 | uploader.UploadSketch(hexFileContents);
354 | }
355 |
356 | #endregion
357 | }
358 | }
359 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoDriver.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {1FE32CD3-938F-40A7-B0A5-75CF0A7254D7}
8 | Library
9 | Properties
10 | ArduinoDriver
11 | ArduinoDriver
12 | v4.5.2
13 | 512
14 | ..\
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | none
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 | ..\packages\ArduinoUploader.3.1.0\lib\net452\ArduinoUploader.dll
37 |
38 |
39 | False
40 | ..\packages\IntelHexFormatReader.2.2.1\lib\net452\IntelHexFormatReader.dll
41 |
42 |
43 | False
44 | ..\packages\NLog.4.4.10\lib\net45\NLog.dll
45 |
46 |
47 | False
48 | ..\packages\SerialPortStream.2.1.2\lib\net45\RJCP.SerialPortStream.dll
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | True
61 | True
62 | Resources.resx
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | ResXFileCodeGenerator
98 | Resources.Designer.cs
99 |
100 |
101 |
102 | Designer
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
120 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoDriver.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ArduinoDriver
5 | $version$
6 | ArduinoDriver
7 | Christophe Diericx
8 | Christophe Diericx
9 | https://github.com/christophediericx/ArduinoDriver
10 | https://avatars3.githubusercontent.com/u/19640854?s=140
11 | false
12 | Library to connect, drive and debug an Arduino (UNO) directly from within Visual Studio (through the USB serial connection).
13 |
14 |
15 | arduino serial communication protocol
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoDriverConfiguration.cs:
--------------------------------------------------------------------------------
1 | using ArduinoUploader.Hardware;
2 |
3 | namespace ArduinoDriver
4 | {
5 | internal class ArduinoDriverConfiguration
6 | {
7 | public ArduinoModel ArduinoModel { get; set; }
8 | public string PortName { get; set; }
9 | public bool AutoBootstrap { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoDriverSerialPort.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using ArduinoDriver.SerialProtocol;
6 | using NLog;
7 | using RJCP.IO.Ports;
8 |
9 | namespace ArduinoDriver
10 | {
11 | internal class ArduinoDriverSerialPort
12 | {
13 | private static readonly Logger logger = LogManager.GetCurrentClassLogger();
14 | private readonly SerialPortStream serialPort;
15 | private const int MaxSendRetries = 6;
16 | private const int MaxSyncRetries = 3;
17 |
18 | internal ArduinoDriverSerialPort(SerialPortStream serialPortEngine)
19 | {
20 | serialPort = serialPortEngine;
21 | }
22 |
23 | public void Open()
24 | {
25 | serialPort.Open();
26 | }
27 |
28 | public void Close()
29 | {
30 | serialPort.Close();
31 | }
32 |
33 | public void Dispose()
34 | {
35 | serialPort.Dispose();
36 | }
37 |
38 | private bool GetSync()
39 | {
40 | try
41 | {
42 | var bytes = CommandConstants.SyncBytes;
43 | serialPort.Write(bytes, 0, bytes.Length);
44 | var responseBytes = ReadCurrentReceiveBuffer(4);
45 | return responseBytes.Length == 4
46 | && responseBytes[0] == bytes[3]
47 | && responseBytes[1] == bytes[2]
48 | && responseBytes[2] == bytes[1]
49 | && responseBytes[3] == bytes[0];
50 | }
51 | catch (TimeoutException e)
52 | {
53 | logger.Trace("Timeout while trying to get sync...");
54 | return false;
55 | }
56 | catch (Exception e)
57 | {
58 | logger.Trace("Exception while trying to get sync ('{0}')", e.Message);
59 | return false;
60 | }
61 | }
62 |
63 | private bool ExecuteCommandHandShake(byte command, byte length)
64 | {
65 | var bytes = new byte[] {0xfb, command, length};
66 | serialPort.Write(bytes, 0, bytes.Length);
67 | var responseBytes = ReadCurrentReceiveBuffer(3);
68 | return responseBytes.Length == 3
69 | && responseBytes[0] == bytes[2]
70 | && responseBytes[1] == bytes[1]
71 | && responseBytes[2] == bytes[0];
72 | }
73 |
74 | internal ArduinoResponse Send(ArduinoRequest request, int maxSendRetries = MaxSendRetries)
75 | {
76 | logger.Trace("Sending {0}", request);
77 | var sendRetries = 0;
78 | while (sendRetries++ < maxSendRetries)
79 | {
80 | try
81 | {
82 | // First try to get sync (send FF FE FD FC and require FC FD FE FF as a response).
83 | bool hasSync;
84 | var syncRetries = 0;
85 | while (!(hasSync = GetSync()) && syncRetries++ < MaxSyncRetries)
86 | {
87 | logger.Debug("Unable to get sync ... trying again ({0}/{1}).", syncRetries, MaxSyncRetries);
88 | }
89 | if (!hasSync)
90 | {
91 | var errorMessage = string.Format("Unable to get sync after {0} tries!", MaxSyncRetries);
92 | logger.Warn(errorMessage);
93 | throw new IOException(errorMessage);
94 | }
95 |
96 | // Now send the command handshake (send FB as start of message marker + the command byte + length byte).
97 | // Expect the inverse (length byte followed by command byte followed by FB) as a command ACK.
98 | var requestBytes = request.Bytes.ToArray();
99 | var requestBytesLength = requestBytes.Length;
100 |
101 | if (!ExecuteCommandHandShake(request.Command, (byte)requestBytesLength))
102 | {
103 | var errorMessage = string.Format("Unable to configure command handshake for command {0}.", request);
104 | logger.Warn(errorMessage);
105 | throw new IOException(errorMessage);
106 | }
107 |
108 | // Write out all packet bytes, followed by a Fletcher 16 checksum!
109 | // Packet bytes consist of:
110 | // 1. Command byte repeated
111 | // 2. Request length repeated
112 | // 3. The actual request bytes
113 | // 4. Two fletcher-16 checksum bytes calculated over (1 + 2 + 3)
114 | var packetBytes = new byte[requestBytesLength + 4];
115 | packetBytes[0] = request.Command;
116 | packetBytes[1] = (byte)requestBytesLength;
117 | Buffer.BlockCopy(requestBytes, 0, packetBytes, 2, requestBytesLength);
118 | var fletcher16CheckSum = CalculateFletcher16Checksum(packetBytes, requestBytesLength + 2);
119 | var f0 = (byte)(fletcher16CheckSum & 0xff);
120 | var f1 = (byte)((fletcher16CheckSum >> 8) & 0xff);
121 | var c0 = (byte)(0xff - (f0 + f1) % 0xff);
122 | var c1 = (byte)(0xff - (f0 + c0) % 0xff);
123 | packetBytes[requestBytesLength + 2] = c0;
124 | packetBytes[requestBytesLength + 3] = c1;
125 |
126 | serialPort.Write(packetBytes, 0, requestBytesLength + 4);
127 |
128 | // Write out all bytes written marker (FA)
129 | serialPort.Write(new[] { CommandConstants.AllBytesWritten }, 0, 1);
130 |
131 | // Expect response message to drop to be received in the following form:
132 | // F9 (start of response marker) followed by response length
133 | var responseBytes = ReadCurrentReceiveBuffer(2);
134 | var startOfResponseMarker = responseBytes[0];
135 | var responseLength = responseBytes[1];
136 | if (startOfResponseMarker != CommandConstants.StartOfResponseMarker)
137 | {
138 | var errorMessage = string.Format("Did not receive start of response marker but {0}!", startOfResponseMarker);
139 | logger.Warn(errorMessage);
140 | throw new IOException(errorMessage);
141 | }
142 |
143 | // Read x responsebytes
144 | responseBytes = ReadCurrentReceiveBuffer(responseLength);
145 | return ArduinoResponse.Create(responseBytes);
146 | }
147 | catch (TimeoutException ex)
148 | {
149 | logger.Debug(ex, "TimeoutException in Send occurred, retrying ({0}/{1})!", sendRetries, MaxSendRetries);
150 | }
151 | catch (Exception ex)
152 | {
153 | logger.Debug("Exception: '{0}'", ex.Message);
154 | }
155 | }
156 | return null;
157 | }
158 |
159 | private static ushort CalculateFletcher16Checksum(IReadOnlyList checkSumBytes, int count)
160 | {
161 | ushort sum1 = 0;
162 | ushort sum2 = 0;
163 | for (var index = 0; index < count; ++index)
164 | {
165 | sum1 = (ushort)((sum1 + checkSumBytes[index])%255);
166 | sum2 = (ushort)((sum2 + sum1) % 255);
167 | }
168 | return (ushort)((sum2 << 8) | sum1);
169 | }
170 |
171 | private byte[] ReadCurrentReceiveBuffer(int numberOfBytes)
172 | {
173 | var result = new byte[numberOfBytes];
174 | var retrieved = 0;
175 | var retryCount = 0;
176 |
177 | while (retrieved < numberOfBytes && retryCount++ < 4)
178 | retrieved += serialPort.Read(result, retrieved, numberOfBytes - retrieved);
179 |
180 | if (retrieved < numberOfBytes)
181 | {
182 | logger.Info("Ended up reading short (expected {0} bytes, got only {1})...",
183 | numberOfBytes, retrieved);
184 | }
185 | return result;
186 | }
187 | }
188 | }
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * ArduinoLibCSharp ArduinoDriver Serial Protocol - Arduino Listener.
4 | * Version 1.2.
5 | */
6 |
7 | const long BAUD_RATE = 115200;
8 | const unsigned int SYNC_TIMEOUT = 250;
9 | const unsigned int READ_REQUESTPAYLOAD_TIMEOUT = 1000;
10 | const unsigned int SYNC_REQUEST_LENGTH = 4;
11 | const unsigned int CMD_HANDSHAKE_LENGTH = 3;
12 |
13 | const byte START_OF_REQUEST_MARKER = 0xfb;
14 | const byte ALL_BYTES_WRITTEN = 0xfa;
15 | const byte START_OF_RESPONSE_MARKER = 0xf9;
16 | const byte ERROR_MARKER = 0xef;
17 |
18 | const unsigned int PROTOCOL_VERSION_MAJOR = 1;
19 | const unsigned int PROTOCOL_VERSION_MINOR = 2;
20 |
21 | const byte CMD_HANDSHAKE_INITIATE = 0x01;
22 | const byte ACK_HANDSHAKE_INITIATE = 0x02;
23 |
24 | const byte CMD_DIGITALREAD = 0x03;
25 | const byte ACK_DIGITALREAD = 0x04;
26 | const byte CMD_DIGITALWRITE = 0x05;
27 | const byte ACK_DIGITALWRITE = 0x06;
28 | const byte CMD_PINMODE = 0x07;
29 | const byte ACK_PINMODE = 0x08;
30 | const byte CMD_ANALOGREAD = 0x09;
31 | const byte ACK_ANALOGREAD = 0x0a;
32 | const byte CMD_ANALOGWRITE = 0x0b;
33 | const byte ACK_ANALOGWRITE = 0x0c;
34 | const byte CMD_TONE = 0x0d;
35 | const byte ACK_TONE = 0x0e;
36 | const byte CMD_NOTONE = 0x0f;
37 | const byte ACK_NOTONE = 0x10;
38 | const byte CMD_ANALOGREFERENCE = 0x11;
39 | const byte ACK_ANALOGREFERENCE = 0x12;
40 | const byte CMD_SHIFTOUT = 0x13;
41 | const byte ACK_SHIFTOUT = 0x14;
42 | const byte CMD_SHIFTIN = 0x15;
43 | const byte ACK_SHIFTIN = 0x16;
44 |
45 | byte data[64];
46 | byte commandByte, lengthByte, syncByte, fletcherByte1, fletcherByte2;
47 | unsigned int fletcher16, f0, f1, c0, c1;
48 |
49 | /* Base Types */
50 | unsigned int digitalPinToRead;
51 | unsigned int digitalPinToWrite;
52 | unsigned int digitalPinState;
53 | unsigned int analogPinToRead;
54 | unsigned int analogPinToWrite;
55 | unsigned int analogPinValueToWrite;
56 | unsigned int analogReadResult;
57 | unsigned int analogReferenceType;
58 |
59 | /* Tones */
60 | unsigned int toneFrequency;
61 | unsigned long toneDuration;
62 |
63 | /* ShiftOut */
64 | unsigned int clockPinToWrite;
65 | byte bitOrder;
66 | byte shiftOutValue;
67 | byte incoming;
68 |
69 | void setup() {
70 | Serial.begin(BAUD_RATE);
71 | while (!Serial) { ; }
72 | }
73 |
74 | void loop() {
75 |
76 | // Reset variables
77 | for (int i = 0; i < 64; i++) { data[i] = 0x00; }
78 |
79 | // Try to acquire SYNC. Try to read up to four bytes, and only advance if the pattern matches ff fe fd fc.
80 | // Blocking (the client must retry if getting sync fails).
81 | while (Serial.available() < SYNC_REQUEST_LENGTH) { ; }
82 | if ((syncByte = Serial.read()) != 0xff) return;
83 | if ((syncByte = Serial.read()) != 0xfe) return;
84 | if ((syncByte = Serial.read()) != 0xfd) return;
85 | if ((syncByte = Serial.read()) != 0xfc) return;
86 |
87 | // Write out SYNC ACK (fc fd fe ff).
88 | Serial.write(0xfc);
89 | Serial.write(0xfd);
90 | Serial.write(0xfe);
91 | Serial.write(0xff);
92 | Serial.flush();
93 |
94 | // Now expect the START_OF_REQUEST_MARKER (0xfb), followed by our command byte, and a length byte
95 | // To acknowledge, we will write out the sequence in reverse (length byte, command byte, START_OF_REQUEST_MARKER)
96 | // We cannot be blocking as the client expects an answer.
97 | if (!expectNumberOfBytesToArrive(CMD_HANDSHAKE_LENGTH, SYNC_TIMEOUT)) return;
98 |
99 | if(Serial.read() != START_OF_REQUEST_MARKER) return;
100 | commandByte = Serial.read();
101 | lengthByte = Serial.read();
102 |
103 | // Write out acknowledgement.
104 | Serial.write(lengthByte);
105 | Serial.write(commandByte);
106 | Serial.write(START_OF_REQUEST_MARKER);
107 | Serial.flush();
108 |
109 | // Read length bytes + 4 (first two bytes are commandByte + length repeated, last two bytes are fletcher16 checksums)
110 | if (!expectNumberOfBytesToArrive(lengthByte + 4, READ_REQUESTPAYLOAD_TIMEOUT)) return;
111 | for (int i = 0; i < lengthByte + 4; i++) { data[i] = Serial.read(); }
112 |
113 | fletcherByte1 = data[lengthByte + 2];
114 | fletcherByte2 = data[lengthByte + 3];
115 |
116 | // Expect all bytes written package to come in (0xfa), non blocking
117 | if (!expectNumberOfBytesToArrive(1, READ_REQUESTPAYLOAD_TIMEOUT)) return;
118 | if(Serial.read() != ALL_BYTES_WRITTEN) return;
119 |
120 | // Packet checks: do fletcher16 checksum!
121 | fletcher16 = Fletcher16(data, lengthByte + 2);
122 | f0 = fletcher16 & 0xff;
123 | f1 = (fletcher16 >> 8) & 0xff;
124 | c0 = 0xff - (( f0 + f1) % 0xff);
125 | c1 = 0xff - (( f0 + c0 ) % 0xff);
126 |
127 | // Sanity check of checksum + command and length values, so that we can trust the entire packet.
128 | if (c0 != fletcherByte1 || c1 != fletcherByte2 || commandByte != data[0] || lengthByte != data[1]) {
129 | WriteError();
130 | return;
131 | }
132 |
133 | switch (commandByte) {
134 | case CMD_HANDSHAKE_INITIATE:
135 | Serial.write(START_OF_RESPONSE_MARKER);
136 | Serial.write(3);
137 | Serial.write(ACK_HANDSHAKE_INITIATE);
138 | Serial.write(PROTOCOL_VERSION_MAJOR);
139 | Serial.write(PROTOCOL_VERSION_MINOR);
140 | Serial.flush();
141 | break;
142 | case CMD_DIGITALREAD:
143 | digitalPinToRead = data[2];
144 | digitalPinState = digitalRead(digitalPinToRead);
145 | Serial.write(START_OF_RESPONSE_MARKER);
146 | Serial.write(3);
147 | Serial.write(ACK_DIGITALREAD);
148 | Serial.write(digitalPinToRead); // pin read
149 | Serial.write(digitalPinState); // pin state
150 | Serial.flush();
151 | break;
152 | case CMD_DIGITALWRITE:
153 | digitalPinToWrite = data[2];
154 | digitalPinState = data[3];
155 | if (digitalPinState == 0) { digitalWrite(digitalPinToWrite, LOW); }
156 | if (digitalPinState == 1) { digitalWrite(digitalPinToWrite, HIGH); }
157 | Serial.write(START_OF_RESPONSE_MARKER);
158 | Serial.write(3);
159 | Serial.write(ACK_DIGITALWRITE);
160 | Serial.write(digitalPinToWrite); // pin written to
161 | Serial.write(digitalPinState); // pin state
162 | Serial.flush();
163 | break;
164 | case CMD_PINMODE:
165 | digitalPinToWrite = data[2];
166 | digitalPinState = data[3];
167 | if (digitalPinState == 0) { pinMode(digitalPinToWrite, INPUT); }
168 | if (digitalPinState == 1) { pinMode(digitalPinToWrite, INPUT_PULLUP); }
169 | if (digitalPinState == 2) { pinMode(digitalPinToWrite, OUTPUT); }
170 | Serial.write(START_OF_RESPONSE_MARKER);
171 | Serial.write(3);
172 | Serial.write(ACK_PINMODE);
173 | Serial.write(digitalPinToWrite); // pin written to
174 | Serial.write(digitalPinState); // mode set
175 | Serial.flush();
176 | break;
177 | case CMD_ANALOGREAD:
178 | analogPinToRead = data[2];
179 | analogReadResult = analogRead(analogPinToRead);
180 | Serial.write(START_OF_RESPONSE_MARKER);
181 | Serial.write(4);
182 | Serial.write(ACK_ANALOGREAD);
183 | Serial.write(analogPinToRead); // pin read from
184 | Serial.write(analogReadResult >> 8);
185 | Serial.write(analogReadResult & 0xff);
186 | Serial.flush();
187 | break;
188 | case CMD_ANALOGWRITE:
189 | analogPinToWrite = data[2];
190 | analogPinValueToWrite = data[3];
191 | analogWrite(analogPinToWrite, analogPinValueToWrite);
192 | Serial.write(START_OF_RESPONSE_MARKER);
193 | Serial.write(3);
194 | Serial.write(ACK_ANALOGWRITE);
195 | Serial.write(analogPinToWrite); // pin written to
196 | Serial.write(analogPinValueToWrite); // value written
197 | Serial.flush();
198 | break;
199 | case CMD_TONE:
200 | digitalPinToWrite = data[2];
201 | toneFrequency = (data[3] << 8) + data[4];
202 | toneDuration = (data[5] << 24) + (data[6] << 16) + (data[7] << 8) + data[8];
203 | if (toneDuration > 0) {
204 | tone(digitalPinToWrite, toneFrequency, toneDuration);
205 | } else {
206 | tone(digitalPinToWrite, toneFrequency);
207 | }
208 | Serial.write(START_OF_RESPONSE_MARKER);
209 | Serial.write(1);
210 | Serial.write(ACK_TONE);
211 | Serial.flush();
212 | break;
213 | case CMD_NOTONE:
214 | digitalPinToWrite = data[2];
215 | noTone(digitalPinToWrite);
216 | Serial.write(START_OF_RESPONSE_MARKER);
217 | Serial.write(1);
218 | Serial.write(ACK_NOTONE);
219 | Serial.flush();
220 | break;
221 | case CMD_ANALOGREFERENCE:
222 | analogReferenceType = data[2];
223 | if (analogReferenceType == 0) { analogReference(DEFAULT); }
224 | if (analogReferenceType == 1) { analogReference(3); } // INTERNAL, Not on Arduino MEGA
225 | if (analogReferenceType == 2) { analogReference(2); } // INTERNAL1v1, Arduino MEGA only
226 | if (analogReferenceType == 3) { analogReference(3); } // INTERNAL2v56, Arduino MEGA only
227 | if (analogReferenceType == 4) { analogReference(EXTERNAL); }
228 | Serial.write(START_OF_RESPONSE_MARKER);
229 | Serial.write(2);
230 | Serial.write(ACK_ANALOGREFERENCE);
231 | Serial.write(analogReferenceType);
232 | Serial.flush();
233 | break;
234 | case CMD_SHIFTOUT:
235 | digitalPinToWrite = data[2];
236 | clockPinToWrite = data[3];
237 | bitOrder = data[4];
238 | shiftOutValue = data[5];
239 | if (bitOrder == 0) { shiftOut(digitalPinToWrite, clockPinToWrite, LSBFIRST, shiftOutValue); }
240 | if (bitOrder == 1) { shiftOut(digitalPinToWrite, clockPinToWrite, MSBFIRST, shiftOutValue); }
241 | Serial.write(START_OF_RESPONSE_MARKER);
242 | Serial.write(5);
243 | Serial.write(ACK_SHIFTOUT);
244 | Serial.write(digitalPinToWrite);
245 | Serial.write(clockPinToWrite);
246 | Serial.write(bitOrder);
247 | Serial.write(shiftOutValue);
248 | Serial.flush();
249 | break;
250 | case CMD_SHIFTIN:
251 | digitalPinToWrite = data[2];
252 | clockPinToWrite = data[3];
253 | bitOrder = data[4];
254 | if (bitOrder == 0) { incoming = shiftIn(digitalPinToWrite, clockPinToWrite, LSBFIRST); }
255 | if (bitOrder == 1) { incoming = shiftIn(digitalPinToWrite, clockPinToWrite, MSBFIRST); }
256 | Serial.write(START_OF_RESPONSE_MARKER);
257 | Serial.write(5);
258 | Serial.write(ACK_SHIFTIN);
259 | Serial.write(digitalPinToWrite);
260 | Serial.write(clockPinToWrite);
261 | Serial.write(bitOrder);
262 | Serial.write(incoming);
263 | Serial.flush();
264 | break;
265 | default:
266 | WriteError();
267 | break;
268 | }
269 | }
270 |
271 | bool expectNumberOfBytesToArrive(byte numberOfBytes, unsigned long timeout) {
272 | unsigned long timeoutStartTicks = millis();
273 | while ((Serial.available() < numberOfBytes) && ((millis() - timeoutStartTicks) < timeout)) { ; }
274 | if (Serial.available() < numberOfBytes) {
275 | // Unable to get sufficient bytes, perhaps one was lost in transportation? Write out three error marker bytes.
276 | WriteError();
277 | return false;
278 | }
279 | return true;
280 | }
281 |
282 | void WriteError() {
283 | for (int i = 0; i < 3; i++) { Serial.write(ERROR_MARKER); }
284 | Serial.flush();
285 | }
286 |
287 | unsigned int Fletcher16(byte data[], int count ) {
288 | unsigned int sum1 = 0;
289 | unsigned int sum2 = 0;
290 | unsigned int idx;
291 | for(idx = 0; idx < count; ++idx) {
292 | sum1 = (sum1 + data[idx]) % 255;
293 | sum2 = (sum2 + sum1) % 255;
294 | }
295 | return (sum2 << 8) | sum1;
296 | }
297 |
298 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino.Leonardo.hex:
--------------------------------------------------------------------------------
1 | :100000000C9418010C9440010C9440010C94400194
2 | :100010000C9440010C9440010C9440010C9440015C
3 | :100020000C9440010C9440010C94D7020C9457039B
4 | :100030000C9440010C9440010C9440010C9440013C
5 | :100040000C9440010C9440010C9440010C9440012C
6 | :100050000C9440010C9440010C9440010C94BF0698
7 | :100060000C9440010C9440010C9440010C9440010C
8 | :100070000C9440010C9440010C9440010C944001FC
9 | :100080000C9494050C9440010C9440010C94400194
10 | :100090000C9440010C9440010C9440010C944001DC
11 | :1000A0000C9440010C9440010C9440016A076D07C8
12 | :1000B0005C07600766078E078E078E077107750756
13 | :1000C00079077F0783078E0789074F0D9310650D0A
14 | :1000D0009310850D9310BD0D9310E80D9310430EF2
15 | :1000E0009310FA0E93103A0F9310750F9310A50FFB
16 | :1000F00093102010700E750E7A0E840E8E0ED80E90
17 | :10010000D80ED80E980EA20EAC0EB60EC30ED80E98
18 | :10011000CB0E00000000240027002A002D00300034
19 | :10012000000000002300260029002C002F000408F6
20 | :1001300002011040804010204080408008020401ED
21 | :10014000804020100201108010204040200000005C
22 | :1001500000250028002B002E0031000404040404B4
23 | :10016000030405020202020403020202020606065A
24 | :1001700006060604040202020404080B000202023E
25 | :100180000100090400000102020000052400100122
26 | :1001900005240101010424020605240600010705C7
27 | :1001A000810310004009040100020A000000070555
28 | :1001B0000202400000070583024000000403090416
29 | :1001C00041726475696E6F204C4C430041726475D6
30 | :1001D000696E6F204C656F6E6172646F0012010072
31 | :1001E0000200000040412336800001010203011299
32 | :1001F000010002EF020140412336800001010203A9
33 | :1002000001030000000200090F0000030401000CBC
34 | :1002100000000000000000000000000000000000DE
35 | :1002200000070605040100080A0B0C0D09004E0B1F
36 | :1002300011241FBECFEFDAE0DEBFCDBF11E0A0E09A
37 | :10024000B1E0E6E2F2E202C005900D92A632B107FB
38 | :10025000D9F722E0A6E2B1E001C01D92A132B207B7
39 | :10026000E1F711E0C8E1D1E004C02197FE010E944E
40 | :10027000F110C731D107C9F70E94630B0C9411111B
41 | :100280000C94000040915301509154012091510170
42 | :100290003091520142175307B4F49091E8009570E1
43 | :1002A000E1F39091E80092FD19C08093F1008091F4
44 | :1002B00053019091540101968F739927892B19F45A
45 | :1002C0008EEF8093E8008091530190915401019644
46 | :1002D000909354018093530181E0089580E0089544
47 | :1002E000CF92DF92EF92FF920F931F93CF93DF9302
48 | :1002F0001F92CDB7DEB7182F062FE42E862F880F5A
49 | :100300008E5F99830E94420183E00E944201F12E98
50 | :10031000C12E9981D92E8C2D8F19801798F4F60152
51 | :10032000E7FE02C0849101C080810E944201182F23
52 | :1003300080E00E9442018123FFEFCF1ADF0A811182
53 | :10034000EACF01C081E00F90DF91CF911F910F9113
54 | :10035000FF90EF90DF90CF900895DF92EF92FF92A1
55 | :100360000F931F93CF93DF93D82E8A017B01E40E66
56 | :10037000F51EEB01CE15DF0571F0D7FE03C0FE01BF
57 | :10038000849101C088810E94420121968111F2CF9F
58 | :100390008FEF9FEF01C0C801DF91CF911F910F91A7
59 | :1003A000FF90EF90DF900895615030F02091F100C0
60 | :1003B000FC0120830196F8CF289884E680931302ED
61 | :1003C0000895CF92DF92EF92FF920F931F93CF93F6
62 | :1003D000DF936C017A018B01C0E0D0E0CE15DF0520
63 | :1003E00089F0D8016D918D01D601ED91FC910190BC
64 | :1003F000F081E02DC6010995892B11F47E0102C020
65 | :100400002196ECCFC701DF91CF911F910F91FF9003
66 | :10041000EF90DF90CF900895CF93DF931F92CDB7E9
67 | :10042000DEB76983DC01ED91FC910280F381E02D60
68 | :1004300041E050E0BE016F5F7F4F09950F90DF9163
69 | :10044000CF910895FC018485958597FD0BC09FB7DA
70 | :10045000F89482E08093E9008091F2009FBF90E0E1
71 | :10046000019608959FB7F89482E08093E900809107
72 | :10047000F2009FBF90E008953FB7F894809130015B
73 | :1004800090913101A0913201B091330126B5A89B22
74 | :1004900005C02F3F19F00196A11DB11D3FBFBA2F16
75 | :1004A000A92F982F8827820F911DA11DB11DBC0176
76 | :1004B000CD0142E0660F771F881F991F4A95D1F73B
77 | :1004C00008950C9409070F931F93CF93DF931F9206
78 | :1004D000CDB7DEB782E0898342E450E06AE771E09D
79 | :1004E00080E80E94AD010E943E07DC0112960D914A
80 | :1004F0001C9113970115110569F0D801ED91FC913C
81 | :100500000280F381E02DBE016F5F7F4FC801099526
82 | :1005100097FF07C089810F90DF91CF911F910F91B5
83 | :100520000895F80100851185E5CFCF93DF931F92E1
84 | :10053000CDB7DEB7FC018485958597FD05C02FEF0B
85 | :100540003FEF358724870BC0CE0101960E94140728
86 | :10055000019719F4898190E002C08FEF9FEF0F900F
87 | :10056000DF91CF9108950F931F93CF93DF931F9245
88 | :10057000CDB7DEB78C01FC018485958597FF0EC051
89 | :10058000CE0101960E941407019719F4298130E0E9
90 | :1005900002C02FEF3FEFF80135872487F8018485EB
91 | :1005A00095850F90DF91CF911F910F9108951F9224
92 | :1005B0000F920FB60F9211242F933F934F935F9397
93 | :1005C0006F937F938F939F93AF93BF93CF93EF934B
94 | :1005D000FF93C091E1008091E100837F8093E1006F
95 | :1005E000C3FF0FC01092E90081E08093EB001092EE
96 | :1005F000EC0082E38093ED001092140288E0809377
97 | :10060000F000C2FF18C00E9409078091550188239D
98 | :1006100039F080915501815080935501882389F1EB
99 | :1006200080911302882339F08091130281508093C6
100 | :100630001302882341F1C4FF10C08091E2008E7E36
101 | :1006400081608093E2008091E1008F7E8093E100E1
102 | :10065000809157018E7E806111C0C0FF16C08091CD
103 | :10066000E2008E7E80618093E2008091E1008E7EC8
104 | :100670008093E100809157018E7E816080935701C5
105 | :1006800004C05D9ACDCF289AD6CFFF91EF91CF913C
106 | :10069000BF91AF919F918F917F916F915F914F919A
107 | :1006A0003F912F910F900FBE0F901F9018951F92A2
108 | :1006B0000F920FB60F921124CF92DF92EF92FF921A
109 | :1006C0000F931F932F933F934F935F936F937F935A
110 | :1006D0008F939F93AF93BF93EF93FF93CF93DF934A
111 | :1006E000CDB7DEB76C97DEBFCDBF1092E900809129
112 | :1006F000E80083FFFAC168E0CE0145960E94D4016C
113 | :1007000082EF8093E8008D8987FF05C09091E80013
114 | :1007100090FFFCCF03C09EEF9093E800982F907657
115 | :1007200009F0C6C09E892F89188D91110CC08038A0
116 | :1007300029F4809158018093F10002C01092F100D9
117 | :100740001092F10047C1422F50E0512B913051F4EB
118 | :10075000811140C14130510509F03CC180915801DF
119 | :100760008D7F0BC0933061F4811134C1413051054C
120 | :1007700009F030C1809158018260809358012AC1EC
121 | :10078000953041F48091E80080FFFCCF20682093F1
122 | :10079000E30020C1963009F05FC0EB8CFC8C109216
123 | :1007A000E9001092540110925301123091F5109209
124 | :1007B0005201109251010E94630299E0BE016F5FE5
125 | :1007C0007F4FDB01E92F1D92EA95E9F799831A83A0
126 | :1007D00091E09E8390EA98879AEF99872091530140
127 | :1007E00030915401275F3F4F3C832B838D831092C0
128 | :1007F000E9001092540110925301F0925201E092DC
129 | :10080000510149E050E080E00E94AD010E94630286
130 | :10081000E1C0F0925201E09251010E943E07DC01DA
131 | :100820001296ED90FC901397E114F10409F4C0C006
132 | :10083000D701ED91FC910480F581E02DBE016B5E46
133 | :100840007F4FC7010995009719F00CF0C3C0C6C0CF
134 | :10085000F701E084F184E8CF973009F4BFC0983005
135 | :1008600021F481E08093F100B5C0993009F0B2C065
136 | :10087000837009F0B3C0EFE1F1E081E021E036E3FD
137 | :100880009081992361F08093E9002093EB0091918E
138 | :100890009093EC003093ED008F5F873089F78EE7FF
139 | :1008A0008093EA001092EA008F898093140292C02C
140 | :1008B0008B8D9C8D1092E90010925401109253017F
141 | :1008C0009093520180935101898D811156C08E8978
142 | :1008D0009D89913A59F4813209F080C047E050E097
143 | :1008E00064E071E080E00E94AD0174C0913209F0D3
144 | :1008F00075C0833289F4888D90E0982F88272F89DE
145 | :10090000822BA0E0B0E08093000190930101A093BE
146 | :100910000201B09303015EC0803269F48091E80067
147 | :1009200082FFFCCF67E084E091E00E94D4018BEF6E
148 | :100930008093E80006C0823209F04CC08F89809312
149 | :100940000B0180915601882319F0EEEFFAE002C006
150 | :10095000E0E0F8E08091040190910501A09106018A
151 | :10096000B0910701803B9440A105B10509F088C012
152 | :1009700080910B0180FFA0C083C00E943E07DC0174
153 | :1009800012960D911C9113970115110539F1D8019B
154 | :10099000ED91FC910190F081E02DBE016B5E7F4FE7
155 | :1009A000C8010995811116C0F80100851185ECCFA9
156 | :1009B0001130C1F0133091F48F89882309F455C0A8
157 | :1009C0008230E9F440E860E18CEC91E00E94700133
158 | :1009D000882321F08EEF8093E80087C081E2809326
159 | :1009E000EB0083C08B8D9C8D089711F41093500100
160 | :1009F00080915001811136C06DED71E038C08130B9
161 | :100A000029F440E86BE080EC91E0E0CF833031F7EF
162 | :100A10000E943E07DC011296ED90FC9013978E0128
163 | :100A20000F5F1F4F6801E114F10479F0D701ED91D8
164 | :100A3000FC910680F781E02DB801C7010995080FE8
165 | :100A4000111DF701E084F184EECFD8011C92F6016C
166 | :100A500001900020E9F73197BF016C197D0940E052
167 | :100A6000C601B4CF6FEE71E002C06CEB71E06115AE
168 | :100A7000710509F4B3CFFB01449150E080E833CF16
169 | :100A80000FB6F894A895809160008861809360000B
170 | :100A9000109260000FBEA895EE3F2AE0F20739F0F1
171 | :100AA0008091FE0A9091FF0A9183808393CF1092E8
172 | :100AB000FF0A1092FE0A8ECFEE3F8AE0F80731F06F
173 | :100AC000808191819093FF0A8093FE0A87E797E7E0
174 | :100AD000918380839BE088E10FB6F894A89580937A
175 | :100AE00060000FBE9093600075CF6C960FB6F894BF
176 | :100AF000DEBF0FBECDBFDF91CF91FF91EF91BF91D0
177 | :100B0000AF919F918F917F916F915F914F913F91A5
178 | :100B10002F911F910F91FF90EF90DF90CF900F904A
179 | :100B20000FBE0F901F9018951F920F920FB60F9245
180 | :100B300011242F933F938F939F93AF93BF93EF9382
181 | :100B4000FF9380914C0190914D01A0914E01B09185
182 | :100B50004F01892B8A2B8B2B51F180914B01E09116
183 | :100B60004901F0914A0190818927808380914C014D
184 | :100B700090914D01A0914E01B0914F0118161906A8
185 | :100B80001A061B064CF580914C0190914D01A091E5
186 | :100B90004E01B0914F010197A109B10980934C0119
187 | :100BA00090934D01A0934E01B0934F0115C08091D9
188 | :100BB00071008D7F8093710090914B01E09149010C
189 | :100BC000F0914A018081282F30E0892F90E08095B4
190 | :100BD0009095822393238083FF91EF91BF91AF91F2
191 | :100BE0009F918F913F912F910F900FBE0F901F906B
192 | :100BF00018958F929F92AF92BF92CF92DF92EF9211
193 | :100C0000FF926B017C010E943C024B015C01C1140C
194 | :100C1000D104E104F104F1F00E943C02DC01CB01BB
195 | :100C200088199909AA09BB09883E9340A105B10515
196 | :100C300070F321E0C21AD108E108F10888EE880EAD
197 | :100C400083E0981EA11CB11CC114D104E104F1047D
198 | :100C500019F7DDCFFF90EF90DF90CF90BF90AF906E
199 | :100C60009F908F9008958F929F92AF92BF92CF9254
200 | :100C7000DF92EF92FF920F931F93CF93DF935C016C
201 | :100C80006B018A0180910B01882309F45EC0809179
202 | :100C90001402882309F459C08091570180FF05C0D0
203 | :100CA0008091E00082608093E000E8018AEFF82EF6
204 | :100CB00093E0E92E2FE3822E3AE3932E209709F456
205 | :100CC0003DC08FB7F894E092E9009091E80095FF5D
206 | :100CD00006C09091F200282D291B922F01C090E0B0
207 | :100CE0008FBF91110AC0FA94FF2079F161E070E0A2
208 | :100CF00080E090E00E94F905E1CF292F30E0C21793
209 | :100D0000D3070CF49C2F8FB7F894E092E900209160
210 | :100D1000E80025FF11C0292F30E0C21BD30BF601DC
211 | :100D2000915020F041914093F100FACFC20ED31EB2
212 | :100D30009091E80095FF13C08FBFC0CF5D9884E607
213 | :100D4000809355011016110644F081E090E0F50102
214 | :100D50009383828380E090E005C0C80103C0909235
215 | :100D6000E800EACFDF91CF911F910F91FF90EF90B4
216 | :100D7000DF90CF90BF90AF909F908F9008951F927B
217 | :100D80000F920FB60F9211242F933F938F939F933F
218 | :100D9000AF93BF9380912C0190912D01A0912E01D2
219 | :100DA000B0912F0130912B0123E0230F2D3720F438
220 | :100DB0000196A11DB11D05C026E8230F0296A11DB5
221 | :100DC000B11D20932B0180932C0190932D01A093B2
222 | :100DD0002E01B0932F018091300190913101A091AB
223 | :100DE0003201B09133010196A11DB11D80933001F4
224 | :100DF00090933101A0933201B0933301BF91AF9131
225 | :100E00009F918F913F912F910F900FBE0F901F9048
226 | :100E1000189583E08093E9008091F200882319F00F
227 | :100E20008AE38093E8000895FC0180911402811107
228 | :100E300003C08FEF9FEF08959FB7F89482E08093EF
229 | :100E4000E9002091F20030E01216130614F421E0BC
230 | :100E500030E02115310559F0289884E6809313027B
231 | :100E60008091F10080838091F200882319F09FBF68
232 | :100E7000C90108958BE68093E800F9CF80911902AB
233 | :100E800081110DC082E08093150284E080931602E8
234 | :100E9000109218021092170281E08093190285E1E6
235 | :100EA00092E0089590E0FC013197EF30F105B0F544
236 | :100EB000EA5AFF4F0C94F110809180008F7703C0A5
237 | :100EC000809180008F7D80938000089580918000C4
238 | :100ED000877FF9CF84B58F7702C084B58F7D84BDBD
239 | :100EE0000895809190008F7707C0809190008F7D4A
240 | :100EF00003C080919000877F809390000895809137
241 | :100F0000C0008F7703C08091C0008F7D8093C000A8
242 | :100F100008958091C200877F8093C2000895CF9387
243 | :100F2000DF93282F30E0F901EE5FFD4F8491F90146
244 | :100F3000E25DFE4FD491F901E55AFE4FC491CC23F6
245 | :100F400091F081110E945207EC2FF0E0EE0FFF1F8D
246 | :100F5000E05EFE4FA591B491EC91ED2381E090E02D
247 | :100F600021F480E002C080E090E0DF91CF9108950D
248 | :100F70001F93CF93DF93282F30E0F901EE5FFD4FF1
249 | :100F80008491F901E25DFE4FD491F901E55AFE4FDB
250 | :100F9000C491CC23C9F0162F81110E945207EC2F67
251 | :100FA000F0E0EE0FFF1FE35BFE4FA591B4918FB70A
252 | :100FB000F894111105C09C91ED2FE095E92302C032
253 | :100FC000EC91ED2BEC938FBFDF91CF911F910895A2
254 | :100FD000CF93DF9390E0FC01E25DFE4F2491FC0192
255 | :100FE000E55AFE4F8491882361F190E0880F991FA4
256 | :100FF000FC01EE5EFE4FC591D491FC01E35BFE4F18
257 | :10100000A591B491611109C09FB7F894888120958A
258 | :1010100082238883EC912E230BC0623061F49FB74A
259 | :10102000F8943881822F809583238883EC912E2B2E
260 | :101030002C939FBF06C08FB7F894E8812E2B28838E
261 | :101040008FBFDF91CF9108953F924F925F926F9241
262 | :101050007F928F929F92AF92BF92CF92DF92EF9248
263 | :10106000FF920F931F93CF93DF9300D000D0CDB7A3
264 | :10107000DEB729013A0190910C01981721F09F3FAA
265 | :1010800009F090C204C0E1E0F2E03490AEC0809379
266 | :101090000C01E1E0F2E0E491EF3F09F483C2E130BA
267 | :1010A00009F452C01CF5E1119FC014BC15BC94B5E5
268 | :1010B000926094BD95B5916095BD282F30E0F901FF
269 | :1010C000E55AFE4FE491F0E0EE0FFF1FE35BFE4FA9
270 | :1010D0004591549150933C0140933B01F901E25DED
271 | :1010E000FE4FE491E0933A01312C81C0E33009F4E2
272 | :1010F00053C0E43009F078C01092C0001092C100D3
273 | :101100009091C10098609093C1009091C10091604E
274 | :101110009093C100482F50E0FA01E55AFE4FE49148
275 | :10112000F0E0EE0FFF1FE35BFE4F2591349130930B
276 | :10113000360120933501FA01E25DFE4FE491E09320
277 | :101140003401B4E03B2E53C0109280001092810015
278 | :1011500090918100986090938100909181009160BE
279 | :1011600090938100282F30E0F901E55AFE4FE49179
280 | :10117000F0E0EE0FFF1FE35BFE4F4591549150935B
281 | :10118000390140933801F901E25DFE4FE491E093AB
282 | :101190003701332433942BC01092900010929100A9
283 | :1011A000909191009860909391009091910091603E
284 | :1011B00090939100282F30E0F901E55AFE4FE49119
285 | :1011C000F0E0EE0FFF1FE35BFE4F4591549150930B
286 | :1011D0004A0140934901F901E25DFE4FE491E09339
287 | :1011E0004B0103E0302E03C03E2E37FCDBC18B01E8
288 | :1011F00061E00E94E8074801A12CB12C832D8D7F6E
289 | :1012000009F0CCC060E072E18AE790E0A5019401AA
290 | :101210000E94D21029833A834B835C8369017A014F
291 | :1012200021E0C21AD108E108F1088FEFC816D104F5
292 | :10123000E104F10409F008F44BC060E472E48FE0CB
293 | :1012400090E0A50194010E94D21069017A0191E019
294 | :10125000C91AD108E108F108E2E03E121FC0FFEF11
295 | :10126000CF16D104E104F10409F008F4F4C060E9F8
296 | :1012700070ED83E090E0A50194010E94D210690115
297 | :101280007A0181E0C81AD108E108F1089FEFC91678
298 | :10129000D104E104F10409F010F5DDC0EFEFCE1642
299 | :1012A000D104E104F104B1F0A8F068E478EE81E043
300 | :1012B00090E0A50194010E94D21069017A01F1E049
301 | :1012C000CF1AD108E108F108332009F437C12CC145
302 | :1012D00081E001C082E0332009F45BC0BCC068E457
303 | :1012E00078EE81E090E0A50194010E94D21069019E
304 | :1012F0007A01F1E0CF1AD108E108F1082FEFC21608
305 | :10130000D104E104F10409F008F4A5C064E274EF2B
306 | :1013100080E090E0A50194010E94D21069017A0159
307 | :1013200081E0C81AD108E108F1089FEFC916D1047D
308 | :10133000E104F10409F008F48EC062E17AE780E08C
309 | :1013400090E0A50194010E94D21069017A0181E028
310 | :10135000C81AD108E108F1089FEFC916D104E104C9
311 | :10136000F10409F008F4DEC089819A81AB81BC8167
312 | :101370004AE0B595A795979587954A95D1F76C0161
313 | :101380007D01E1E0CE1AD108E108F108311063C017
314 | :1013900085E095B5987F892B85BD5DC060E072E1E1
315 | :1013A0008AE790E0A50194010E94D21069017A01B8
316 | :1013B000F1E0CF1AD108E108F108C114D10421E00D
317 | :1013C000E206F10488F068E478EE81E090E0A5019F
318 | :1013D00094010E94D21069017A0181E0C81AD108F3
319 | :1013E000E108F10883E001C081E091E039120FC00B
320 | :1013F00090918100987F892B809381004114510442
321 | :101400006104710469F52FEF3FEFA90157C0E3E0D4
322 | :101410003E120FC090919100987F892B809391008C
323 | :101420004114510461047104D9F42FEF3FEFA90175
324 | :1014300057C0F4E03F120FC09091C100987F892BF4
325 | :101440008093C100411451046104710449F42FEFE9
326 | :101450003FEFA90157C0411451046104710471F0B8
327 | :10146000D801AA0FBB1FA30192010E94F71028EE1A
328 | :1014700033E040E050E00E94B01003C02FEF3FEF98
329 | :10148000A90181E03816D1F083158CF031108AC0A3
330 | :10149000C7BC2093450130934601409347015093C8
331 | :1014A000480180916E00826080936E007BC093E063
332 | :1014B0003916B1F0E4E03E1629F174C0D0928900EB
333 | :1014C000C092880020934101309342014093430130
334 | :1014D0005093440180916F00826080936F0062C0DE
335 | :1014E000D0929900C092980020934C0130934D0106
336 | :1014F00040934E0150934F01809171008260809320
337 | :10150000710050C0C092CF0020933D0130933E0146
338 | :1015100040933F015093400180917200806480931A
339 | :10152000720040C086E0D7CEEFEFCE16D104E104C2
340 | :10153000F10411F008F001CF84E0CDCE8FEFC81692
341 | :10154000D104E104F104C9F0C0F062E17AE780E07F
342 | :1015500090E0A50194010E94D21069017A01F1E0A6
343 | :10156000CF1AD108E108F1082FEFC216D104E10427
344 | :10157000F10409F020F484E00CCF83E00ACF8981E4
345 | :101580009A81AB81BC812AE0B595A79597958795FF
346 | :101590002A95D1F76C017D01E1E0CE1AD108E1086E
347 | :1015A000F108F6CE0F900F900F900F90DF91CF9132
348 | :1015B0001F910F91FF90EF90DF90CF90BF90AF9071
349 | :1015C0009F908F907F906F905F904F903F90089585
350 | :1015D0006FEE89E591E00E940C026FEE89E591E0E3
351 | :1015E0000E940C026FEE89E591E00E940C020C94BF
352 | :1015F0000907CF92DF92EF92FF920F931F93CF9341
353 | :10160000DF9300D000D0CDB7DEB79FB7F894C0907D
354 | :101610002C01D0902D01E0902E01F0902F019FBF62
355 | :10162000082F10E089E591E049835A836B837C831E
356 | :101630000E94220249815A816B817C818017910727
357 | :10164000A4F42FB7F89480912C0190912D01A091D2
358 | :101650002E01B0912F012FBF8C199D09AE09BF0932
359 | :1016600084179507A607B707E8F289E591E00E947D
360 | :1016700022028017910724F40E94E80A80E001C04A
361 | :1016800081E00F900F900F900F90DF91CF911F91FD
362 | :101690000F91FF90EF90DF90CF900895E9E5F1E092
363 | :1016A0001382128288EE93E0A0E0B0E084839583F9
364 | :1016B000A683B78382E191E0918380838FEF9FEFD0
365 | :1016C000958784870895789484B5826084BD84B5B5
366 | :1016D000816084BD85B5826085BD85B5816085BD2D
367 | :1016E00080916E00816080936E00109281008091E5
368 | :1016F000810082608093810080918100816080936D
369 | :1017000081008091800081608093800080919100B1
370 | :10171000826080939100809191008160809391001C
371 | :10172000809190008160809390008091C1008460DE
372 | :101730008093C1008091C10082608093C10080913C
373 | :10174000C10081608093C1008091C300816080935B
374 | :10175000C3008091C00082608093C0008091C2006D
375 | :1017600081608093C20080917A00846080937A00C7
376 | :1017700080917A00826080937A0080917A00816003
377 | :1017800080937A0080917A00806880937A0010922A
378 | :10179000140210925801109257018091D700816075
379 | :1017A0008093D70080EA8093D80089B5806189BD95
380 | :1017B00089B5826089BD09B400FEFDCF61E070E0AB
381 | :1017C00080E090E00E94F9058091D8008F7C8061D4
382 | :1017D0008093D8008091E000807F8093E00080912A
383 | :1017E000E1008E7E8093E1008DE08093E200559AC7
384 | :1017F000209AEEEFFFE7859194918B3F9C4D19F471
385 | :1018000081E0809356018FEF9FEF90936601809364
386 | :101810006501C0910B016AE070E080E090E00E94F9
387 | :10182000F905CC23B1F3CFEFD0E0A1E0EA2EA2E09E
388 | :10183000FA2EB0E0CB2EB0E0DB2EE3EDF1E011921A
389 | :1018400062E0E331F607D9F789E591E00E942202D0
390 | :101850000497D0F389E591E00E9495028093D2012C
391 | :101860008F3F09F062C489E591E00E949502809360
392 | :10187000D2018E3F09F059C489E591E00E9495029A
393 | :101880008093D2018D3F09F050C489E591E00E9418
394 | :1018900095028093D2018C3F09F047C46CEF89E533
395 | :1018A00091E00E940C026DEF89E591E00E940C022C
396 | :1018B0006EEF89E591E00E940C026FEF89E591E0FF
397 | :1018C0000E940C020E9409074AEF50E060E070E0BD
398 | :1018D00083E00E94F90A882309F427C489E591E08E
399 | :1018E0000E9495028B3F910509F01FC489E591E0A4
400 | :1018F0000E9495028093D10189E591E00E949502B2
401 | :101900008093D001682F89E591E00E940C026091DC
402 | :10191000D10189E591E00E940C026BEF89E591E02D
403 | :101920000E940C020E9409078091D00148EE53E00A
404 | :1019300060E070E08C5F0E94F90A882309F4F5C327
405 | :10194000F3EDAF2EF1E0BF2E8091D00190E09C012D
406 | :101950002D5F3F4FA501435D51402417350744F0EB
407 | :1019600089E591E00E949502D5018D935D01ECCF50
408 | :10197000FC01ED52FE4F82818093CF01F901ED52BF
409 | :10198000FE4F80818093CE0148EE53E060E070E02E
410 | :1019900081E00E94F90A882309F4C7C389E591E030
411 | :1019A0000E9495028A3F910509F0BFC34091D00182
412 | :1019B000A42EB12CB2E0AB0EB11CE3ED8E2EE1E013
413 | :1019C0009E2EE0E0F0E020E030E0C401835D914035
414 | :1019D0008A159B0590F4D4018D914D01B901680FD2
415 | :1019E000711DCB01BE010E949C109C018E0F9F1F98
416 | :1019F000BE010E949C10FC01E8CFFE2FEE272E2B8B
417 | :101A00003F2B3093CD012093CC01F901FF27F093B8
418 | :101A1000CB01E093CA01232F33273093C9012093D0
419 | :101A2000C801C9018E0F9F1FBE010E949C109E011C
420 | :101A3000281B390B3093C7012093C601C9018E0FB3
421 | :101A40009F1FBE010E949C10BE01681B790B709302
422 | :101A5000C5016093C4018091CF0190E02817390738
423 | :101A600009F061C38091CE0190E06817790709F011
424 | :101A70005AC3E091D1018091D301E81354C38091FE
425 | :101A8000D401481350C38E2F90E0FC013197E5310B
426 | :101A9000F10508F048C3EB59FF4F0C94F11069EFC2
427 | :101AA00089E591E00E940C0263E089E591E00E94E3
428 | :101AB0000C0262E089E591E00E940C0261E089E598
429 | :101AC00091E00E940C0262E051C08091D501282F64
430 | :101AD00030E03093C3012093C2010E948F0790939E
431 | :101AE000C1018093C00169EF89E591E00E940C0279
432 | :101AF00063E089E591E00E940C0264E089E591E0F1
433 | :101B00000E940C026091C2012BC08091D501282F48
434 | :101B100030E03093BF012093BE012091D60130E028
435 | :101B20003093C1012093C0012115310511F460E00B
436 | :101B300004C02130310519F461E00E94B80769EF53
437 | :101B400089E591E00E940C0263E089E591E00E9442
438 | :101B50000C0266E089E591E00E940C026091BE01F2
439 | :101B600089E591E00E940C026091C00189E591E055
440 | :101B70000E940C020E940907D8C28091D501282F2B
441 | :101B800030E03093BF012093BE012091D60130E0B8
442 | :101B90003093C1012093C0012115310511F460E09B
443 | :101BA00009C02130310511F462E004C02230310552
444 | :101BB00019F461E00E94E80769EF89E591E00E946D
445 | :101BC0000C0263E089E591E00E940C0268E0C2CF5C
446 | :101BD000E091D5018E2F90E09093BD018093BC01E0
447 | :101BE000E23108F0E251F0E0EF5DFD4FE491209129
448 | :101BF0007B00E3FB002700F910E0C80155E0880FE7
449 | :101C0000991F5A95E1F7922F9F7D892B80937B0036
450 | :101C1000E77080910D0170E4879FC0011124E82BCB
451 | :101C2000E0937C0080917A00806480937A008091B8
452 | :101C30007A0086FDFCCF809178002091790090E0B9
453 | :101C4000922B9093BB018093BA0169EF89E591E0F3
454 | :101C50000E940C0264E089E591E00E940C026AE0B7
455 | :101C600089E591E00E940C026091BC0189E591E058
456 | :101C70000E940C026091BB0189E591E00E940C0278
457 | :101C80006091BA0173CF7090D501872C912C9092FE
458 | :101C9000B9018092B8016090D601A62CB12CB09207
459 | :101CA000B701A092B60161E0872D0E94E807A11458
460 | :101CB000B10409F481C08FEFA816B10409F47EC005
461 | :101CC000F401EE5FFD4FE4914E2F50E0FA013197A1
462 | :101CD000EF30F10508F06CC0E658FF4F0C94F1109E
463 | :101CE00084B5806884BD67BC6DC084B5806284BDE6
464 | :101CF00068BC68C080918000806880938000B0924A
465 | :101D00008900A09288005EC08091800080628093EC
466 | :101D10008000B0928B00A0928A0054C08091800015
467 | :101D2000886080938000B0928D00A0928C004AC0A1
468 | :101D300080919000806880939000B0929900A0926A
469 | :101D4000980040C080919000806280939000B09293
470 | :101D50009B00A0929A0036C080919000886080938A
471 | :101D60009000B0929D00A0929C002CC08091C00079
472 | :101D700080688093C0008091C0008F7B8093C000FA
473 | :101D80006092CF001FC08091C00080628093C0002D
474 | :101D90006092D00017C08091C20088608093C2001A
475 | :101DA0008091C2008B7F8093C2006092D2000AC0F3
476 | :101DB000A0E8AA16B10414F460E001C061E0872D28
477 | :101DC0000E94B80769EF89E591E00E940C0263E088
478 | :101DD00089E591E00E940C026CE089E591E00E94A7
479 | :101DE0000C026091B80189E591E00E940C026091BB
480 | :101DF000B601BCCE8091D501282F30E03093BF01D1
481 | :101E00002093BE016091D60170E0762F66279091F5
482 | :101E1000D701690F711D7093B5016093B4012091D2
483 | :101E2000DA0130E0322F22279091DB01290F311D9A
484 | :101E3000032E000C440B550B2093B0013093B101DD
485 | :101E40004093B2015093B30121153105410551056D
486 | :101E500019F420E030E0A9010E94240869EF89E527
487 | :101E600091E00E940C0261E089E591E00E940C0281
488 | :101E70006EE07CCE8091D501282F30E03093BF01F9
489 | :101E80002093BE0190910C01981320C0F70194910A
490 | :101E90002FEF20930C01913071F050F0933089F0C6
491 | :101EA0009430A1F4909172009F7B909372000EC0C9
492 | :101EB00010926E000BC090916F009D7F90936F0009
493 | :101EC00005C0909171009D7F9093710060E00E9429
494 | :101ED000B80769EF89E591E00E940C0261E089E5AD
495 | :101EE00091E00E940C0260E141CE8091D50190E02A
496 | :101EF0009093AF018093AE01009711F481E00CC084
497 | :101F00008130910541F08230910511F482E004C0E6
498 | :101F10008330910521F483E080930D0104C0049780
499 | :101F200011F410920D0169EF89E591E00E940C0215
500 | :101F300062E089E591E00E940C0262E189E591E0AE
501 | :101F40000E940C026091AE0111CE8090D501882DC7
502 | :101F500090E09093BF018093BE019090D601892DAF
503 | :101F600090E09093AD018093AC018091D701809374
504 | :101F7000AB01A090D801A092AA01811142C0612CAE
505 | :101F8000712CB12CB501062C02C0759567950A9489
506 | :101F9000E2F761707727882D0E94B80761E0892DEC
507 | :101FA0000E94B80760E0892D0E94B807FFEF6F1A02
508 | :101FB0007F0A28E06216710429F769EF89E591E04C
509 | :101FC0000E940C0265E089E591E00E940C0264E148
510 | :101FD00089E591E00E940C026091BE0189E591E0E3
511 | :101FE0000E940C026091AC0189E591E00E940C0214
512 | :101FF0006091AB0189E591E00E940C026091AA0119
513 | :10200000B5CD8130D1F697E0692E712CB12CB50198
514 | :10201000062C02C0759567950A94E2F761707727E0
515 | :10202000882D0E94B80761E0892D0E94B80760E002
516 | :10203000892D0E94B80761E0661A710840F7BDCF8C
517 | :102040007090D501872D90E09093BF018093BE01E1
518 | :10205000B090D6018B2D90E09093AD018093AC01B0
519 | :102060008091D7018093AB0181111CC0812C912CF0
520 | :10207000A12C61E08B2D0E94B807872D0E948F074D
521 | :10208000082C01C0880F0A94EAF7A82A60E08B2D7B
522 | :102090000E94B8078FEF881A980AA8E08A16910460
523 | :1020A00041F71BC08130D9F487E0882E912CA12CF8
524 | :1020B00061E08B2D0E94B807872D0E948F07082CA6
525 | :1020C00001C0880F0A94EAF7A82A60E08B2D0E94CD
526 | :1020D000B807B1E08B1A910858F7A092A90169EFEF
527 | :1020E00089E591E00E940C0265E089E591E00E949B
528 | :1020F0000C0266E189E591E00E940C026091BE014C
529 | :1021000089E591E00E940C026091AC0189E591E0C3
530 | :102110000E940C026091AB0189E591E00E940C02E3
531 | :102120006091A90123CD0E94E80AC114D10409F4E9
532 | :1021300084CB0E94000081CBAA1BBB1B51E107C0CE
533 | :10214000AA1FBB1FA617B70710F0A61BB70B881F47
534 | :10215000991F5A95A9F780959095BC01CD010895D6
535 | :10216000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F9B
536 | :10217000EE1FFF1FA217B307E407F50720F0A21B0D
537 | :10218000B30BE40BF50B661F771F881F991F1A947A
538 | :1021900069F760957095809590959B01AC01BD01A4
539 | :1021A000CF010895052E97FB1EF400940E94E910BC
540 | :1021B00057FD07D00E94B01007FC03D04EF40C94DA
541 | :1021C000E91050954095309521953F4F4F4F5F4F07
542 | :1021D000089590958095709561957F4F8F4F9F4F93
543 | :1021E0000895EE0FFF1F0590F491E02D09940E94D1
544 | :1021F0000211A59F900DB49F900DA49F800D911D7D
545 | :1022000011240895A29FB001B39FC001A39F700D38
546 | :10221000811D1124911DB29F700D811D1124911DEE
547 | :062220000895F894FFCFC1
548 | :10222600FFFFFFFF00E1000000000000FF010000CB
549 | :1022360000000C02330622029502B302610200C1BD
550 | :0622460080810000000091
551 | :00000001FF
552 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino.Mega2560.hex:
--------------------------------------------------------------------------------
1 | :100000003CC100006AC1000068C1000066C1000078
2 | :1000100064C1000062C1000060C100005EC1000058
3 | :100020005CC100005AC1000058C1000056C1000068
4 | :1000300054C100003FC3000050C100004EC1000089
5 | :100040004CC100004AC1000048C1000046C1000088
6 | :1000500044C1000042C1000040C10000E9C30000EB
7 | :100060003CC10000AFC3000084C3000036C10000E3
8 | :1000700034C1000032C1000030C100002EC10000B8
9 | :100080002CC100002AC1000028C1000026C10000C8
10 | :1000900024C1000022C1000020C100001EC10000D8
11 | :1000A0001CC100001AC1000018C1000016C10000E8
12 | :1000B00014C1000012C1000010C100000EC10000F8
13 | :1000C0000CC100000AC1000008C1000006C1000008
14 | :1000D00004C1000002C1000000C10000FEC0000019
15 | :1000E000FCC00000AB02AE029D02A102A702E50225
16 | :1000F000B202B602BC02C002C402CA02CE02D202DE
17 | :10010000E502D802DC02E002430A4C0D560A4C0D0F
18 | :100110006E0A4C0D960A4C0DBD0A4C0D050B4C0D8C
19 | :10012000E70B4C0D240C4C0D380C4C0D690C4C0D90
20 | :10013000DD0C300B350B3A0B440B4E0BC70B580B39
21 | :10014000600B680B720B7C0B860B950B9F0BC70B20
22 | :10015000A90BB30BBD0B00002100240027002A00CF
23 | :100160002D003000330001010000040107010A01E5
24 | :10017000000020002300260029002C002F00320060
25 | :1001800000010000030106010901010210202008FE
26 | :1001900008102040102040800201020108040201E2
27 | :1001A0000102040810204080804020100804020151
28 | :1001B00080040201804020100804020108040201AA
29 | :1001C0000102040810204080010204081020408031
30 | :1001D00000002200250028002B002E0031003400F2
31 | :1001E00002010000050108010B01050505050705D1
32 | :1001F00008080808020202020A0A080804040404A3
33 | :1002000001010101010101010303030303030303CE
34 | :10021000040707070C0C0C0C0C0C0C0C020202025D
35 | :1002200006060606060606060B0B0B0B0B0B0B0B46
36 | :100230000200000A0B02090C0D0E0807030401005E
37 | :1002400000000000000000000000000000000000AE
38 | :10025000000000000000000000000000001211106B
39 | :10026000000000000000000000000000000000008E
40 | :100270000000000000000000500D11241FBECFEF51
41 | :10028000D1E2DEBFCDBF00E00CBF12E0A0E0B2E0E3
42 | :10029000ECEEFBE100E00BBF02C007900D92A23133
43 | :1002A000B107D9F723E0A2E1B2E001C01D92AC345E
44 | :1002B000B207E1F711E0CDE3D1E000E006C02197FD
45 | :1002C0000109802FFE010E94CF0DCC33D10780E0C1
46 | :1002D0000807A9F71DD70C94F40D92CECF92DF92A8
47 | :1002E000EF92FF920F931F93CF93DF936C017A01EC
48 | :1002F0008B01C0E0D0E0CE15DF0589F0D8016D910B
49 | :100300008D01D601ED91FC910190F081E02DC601A7
50 | :100310001995892B11F47E0102C02196ECCFC701FB
51 | :10032000DF91CF911F910F91FF90EF90DF90CF90D1
52 | :100330000895FC01918D828D981761F0828DDF0107
53 | :10034000A80FB11D5D968C91928D9F5F9F73928FC8
54 | :1003500090E008958FEF9FEF0895FC01918D828DBD
55 | :10036000981731F0828DE80FF11D858D90E008958A
56 | :100370008FEF9FEF0895FC01918D228D892F90E0E2
57 | :10038000805C9F4F821B91098F73992708958FEA94
58 | :1003900092E0F1DF21E0892B09F420E0822F08951B
59 | :1003A000FC01848DDF01A80FB11DA35ABF4F2C9112
60 | :1003B000848D90E001968F739927848FA689B789E1
61 | :1003C0002C93A089B1898C9180648C93938D848DBA
62 | :1003D000981306C00288F389E02D80818F7D808389
63 | :1003E0000895EF92FF920F931F93CF93DF93EC0149
64 | :1003F00081E0888F9B8D8C8D981305C0E889F989E1
65 | :10040000808185FD23C0F62E0B8D10E00F5F1F4FFE
66 | :100410000F731127E02E8C8DE8120BC00FB607FC6E
67 | :10042000FACFE889F989808185FFF5CFCE01B8DF61
68 | :10043000F2CF8B8DFE01E80FF11DE35AFF4FF082E2
69 | :100440000B8FEA89FB898081806207C0EE89FF8972
70 | :100450006083E889F98980818064808381E090E00D
71 | :10046000DF91CF911F910F91FF90EF900895CF935F
72 | :10047000DF93EC01888D8823C1F0EA89FB898081B4
73 | :1004800085FD05C0A889B9898C9186FD0EC00FB67F
74 | :1004900007FCF5CF808185FFF2CFA889B9898C91BF
75 | :1004A00085FFEDCFCE017CDFE8CFDF91CF910895BE
76 | :1004B00080E090E0892B19F06ADF811125C080E08F
77 | :1004C00090E0892B41F080E090E0892B21F00E94A0
78 | :1004D000000081111CC080E090E0892B41F080E099
79 | :1004E00090E0892B21F00E940000811113C080E070
80 | :1004F00090E0892BA1F080E090E0892B81F00E94B0
81 | :10050000000081110AC008950E940000D8CF0E9407
82 | :100510000000E1CF0E940000EACF0C940000089593
83 | :1005200090E0FC013197E231F10508F04EC08827D8
84 | :10053000EE58FF4F8F4F0C94CF0D809180008F7736
85 | :1005400003C0809180008F7D80938000089580910A
86 | :100550008000877FF9CF84B58F7702C084B58F7D07
87 | :1005600084BD08958091B0008F7703C08091B00062
88 | :100570008F7D8093B0000895809190008F7707C0A1
89 | :10058000809190008F7D03C080919000877F809341
90 | :10059000900008958091A0008F7707C08091A000FF
91 | :1005A0008F7D03C08091A000877F8093A000089575
92 | :1005B000809120018F7707C0809120018F7D03C03B
93 | :1005C00080912001877F8093200108951F93CF930E
94 | :1005D000DF93282F30E0F901EF5CFD4F8491F901A2
95 | :1005E000E657FE4FD491F901E651FE4FC491CC235A
96 | :1005F000C1F0162F811194DFEC2FF0E0EE0FFF1FFA
97 | :10060000E053FE4FA591B4918FB7F894111105C036
98 | :100610009C91ED2FE095E92302C0EC91ED2BEC933A
99 | :100620008FBFDF91CF911F91089590910002981391
100 | :100630003DC0E0E3F2E0E4919FEF90930002E230EE
101 | :10064000C9F050F4EE2399F0E13081F590916F00FC
102 | :100650009D7F90936F002AC0E43019F1E0F0E530FF
103 | :1006600029F5909173009D7F909373001FC01092A5
104 | :100670006E001CC0909170009D7F9093700091E07F
105 | :100680009093B0009091B100987F94609093B100E6
106 | :100690001092B3000BC0909171009D7F90937100F8
107 | :1006A00005C0909172009D7F9093720060E08ECFA4
108 | :1006B0000E94F00D1F920F920FB60F9211240BB6ED
109 | :1006C0000F922F933F934F935F936F937F938F93EB
110 | :1006D0009F93AF93BF93EF93FF93809141029091CB
111 | :1006E0004202A0914302B0914402892B8A2B8B2BAA
112 | :1006F00051F180914002E0913E02F0913F029081E1
113 | :10070000892780838091410290914202A091430207
114 | :10071000B0914402181619061A061B06BCF4809103
115 | :10072000410290914202A0914302B091440201978C
116 | :10073000A109B1098093410290934202A093430220
117 | :10074000B093440203C0809100026FDFFF91EF91EC
118 | :10075000BF91AF919F918F917F916F915F914F91D9
119 | :100760003F912F910F900BBE0F900FBE0F901F90D7
120 | :1007700018951F920F920FB60F9211240BB60F927D
121 | :100780002F933F934F935F936F937F938F939F9399
122 | :10079000AF93BF93EF93FF938FEA92E001DEFF9157
123 | :1007A000EF91BF91AF919F918F917F916F915F91E9
124 | :1007B0004F913F912F910F900BBE0F900FBE0F9056
125 | :1007C0001F9018951F920F920FB60F9211240BB61F
126 | :1007D0000F922F938F939F93EF93FF93E091BF021C
127 | :1007E000F091C0028081E091C502F091C60282FDC5
128 | :1007F00012C090818091C8028F5F8F732091C902CF
129 | :10080000821751F0E091C802F0E0E155FD4F958F5D
130 | :100810008093C80201C08081FF91EF919F918F91D9
131 | :100820002F910F900BBE0F900FBE0F901F90189539
132 | :100830001F920F920FB60F9211242F933F938F9315
133 | :100840009F93AF93BF938091170290911802A0914C
134 | :100850001902B0911A023091160223E0230F2D37AE
135 | :1008600020F40196A11DB11D05C026E8230F0296B4
136 | :10087000A11DB11D209316028093170290931802B8
137 | :10088000A0931902B0931A02809112029091130260
138 | :10089000A0911402B09115020196A11DB11D809383
139 | :1008A000120290931302A0931402B0931502BF9109
140 | :1008B000AF919F918F913F912F910F900FBE0F900D
141 | :1008C0001F901895682F8FEA92E08BCD682F8FEAE2
142 | :1008D00092E087CDCF93DF93282F30E0F901EF5CD2
143 | :1008E000FD4F8491F901E657FE4FD491F901E6518D
144 | :1008F000FE4FC491CC2389F0811112DEEC2FF0E081
145 | :10090000EE0FFF1FE059FE4FA591B491EC91ED233E
146 | :1009100081E090E021F480E002C080E090E0DF918F
147 | :10092000CF910895CF93DF9390E0FC01E657FE4FFF
148 | :100930002491FC01E651FE4F8491882361F190E0FF
149 | :10094000880F991FFC01EA5AFE4FC591D491FC0112
150 | :10095000E053FE4FA591B491611109C09FB7F8947F
151 | :100960008881209582238883EC912E230BC06230EE
152 | :1009700061F49FB7F8943881822F80958323888310
153 | :10098000EC912E2B2C939FBF06C08FB7F894E88173
154 | :100990002E2B28838FBFDF91CF9108953F924F92E6
155 | :1009A0005F926F927F928F929F92AF92BF92CF92FF
156 | :1009B000DF92EF92FF920F931F93CF93DF9300D0BC
157 | :1009C0001F92CDB7DEB729013A0190910002981726
158 | :1009D00021F09F3F09F025C304C0E0E3F2E034902A
159 | :1009E00004C180930002E0E3F2E0E491EF3F09F4F8
160 | :1009F00018C3E23009F480C074F5EE2309F45BC03B
161 | :100A0000E13009F0F1C010928000109281009091C5
162 | :100A10008100986090938100909181009160909303
163 | :100A20008100282F30E0F901E651FE4FE491F0E01B
164 | :100A3000EE0FFF1FE053FE4F459154915093260255
165 | :100A400040932502F901E657FE4FE491E09324021A
166 | :100A500033243394CCC0E43009F49EC00CF474C049
167 | :100A6000E53009F0C1C0109220011092210190914F
168 | :100A700021019860909321019091210191609093C0
169 | :100A80002101482F50E0FA01E651FE4FE491F0E0D9
170 | :100A9000EE0FFF1FE053FE4F2591349130931D025E
171 | :100AA00020931C02FA01E657FE4FE491E0931B02EB
172 | :100AB000B5E03B2E9CC014BC15BC94B5926094BDAF
173 | :100AC00095B5916095BD282F30E0F901E651FE4FB4
174 | :100AD000E491F0E0EE0FFF1FE053FE4F459154917B
175 | :100AE0005093290240932802F901E657FE4FE49102
176 | :100AF000E0932702312C7BC01092B0001092B1001D
177 | :100B00009091B00092609093B0009091B10091608C
178 | :100B10009093B100282F30E0F901E651FE4FE491A7
179 | :100B2000F0E0EE0FFF1FE053FE4F459154915093BC
180 | :100B30003F0240933E02F901E657FE4FE491E093F5
181 | :100B4000400252E0352E53C0109290001092910056
182 | :100B50009091910098609093910090919100916094
183 | :100B600090939100282F30E0F901E651FE4FE49177
184 | :100B7000F0E0EE0FFF1FE053FE4F4591549150936C
185 | :100B8000230240932202F901E657FE4FE491E093DD
186 | :100B9000210223E0322E2BC01092A0001092A1005F
187 | :100BA0009091A10098609093A1009091A100916014
188 | :100BB0009093A100282F30E0F901E651FE4FE49117
189 | :100BC000F0E0EE0FFF1FE053FE4F4591549150931C
190 | :100BD000200240931F02F901E657FE4FE491E09393
191 | :100BE0001E0204E0302E03C03E2E37FC1AC28B01D9
192 | :100BF00061E098DE4801A12CB12C832D8D7F09F096
193 | :100C0000B5C060E072E18AE790E0A5019401ABD73E
194 | :100C100029833A834B835C8369017A0121E0C21AFC
195 | :100C2000D108E108F1088FEFC816D104E104F104FE
196 | :100C300009F008F449C060E472E48FE090E0A50197
197 | :100C4000940191D769017A0191E0C91AD108E108AC
198 | :100C5000F108E2E03E121FC0FFEFCF16D104E1041D
199 | :100C6000F10409F008F4DBC160E970ED83E090E085
200 | :100C7000A501940178D769017A0181E0C81AD108E9
201 | :100C8000E108F1089FEFC916D104E104F10409F06D
202 | :100C9000C8F583E064C0EFEFCE16D104E104F1049F
203 | :100CA000A9F0A0F068E478EE81E090E0A50194015D
204 | :100CB0005AD769017A01F1E0CF1AD108E108F108A9
205 | :100CC000332009F454C1A2C181E001C082E0332085
206 | :100CD000A1F045C089819A81AB81BC812AE0B5959C
207 | :100CE000A795979587952A95D1F76C017D01F1E03D
208 | :100CF000CF1AD108E108F10885E095B5987F892BD6
209 | :100D000085BDA2C068E478EE81E090E0A501940181
210 | :100D10002AD769017A0181E0C81AD108E108F108EF
211 | :100D20009FEFC916D104E104F10409F008F41DC1D4
212 | :100D300064E274EF80E090E0A501940114D76901AA
213 | :100D40007A0181E0C81AD108E108F1089FEFC916BD
214 | :100D5000D104E104F10411F008F02AC185E090917A
215 | :100D6000B100987F892B8093B1006EC060E072E182
216 | :100D70008AE790E0A5019401F6D669017A01F1E0D5
217 | :100D8000CF1AD108E108F108C114D10421E0E2062C
218 | :100D9000F10480F068E478EE81E090E0A501940130
219 | :100DA000E2D669017A0181E0C81AD108E108F108A8
220 | :100DB00083E001C081E091E0391210C09091810080
221 | :100DC000987F892B80938100411451046104710440
222 | :100DD00009F03FC02FEF3FEFA9016FC0E3E03E12E3
223 | :100DE0000FC090919100987F892B809391004114BE
224 | :100DF00051046104710469F52FEF3FEFA9017FC031
225 | :100E0000F4E03F120FC09091A100987F892B80934E
226 | :100E1000A1004114510461047104D9F42FEF3FEF94
227 | :100E2000A9017FC025E032120FC090912101987F67
228 | :100E3000892B80932101411451046104710449F408
229 | :100E40002FEF3FEFA9017FC04114510461047104E9
230 | :100E500061F0D801AA0FBB1FA3019201A8D628EE0A
231 | :100E600033E040E050E05DD603C02FEF3FEFA90133
232 | :100E700082E03816A1F1831534F0332079F091E047
233 | :100E80003916D9F0CEC0E4E03E1609F44AC03E1649
234 | :100E9000B4F1F5E03F1609F456C0C3C0C7BC2093B7
235 | :100EA0003A0230933B0240933C0250933D028091C2
236 | :100EB0006E00826080936E00B4C0D0928900C092B0
237 | :100EC00088002093360230933702409338025093C3
238 | :100ED000390280916F00826080936F00A2C0C0923F
239 | :100EE000B300209341023093420240934302509357
240 | :100EF00044028091700082608093700092C0D09212
241 | :100F00009900C092980020933202309333024093AC
242 | :100F10003402509335028091710082608093710099
243 | :100F200080C0D092A900C092A80020932E023093D6
244 | :100F30002F02409330025093310280917200826000
245 | :100F4000809372006EC0D0922901C0922801209334
246 | :100F50002A0230932B0240932C0250932D02809151
247 | :100F600073008260809373005CC084E0F8CE2FEF42
248 | :100F7000C216D104E104F104C9F0C0F062E17AE7DD
249 | :100F800080E090E0A5019401EED569017A01E1E0ED
250 | :100F9000CE1AD108E108F108FFEFCF16D104E10421
251 | :100FA000F10411F008F096CE84E0A7CE83E0A5CE40
252 | :100FB00062E17AE780E090E0A5019401D4D569016F
253 | :100FC0007A0181E0C81AD108E108F1089FEFC9163B
254 | :100FD000D104E104F104C1F0B8F089819A81AB81B8
255 | :100FE000BC814AE0B595A795979587954A95D1F725
256 | :100FF0006C017D01E1E0CE1AD108E108F10833204F
257 | :1010000009F47ACE87E0ABCE86E061CEEFEFCE1664
258 | :10101000D104E104F10409F058F684E058CE82E0EE
259 | :101020009ECE0F900F900F900F90DF91CF911F9158
260 | :101030000F91FF90EF90DF90CF90BF90AF909F9077
261 | :101040008F907F906F905F904F903F9008956FEEDC
262 | :101050008FEA92E0C6D96FEE8FEA92E0C2D96FEEC6
263 | :101060008FEA92E0BED98FEA92E001CACF92DF9276
264 | :10107000EF92FF920F931F93CF93DF9300D01F92B5
265 | :10108000CDB7DEB79FB7F894C0901702D090180282
266 | :10109000E0901902F0901A029FBF082F10E08FEA2B
267 | :1010A00092E049835A836B837C8365D949815A8155
268 | :1010B0006B817C8180179107A4F42FB7F8948091FD
269 | :1010C000170290911802A0911902B0911A022FBF35
270 | :1010D0008C199D09AE09BF0984179507A607B707A4
271 | :1010E000F0F28FEA92E047D9801791071CF4AFDF46
272 | :1010F00080E001C081E00F900F900F900F90DF9182
273 | :10110000CF911F910F91FF90EF90DF90CF900895B6
274 | :10111000789484B5826084BD84B5816084BD85B5D2
275 | :10112000826085BD85B5816085BD80916E008160DE
276 | :1011300080936E0010928100809181008260809384
277 | :101140008100809181008160809381008091800086
278 | :101150008160809380008091B10084608093B100B1
279 | :101160008091B00081608093B00080919100826096
280 | :101170008093910080919100816080939100809193
281 | :1011800090008160809390008091A10082608093A4
282 | :10119000A1008091A10081608093A1008091A000B6
283 | :1011A00081608093A0008091210182608093210161
284 | :1011B00080912101816080932101809120018160D3
285 | :1011C0008093200180917A00846080937A008091DE
286 | :1011D0007A00826080937A0080917A0081608093A7
287 | :1011E0007A0080917A00806880937A001092C10022
288 | :1011F000E091BF02F091C00282E08083E091BB02E7
289 | :10120000F091BC021082E091BD02F091BE0280E13B
290 | :1012100080831092C702E091C302F091C40286E07D
291 | :101220008083E091C102F091C2028081806180835D
292 | :10123000E091C102F091C202808188608083E091D8
293 | :10124000C102F091C202808180688083E091C10276
294 | :10125000F091C20280818F7D8083EE24EA94F12C8C
295 | :10126000A2E0CA2EEFE6F2E0119242E0EF3AF40774
296 | :10127000D9F78FEA92E07FD80497D8F38FEA92E00B
297 | :1012800058D880936E028F3F09F007C48FEA92E02E
298 | :1012900050D880936E028E3F09F0FFC38FEA92E030
299 | :1012A00048D880936E028D3F09F0F7C38FEA92E031
300 | :1012B00040D880936E028C3F09F0EFC38CEF90E032
301 | :1012C00005DB8DEF90E002DB8EEF90E0FFDA8FEF31
302 | :1012D00090E0FCDA8FEA92E0CAD84AEF50E060E092
303 | :1012E00070E083E0C3DE882309F4D7C38FEA92E07D
304 | :1012F00020D88B3F910509F0D0C38FEA92E019D82E
305 | :10130000182F80936D028FEA92E013D8EC01982E8B
306 | :1013100080936C02682F8FEA92E063D8612F8FEA86
307 | :1013200092E05FD86BEF8FEA92E05BD88FEA92E0B1
308 | :101330009ED848EE53E060E070E08C2F8C5F96DE24
309 | :10134000882309F4AAC3EFE66E2EE2E07E2EDD27A5
310 | :101350005E01B3E0AB0EB11CC3018F569240A816DC
311 | :10136000B90644F08FEA92E00E949901D3018D936F
312 | :101370003D01F2CF2296FE01E159FD4FD080D0927F
313 | :101380006B02F501E159FD4F008100936A0248EEBE
314 | :1013900053E060E070E081E069DE882309F47DC3FA
315 | :1013A0008FEA92E00E9499018A3F910509F075C386
316 | :1013B0007FE6A72E72E0B72EE0E0F0E020E030E01C
317 | :1013C000C5018F5692408C179D0780F4D5018D91F1
318 | :1013D0005D01A901480F511DCA01B7018ED39C01BF
319 | :1013E0008E0F9F1FB70189D3FC01EACFFE2FEE2796
320 | :1013F0002E2B3F2B3093690220936802F901FF27BF
321 | :10140000F0936702E0936602232F3327309365023F
322 | :1014100020936402C9018E0F9F1FB7016ED39701FD
323 | :10142000281B390B3093630220936202C9018E0F8F
324 | :101430009F1FB70162D3A701481B590B509361024C
325 | :10144000409360028D2D90E02817390709F024C3DE
326 | :10145000802F90E04817590709F01EC380916F0252
327 | :1014600018131AC380917002981216C3812F90E04E
328 | :10147000FC013197E531F10508F00EC38827EC57E0
329 | :10148000FF4F8F4F8CC369EF8FEA92E00E94F1010A
330 | :1014900083E090E01BDA62E08FEA92E00E94F101C3
331 | :1014A00081E090E00FDA82E090E010C2809171025A
332 | :1014B000082F10E010935F0200935E020BDAEC013C
333 | :1014C00090935D0280935C0269EF8FEA92E00E9444
334 | :1014D000F10183E090E0FAD964E021C080917102CB
335 | :1014E000082F10E010935B0200935A02C091720221
336 | :1014F000D0E0D0935D02C0935C02209711F460E0CD
337 | :1015000004C0C130D10511F461E060D869EF8FEA01
338 | :1015100092E00E94F10183E090E0D8D966E08FEA82
339 | :1015200092E00E94F101C801CDD9CFC18091710232
340 | :10153000082F10E010935B0200935A02C0917202D0
341 | :10154000D0E0D0935D02C0935C02209711F460E07C
342 | :1015500009C0C130D10511F462E004C0C230D10528
343 | :1015600011F461E0DFD969EF8FEA92E00E94F101A6
344 | :1015700083E090E0ABD968E0D2CF80917102282F50
345 | :1015800030E03093590220935802863308F0865396
346 | :1015900090917B00282F2870977F922B90937B004F
347 | :1015A00087702091010250E4259F90011124822B25
348 | :1015B00080937C0080917A00806480937A0080918F
349 | :1015C0007A0086FDFCCFC091780080917900D0E050
350 | :1015D000D82BD0935702C093560269EF8FEA92E05E
351 | :1015E0000E94F10184E090E071D96AE08FEA92E014
352 | :1015F0000E94F101809158029091590263D98D2F78
353 | :1016000090E060D9CE01992761C1D09071020D2D73
354 | :1016100010E01093550200935402B0907202CB2D4B
355 | :10162000D0E0D0935302C093520261E08D2D7AD95D
356 | :10163000209709F4AFC0CF3FD10509F4ADC0F80140
357 | :10164000EF5CFD4FE4914E2F50E0FA013197E2310B
358 | :10165000F10508F09CC08827E756FF4F8F4F9FC2C7
359 | :1016600084B5806884BDB7BC9BC084B5806284BDEE
360 | :10167000B8BC96C080918000806880938000D09331
361 | :101680008900C09388008CC0809180008062809324
362 | :101690008000D0938B00C0938A0082C0809180002C
363 | :1016A000886080938000D0938D00C0938C0078C0B8
364 | :1016B0008091B00080688093B000B092B30070C099
365 | :1016C0008091B00080628093B000B092B40068C096
366 | :1016D00080919000806880939000D0939900C0938F
367 | :1016E00098005EC080919000806280939000D093BB
368 | :1016F0009B00C0939A0054C08091900088608093B2
369 | :101700009000D0939D00C0939C004AC08091A0009F
370 | :1017100080688093A0008091A0008F7B8093A000C0
371 | :10172000D093A900C093A8003BC08091A000806224
372 | :101730008093A000D093AB00C093AA0031C08091E9
373 | :10174000A00088608093A000D093AD00C093AC004F
374 | :1017500027C080912001806880932001D0932901C7
375 | :10176000C09328011DC080912001806280932001D8
376 | :10177000D0932B01C0932A0113C08091200188606F
377 | :1017800080932001D0932D01C0932C0109C0C03853
378 | :10179000D10514F460E001C061E08D2D0E94E602E5
379 | :1017A00069EF8FEA92E00E94F10183E090E08ED829
380 | :1017B0006CE08FEA92E00E94F101809154029091D6
381 | :1017C000550280D880915202909153027FC080913F
382 | :1017D0007102282F30E030935B0220935A0260910F
383 | :1017E000720270E0762F662790917302690F711D67
384 | :1017F00070935102609350022091760230E0322FB4
385 | :10180000222790917702290F311D032E000C440BE3
386 | :10181000550B20934C0230934D0240934E0250934F
387 | :101820004F02211531054105510519F420E030E042
388 | :10183000A901B4D869EF8FEA92E00E94F10181E03A
389 | :1018400090E044D86EE01FC180917102282F30E0F3
390 | :1018500030935B0220935A020E94150369EF8FEACE
391 | :1018600092E00E94F10181E090E030D860E10BC18C
392 | :10187000C0917102D0E0D0934B02C0934A022097EE
393 | :1018800011F481E00DC0C130D10549F0C230D1055D
394 | :1018900019F4C09201020CC0C330D10521F483E0D9
395 | :1018A0008093010205C0C430D10511F410920102E9
396 | :1018B00069EF8FEA92E00E94F10182E090E006D8A1
397 | :1018C00062E18FEA92E00E94F101CE010E9462047F
398 | :1018D000DEC000917102A02EB12CB0925B02A092EA
399 | :1018E0005A02C09172028C2E912C909249028092E1
400 | :1018F0004802D0917302D093470210917402109362
401 | :101900004602D1113AC0412C512C612E712CB301E9
402 | :10191000042C02C0759567950A94E2F761707727E9
403 | :10192000802F0E94E60261E08C2F0E94E60260E0B8
404 | :101930008C2F0E94E6028FEF481A580A98E0491649
405 | :10194000510429F769EF8FEA92E00E94F10185E0E6
406 | :1019500090E00E94660464E18FEA92E00E94F10147
407 | :10196000C5010E946204C4010E9462046D2F8FEAC7
408 | :1019700092E00E94F101612F86C0D13019F787E013
409 | :10198000482E512C612E712CB301042C02C0759588
410 | :1019900067950A94E2F761707727802F0E94E6022C
411 | :1019A00061E08C2F0E94E60260E08C2F0E94E6022C
412 | :1019B000A1E04A1A510840F7C5CF70907102872CF8
413 | :1019C000912C90925B0280925A02C0917202AC2ECE
414 | :1019D000B12CB0924902A0924802D0917302D093E8
415 | :1019E0004702D1111AC000E010E0D12C61E08C2F29
416 | :1019F0000E94E602872D0E946A04002E01C0880F13
417 | :101A00000A94EAF7D82A60E08C2F0E94E6020F5F62
418 | :101A10001F4F0830110551F719C0D130C9F407E044
419 | :101A200010E0D12C61E08C2F0E94E602872D0E94ED
420 | :101A30006A04002E01C0880F0A94EAF7D82A60E0F1
421 | :101A40008C2F0E94E6020150110960F7D0924502E6
422 | :101A500069EF8FEA92E00E94F10185E090E00E9438
423 | :101A6000660466E18FEA92E00E94F101C4010E94DF
424 | :101A70006204C5010E9462046D2F8FEA92E00E9409
425 | :101A8000F101609145028FEA92E00E94F1018FEA34
426 | :101A900092E00E94370201C0DADA0E945802E2CBDB
427 | :101AA000EFEAF2E01382128288EE93E0A0E0B0E069
428 | :101AB00084839583A683B78386E092E091838083B5
429 | :101AC00085EC90E09587848784EC90E09787868703
430 | :101AD00080EC90E0918B808B81EC90E0938B828BFB
431 | :101AE00082EC90E0958B848B86EC90E0978B868BD4
432 | :101AF000118E128E138E148E0895AA1BBB1B51E1FA
433 | :101B000007C0AA1FBB1FA617B70710F0A61BB70B6D
434 | :101B1000881F991F5A95A9F780959095BC01CD0112
435 | :101B20000895A1E21A2EAA1BBB1BFD010DC0AA1F1E
436 | :101B3000BB1FEE1FFF1FA217B307E407F50720F036
437 | :101B4000A21BB30BE40BF50B661F771F881F991FB1
438 | :101B50001A9469F760957095809590959B01AC01FA
439 | :101B6000BD01CF010895052E97FB16F400940FD008
440 | :101B700057FD05D0D6DF07FC02D046F408C05095CB
441 | :101B80004095309521953F4F4F4F5F4F0895909569
442 | :101B90008095709561957F4F8F4F9F4F0895EE0F01
443 | :101BA000FF1F881F8BBF0790F691E02D199409D075
444 | :101BB000A59F900DB49F900DA49F800D911D1124A1
445 | :101BC0000895A29FB001B39FC001A39F700D811D16
446 | :101BD0001124911DB29F700D811D1124911D089536
447 | :0C1BE00081E090E0F89400C0F894FFCF82
448 | :101BEC00FF0100000000F1016E01BB019901AD0184
449 | :021BFC003702AE
450 | :00000001FF
451 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino.Micro.hex:
--------------------------------------------------------------------------------
1 | :100000000C9416010C943E010C943E010C943E019C
2 | :100010000C943E010C943E010C943E010C943E0164
3 | :100020000C943E010C943E010C94D5020C945503A3
4 | :100030000C943E010C943E010C943E010C943E0144
5 | :100040000C943E010C943E010C943E010C943E0134
6 | :100050000C943E010C943E010C943E010C94BD06A0
7 | :100060000C943E010C943E010C943E010C943E0114
8 | :100070000C943E010C943E010C943E010C943E0104
9 | :100080000C9492050C943E010C943E010C943E019C
10 | :100090000C943E010C943E010C943E010C943E01E4
11 | :1000A0000C943E010C943E010C943E0168076B07D2
12 | :1000B0005A075E0764078C078C078C076F07730766
13 | :1000C00077077D0781078C0787074F0D9310650D14
14 | :1000D0009310850D9310BD0D9310E80D9310430EF2
15 | :1000E0009310FA0E93103A0F9310750F9310A50FFB
16 | :1000F00093102010700E750E7A0E840E8E0ED80E90
17 | :10010000D80ED80E980EA20EAC0EB60EC30ED80E98
18 | :10011000CB0E00000000240027002A002D00300034
19 | :10012000000000002300260029002C002F000408F6
20 | :1001300002011040804010204080408008020401ED
21 | :10014000804020100201108010204040200000005C
22 | :1001500000250028002B002E0031000404040404B4
23 | :10016000030405020202020403020202020606065A
24 | :1001700006060604040202020404080B000202023E
25 | :100180000100090400000102020000052400100122
26 | :1001900005240101010424020605240600010705C7
27 | :1001A000810310004009040100020A000000070555
28 | :1001B0000202400000070583024000000403090416
29 | :1001C00041726475696E6F204C4C430041726475D6
30 | :1001D000696E6F204D6963726F00120100020000AA
31 | :1001E0000040412337800001010203011201000297
32 | :1001F000EF020140412337800001010203010300A7
33 | :1002000000000200090F0000030401000C000000C0
34 | :1002100000000000000000000000000000000706D1
35 | :1002200005040100080A0B0C0D094C0B11241FBE1C
36 | :10023000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6E253
37 | :10024000F2E202C005900D92A632B107D9F722E082
38 | :10025000A6E2B1E001C01D92A132B207E1F711E0C0
39 | :10026000C6E1D1E004C02197FE010E94F110C53122
40 | :10027000D107C9F70E94610B0C9411110C94000076
41 | :1002800040915301509154012091510130915201FC
42 | :1002900042175307B4F49091E8009570E1F3909100
43 | :1002A000E80092FD19C08093F10080915301909174
44 | :1002B000540101968F739927892B19F48EEF80933F
45 | :1002C000E80080915301909154010196909354015C
46 | :1002D0008093530181E0089580E00895CF92DF92EA
47 | :1002E000EF92FF920F931F93CF93DF931F92CDB79F
48 | :1002F000DEB7182F062FE42E862F880F8E5F998386
49 | :100300000E94400183E00E944001F12EC12E99819C
50 | :10031000D92E8C2D8F19801798F4F601E7FE02C0B4
51 | :10032000849101C080810E944001182F80E00E94CA
52 | :1003300040018123FFEFCF1ADF0A8111EACF01C00C
53 | :1003400081E00F90DF91CF911F910F91FF90EF907F
54 | :10035000DF90CF900895DF92EF92FF920F931F935B
55 | :10036000CF93DF93D82E8A017B01E40EF51EEB01BB
56 | :10037000CE15DF0571F0D7FE03C0FE01849101C0E8
57 | :1003800088810E94400121968111F2CF8FEF9FEF6B
58 | :1003900001C0C801DF91CF911F910F91FF90EF90A5
59 | :1003A000DF900895615030F02091F100FC0120832E
60 | :1003B0000196F8CF289A84E6809313020895CF928D
61 | :1003C000DF92EF92FF920F931F93CF93DF936C0115
62 | :1003D0007A018B01C0E0D0E0CE15DF0589F0D801AD
63 | :1003E0006D918D01D601ED91FC910190F081E02D90
64 | :1003F000C6010995892B11F47E0102C02196ECCF2C
65 | :10040000C701DF91CF911F910F91FF90EF90DF9087
66 | :10041000CF900895CF93DF931F92CDB7DEB7698356
67 | :10042000DC01ED91FC910280F381E02D41E050E090
68 | :10043000BE016F5F7F4F09950F90DF91CF910895B7
69 | :10044000FC018485958597FD0BC09FB7F89482E0E9
70 | :100450008093E9008091F2009FBF90E0019608959B
71 | :100460009FB7F89482E08093E9008091F2009FBFEB
72 | :1004700090E008953FB7F894809130019091310158
73 | :10048000A0913201B091330126B5A89B05C02F3F42
74 | :1004900019F00196A11DB11D3FBFBA2FA92F982FAA
75 | :1004A0008827820F911DA11DB11DBC01CD0142E025
76 | :1004B000660F771F881F991F4A95D1F708950C94EE
77 | :1004C00007070F931F93CF93DF931F92CDB7DEB72C
78 | :1004D00082E0898342E450E06AE771E080E80E94AC
79 | :1004E000AB010E943C07DC0112960D911C91139701
80 | :1004F0000115110569F0D801ED91FC910280F3819D
81 | :10050000E02DBE016F5F7F4FC801099597FF07C0BF
82 | :1005100089810F90DF91CF911F910F910895F8017C
83 | :1005200000851185E5CFCF93DF931F92CDB7DEB75E
84 | :10053000FC018485958597FD05C02FEF3FEF35873A
85 | :1005400024870BC0CE0101960E941207019719F46F
86 | :10055000898190E002C08FEF9FEF0F90DF91CF91E4
87 | :1005600008950F931F93CF93DF931F92CDB7DEB7FC
88 | :100570008C01FC018485958597FF0EC0CE01019604
89 | :100580000E941207019719F4298130E002C02FEF71
90 | :100590003FEFF80135872487F801848595850F9012
91 | :1005A000DF91CF911F910F9108951F920F920FB677
92 | :1005B0000F9211242F933F934F935F936F937F93E9
93 | :1005C0008F939F93AF93BF93CF93EF93FF93C0917C
94 | :1005D000E1008091E100837F8093E100C3FF0FC0C1
95 | :1005E0001092E90081E08093EB001092EC0082E32E
96 | :1005F0008093ED001092140288E08093F000C2FF17
97 | :1006000018C00E94070780915501882339F0809116
98 | :100610005501815080935501882389F180911302FF
99 | :10062000882339F08091130281508093130288232C
100 | :1006300041F1C4FF10C08091E2008E7E8160809302
101 | :10064000E2008091E1008F7E8093E100809157016C
102 | :100650008E7E806111C0C0FF16C08091E2008E7E48
103 | :1006600080618093E2008091E1008E7E8093E100C2
104 | :10067000809157018E7E81608093570104C05D9800
105 | :10068000CDCF2898D6CFFF91EF91CF91BF91AF9169
106 | :100690009F918F917F916F915F914F913F912F919A
107 | :1006A0000F900FBE0F901F9018951F920F920FB6CC
108 | :1006B0000F921124CF92DF92EF92FF920F931F932C
109 | :1006C0002F933F934F935F936F937F938F939F935A
110 | :1006D000AF93BF93EF93FF93CF93DF93CDB7DEB785
111 | :1006E0006C97DEBFCDBF1092E9008091E80083FFD8
112 | :1006F000FAC168E0CE0145960E94D20182EF809354
113 | :10070000E8008D8987FF05C09091E80090FFFCCF3D
114 | :1007100003C09EEF9093E800982F907609F0C6C032
115 | :100720009E892F89188D91110CC0803829F48091F1
116 | :1007300058018093F10002C01092F1001092F10074
117 | :1007400047C1422F50E0512B913051F4811140C1EB
118 | :100750004130510509F03CC1809158018D7F0BC09B
119 | :10076000933061F4811134C14130510509F030C139
120 | :10077000809158018260809358012AC1953041F4DC
121 | :100780008091E80080FFFCCF20682093E30020C127
122 | :10079000963009F05FC0EB8CFC8C1092E90010924F
123 | :1007A000540110925301123091F51092520110929F
124 | :1007B00051010E94610299E0BE016F5F7F4FDB0132
125 | :1007C000E92F1D92EA95E9F799831A8391E09E83B8
126 | :1007D00090EA98879AEF99872091530130915401BC
127 | :1007E000275F3F4F3C832B838D831092E90010924B
128 | :1007F000540110925301F0925201E092510149E0EC
129 | :1008000050E080E00E94AB010E946102E1C0F092E2
130 | :100810005201E09251010E943C07DC011296ED90DA
131 | :10082000FC901397E114F10409F4C0C0D701ED91D5
132 | :10083000FC910480F581E02DBE016B5E7F4FC70106
133 | :100840000995009719F00CF0C3C0C6C0F701E08409
134 | :10085000F184E8CF973009F4BFC0983021F481E0EB
135 | :100860008093F100B5C0993009F0B2C0837009F0EF
136 | :10087000B3C0EFE1F1E081E021E036E3908199231C
137 | :1008800061F08093E9002093EB0091919093EC004C
138 | :100890003093ED008F5F873089F78EE78093EA0011
139 | :1008A0001092EA008F898093140292C08B8D9C8DE8
140 | :1008B0001092E9001092540110925301909352014A
141 | :1008C00080935101898D811156C08E899D89913AFD
142 | :1008D00059F4813209F080C047E050E064E071E0F3
143 | :1008E00080E00E94AB0174C0913209F075C0833280
144 | :1008F00089F4888D90E0982F88272F89822BA0E09B
145 | :10090000B0E08093000190930101A0930201B093A5
146 | :1009100003015EC0803269F48091E80082FFFCCF61
147 | :1009200067E084E091E00E94D2018BEF8093E800C1
148 | :1009300006C0823209F04CC08F8980930B018091F0
149 | :100940005601882319F0EEEFFAE002C0E0E0F8E08B
150 | :100950008091040190910501A0910601B0910701D9
151 | :10096000803B9440A105B10509F088C080910B013E
152 | :1009700080FFA0C083C00E943C07DC0112960D914D
153 | :100980001C9113970115110539F1D801ED91FC91D6
154 | :100990000190F081E02DBE016B5E7F4FC80109958B
155 | :1009A000811116C0F80100851185ECCF1130C1F01E
156 | :1009B000133091F48F89882309F455C08230E9F40B
157 | :1009C00040E86DE08CEC91E00E946E01882321F0FC
158 | :1009D0008EEF8093E80087C081E28093EB0083C0B4
159 | :1009E0008B8D9C8D089711F41093500180915001CC
160 | :1009F000811136C06AED71E038C0813029F440E8D9
161 | :100A00006BE080EC91E0E0CF833031F70E943C074F
162 | :100A1000DC011296ED90FC9013978E010F5F1F4F33
163 | :100A20006801E114F10479F0D701ED91FC910680A1
164 | :100A3000F781E02DB801C7010995080F111DF701D5
165 | :100A4000E084F184EECFD8011C92F60101900020E1
166 | :100A5000E9F73197BF016C197D0940E0C601B4CFB9
167 | :100A60006CEE71E002C06CEB71E06115710509F488
168 | :100A7000B3CFFB01449150E080E833CF0FB6F89438
169 | :100A8000A89580916000886180936000109260005A
170 | :100A90000FBEA895EE3F2AE0F20739F08091FE0ADA
171 | :100AA0009091FF0A9183808393CF1092FF0A109256
172 | :100AB000FE0A8ECFEE3F8AE0F80731F08081918107
173 | :100AC0009093FF0A8093FE0A87E797E791838083DC
174 | :100AD0009BE088E10FB6F894A895809360000FBE64
175 | :100AE0009093600075CF6C960FB6F894DEBF0FBE82
176 | :100AF000CDBFDF91CF91FF91EF91BF91AF919F91CA
177 | :100B00008F917F916F915F914F913F912F911F91A5
178 | :100B10000F91FF90EF90DF90CF900F900FBE0F904E
179 | :100B20001F9018951F920F920FB60F9211242F93BA
180 | :100B30003F938F939F93AF93BF93EF93FF938091D6
181 | :100B40004C0190914D01A0914E01B0914F01892B24
182 | :100B50008A2B8B2B51F180914B01E0914901F0914F
183 | :100B60004A0190818927808380914C0190914D01A9
184 | :100B7000A0914E01B0914F01181619061A061B06D6
185 | :100B80004CF580914C0190914D01A0914E01B09196
186 | :100B90004F010197A109B10980934C0190934D0138
187 | :100BA000A0934E01B0934F0115C0809171008D7FCD
188 | :100BB0008093710090914B01E0914901F0914A01BD
189 | :100BC0008081282F30E0892F90E0809590958223B6
190 | :100BD00093238083FF91EF91BF91AF919F918F916C
191 | :100BE0003F912F910F900FBE0F901F9018958F92ED
192 | :100BF0009F92AF92BF92CF92DF92EF92FF926B01E2
193 | :100C00007C010E943A024B015C01C114D104E10451
194 | :100C1000F104F1F00E943A02DC01CB018819990934
195 | :100C2000AA09BB09883E9340A105B10570F321E0F4
196 | :100C3000C21AD108E108F10888EE880E83E0981EF8
197 | :100C4000A11CB11CC114D104E104F10419F7DDCFDA
198 | :100C5000FF90EF90DF90CF90BF90AF909F908F90DC
199 | :100C600008958F929F92AF92BF92CF92DF92EF92B0
200 | :100C7000FF920F931F93CF93DF935C016B018A0167
201 | :100C800080910B01882309F45EC0809114028823AF
202 | :100C900009F459C08091570180FF05C08091E000A0
203 | :100CA00082608093E000E8018AEFF82E93E0E92E5D
204 | :100CB0002FE3822E3AE3932E209709F43DC08FB79D
205 | :100CC000F894E092E9009091E80095FF06C09091B9
206 | :100CD000F200282D291B922F01C090E08FBF9111A7
207 | :100CE0000AC0FA94FF2079F161E070E080E090E0C2
208 | :100CF0000E94F705E1CF292F30E0C217D3070CF48B
209 | :100D00009C2F8FB7F894E092E9002091E80025FF2E
210 | :100D100011C0292F30E0C21BD30BF601915020F0F7
211 | :100D200041914093F100FACFC20ED31E9091E8009A
212 | :100D300095FF13C08FBFC0CF5D9A84E680935501A5
213 | :100D40001016110644F081E090E0F5019383828350
214 | :100D500080E090E005C0C80103C09092E800EACFAF
215 | :100D6000DF91CF911F910F91FF90EF90DF90CF9087
216 | :100D7000BF90AF909F908F9008951F920F920FB6E3
217 | :100D80000F9211242F933F938F939F93AF93BF9311
218 | :100D900080912C0190912D01A0912E01B0912F01F5
219 | :100DA00030912B0123E0230F2D3720F40196A11D54
220 | :100DB000B11D05C026E8230F0296A11DB11D209389
221 | :100DC0002B0180932C0190932D01A0932E01B093C1
222 | :100DD0002F018091300190913101A0913201B091A9
223 | :100DE00033010196A11DB11D809330019093310113
224 | :100DF000A0933201B0933301BF91AF919F918F9136
225 | :100E00003F912F910F900FBE0F901F90189583E088
226 | :100E10008093E9008091F200882319F08AE380939F
227 | :100E2000E8000895FC0180911402811103C08FEF46
228 | :100E30009FEF08959FB7F89482E08093E900209196
229 | :100E4000F20030E01216130614F421E030E0211510
230 | :100E5000310559F0289A84E6809313028091F100BD
231 | :100E600080838091F200882319F09FBFC901089503
232 | :100E70008BE68093E800F9CF8091190281110DC0B3
233 | :100E800082E08093150284E080931602109218028B
234 | :100E90001092170281E08093190285E192E0089593
235 | :100EA00090E0FC013197EF30F105B0F5EA5AFF4FC1
236 | :100EB0000C94F110809180008F7703C080918000A6
237 | :100EC0008F7D80938000089580918000877FF9CF87
238 | :100ED00084B58F7702C084B58F7D84BD08958091DD
239 | :100EE00090008F7707C0809190008F7D03C0809124
240 | :100EF0009000877F8093900008958091C0008F7745
241 | :100F000003C08091C0008F7D8093C00008958091C0
242 | :100F1000C200877F8093C2000895CF93DF93282F6C
243 | :100F200030E0F901E150FE4F8491F901E25DFE4F9E
244 | :100F3000D491F901E55AFE4FC491CC2391F081116F
245 | :100F40000E945007EC2FF0E0EE0FFF1FE05EFE4F17
246 | :100F5000A591B491EC91ED2381E090E021F480E043
247 | :100F600002C080E090E0DF91CF9108951F93CF936E
248 | :100F7000DF93282F30E0F901E150FE4F8491F90111
249 | :100F8000E25DFE4FD491F901E55AFE4FC491CC23A6
250 | :100F9000C9F0162F81110E945007EC2FF0E0EE0FE0
251 | :100FA000FF1FE35BFE4FA591B4918FB7F894111129
252 | :100FB00005C09C91ED2FE095E92302C0EC91ED2B4B
253 | :100FC000EC938FBFDF91CF911F910895CF93DF9363
254 | :100FD00090E0FC01E25DFE4F2491FC01E55AFE4FDA
255 | :100FE0008491882361F190E0880F991FFC01EE5EE7
256 | :100FF000FE4FC591D491FC01E35BFE4FA591B491E6
257 | :10100000611109C09FB7F894888120958223888355
258 | :10101000EC912E230BC0623061F49FB7F8943881B5
259 | :10102000822F809583238883EC912E2B2C939FBF56
260 | :1010300006C08FB7F894E8812E2B28838FBFDF91ED
261 | :10104000CF9108953F924F925F926F927F928F92CD
262 | :101050009F92AF92BF92CF92DF92EF92FF920F9347
263 | :101060001F93CF93DF9300D000D0CDB7DEB7290117
264 | :101070003A0190910C01981721F09F3F09F090C21E
265 | :1010800004C0EEEFF1E03490AEC080930C01EEEFBF
266 | :10109000F1E0E491EF3F09F483C2E13009F452C07A
267 | :1010A0001CF5E1119FC014BC15BC94B5926094BDB1
268 | :1010B00095B5916095BD282F30E0F901E55AFE4FB6
269 | :1010C000E491F0E0EE0FFF1FE35BFE4F459154917A
270 | :1010D00050933C0140933B01F901E25DFE4FE491E6
271 | :1010E000E0933A01312C81C0E33009F453C0E4307D
272 | :1010F00009F078C01092C0001092C1009091C10018
273 | :1011000098609093C1009091C10091609093C1004C
274 | :10111000482F50E0FA01E55AFE4FE491F0E0EE0F5F
275 | :10112000FF1FE35BFE4F25913491309336012093EE
276 | :101130003501FA01E25DFE4FE491E0933401B4E041
277 | :101140003B2E53C01092800010928100909181003C
278 | :1011500098609093810090918100916090938100BC
279 | :10116000282F30E0F901E55AFE4FE491F0E0EE0F50
280 | :10117000FF1FE35BFE4F459154915093390140931B
281 | :101180003801F901E25DFE4FE491E0933701332429
282 | :1011900033942BC010929000109291009091910086
283 | :1011A000986090939100909191009160909391003C
284 | :1011B000282F30E0F901E55AFE4FE491F0E0EE0F00
285 | :1011C000FF1FE35BFE4F4591549150934A014093BA
286 | :1011D0004901F901E25DFE4FE491E0934B0103E028
287 | :1011E000302E03C03E2E37FCDBC18B0161E00E9434
288 | :1011F000E6074801A12CB12C832D8D7F09F0CCC0CE
289 | :1012000060E072E18AE790E0A50194010E94D210AB
290 | :1012100029833A834B835C8369017A0121E0C21AF6
291 | :10122000D108E108F1088FEFC816D104E104F104F8
292 | :1012300009F008F44BC060E472E48FE090E0A5018F
293 | :1012400094010E94D21069017A0191E0C91AD10873
294 | :10125000E108F108E2E03E121FC0FFEFCF16D10413
295 | :10126000E104F10409F008F4F4C060E970ED83E0F2
296 | :1012700090E0A50194010E94D21069017A0181E0F9
297 | :10128000C81AD108E108F1089FEFC916D104E1049A
298 | :10129000F10409F010F5DDC0EFEFCE16D104E10442
299 | :1012A000F104B1F0A8F068E478EE81E090E0A501E7
300 | :1012B00094010E94D21069017A01F1E0CF1AD1089D
301 | :1012C000E108F108332009F437C12CC181E001C0E5
302 | :1012D00082E0332009F45BC0BCC068E478EE81E0B2
303 | :1012E00090E0A50194010E94D21069017A01F1E019
304 | :1012F000CF1AD108E108F1082FEFC216D104E1049A
305 | :10130000F10409F008F4A5C064E274EF80E090E015
306 | :10131000A50194010E94D21069017A0181E0C81AE6
307 | :10132000D108E108F1089FEFC916D104E104F104E6
308 | :1013300009F008F48EC062E17AE780E090E0A50150
309 | :1013400094010E94D21069017A0181E0C81AD10883
310 | :10135000E108F1089FEFC916D104E104F10409F096
311 | :1013600008F4DEC089819A81AB81BC814AE0B595E1
312 | :10137000A795979587954A95D1F76C017D01E1E096
313 | :10138000CE1AD108E108F108311063C085E095B5A7
314 | :10139000987F892B85BD5DC060E072E18AE790E0AF
315 | :1013A000A50194010E94D21069017A01F1E0CF1ADF
316 | :1013B000D108E108F108C114D10421E0E206F104EA
317 | :1013C00088F068E478EE81E090E0A50194010E9445
318 | :1013D000D21069017A0181E0C81AD108E108F10848
319 | :1013E00083E001C081E091E039120FC0909181004B
320 | :1013F000987F892B8093810041145104610471040A
321 | :1014000069F52FEF3FEFA90157C0E3E03E120FC08F
322 | :1014100090919100987F892B809391004114510401
323 | :1014200061047104D9F42FEF3FEFA90157C0F4E034
324 | :101430003F120FC09091C100987F892B8093C1000B
325 | :10144000411451046104710449F42FEF3FEFA901E5
326 | :1014500057C0411451046104710471F0D801AA0FFE
327 | :10146000BB1FA30192010E94F71028EE33E040E079
328 | :1014700050E00E94B01003C02FEF3FEFA90181E0C0
329 | :101480003816D1F083158CF031108AC0C7BC209378
330 | :1014900045013093460140934701509348018091A4
331 | :1014A0006E00826080936E007BC093E03916B1F0CD
332 | :1014B000E4E03E1629F174C0D0928900C092880001
333 | :1014C00020934101309342014093430150934401E2
334 | :1014D00080916F00826080936F0062C0D09299000B
335 | :1014E000C092980020934C0130934D0140934E01DF
336 | :1014F00050934F018091710082608093710050C0C1
337 | :10150000C092CF0020933D0130933E0140933F01B4
338 | :10151000509340018091720080648093720040C0BB
339 | :1015200086E0D7CEEFEFCE16D104E104F10411F03E
340 | :1015300008F001CF84E0CDCE8FEFC816D104E104CE
341 | :10154000F104C9F0C0F062E17AE780E090E0A50123
342 | :1015500094010E94D21069017A01F1E0CF1AD108FA
343 | :10156000E108F1082FEFC216D104E104F10409F0FB
344 | :1015700020F484E00CCF83E00ACF89819A81AB818B
345 | :10158000BC812AE0B595A795979587952A95D1F7BF
346 | :101590006C017D01E1E0CE1AD108E108F108F6CE38
347 | :1015A0000F900F900F900F90DF91CF911F910F919F
348 | :1015B000FF90EF90DF90CF90BF90AF909F908F9073
349 | :1015C0007F906F905F904F903F9008956FEE89E508
350 | :1015D00091E00E940A026FEE89E591E00E940A0202
351 | :1015E0006FEE89E591E00E940A020C940707CF9202
352 | :1015F000DF92EF92FF920F931F93CF93DF9300D070
353 | :1016000000D0CDB7DEB79FB7F894C0902C01D09032
354 | :101610002D01E0902E01F0902F019FBF082F10E0C8
355 | :1016200089E591E049835A836B837C830E94200281
356 | :1016300049815A816B817C8180179107A4F42FB76F
357 | :10164000F89480912C0190912D01A0912E01B091E0
358 | :101650002F012FBF8C199D09AE09BF09841795076B
359 | :10166000A607B707E8F289E591E00E9420028017FB
360 | :10167000910724F40E94E60A80E001C081E00F9007
361 | :101680000F900F900F90DF91CF911F910F91FF90CE
362 | :10169000EF90DF90CF900895E9E5F1E01382128298
363 | :1016A00088EE93E0A0E0B0E084839583A683B783BF
364 | :1016B00082E191E0918380838FEF9FEF958784870C
365 | :1016C0000895789484B5826084BD84B5816084BDBA
366 | :1016D00085B5826085BD85B5816085BD80916E00D0
367 | :1016E000816080936E001092810080918100826001
368 | :1016F000809381008091810081608093810080913E
369 | :10170000800081608093800080919100826080934E
370 | :101710009100809191008160809391008091900070
371 | :101720008160809390008091C10084608093C100AB
372 | :101730008091C10082608093C1008091C10081606E
373 | :101740008093C1008091C30081608093C300809129
374 | :10175000C00082608093C0008091C200816080934D
375 | :10176000C20080917A00846080937A0080917A0030
376 | :10177000826080937A0080917A00816080937A0001
377 | :1017800080917A00806880937A00109214021092FF
378 | :101790005801109257018091D70081608093D70043
379 | :1017A00080EA8093D80089B5806189BD89B582605F
380 | :1017B00089BD09B400FEFDCF61E070E080E090E0FB
381 | :1017C0000E94F7058091D8008F7C80618093D800BB
382 | :1017D0008091E000807F8093E0008091E1008E7E28
383 | :1017E0008093E1008DE08093E200559A209A5D9805
384 | :1017F0002898EEEFFFE7859194918B3F9C4D19F46B
385 | :1018000081E0809356018FEF9FEF90936601809364
386 | :101810006501C0910B016AE070E080E090E00E94F9
387 | :10182000F705CC23B1F3CFEFD0E0AEEFEA2EA1E085
388 | :10183000FA2EB0E0CB2EB0E0DB2EE3EDF1E011921A
389 | :1018400062E0E331F607D9F789E591E00E942002D2
390 | :101850000497D0F389E591E00E9493028093D2012E
391 | :101860008F3F09F062C489E591E00E949302809362
392 | :10187000D2018E3F09F059C489E591E00E9493029C
393 | :101880008093D2018D3F09F050C489E591E00E9418
394 | :1018900093028093D2018C3F09F047C46CEF89E535
395 | :1018A00091E00E940A026DEF89E591E00E940A0230
396 | :1018B0006EEF89E591E00E940A026FEF89E591E001
397 | :1018C0000E940A020E9407074AEF50E060E070E0C1
398 | :1018D00083E00E94F70A882309F427C489E591E090
399 | :1018E0000E9493028B3F910509F01FC489E591E0A6
400 | :1018F0000E9493028093D10189E591E00E949302B6
401 | :101900008093D001682F89E591E00E940A026091DE
402 | :10191000D10189E591E00E940A026BEF89E591E02F
403 | :101920000E940A020E9407078091D00148EE53E00E
404 | :1019300060E070E08C5F0E94F70A882309F4F5C329
405 | :10194000F3EDAF2EF1E0BF2E8091D00190E09C012D
406 | :101950002D5F3F4FA501435D51402417350744F0EB
407 | :1019600089E591E00E949302D5018D935D01ECCF52
408 | :10197000FC01ED52FE4F82818093CF01F901ED52BF
409 | :10198000FE4F80818093CE0148EE53E060E070E02E
410 | :1019900081E00E94F70A882309F4C7C389E591E032
411 | :1019A0000E9493028A3F910509F0BFC34091D00184
412 | :1019B000A42EB12CB2E0AB0EB11CE3ED8E2EE1E013
413 | :1019C0009E2EE0E0F0E020E030E0C401835D914035
414 | :1019D0008A159B0590F4D4018D914D01B901680FD2
415 | :1019E000711DCB01BE010E949C109C018E0F9F1F98
416 | :1019F000BE010E949C10FC01E8CFFE2FEE272E2B8B
417 | :101A00003F2B3093CD012093CC01F901FF27F093B8
418 | :101A1000CB01E093CA01232F33273093C9012093D0
419 | :101A2000C801C9018E0F9F1FBE010E949C109E011C
420 | :101A3000281B390B3093C7012093C601C9018E0FB3
421 | :101A40009F1FBE010E949C10BE01681B790B709302
422 | :101A5000C5016093C4018091CF0190E02817390738
423 | :101A600009F061C38091CE0190E06817790709F011
424 | :101A70005AC3E091D1018091D301E81354C38091FE
425 | :101A8000D401481350C38E2F90E0FC013197E5310B
426 | :101A9000F10508F048C3EB59FF4F0C94F11069EFC2
427 | :101AA00089E591E00E940A0263E089E591E00E94E5
428 | :101AB0000A0262E089E591E00E940A0261E089E59C
429 | :101AC00091E00E940A0262E051C08091D501282F66
430 | :101AD00030E03093C3012093C2010E948D079093A0
431 | :101AE000C1018093C00169EF89E591E00E940A027B
432 | :101AF00063E089E591E00E940A0264E089E591E0F3
433 | :101B00000E940A026091C2012BC08091D501282F4A
434 | :101B100030E03093BF012093BE012091D60130E028
435 | :101B20003093C1012093C0012115310511F460E00B
436 | :101B300004C02130310519F461E00E94B60769EF55
437 | :101B400089E591E00E940A0263E089E591E00E9444
438 | :101B50000A0266E089E591E00E940A026091BE01F6
439 | :101B600089E591E00E940A026091C00189E591E057
440 | :101B70000E940A020E940707D8C28091D501282F2F
441 | :101B800030E03093BF012093BE012091D60130E0B8
442 | :101B90003093C1012093C0012115310511F460E09B
443 | :101BA00009C02130310511F462E004C02230310552
444 | :101BB00019F461E00E94E60769EF89E591E00E946F
445 | :101BC0000A0263E089E591E00E940A0268E0C2CF60
446 | :101BD000E091D5018E2F90E09093BD018093BC01E0
447 | :101BE000E23108F0E251F0E0E25EFD4FE491209135
448 | :101BF0007B00E3FB002700F910E0C80155E0880FE7
449 | :101C0000991F5A95E1F7922F9F7D892B80937B0036
450 | :101C1000E77080910D0170E4879FC0011124E82BCB
451 | :101C2000E0937C0080917A00806480937A008091B8
452 | :101C30007A0086FDFCCF809178002091790090E0B9
453 | :101C4000922B9093BB018093BA0169EF89E591E0F3
454 | :101C50000E940A0264E089E591E00E940A026AE0BB
455 | :101C600089E591E00E940A026091BC0189E591E05A
456 | :101C70000E940A026091BB0189E591E00E940A027C
457 | :101C80006091BA0173CF7090D501872C912C9092FE
458 | :101C9000B9018092B8016090D601A62CB12CB09207
459 | :101CA000B701A092B60161E0872D0E94E607A1145A
460 | :101CB000B10409F481C08FEFA816B10409F47EC005
461 | :101CC000F401E150FE4FE4914E2F50E0FA013197BC
462 | :101CD000EF30F10508F06CC0E658FF4F0C94F1109E
463 | :101CE00084B5806884BD67BC6DC084B5806284BDE6
464 | :101CF00068BC68C080918000806880938000B0924A
465 | :101D00008900A09288005EC08091800080628093EC
466 | :101D10008000B0928B00A0928A0054C08091800015
467 | :101D2000886080938000B0928D00A0928C004AC0A1
468 | :101D300080919000806880939000B0929900A0926A
469 | :101D4000980040C080919000806280939000B09293
470 | :101D50009B00A0929A0036C080919000886080938A
471 | :101D60009000B0929D00A0929C002CC08091C00079
472 | :101D700080688093C0008091C0008F7B8093C000FA
473 | :101D80006092CF001FC08091C00080628093C0002D
474 | :101D90006092D00017C08091C20088608093C2001A
475 | :101DA0008091C2008B7F8093C2006092D2000AC0F3
476 | :101DB000A0E8AA16B10414F460E001C061E0872D28
477 | :101DC0000E94B60769EF89E591E00E940A0263E08C
478 | :101DD00089E591E00E940A026CE089E591E00E94A9
479 | :101DE0000A026091B80189E591E00E940A026091BF
480 | :101DF000B601BCCE8091D501282F30E03093BF01D1
481 | :101E00002093BE016091D60170E0762F66279091F5
482 | :101E1000D701690F711D7093B5016093B4012091D2
483 | :101E2000DA0130E0322F22279091DB01290F311D9A
484 | :101E3000032E000C440B550B2093B0013093B101DD
485 | :101E40004093B2015093B30121153105410551056D
486 | :101E500019F420E030E0A9010E94220869EF89E529
487 | :101E600091E00E940A0261E089E591E00E940A0285
488 | :101E70006EE07CCE8091D501282F30E03093BF01F9
489 | :101E80002093BE0190910C01981320C0F70194910A
490 | :101E90002FEF20930C01913071F050F0933089F0C6
491 | :101EA0009430A1F4909172009F7B909372000EC0C9
492 | :101EB00010926E000BC090916F009D7F90936F0009
493 | :101EC00005C0909171009D7F9093710060E00E9429
494 | :101ED000B60769EF89E591E00E940A0261E089E5B1
495 | :101EE00091E00E940A0260E141CE8091D50190E02C
496 | :101EF0009093AF018093AE01009711F481E00CC084
497 | :101F00008130910541F08230910511F482E004C0E6
498 | :101F10008330910521F483E080930D0104C0049780
499 | :101F200011F410920D0169EF89E591E00E940A0217
500 | :101F300062E089E591E00E940A0262E189E591E0B0
501 | :101F40000E940A026091AE0111CE8090D501882DC9
502 | :101F500090E09093BF018093BE019090D601892DAF
503 | :101F600090E09093AD018093AC018091D701809374
504 | :101F7000AB01A090D801A092AA01811142C0612CAE
505 | :101F8000712CB12CB501062C02C0759567950A9489
506 | :101F9000E2F761707727882D0E94B60761E0892DEE
507 | :101FA0000E94B60760E0892D0E94B607FFEF6F1A06
508 | :101FB0007F0A28E06216710429F769EF89E591E04C
509 | :101FC0000E940A0265E089E591E00E940A0264E14C
510 | :101FD00089E591E00E940A026091BE0189E591E0E5
511 | :101FE0000E940A026091AC0189E591E00E940A0218
512 | :101FF0006091AB0189E591E00E940A026091AA011B
513 | :10200000B5CD8130D1F697E0692E712CB12CB50198
514 | :10201000062C02C0759567950A94E2F761707727E0
515 | :10202000882D0E94B60761E0892D0E94B60760E006
516 | :10203000892D0E94B60761E0661A710840F7BDCF8E
517 | :102040007090D501872D90E09093BF018093BE01E1
518 | :10205000B090D6018B2D90E09093AD018093AC01B0
519 | :102060008091D7018093AB0181111CC0812C912CF0
520 | :10207000A12C61E08B2D0E94B607872D0E948D0751
521 | :10208000082C01C0880F0A94EAF7A82A60E08B2D7B
522 | :102090000E94B6078FEF881A980AA8E08A16910462
523 | :1020A00041F71BC08130D9F487E0882E912CA12CF8
524 | :1020B00061E08B2D0E94B607872D0E948D07082CAA
525 | :1020C00001C0880F0A94EAF7A82A60E08B2D0E94CD
526 | :1020D000B607B1E08B1A910858F7A092A90169EFF1
527 | :1020E00089E591E00E940A0265E089E591E00E949D
528 | :1020F0000A0266E189E591E00E940A026091BE0150
529 | :1021000089E591E00E940A026091AC0189E591E0C5
530 | :102110000E940A026091AB0189E591E00E940A02E7
531 | :102120006091A90123CD0E94E60AC114D10409F4EB
532 | :1021300084CB0E94000081CBAA1BBB1B51E107C0CE
533 | :10214000AA1FBB1FA617B70710F0A61BB70B881F47
534 | :10215000991F5A95A9F780959095BC01CD010895D6
535 | :10216000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F9B
536 | :10217000EE1FFF1FA217B307E407F50720F0A21B0D
537 | :10218000B30BE40BF50B661F771F881F991F1A947A
538 | :1021900069F760957095809590959B01AC01BD01A4
539 | :1021A000CF010895052E97FB1EF400940E94E910BC
540 | :1021B00057FD07D00E94B01007FC03D04EF40C94DA
541 | :1021C000E91050954095309521953F4F4F4F5F4F07
542 | :1021D000089590958095709561957F4F8F4F9F4F93
543 | :1021E0000895EE0FFF1F0590F491E02D09940E94D1
544 | :1021F0000211A59F900DB49F900DA49F800D911D7D
545 | :1022000011240895A29FB001B39FC001A39F700D38
546 | :10221000811D1124911DB29F700D811D1124911DEE
547 | :062220000895F894FFCFC1
548 | :10222600FFFFFFFF00E1000000000000FF010000CB
549 | :1022360000000A02310620029302B1025F0200C1C9
550 | :0622460080810000000091
551 | :00000001FF
552 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino.NanoR3.hex:
--------------------------------------------------------------------------------
1 | :100000000C9478000C94A0000C94A0000C94A00018
2 | :100010000C94A0000C94A0000C94A0000C941F025F
3 | :100020000C94A0000C94A0000C94A0000C94A000D0
4 | :100030000C94A0000C94A0000C94A0000C94A000C0
5 | :100040000C94D3020C94A0000C94A1020C947B029B
6 | :100050000C94A0000C94A0000C94A0000C94A000A0
7 | :100060000C94A0000C94A0000208B00A1708B00A73
8 | :100070003108B00A5C08B00A8508B00AC808B00A9E
9 | :100080004709B00A8609B00A9B09B00ACD09B00A2F
10 | :10009000410A00000000240027002A0000000000A0
11 | :1000A00023002600290001020408102040800102DC
12 | :1000B00004081020010204081020000000002500A0
13 | :1000C00028002B00040404040404040402020202B5
14 | :1000D00002020303030303030200000008000201FD
15 | :1000E0000000030407000000000000000000B50A43
16 | :1000F00011241FBECFEFD8E0DEBFCDBF11E0A0E0DE
17 | :10010000B1E0ECEBF6E102C005900D92A231B1072F
18 | :10011000D9F722E0A2E1B1E001C01D92A733B207F6
19 | :10012000E1F710E0C8E7D0E004C02197FE010E948B
20 | :10013000370BC737D107C9F70E945C060C945C0BDC
21 | :100140000C940000CF92DF92EF92FF920F931F93D7
22 | :10015000CF93DF936C017A018B01C0E0D0E0CE1524
23 | :10016000DF0589F0D8016D918D01D601ED91FC91EB
24 | :100170000190F081E02DC6010995892B11F47E01D3
25 | :1001800002C02196ECCFC701DF91CF911F910F9153
26 | :10019000FF90EF90DF90CF900895FC01918D828DBC
27 | :1001A000981761F0828DDF01A80FB11D5D968C91CB
28 | :1001B000928D9F5F9F73928F90E008958FEF9FEFD6
29 | :1001C0000895FC01918D828D981731F0828DE80F92
30 | :1001D000F11D858D90E008958FEF9FEF0895FC014C
31 | :1001E000918D228D892F90E0805C9F4F821B910919
32 | :1001F0008F73992708958AE991E00E94EF0021E02A
33 | :10020000892B09F420E0822F0895FC01848DDF0101
34 | :10021000A80FB11DA35ABF4F2C91848D90E0019679
35 | :100220008F739927848FA689B7892C93A089B18968
36 | :100230008C9180648C93938D848D981306C0028872
37 | :10024000F389E02D80818F7D80830895EF92FF9266
38 | :100250000F931F93CF93DF93EC0181E0888F9B8DE9
39 | :100260008C8D981305C0E889F989808185FD24C0AB
40 | :10027000F62E0B8D10E00F5F1F4F0F731127E02E2E
41 | :100280008C8DE8120CC00FB607FCFACFE889F9890B
42 | :10029000808185FFF5CFCE010E940501F1CF8B8DC6
43 | :1002A000FE01E80FF11DE35AFF4FF0820B8FEA8940
44 | :1002B000FB898081806207C0EE89FF896083E889BD
45 | :1002C000F98980818064808381E090E0DF91CF9123
46 | :1002D0001F910F91FF90EF900895CF93DF93EC0162
47 | :1002E000888D8823C9F0EA89FB89808185FD05C056
48 | :1002F000A889B9898C9186FD0FC00FB607FCF5CF90
49 | :10030000808185FFF2CFA889B9898C9185FFEDCFD7
50 | :10031000CE010E940501E7CFDF91CF91089580E0E3
51 | :1003200090E0892B29F00E94FB0081110C940000C1
52 | :100330000895833081F028F4813099F08230A1F063
53 | :1003400008958730A9F08830B9F08430D1F48091D5
54 | :1003500080008F7D03C0809180008F778093800024
55 | :10036000089584B58F7702C084B58F7D84BD0895CC
56 | :100370008091B0008F7703C08091B0008F7D809313
57 | :10038000B00008951F93CF93DF93282F30E0F90139
58 | :10039000E752FF4F8491F901EA55FF4FD491F901DB
59 | :1003A000EC53FF4FC491CC23C9F0162F81110E944A
60 | :1003B0009901EC2FF0E0EE0FFF1FE654FF4FA591DF
61 | :1003C000B4918FB7F894111105C09C91ED2FE09571
62 | :1003D000E92302C0EC91ED2BEC938FBFDF91CF911D
63 | :1003E0001F91089590910001981324C0E8EDF0E06A
64 | :1003F000E4919FEF90930001E130B9F098F0E23082
65 | :10040000C9F4909170009D7F9093700091E090935B
66 | :10041000B0009091B100987F94609093B1001092D9
67 | :10042000B30008C010926E0005C090916F009D7FD0
68 | :1004300090936F0060E00C94C2010E94570B1F92D2
69 | :100440000F920FB60F9211242F933F934F935F9308
70 | :100450006F937F938F939F93AF93BF93EF93FF938C
71 | :1004600080912C0190912D01A0912E01B0912F012E
72 | :10047000892B8A2B8B2B51F180912B01E091290143
73 | :10048000F0912A0190818927808380912C0190919D
74 | :100490002D01A0912E01B0912F01181619061A06F0
75 | :1004A0001B06C4F480912C0190912D01A0912E0186
76 | :1004B000B0912F010197A109B10980932C0190936C
77 | :1004C0002D01A0932E01B0932F0104C08091000153
78 | :1004D0000E94F201FF91EF91BF91AF919F918F9197
79 | :1004E0007F916F915F914F913F912F910F900FBE30
80 | :1004F0000F901F9018951F920F920FB60F92112414
81 | :100500002F933F934F935F936F937F938F939F931B
82 | :10051000AF93BF93EF93FF938AE991E00E940501A7
83 | :10052000FF91EF91BF91AF919F918F917F916F91CB
84 | :100530005F914F913F912F910F900FBE0F901F90A1
85 | :1005400018951F920F920FB60F9211242F938F932D
86 | :100550009F93EF93FF93E091AA01F091AB0180810B
87 | :10056000E091B001F091B10182FD12C090818091C3
88 | :10057000B3018F5F8F732091B401821751F0E09126
89 | :10058000B301F0E0E656FE4F958F8093B30101C0B2
90 | :100590008081FF91EF919F918F912F910F900FBECE
91 | :1005A0000F901F9018951F920F920FB60F92112463
92 | :1005B0002F933F938F939F93AF93BF938091170196
93 | :1005C00090911801A0911901B0911A013091160172
94 | :1005D00023E0230F2D3720F40196A11DB11D05C086
95 | :1005E00026E8230F0296A11DB11D209316018093CA
96 | :1005F000170190931801A0931901B0931A018091EB
97 | :10060000120190911301A0911401B091150101966E
98 | :10061000A11DB11D8093120190931301A0931401A9
99 | :10062000B0931501BF91AF919F918F913F912F9101
100 | :100630000F900FBE0F901F901895682F8AE991E0D8
101 | :100640000C942601682F8AE991E00C942601CF933F
102 | :10065000DF93282F30E0F901E752FF4F8491F90131
103 | :10066000EA55FF4FD491F901EC53FF4FC491CC23CD
104 | :1006700091F081110E949901EC2FF0E0EE0FFF1F25
105 | :10068000E456FF4FA591B491EC91ED2381E090E009
106 | :1006900021F480E002C080E090E0DF91CF910895E6
107 | :1006A000CF93DF9390E0FC01EA55FF4F2491FC01CA
108 | :1006B000EC53FF4F8491882361F190E0880F991FDC
109 | :1006C000FC01EE56FF4FC591D491FC01E654FF4F5B
110 | :1006D000A591B491611109C09FB7F89488812095C4
111 | :1006E00082238883EC912E230BC0623061F49FB784
112 | :1006F000F8943881822F809583238883EC912E2B68
113 | :100700002C939FBF06C08FB7F894E8812E2B2883C7
114 | :100710008FBFDF91CF9108953F924F925F926F927A
115 | :100720007F928F929F92AF92BF92CF92DF92EF9281
116 | :10073000FF920F931F93CF93DF9300D000D0CDB7DC
117 | :10074000DEB790910001981721F09F3F09F036C263
118 | :1007500004C0E8EDF0E0349081C080930001E8ED42
119 | :10076000F0E0E491EF3F09F429C2E13031F1E230E9
120 | :1007700009F44BC0E11171C014BC15BC94B5926072
121 | :1007800094BD95B5916095BDA82FB0E0FD01EC53E7
122 | :10079000FF4FE491F0E0EE0FFF1FE654FF4F05918D
123 | :1007A00014911093200100931F01FD01EA55FF4FA2
124 | :1007B000E491E0931E01312C53C0109280001092FE
125 | :1007C00081009091810098609093810090918100C8
126 | :1007D000916090938100A82FB0E0FD01EC53FF4F92
127 | :1007E000E491F0E0EE0FFF1FE654FF4F05911491E6
128 | :1007F00010931D0100931C01FD01EA55FF4FE49188
129 | :10080000E0931B01332433942BC01092B00010925C
130 | :10081000B1009091B00092609093B0009091B100BF
131 | :1008200091609093B100A82FB0E0FD01EC53FF4F11
132 | :10083000E491F0E0EE0FFF1FE654FF4F0591149195
133 | :1008400010932A0100932901FD01EA55FF4FE4911D
134 | :10085000E0932B0102E0302E03C03E2E37FCAEC1E8
135 | :1008600029013A018B0161E00E9450034801A12C4B
136 | :10087000B12C832D8D7F09F0BBC060E072E18AE767
137 | :1008800090E0A50194010E94180B29833A834B83C1
138 | :100890005C8369017A0121E0C21AD108E108F108FC
139 | :1008A0008FEFC816D104E104F10409F008F44CC03C
140 | :1008B00060E472E48FE090E0A50194010E94180BBF
141 | :1008C00069017A01E1E0CE1AD108E108F108F2E00D
142 | :1008D0003F1220C02FEFC216D104E104F10409F049
143 | :1008E00008F46AC160E970ED83E090E0A50194012D
144 | :1008F0000E94180B69017A0181E0C81AD108E10849
145 | :10090000F108EFEFCE16D104E104F10409F0D0F5BF
146 | :1009100083E067C0FFEFCF16D104E104F104B1F02A
147 | :10092000A8F068E478EE81E090E0A50194010E94CF
148 | :10093000180B69017A0181E0C81AD108E108F108B1
149 | :10094000332009F4DFC02FC181E001C082E03320F1
150 | :10095000A1F047C089819A81AB81BC812AE0B5951D
151 | :10096000A795979587952A95D1F76C017D0121E090
152 | :10097000C21AD108E108F10885E095B5987F892B66
153 | :1009800085BD6FC068E478EE81E090E0A501940138
154 | :100990000E94180B69017A01F1E0CF1AD108E10831
155 | :1009A000F1082FEFC216D104E104F10409F008F4B4
156 | :1009B000A7C064E274EF80E090E0A50194010E947A
157 | :1009C000180B69017A01E1E0CE1AD108E108F108BB
158 | :1009D000FFEFCF16D104E104F10411F008F0B4C028
159 | :1009E00085E09091B100987F892B8093B10039C048
160 | :1009F00060E072E18AE790E0A50194010E94180B83
161 | :100A000069017A0181E0C81AD108E108F108C1142E
162 | :100A1000D104E1E0EE06F10488F068E478EE81E0CC
163 | :100A200090E0A50194010E94180B69017A01F1E0A0
164 | :100A3000CF1AD108E108F10893E001C091E021E06C
165 | :100A400032120FC080918100887F892B80938100B2
166 | :100A5000411451046104710449F42FEF3FEFA901DF
167 | :100A60002DC0411451046104710471F0D801AA0F22
168 | :100A7000BB1FA30192010E943D0B28EE33E040E032
169 | :100A800050E00E94F60A03C02FEF3FEFA90181E07A
170 | :100A90003816A1F0E2E03E1619F131108FC0C7BC44
171 | :100AA000209325013093260140932701509328017C
172 | :100AB00080916E00826080936E0080C0D092890029
173 | :100AC000C09288002093210130932201409323019A
174 | :100AD0005093240180916F00826080936F006EC0FC
175 | :100AE000C092B30020932C0130932D0140932E012E
176 | :100AF00050932F01809170008260809370005EC0DF
177 | :100B000084E06FCFFFEFCF16D104E104F104D1F000
178 | :100B1000C8F062E17AE780E090E0A50194010E94CC
179 | :100B2000180B69017A0181E0C81AD108E108F108BF
180 | :100B3000EFEFCE16D104E104F10411F008F00ACF72
181 | :100B400084E01BCF83E019CF62E17AE780E090E098
182 | :100B5000A50194010E94180B69017A0181E0C81A6D
183 | :100B6000D108E108F108EFEFCE16D104E104F10459
184 | :100B7000C1F0B8F089819A81AB81BC814AE0B5951A
185 | :100B8000A795979587954A95D1F76C017D0121E04E
186 | :100B9000C21AD108E108F108332009F4EDCE87E04C
187 | :100BA00020CF86E0D4CEFFEFCF16D104E104F104CC
188 | :100BB00009F050F684E0CBCE82E013CF0F900F9077
189 | :100BC0000F900F90DF91CF911F910F91FF90EF90B9
190 | :100BD000DF90CF90BF90AF909F908F907F906F905D
191 | :100BE0005F904F903F9008956FEE8AE991E00E94E8
192 | :100BF00026016FEE8AE991E00E9426016FEE8AE9F4
193 | :100C000091E00E9426018AE991E00C946D01CF9257
194 | :100C1000DF92EF92FF920F931F93CF93DF9300D059
195 | :100C200000D0CDB7DEB79FB7F894C0901701D09031
196 | :100C30001801E0901901F0901A019FBF082F10E0F1
197 | :100C40008AE991E049835A836B837C830E94EF0099
198 | :100C500049815A816B817C8180179107A4F42FB759
199 | :100C6000F8948091170190911801A0911901B09109
200 | :100C70001A012FBF8C199D09AE09BF09841795076A
201 | :100C8000A607B707E8F28AE991E00E94EF00801713
202 | :100C9000910724F40E94F40580E001C081E00F90E8
203 | :100CA0000F900F900F90DF91CF911F910F91FF90B8
204 | :100CB000EF90DF90CF900895789484B5826084BDE2
205 | :100CC00084B5816084BD85B5826085BD85B5816050
206 | :100CD00085BD80916E00816080936E0010928100CE
207 | :100CE0008091810082608093810080918100816089
208 | :100CF000809381008091800081608093800080914A
209 | :100D0000B10084608093B1008091B00081608093D5
210 | :100D1000B00080917A00846080937A0080917A009C
211 | :100D2000826080937A0080917A00816080937A005B
212 | :100D300080917A00806880937A001092C100E091DF
213 | :100D4000AA01F091AB0182E08083E091A601F091CD
214 | :100D5000A7011082E091A801F091A90180E18083B0
215 | :100D60001092B201E091AE01F091AF0186E0808374
216 | :100D7000E091AC01F091AD01808180618083E091D0
217 | :100D8000AC01F091AD01808188608083E091AC017D
218 | :100D9000F091AD01808180688083E091AC01F09199
219 | :100DA000AD0180818F7D8083EE24EA94F12CA2E056
220 | :100DB000CA2EEAE5F1E0119241E0EA39F407D9F7E9
221 | :100DC0008AE991E00E94EF000497D0F38AE991E06C
222 | :100DD0000E94CD00809359018F3F09F0C3C38AE977
223 | :100DE00091E00E94CD00809359018E3F09F0BAC373
224 | :100DF0008AE991E00E94CD00809359018D3F09F06E
225 | :100E0000B1C38AE991E00E94CD00809359018C3FE3
226 | :100E100009F0A8C38CEF90E00E9422038DEF90E0D0
227 | :100E20000E9422038EEF90E00E9422038FEF90E059
228 | :100E30000E9422038AE991E00E946D014AEF50E08E
229 | :100E400060E070E083E00E940706882309F48AC30B
230 | :100E50008AE991E00E94CD008B3F910509F082C3A1
231 | :100E60008AE991E00E94CD00C82F809358018AE959
232 | :100E700091E00E94CD008C01982E80935701682F3D
233 | :100E80008AE991E00E9426016C2F8AE991E00E9494
234 | :100E900026016BEF8AE991E00E9426018AE991E040
235 | :100EA0000E946D0148EE53E060E070E084E0800F46
236 | :100EB0000E940706882309F455C3EAE56E2EE1E097
237 | :100EC0007E2E11275801B3E0AB0EB11CC3018A5529
238 | :100ED0009140A816B90644F08AE991E00E94CD003D
239 | :100EE000D3018D933D01F2CF0E5F1F4FF801E65AFB
240 | :100EF000FE4FD080D0925601F501E65AFE4FD081C8
241 | :100F0000D093550148EE53E060E070E081E00E942C
242 | :100F10000706882309F426C38AE991E00E94CD00E0
243 | :100F20008A3F910509F01EC37AE5A72E71E0B72E1E
244 | :100F3000E0E0F0E020E030E0C5018A559140801704
245 | :100F4000910790F4D5018D915D01A901480F511DC4
246 | :100F5000CA01B7010E94E20A9C018E0F9F1FB701D0
247 | :100F60000E94E20AFC01E8CFFE2FEE272E2B3F2B3A
248 | :100F70003093540120935301F901FF27F09352015C
249 | :100F8000E0935101232F33273093500120934F01D9
250 | :100F9000C9018E0F9F1FB7010E94E20A9701281B0B
251 | :100FA000390B30934E0120934D01C9018E0F9F1FC5
252 | :100FB000B7010E94E20AA701481B590B50934C014C
253 | :100FC00040934B018D2D90E02817390709F0C8C2D6
254 | :100FD0008D2F90E04817590709F0C2C280915A013D
255 | :100FE000C813BEC280915B019812BAC28C2F90E0E8
256 | :100FF000FC013197E531F10508F0B2C2EC5CFF4F1E
257 | :101000000C94370B69EF8AE991E00E94260183E096
258 | :1010100090E00E94220362E08AE991E00E942601AA
259 | :1010200081E090E00E941D0382E090E0B3C18091D6
260 | :101030005C01082F10E010934A01009349010E94BF
261 | :101040002703EC01909348018093470169EF8AE9F7
262 | :1010500091E00E94260183E090E00E94220364E078
263 | :1010600023C080915C01082F10E01093460100938B
264 | :101070004501C0915D01D0E0D0934801C093470184
265 | :10108000209711F460E004C0C130D10519F461E08B
266 | :101090000E94C20169EF8AE991E00E94260183E083
267 | :1010A00090E00E94220366E08AE991E00E94260116
268 | :1010B000C8010E941D036DC180915C01082F10E0E2
269 | :1010C0001093460100934501C0915D01D0E0D0939B
270 | :1010D0004801C0934701209711F460E009C0C13076
271 | :1010E000D10511F462E004C0C230D10519F461E009
272 | :1010F0000E94500369EF8AE991E00E94260183E093
273 | :1011000090E00E94220368E0CFCF80915C01282FFD
274 | :1011100030E030934401209343018E3008F08E502C
275 | :1011200087702091010150E4259F90011124822BAA
276 | :1011300080937C0080917A00806480937A00809113
277 | :101140007A0086FDFCCFC091780080917900D0E0D4
278 | :10115000D82BD0934201C093410169EF8AE991E015
279 | :101160000E94260184E090E00E9422036AE08AE95E
280 | :1011700091E00E94260180914301909144010E94D8
281 | :101180001D038D2F90E00E941D03CE01992702C1FF
282 | :1011900010915C01C12FD0E0D0934001C0933F017A
283 | :1011A00000915D01A02EB12CB0923E01A0923D01B4
284 | :1011B00061E0812F0E945003A114B10409F448C0DA
285 | :1011C0008FEFA816B10409F445C0FE01E752FF4FA6
286 | :1011D000E491E330F9F048F4E130B9F0E230A1F500
287 | :1011E00084B5806284BD08BD39C0E730E9F0E830DD
288 | :1011F00019F1E43049F5809180008062809380008D
289 | :10120000B0928B00A0928A0029C084B5806884BD0A
290 | :1012100007BD24C080918000806880938000B092D8
291 | :101220008900A09288001AC08091B00080688093E5
292 | :10123000B0000093B30012C08091B0008062809330
293 | :10124000B0000093B4000AC090E8A916B10414F4E9
294 | :1012500060E001C061E0812F0E94C20169EF8AE96C
295 | :1012600091E00E94260183E090E00E9422036CE05E
296 | :101270008AE991E00E94260180913F01909140010E
297 | :101280000E941D0380913D0190913E0183C0809199
298 | :101290005C01282F30E03093460120934501609196
299 | :1012A0005D0170E0762F662790915E01690F711DD8
300 | :1012B00070933C0160933B012091610130E0322F3B
301 | :1012C000222790916201290F311D032E000C440B3F
302 | :1012D000550B2093370130933801409339015093D7
303 | :1012E0003A01211531054105510519F420E030E09E
304 | :1012F000A9010E948C0369EF8AE991E00E9426010E
305 | :1013000081E090E00E9422036EE021C180915C01A7
306 | :10131000282F30E030934601209345010E94F201CE
307 | :1013200069EF8AE991E00E94260181E090E00E9445
308 | :10133000220360E10CC1C0915C01D0E0D093360182
309 | :10134000C0933501209711F481E00DC0C130D10563
310 | :1013500049F0C230D10519F4C09201010CC0C3306C
311 | :10136000D10521F483E08093010105C0C430D1058B
312 | :1013700011F41092010169EF8AE991E00E942601BF
313 | :1013800082E090E00E94220362E18AE991E00E94FB
314 | :101390002601CE010E941D03DEC000915C01A02E3B
315 | :1013A000B12CB0924601A0924501C0915D018C2EF6
316 | :1013B000912C9092340180923301D0915E01D093B0
317 | :1013C000320110915F0110933101D1113AC0412CCB
318 | :1013D000512C612E712CB301042C02C075956795B8
319 | :1013E0000A94E2F761707727802F0E94C20161E0C2
320 | :1013F0008C2F0E94C20160E08C2F0E94C201AFEFCF
321 | :101400004A1A5A0AB8E04B16510429F769EF8AE9DB
322 | :1014100091E00E94260185E090E00E94220364E1B1
323 | :101420008AE991E00E942601C5010E941D03C401C2
324 | :101430000E941D036D2F8AE991E00E942601612F11
325 | :1014400086C0D13019F787E0482E512C612E712CBF
326 | :10145000B301042C02C0759567950A94E2F7617098
327 | :101460007727802F0E94C20161E08C2F0E94C20169
328 | :1014700060E08C2F0E94C201E1E04E1A510840F753
329 | :10148000C5CF70905C01872C912C90924601809280
330 | :101490004501C0915D01AC2EB12CB0923401A092F7
331 | :1014A0003301D0915E01D0933201D1111AC000E016
332 | :1014B00010E0D12C61E08C2F0E94C201872D0E9488
333 | :1014C0002703002E01C0880F0A94EAF7D82A60E0AB
334 | :1014D0008C2F0E94C2010F5F1F4F0830110551F77A
335 | :1014E00019C0D130C9F407E010E0D12C61E08C2F95
336 | :1014F0000E94C201872D0E942703002E01C0880F81
337 | :101500000A94EAF7D82A60E08C2F0E94C2010150A9
338 | :10151000110960F7D092300169EF8AE991E00E94E9
339 | :10152000260185E090E00E94220366E18AE991E0CD
340 | :101530000E942601C4010E941D03C5010E941D03D3
341 | :101540006D2F8AE991E00E942601609130018AE9BD
342 | :1015500091E00E9426018AE991E00E946D0102C09B
343 | :101560000E94F4050E948F0124CCEAE9F1E0138285
344 | :10157000128288EE93E0A0E0B0E084839583A68396
345 | :10158000B78386E091E09183808385EC90E0958736
346 | :10159000848784EC90E09787868780EC90E0918B3D
347 | :1015A000808B81EC90E0938B828B82EC90E0958B2A
348 | :1015B000848B86EC90E0978B868B118E128E138E27
349 | :1015C000148E0895AA1BBB1B51E107C0AA1FBB1FA5
350 | :1015D000A617B70710F0A61BB70B881F991F5A95BF
351 | :1015E000A9F780959095BC01CD010895A1E21A2E2E
352 | :1015F000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FB7
353 | :10160000A217B307E407F50720F0A21BB30BE40B06
354 | :10161000F50B661F771F881F991F1A9469F760954D
355 | :101620007095809590959B01AC01BD01CF01089507
356 | :10163000052E97FB1EF400940E942F0B57FD07D038
357 | :101640000E94F60A07FC03D04EF40C942F0B509521
358 | :101650004095309521953F4F4F4F5F4F089590959E
359 | :101660008095709561957F4F8F4F9F4F0895EE0F36
360 | :10167000FF1F0590F491E02D09940E94480BA59F4F
361 | :10168000900DB49F900DA49F800D911D112408957D
362 | :10169000A29FB001B39FC001A39F700D811D1124B3
363 | :1016A000911DB29F700D811D1124911D089581E03F
364 | :0C16B00090E0F8940C945C0BF894FFCFD1
365 | :1016BC00FF01000000002601A200EF00CD00E100B8
366 | :0216CC006D01AE
367 | :00000001FF
368 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/ArduinoListener/ArduinoListener.ino.UnoR3.hex:
--------------------------------------------------------------------------------
1 | :100000000C9478000C94A0000C94A0000C94A00018
2 | :100010000C94A0000C94A0000C94A0000C941F025F
3 | :100020000C94A0000C94A0000C94A0000C94A000D0
4 | :100030000C94A0000C94A0000C94A0000C94A000C0
5 | :100040000C94D3020C94A0000C94A1020C947B029B
6 | :100050000C94A0000C94A0000C94A0000C94A000A0
7 | :100060000C94A0000C94A0000208B00A1708B00A73
8 | :100070003108B00A5C08B00A8508B00AC808B00A9E
9 | :100080004709B00A8609B00A9B09B00ACD09B00A2F
10 | :10009000410A00000000240027002A0000000000A0
11 | :1000A00023002600290001020408102040800102DC
12 | :1000B00004081020010204081020000000002500A0
13 | :1000C00028002B00040404040404040402020202B5
14 | :1000D00002020303030303030200000008000201FD
15 | :1000E0000000030407000000000000000000B50A43
16 | :1000F00011241FBECFEFD8E0DEBFCDBF11E0A0E0DE
17 | :10010000B1E0ECEBF6E102C005900D92A231B1072F
18 | :10011000D9F722E0A2E1B1E001C01D92A733B207F6
19 | :10012000E1F710E0C8E7D0E004C02197FE010E948B
20 | :10013000370BC737D107C9F70E945C060C945C0BDC
21 | :100140000C940000CF92DF92EF92FF920F931F93D7
22 | :10015000CF93DF936C017A018B01C0E0D0E0CE1524
23 | :10016000DF0589F0D8016D918D01D601ED91FC91EB
24 | :100170000190F081E02DC6010995892B11F47E01D3
25 | :1001800002C02196ECCFC701DF91CF911F910F9153
26 | :10019000FF90EF90DF90CF900895FC01918D828DBC
27 | :1001A000981761F0828DDF01A80FB11D5D968C91CB
28 | :1001B000928D9F5F9F73928F90E008958FEF9FEFD6
29 | :1001C0000895FC01918D828D981731F0828DE80F92
30 | :1001D000F11D858D90E008958FEF9FEF0895FC014C
31 | :1001E000918D228D892F90E0805C9F4F821B910919
32 | :1001F0008F73992708958AE991E00E94EF0021E02A
33 | :10020000892B09F420E0822F0895FC01848DDF0101
34 | :10021000A80FB11DA35ABF4F2C91848D90E0019679
35 | :100220008F739927848FA689B7892C93A089B18968
36 | :100230008C9180648C93938D848D981306C0028872
37 | :10024000F389E02D80818F7D80830895EF92FF9266
38 | :100250000F931F93CF93DF93EC0181E0888F9B8DE9
39 | :100260008C8D981305C0E889F989808185FD24C0AB
40 | :10027000F62E0B8D10E00F5F1F4F0F731127E02E2E
41 | :100280008C8DE8120CC00FB607FCFACFE889F9890B
42 | :10029000808185FFF5CFCE010E940501F1CF8B8DC6
43 | :1002A000FE01E80FF11DE35AFF4FF0820B8FEA8940
44 | :1002B000FB898081806207C0EE89FF896083E889BD
45 | :1002C000F98980818064808381E090E0DF91CF9123
46 | :1002D0001F910F91FF90EF900895CF93DF93EC0162
47 | :1002E000888D8823C9F0EA89FB89808185FD05C056
48 | :1002F000A889B9898C9186FD0FC00FB607FCF5CF90
49 | :10030000808185FFF2CFA889B9898C9185FFEDCFD7
50 | :10031000CE010E940501E7CFDF91CF91089580E0E3
51 | :1003200090E0892B29F00E94FB0081110C940000C1
52 | :100330000895833081F028F4813099F08230A1F063
53 | :1003400008958730A9F08830B9F08430D1F48091D5
54 | :1003500080008F7D03C0809180008F778093800024
55 | :10036000089584B58F7702C084B58F7D84BD0895CC
56 | :100370008091B0008F7703C08091B0008F7D809313
57 | :10038000B00008951F93CF93DF93282F30E0F90139
58 | :10039000E752FF4F8491F901EA55FF4FD491F901DB
59 | :1003A000EC53FF4FC491CC23C9F0162F81110E944A
60 | :1003B0009901EC2FF0E0EE0FFF1FE654FF4FA591DF
61 | :1003C000B4918FB7F894111105C09C91ED2FE09571
62 | :1003D000E92302C0EC91ED2BEC938FBFDF91CF911D
63 | :1003E0001F91089590910001981324C0E8EDF0E06A
64 | :1003F000E4919FEF90930001E130B9F098F0E23082
65 | :10040000C9F4909170009D7F9093700091E090935B
66 | :10041000B0009091B100987F94609093B1001092D9
67 | :10042000B30008C010926E0005C090916F009D7FD0
68 | :1004300090936F0060E00C94C2010E94570B1F92D2
69 | :100440000F920FB60F9211242F933F934F935F9308
70 | :100450006F937F938F939F93AF93BF93EF93FF938C
71 | :1004600080912C0190912D01A0912E01B0912F012E
72 | :10047000892B8A2B8B2B51F180912B01E091290143
73 | :10048000F0912A0190818927808380912C0190919D
74 | :100490002D01A0912E01B0912F01181619061A06F0
75 | :1004A0001B06C4F480912C0190912D01A0912E0186
76 | :1004B000B0912F010197A109B10980932C0190936C
77 | :1004C0002D01A0932E01B0932F0104C08091000153
78 | :1004D0000E94F201FF91EF91BF91AF919F918F9197
79 | :1004E0007F916F915F914F913F912F910F900FBE30
80 | :1004F0000F901F9018951F920F920FB60F92112414
81 | :100500002F933F934F935F936F937F938F939F931B
82 | :10051000AF93BF93EF93FF938AE991E00E940501A7
83 | :10052000FF91EF91BF91AF919F918F917F916F91CB
84 | :100530005F914F913F912F910F900FBE0F901F90A1
85 | :1005400018951F920F920FB60F9211242F938F932D
86 | :100550009F93EF93FF93E091AA01F091AB0180810B
87 | :10056000E091B001F091B10182FD12C090818091C3
88 | :10057000B3018F5F8F732091B401821751F0E09126
89 | :10058000B301F0E0E656FE4F958F8093B30101C0B2
90 | :100590008081FF91EF919F918F912F910F900FBECE
91 | :1005A0000F901F9018951F920F920FB60F92112463
92 | :1005B0002F933F938F939F93AF93BF938091170196
93 | :1005C00090911801A0911901B0911A013091160172
94 | :1005D00023E0230F2D3720F40196A11DB11D05C086
95 | :1005E00026E8230F0296A11DB11D209316018093CA
96 | :1005F000170190931801A0931901B0931A018091EB
97 | :10060000120190911301A0911401B091150101966E
98 | :10061000A11DB11D8093120190931301A0931401A9
99 | :10062000B0931501BF91AF919F918F913F912F9101
100 | :100630000F900FBE0F901F901895682F8AE991E0D8
101 | :100640000C942601682F8AE991E00C942601CF933F
102 | :10065000DF93282F30E0F901E752FF4F8491F90131
103 | :10066000EA55FF4FD491F901EC53FF4FC491CC23CD
104 | :1006700091F081110E949901EC2FF0E0EE0FFF1F25
105 | :10068000E456FF4FA591B491EC91ED2381E090E009
106 | :1006900021F480E002C080E090E0DF91CF910895E6
107 | :1006A000CF93DF9390E0FC01EA55FF4F2491FC01CA
108 | :1006B000EC53FF4F8491882361F190E0880F991FDC
109 | :1006C000FC01EE56FF4FC591D491FC01E654FF4F5B
110 | :1006D000A591B491611109C09FB7F89488812095C4
111 | :1006E00082238883EC912E230BC0623061F49FB784
112 | :1006F000F8943881822F809583238883EC912E2B68
113 | :100700002C939FBF06C08FB7F894E8812E2B2883C7
114 | :100710008FBFDF91CF9108953F924F925F926F927A
115 | :100720007F928F929F92AF92BF92CF92DF92EF9281
116 | :10073000FF920F931F93CF93DF9300D000D0CDB7DC
117 | :10074000DEB790910001981721F09F3F09F036C263
118 | :1007500004C0E8EDF0E0349081C080930001E8ED42
119 | :10076000F0E0E491EF3F09F429C2E13031F1E230E9
120 | :1007700009F44BC0E11171C014BC15BC94B5926072
121 | :1007800094BD95B5916095BDA82FB0E0FD01EC53E7
122 | :10079000FF4FE491F0E0EE0FFF1FE654FF4F05918D
123 | :1007A00014911093200100931F01FD01EA55FF4FA2
124 | :1007B000E491E0931E01312C53C0109280001092FE
125 | :1007C00081009091810098609093810090918100C8
126 | :1007D000916090938100A82FB0E0FD01EC53FF4F92
127 | :1007E000E491F0E0EE0FFF1FE654FF4F05911491E6
128 | :1007F00010931D0100931C01FD01EA55FF4FE49188
129 | :10080000E0931B01332433942BC01092B00010925C
130 | :10081000B1009091B00092609093B0009091B100BF
131 | :1008200091609093B100A82FB0E0FD01EC53FF4F11
132 | :10083000E491F0E0EE0FFF1FE654FF4F0591149195
133 | :1008400010932A0100932901FD01EA55FF4FE4911D
134 | :10085000E0932B0102E0302E03C03E2E37FCAEC1E8
135 | :1008600029013A018B0161E00E9450034801A12C4B
136 | :10087000B12C832D8D7F09F0BBC060E072E18AE767
137 | :1008800090E0A50194010E94180B29833A834B83C1
138 | :100890005C8369017A0121E0C21AD108E108F108FC
139 | :1008A0008FEFC816D104E104F10409F008F44CC03C
140 | :1008B00060E472E48FE090E0A50194010E94180BBF
141 | :1008C00069017A01E1E0CE1AD108E108F108F2E00D
142 | :1008D0003F1220C02FEFC216D104E104F10409F049
143 | :1008E00008F46AC160E970ED83E090E0A50194012D
144 | :1008F0000E94180B69017A0181E0C81AD108E10849
145 | :10090000F108EFEFCE16D104E104F10409F0D0F5BF
146 | :1009100083E067C0FFEFCF16D104E104F104B1F02A
147 | :10092000A8F068E478EE81E090E0A50194010E94CF
148 | :10093000180B69017A0181E0C81AD108E108F108B1
149 | :10094000332009F4DFC02FC181E001C082E03320F1
150 | :10095000A1F047C089819A81AB81BC812AE0B5951D
151 | :10096000A795979587952A95D1F76C017D0121E090
152 | :10097000C21AD108E108F10885E095B5987F892B66
153 | :1009800085BD6FC068E478EE81E090E0A501940138
154 | :100990000E94180B69017A01F1E0CF1AD108E10831
155 | :1009A000F1082FEFC216D104E104F10409F008F4B4
156 | :1009B000A7C064E274EF80E090E0A50194010E947A
157 | :1009C000180B69017A01E1E0CE1AD108E108F108BB
158 | :1009D000FFEFCF16D104E104F10411F008F0B4C028
159 | :1009E00085E09091B100987F892B8093B10039C048
160 | :1009F00060E072E18AE790E0A50194010E94180B83
161 | :100A000069017A0181E0C81AD108E108F108C1142E
162 | :100A1000D104E1E0EE06F10488F068E478EE81E0CC
163 | :100A200090E0A50194010E94180B69017A01F1E0A0
164 | :100A3000CF1AD108E108F10893E001C091E021E06C
165 | :100A400032120FC080918100887F892B80938100B2
166 | :100A5000411451046104710449F42FEF3FEFA901DF
167 | :100A60002DC0411451046104710471F0D801AA0F22
168 | :100A7000BB1FA30192010E943D0B28EE33E040E032
169 | :100A800050E00E94F60A03C02FEF3FEFA90181E07A
170 | :100A90003816A1F0E2E03E1619F131108FC0C7BC44
171 | :100AA000209325013093260140932701509328017C
172 | :100AB00080916E00826080936E0080C0D092890029
173 | :100AC000C09288002093210130932201409323019A
174 | :100AD0005093240180916F00826080936F006EC0FC
175 | :100AE000C092B30020932C0130932D0140932E012E
176 | :100AF00050932F01809170008260809370005EC0DF
177 | :100B000084E06FCFFFEFCF16D104E104F104D1F000
178 | :100B1000C8F062E17AE780E090E0A50194010E94CC
179 | :100B2000180B69017A0181E0C81AD108E108F108BF
180 | :100B3000EFEFCE16D104E104F10411F008F00ACF72
181 | :100B400084E01BCF83E019CF62E17AE780E090E098
182 | :100B5000A50194010E94180B69017A0181E0C81A6D
183 | :100B6000D108E108F108EFEFCE16D104E104F10459
184 | :100B7000C1F0B8F089819A81AB81BC814AE0B5951A
185 | :100B8000A795979587954A95D1F76C017D0121E04E
186 | :100B9000C21AD108E108F108332009F4EDCE87E04C
187 | :100BA00020CF86E0D4CEFFEFCF16D104E104F104CC
188 | :100BB00009F050F684E0CBCE82E013CF0F900F9077
189 | :100BC0000F900F90DF91CF911F910F91FF90EF90B9
190 | :100BD000DF90CF90BF90AF909F908F907F906F905D
191 | :100BE0005F904F903F9008956FEE8AE991E00E94E8
192 | :100BF00026016FEE8AE991E00E9426016FEE8AE9F4
193 | :100C000091E00E9426018AE991E00C946D01CF9257
194 | :100C1000DF92EF92FF920F931F93CF93DF9300D059
195 | :100C200000D0CDB7DEB79FB7F894C0901701D09031
196 | :100C30001801E0901901F0901A019FBF082F10E0F1
197 | :100C40008AE991E049835A836B837C830E94EF0099
198 | :100C500049815A816B817C8180179107A4F42FB759
199 | :100C6000F8948091170190911801A0911901B09109
200 | :100C70001A012FBF8C199D09AE09BF09841795076A
201 | :100C8000A607B707E8F28AE991E00E94EF00801713
202 | :100C9000910724F40E94F40580E001C081E00F90E8
203 | :100CA0000F900F900F90DF91CF911F910F91FF90B8
204 | :100CB000EF90DF90CF900895789484B5826084BDE2
205 | :100CC00084B5816084BD85B5826085BD85B5816050
206 | :100CD00085BD80916E00816080936E0010928100CE
207 | :100CE0008091810082608093810080918100816089
208 | :100CF000809381008091800081608093800080914A
209 | :100D0000B10084608093B1008091B00081608093D5
210 | :100D1000B00080917A00846080937A0080917A009C
211 | :100D2000826080937A0080917A00816080937A005B
212 | :100D300080917A00806880937A001092C100E091DF
213 | :100D4000AA01F091AB0182E08083E091A601F091CD
214 | :100D5000A7011082E091A801F091A90180E18083B0
215 | :100D60001092B201E091AE01F091AF0186E0808374
216 | :100D7000E091AC01F091AD01808180618083E091D0
217 | :100D8000AC01F091AD01808188608083E091AC017D
218 | :100D9000F091AD01808180688083E091AC01F09199
219 | :100DA000AD0180818F7D8083EE24EA94F12CA2E056
220 | :100DB000CA2EEAE5F1E0119241E0EA39F407D9F7E9
221 | :100DC0008AE991E00E94EF000497D0F38AE991E06C
222 | :100DD0000E94CD00809359018F3F09F0C3C38AE977
223 | :100DE00091E00E94CD00809359018E3F09F0BAC373
224 | :100DF0008AE991E00E94CD00809359018D3F09F06E
225 | :100E0000B1C38AE991E00E94CD00809359018C3FE3
226 | :100E100009F0A8C38CEF90E00E9422038DEF90E0D0
227 | :100E20000E9422038EEF90E00E9422038FEF90E059
228 | :100E30000E9422038AE991E00E946D014AEF50E08E
229 | :100E400060E070E083E00E940706882309F48AC30B
230 | :100E50008AE991E00E94CD008B3F910509F082C3A1
231 | :100E60008AE991E00E94CD00C82F809358018AE959
232 | :100E700091E00E94CD008C01982E80935701682F3D
233 | :100E80008AE991E00E9426016C2F8AE991E00E9494
234 | :100E900026016BEF8AE991E00E9426018AE991E040
235 | :100EA0000E946D0148EE53E060E070E084E0800F46
236 | :100EB0000E940706882309F455C3EAE56E2EE1E097
237 | :100EC0007E2E11275801B3E0AB0EB11CC3018A5529
238 | :100ED0009140A816B90644F08AE991E00E94CD003D
239 | :100EE000D3018D933D01F2CF0E5F1F4FF801E65AFB
240 | :100EF000FE4FD080D0925601F501E65AFE4FD081C8
241 | :100F0000D093550148EE53E060E070E081E00E942C
242 | :100F10000706882309F426C38AE991E00E94CD00E0
243 | :100F20008A3F910509F01EC37AE5A72E71E0B72E1E
244 | :100F3000E0E0F0E020E030E0C5018A559140801704
245 | :100F4000910790F4D5018D915D01A901480F511DC4
246 | :100F5000CA01B7010E94E20A9C018E0F9F1FB701D0
247 | :100F60000E94E20AFC01E8CFFE2FEE272E2B3F2B3A
248 | :100F70003093540120935301F901FF27F09352015C
249 | :100F8000E0935101232F33273093500120934F01D9
250 | :100F9000C9018E0F9F1FB7010E94E20A9701281B0B
251 | :100FA000390B30934E0120934D01C9018E0F9F1FC5
252 | :100FB000B7010E94E20AA701481B590B50934C014C
253 | :100FC00040934B018D2D90E02817390709F0C8C2D6
254 | :100FD0008D2F90E04817590709F0C2C280915A013D
255 | :100FE000C813BEC280915B019812BAC28C2F90E0E8
256 | :100FF000FC013197E531F10508F0B2C2EC5CFF4F1E
257 | :101000000C94370B69EF8AE991E00E94260183E096
258 | :1010100090E00E94220362E08AE991E00E942601AA
259 | :1010200081E090E00E941D0382E090E0B3C18091D6
260 | :101030005C01082F10E010934A01009349010E94BF
261 | :101040002703EC01909348018093470169EF8AE9F7
262 | :1010500091E00E94260183E090E00E94220364E078
263 | :1010600023C080915C01082F10E01093460100938B
264 | :101070004501C0915D01D0E0D0934801C093470184
265 | :10108000209711F460E004C0C130D10519F461E08B
266 | :101090000E94C20169EF8AE991E00E94260183E083
267 | :1010A00090E00E94220366E08AE991E00E94260116
268 | :1010B000C8010E941D036DC180915C01082F10E0E2
269 | :1010C0001093460100934501C0915D01D0E0D0939B
270 | :1010D0004801C0934701209711F460E009C0C13076
271 | :1010E000D10511F462E004C0C230D10519F461E009
272 | :1010F0000E94500369EF8AE991E00E94260183E093
273 | :1011000090E00E94220368E0CFCF80915C01282FFD
274 | :1011100030E030934401209343018E3008F08E502C
275 | :1011200087702091010150E4259F90011124822BAA
276 | :1011300080937C0080917A00806480937A00809113
277 | :101140007A0086FDFCCFC091780080917900D0E0D4
278 | :10115000D82BD0934201C093410169EF8AE991E015
279 | :101160000E94260184E090E00E9422036AE08AE95E
280 | :1011700091E00E94260180914301909144010E94D8
281 | :101180001D038D2F90E00E941D03CE01992702C1FF
282 | :1011900010915C01C12FD0E0D0934001C0933F017A
283 | :1011A00000915D01A02EB12CB0923E01A0923D01B4
284 | :1011B00061E0812F0E945003A114B10409F448C0DA
285 | :1011C0008FEFA816B10409F445C0FE01E752FF4FA6
286 | :1011D000E491E330F9F048F4E130B9F0E230A1F500
287 | :1011E00084B5806284BD08BD39C0E730E9F0E830DD
288 | :1011F00019F1E43049F5809180008062809380008D
289 | :10120000B0928B00A0928A0029C084B5806884BD0A
290 | :1012100007BD24C080918000806880938000B092D8
291 | :101220008900A09288001AC08091B00080688093E5
292 | :10123000B0000093B30012C08091B0008062809330
293 | :10124000B0000093B4000AC090E8A916B10414F4E9
294 | :1012500060E001C061E0812F0E94C20169EF8AE96C
295 | :1012600091E00E94260183E090E00E9422036CE05E
296 | :101270008AE991E00E94260180913F01909140010E
297 | :101280000E941D0380913D0190913E0183C0809199
298 | :101290005C01282F30E03093460120934501609196
299 | :1012A0005D0170E0762F662790915E01690F711DD8
300 | :1012B00070933C0160933B012091610130E0322F3B
301 | :1012C000222790916201290F311D032E000C440B3F
302 | :1012D000550B2093370130933801409339015093D7
303 | :1012E0003A01211531054105510519F420E030E09E
304 | :1012F000A9010E948C0369EF8AE991E00E9426010E
305 | :1013000081E090E00E9422036EE021C180915C01A7
306 | :10131000282F30E030934601209345010E94F201CE
307 | :1013200069EF8AE991E00E94260181E090E00E9445
308 | :10133000220360E10CC1C0915C01D0E0D093360182
309 | :10134000C0933501209711F481E00DC0C130D10563
310 | :1013500049F0C230D10519F4C09201010CC0C3306C
311 | :10136000D10521F483E08093010105C0C430D1058B
312 | :1013700011F41092010169EF8AE991E00E942601BF
313 | :1013800082E090E00E94220362E18AE991E00E94FB
314 | :101390002601CE010E941D03DEC000915C01A02E3B
315 | :1013A000B12CB0924601A0924501C0915D018C2EF6
316 | :1013B000912C9092340180923301D0915E01D093B0
317 | :1013C000320110915F0110933101D1113AC0412CCB
318 | :1013D000512C612E712CB301042C02C075956795B8
319 | :1013E0000A94E2F761707727802F0E94C20161E0C2
320 | :1013F0008C2F0E94C20160E08C2F0E94C201AFEFCF
321 | :101400004A1A5A0AB8E04B16510429F769EF8AE9DB
322 | :1014100091E00E94260185E090E00E94220364E1B1
323 | :101420008AE991E00E942601C5010E941D03C401C2
324 | :101430000E941D036D2F8AE991E00E942601612F11
325 | :1014400086C0D13019F787E0482E512C612E712CBF
326 | :10145000B301042C02C0759567950A94E2F7617098
327 | :101460007727802F0E94C20161E08C2F0E94C20169
328 | :1014700060E08C2F0E94C201E1E04E1A510840F753
329 | :10148000C5CF70905C01872C912C90924601809280
330 | :101490004501C0915D01AC2EB12CB0923401A092F7
331 | :1014A0003301D0915E01D0933201D1111AC000E016
332 | :1014B00010E0D12C61E08C2F0E94C201872D0E9488
333 | :1014C0002703002E01C0880F0A94EAF7D82A60E0AB
334 | :1014D0008C2F0E94C2010F5F1F4F0830110551F77A
335 | :1014E00019C0D130C9F407E010E0D12C61E08C2F95
336 | :1014F0000E94C201872D0E942703002E01C0880F81
337 | :101500000A94EAF7D82A60E08C2F0E94C2010150A9
338 | :10151000110960F7D092300169EF8AE991E00E94E9
339 | :10152000260185E090E00E94220366E18AE991E0CD
340 | :101530000E942601C4010E941D03C5010E941D03D3
341 | :101540006D2F8AE991E00E942601609130018AE9BD
342 | :1015500091E00E9426018AE991E00E946D0102C09B
343 | :101560000E94F4050E948F0124CCEAE9F1E0138285
344 | :10157000128288EE93E0A0E0B0E084839583A68396
345 | :10158000B78386E091E09183808385EC90E0958736
346 | :10159000848784EC90E09787868780EC90E0918B3D
347 | :1015A000808B81EC90E0938B828B82EC90E0958B2A
348 | :1015B000848B86EC90E0978B868B118E128E138E27
349 | :1015C000148E0895AA1BBB1B51E107C0AA1FBB1FA5
350 | :1015D000A617B70710F0A61BB70B881F991F5A95BF
351 | :1015E000A9F780959095BC01CD010895A1E21A2E2E
352 | :1015F000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FB7
353 | :10160000A217B307E407F50720F0A21BB30BE40B06
354 | :10161000F50B661F771F881F991F1A9469F760954D
355 | :101620007095809590959B01AC01BD01CF01089507
356 | :10163000052E97FB1EF400940E942F0B57FD07D038
357 | :101640000E94F60A07FC03D04EF40C942F0B509521
358 | :101650004095309521953F4F4F4F5F4F089590959E
359 | :101660008095709561957F4F8F4F9F4F0895EE0F36
360 | :10167000FF1F0590F491E02D09940E94480BA59F4F
361 | :10168000900DB49F900DA49F800D911D112408957D
362 | :10169000A29FB001B39FC001A39F700D811D1124B3
363 | :1016A000911DB29F700D811D1124911D089581E03F
364 | :0C16B00090E0F8940C945C0BF894FFCFD1
365 | :1016BC00FF01000000002601A200EF00CD00E100B8
366 | :0216CC006D01AE
367 | :00000001FF
368 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/DigitalValue.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver
2 | {
3 | public enum DigitalValue
4 | {
5 | Low = 0,
6 | High = 1
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("ArduinoDriver")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("ArduinoDriver")]
12 | [assembly: AssemblyCopyright("Copyright © 2016 - 2018")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("23bc4b2a-41e3-490a-b6ce-b44a964b9ac3")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("2.4.6.0")]
35 | [assembly: AssemblyFileVersion("2.4.6.0")]
36 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ArduinoDriver.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ArduinoDriver.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Byte[].
65 | ///
66 | internal static byte[] ArduinoListener_ino_Mega2560 {
67 | get {
68 | object obj = ResourceManager.GetObject("ArduinoListener_ino_Mega2560", resourceCulture);
69 | return ((byte[])(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Byte[].
75 | ///
76 | internal static byte[] ArduinoListener_ino_NanoR3 {
77 | get {
78 | object obj = ResourceManager.GetObject("ArduinoListener_ino_NanoR3", resourceCulture);
79 | return ((byte[])(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Byte[].
85 | ///
86 | internal static byte[] ArduinoListener_ino_UnoR3 {
87 | get {
88 | object obj = ResourceManager.GetObject("ArduinoListener_ino_UnoR3", resourceCulture);
89 | return ((byte[])(obj));
90 | }
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\ArduinoListener\ArduinoListener.ino.Mega2560.hex;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
123 |
124 |
125 | ..\ArduinoListener\ArduinoListener.ino.NanoR3.hex;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
126 |
127 |
128 | ..\ArduinoListener\ArduinoListener.ino.UnoR3.hex;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
129 |
130 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogReadRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class AnalogReadRequest : ArduinoRequest
4 | {
5 | public AnalogReadRequest(byte pinToRead)
6 | : base(CommandConstants.AnalogRead)
7 | {
8 | Bytes.Add(pinToRead);
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogReadResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class AnalogReadResponse : ArduinoResponse
4 | {
5 | public int PinRead { get; private set; }
6 | public int PinValue { get; private set; }
7 |
8 | public AnalogReadResponse(byte pinRead, byte byte1, byte byte2)
9 | {
10 | PinRead = pinRead;
11 | PinValue = (byte1 << 8) + byte2;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogReferenceRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class AnalogReferenceRequest : ArduinoRequest
4 | {
5 | public AnalogReferenceRequest(AnalogReferenceType analogReferenceType)
6 | : base(CommandConstants.AnalogReference)
7 | {
8 | Bytes.Add((byte) analogReferenceType);
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogReferenceResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class AnalogReferenceResponse : ArduinoResponse
4 | {
5 | public AnalogReferenceType ReferenceType { get; private set; }
6 |
7 | public AnalogReferenceResponse(AnalogReferenceType referenceType)
8 | {
9 | ReferenceType = referenceType;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogReferenceType.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public enum AnalogReferenceType
4 | {
5 | Default,
6 | Internal, // Not for Arduino MEGA
7 | Internal1v1, // Arduino MEGA only
8 | Internal2v56, // Arduino MEGA only
9 | External
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogWriteRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class AnalogWriteRequest : ArduinoRequest
4 | {
5 | public AnalogWriteRequest(byte pinToWrite, byte valueToWrite)
6 | : base(CommandConstants.AnalogWrite)
7 | {
8 | Bytes.Add(pinToWrite);
9 | Bytes.Add(valueToWrite);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/AnalogWriteResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class AnalogWriteResponse : ArduinoResponse
4 | {
5 | public int PinWritten { get; private set; }
6 | public int ValueWritten { get; private set; }
7 |
8 | public AnalogWriteResponse(byte pinRead, byte value)
9 | {
10 | PinWritten = pinRead;
11 | ValueWritten = value;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ArduinoMessage.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public abstract class ArduinoMessage
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ArduinoRequest.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | namespace ArduinoDriver.SerialProtocol
6 | {
7 | public abstract class ArduinoRequest : ArduinoMessage
8 | {
9 | protected ArduinoRequest(byte command)
10 | {
11 | Command = command;
12 | }
13 |
14 | internal IList Bytes = new List();
15 | internal byte Command { get; private set; }
16 |
17 | public override string ToString()
18 | {
19 | return string.Format("{0} ({1})", GetType().FullName,
20 | BitConverter.ToString(Bytes.ToArray()));
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ArduinoResponse.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace ArduinoDriver.SerialProtocol
4 | {
5 | public abstract class ArduinoResponse : ArduinoMessage
6 | {
7 | public static ArduinoResponse Create(byte[] bytes)
8 | {
9 | var commandByte = bytes[0];
10 | switch (commandByte)
11 | {
12 | case CommandConstants.HandshakeAck:
13 | {
14 | return new HandShakeResponse(bytes[1], bytes[2]);
15 | }
16 | case CommandConstants.DigitalReadAck:
17 | {
18 | return new DigitalReadResponse(bytes[1], (DigitalValue) bytes[2]);
19 | }
20 | case CommandConstants.DigitalWriteAck:
21 | {
22 | return new DigitalWriteReponse(bytes[1], (DigitalValue) bytes[2]);
23 | }
24 | case CommandConstants.PinModeAck:
25 | {
26 | return new PinModeResponse(bytes[1], (PinMode) bytes[2]);
27 | }
28 | case CommandConstants.AnalogReadAck:
29 | {
30 | return new AnalogReadResponse(bytes[1], bytes[2], bytes[3]);
31 | }
32 | case CommandConstants.AnalogWriteAck:
33 | {
34 | return new AnalogWriteResponse(bytes[1], bytes[2]);
35 | }
36 | case CommandConstants.Error:
37 | {
38 | return new ErrorResponse(bytes[1], bytes[2], bytes[3]);
39 | }
40 | case CommandConstants.ToneAck:
41 | {
42 | return new ToneResponse();
43 | }
44 | case CommandConstants.NoToneAck:
45 | {
46 | return new NoToneResponse();
47 | }
48 | case CommandConstants.AnalogReferenceAck:
49 | {
50 | return new AnalogReferenceResponse((AnalogReferenceType) bytes[1]);
51 | }
52 | case CommandConstants.ShiftOutAck:
53 | {
54 | return new ShiftOutResponse(bytes[1], bytes[2], (BitOrder)bytes[3], bytes[4]);
55 | }
56 | case CommandConstants.ShiftInAck:
57 | {
58 | return new ShiftInResponse(bytes[1], bytes[2], (BitOrder)bytes[3], bytes[4]);
59 | }
60 | default:
61 | {
62 | throw new IOException(string.Format("Unexpected command byte in response: {0}!", commandByte));
63 | }
64 | }
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/BitOrder.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public enum BitOrder
4 | {
5 | LSBFIRST,
6 | MSBFIRST
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/CommandConstants.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public static class CommandConstants
4 | {
5 | public static readonly byte[] SyncBytes = { 0xff, 0xfe, 0xfd, 0xfc };
6 | public static readonly byte[] SyncAckBytes = { 0xfc, 0xfd, 0xfe, 0xff };
7 |
8 | public const byte StartOfMessage = 0xFB;
9 | public const byte AllBytesWritten = 0xFA;
10 | public const byte StartOfResponseMarker = 0xF9;
11 | public const byte Error = 0xEF;
12 |
13 | public const byte HandshakeInitiate = 0x01;
14 | public const byte HandshakeAck = 0x02;
15 | public const byte DigitalRead = 0x03;
16 | public const byte DigitalReadAck = 0x04;
17 | public const byte DigitalWrite = 0x05;
18 | public const byte DigitalWriteAck = 0x06;
19 | public const byte PinMode = 0x07;
20 | public const byte PinModeAck = 0x08;
21 | public const byte AnalogRead = 0x09;
22 | public const byte AnalogReadAck = 0x0A;
23 | public const byte AnalogWrite = 0x0B;
24 | public const byte AnalogWriteAck = 0x0C;
25 | public const byte Tone = 0x0D;
26 | public const byte ToneAck = 0x0E;
27 | public const byte NoTone = 0x0F;
28 | public const byte NoToneAck = 0x10;
29 | public const byte AnalogReference = 0x11;
30 | public const byte AnalogReferenceAck = 0x12;
31 | public const byte ShiftOut = 0x13;
32 | public const byte ShiftOutAck = 0x14;
33 | public const byte ShiftIn = 0x15;
34 | public const byte ShiftInAck = 0x16;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/DigitalReadRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class DigitalReadRequest : ArduinoRequest
4 | {
5 | public DigitalReadRequest(byte pinToRead)
6 | : base(CommandConstants.DigitalRead)
7 | {
8 | Bytes.Add(pinToRead);
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/DigitalReadResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class DigitalReadResponse : ArduinoResponse
4 | {
5 | public int PinRead { get; private set; }
6 | public DigitalValue PinValue { get; private set; }
7 |
8 | public DigitalReadResponse(byte pinRead, DigitalValue value)
9 | {
10 | PinRead = pinRead;
11 | PinValue = value;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/DigitalWriteReponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class DigitalWriteReponse : ArduinoResponse
4 | {
5 | public int PinWritten { get; private set; }
6 | public DigitalValue PinValue { get; private set; }
7 |
8 | public DigitalWriteReponse(byte pinRead, DigitalValue value)
9 | {
10 | PinWritten = pinRead;
11 | PinValue = value;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/DigitalWriteRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class DigitalWriteRequest : ArduinoRequest
4 | {
5 | public DigitalWriteRequest(byte pinToWrite, DigitalValue pinValue)
6 | : base(CommandConstants.DigitalWrite)
7 | {
8 | Bytes.Add(pinToWrite);
9 | Bytes.Add((byte)pinValue);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ErrorResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ErrorResponse : ArduinoResponse
4 | {
5 | public byte Byte1 { get; private set; }
6 | public byte Byte2 { get; private set; }
7 | public byte Byte3 { get; private set; }
8 |
9 | public ErrorResponse(byte byte1, byte byte2, byte byte3)
10 | {
11 | Byte1 = byte1;
12 | Byte2 = byte2;
13 | Byte3 = byte3;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/HandShakeRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class HandShakeRequest : ArduinoRequest
4 | {
5 | public HandShakeRequest()
6 | : base(CommandConstants.HandshakeInitiate)
7 | {
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/HandShakeResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class HandShakeResponse : ArduinoResponse
4 | {
5 | public int ProtocolMajorVersion { get; private set; }
6 | public int ProtocolMinorVersion { get; private set; }
7 |
8 | public HandShakeResponse(byte protocolMajorVersion, byte protocolMinorVersion)
9 | {
10 | ProtocolMajorVersion = protocolMajorVersion;
11 | ProtocolMinorVersion = protocolMinorVersion;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/NoToneRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class NoToneRequest : ArduinoRequest
4 | {
5 | public NoToneRequest(byte pinToWrite)
6 | : base(CommandConstants.NoTone)
7 | {
8 | Bytes.Add(pinToWrite);
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/NoToneResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class NoToneResponse : ArduinoResponse
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/PinMode.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public enum PinMode
4 | {
5 | Input,
6 | InputPullup,
7 | Output
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/PinModeRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class PinModeRequest : ArduinoRequest
4 | {
5 | public PinModeRequest(byte pin, PinMode mode)
6 | : base(CommandConstants.PinMode)
7 | {
8 | Bytes.Add(pin);
9 | Bytes.Add((byte)mode);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/PinModeResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class PinModeResponse : ArduinoResponse
4 | {
5 | public int Pin { get; private set; }
6 | public PinMode Mode { get; private set; }
7 |
8 | public PinModeResponse(byte pin, PinMode mode)
9 | {
10 | Pin = pin;
11 | Mode = mode;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ShiftInRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ShiftInRequest : ArduinoRequest
4 | {
5 | public ShiftInRequest(byte dataPin, byte clockPin, BitOrder bitOrder)
6 | : base(CommandConstants.ShiftIn)
7 | {
8 | Bytes.Add(dataPin);
9 | Bytes.Add(clockPin);
10 | Bytes.Add((byte)bitOrder);
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ShiftInResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ShiftInResponse : ArduinoResponse
4 | {
5 | public int DigitalPin { get; private set; }
6 | public int ClockPin { get; private set; }
7 | public BitOrder BitOrder { get; private set; }
8 | public byte Incoming { get; private set; }
9 |
10 | public ShiftInResponse(byte digitalPin, byte clockPin, BitOrder bitOrder, byte incoming)
11 | {
12 | DigitalPin = digitalPin;
13 | ClockPin = clockPin;
14 | BitOrder = bitOrder;
15 | Incoming = incoming;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ShiftOutRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ShiftOutRequest : ArduinoRequest
4 | {
5 | public ShiftOutRequest(byte dataPin, byte clockPin, BitOrder bitOrder, byte value)
6 | : base(CommandConstants.ShiftOut)
7 | {
8 | Bytes.Add(dataPin);
9 | Bytes.Add(clockPin);
10 | Bytes.Add((byte)bitOrder);
11 | Bytes.Add(value);
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ShiftOutResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ShiftOutResponse : ArduinoResponse
4 | {
5 | public int DigitalPin { get; private set; }
6 | public int ClockPin { get; private set; }
7 | public BitOrder BitOrder { get; private set; }
8 | public byte Value { get; private set; }
9 |
10 | public ShiftOutResponse(byte digitalPin, byte clockPin, BitOrder bitOrder, byte value)
11 | {
12 | DigitalPin = digitalPin;
13 | ClockPin = clockPin;
14 | BitOrder = bitOrder;
15 | Value = value;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ToneRequest.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ToneRequest : ArduinoRequest
4 | {
5 | public ToneRequest(byte pinToWrite, ushort frequency)
6 | : base(CommandConstants.Tone)
7 | {
8 | Write(pinToWrite, frequency, 0);
9 | }
10 |
11 | public ToneRequest(byte pinToWrite, ushort frequency, uint duration)
12 | : base(CommandConstants.Tone)
13 | {
14 | Write(pinToWrite, frequency, duration);
15 | }
16 |
17 | private void Write(byte pinToWrite, ushort frequency, uint duration)
18 | {
19 | Bytes.Add(pinToWrite);
20 | Bytes.Add((byte)(frequency >> 8));
21 | Bytes.Add((byte)(frequency & 0xff));
22 | Bytes.Add((byte)(duration >> 24));
23 | Bytes.Add((byte)(duration >> 16));
24 | Bytes.Add((byte)(duration >> 8));
25 | Bytes.Add((byte)(duration & 0xff));
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/SerialProtocol/ToneResponse.cs:
--------------------------------------------------------------------------------
1 | namespace ArduinoDriver.SerialProtocol
2 | {
3 | public class ToneResponse : ArduinoResponse
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Source/ArduinoDriver/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------