├── .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 | ![ArduinoDriver](https://github.com/christophediericx/ArduinoDriver/blob/master/Images/ArduinoDriver.png) 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 | [![NuGet version](https://badge.fury.io/nu/ArduinoDriver.svg)](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 | --------------------------------------------------------------------------------