<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to use external gps location data in ArcGIS Runtime SDK for iOS Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67019#M656</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Glad it helps. Cheers, Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 21 Aug 2019 23:40:53 GMT</pubDate>
    <dc:creator>ShiminCai</dc:creator>
    <dc:date>2019-08-21T23:40:53Z</dc:date>
    <item>
      <title>How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66992#M629</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a new requirement for our apps to use external gps location updates (Bad Elf GPS Unit) besides the default Apple location service updates. I understood that I need to create a custom location display data source class that conforms to the protocol &amp;lt;&lt;A href="https://developers.arcgis.com/ios/10-2/api-reference/protocol_a_g_s_location_display_data_source-p.html" style="color: #7a7782; font-weight: bold; font-size: 14px;"&gt;AGSLocationDisplayDataSource&lt;/A&gt;&amp;gt; and replace the mapVidw.locationDisplay.dataSource. My question is that: how do I implement the start method in the &amp;nbsp;protocol of &amp;lt;&lt;A class="" href="https://developers.arcgis.com/ios/10-2/api-reference/protocol_a_g_s_location_display_data_source-p.html" style="color: #7a7782; font-weight: bold; font-size: 14px;"&gt;AGSLocationDisplayDataSource&lt;/A&gt;&amp;gt;?&amp;nbsp;I'm currently still on 10.2.5 and later will look at the 100.2.1 as well. Can anyone please shed any light on this or have any working code to share?&amp;nbsp;Many thanks for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 May 2018 05:02:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66992#M629</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-04T05:02:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66993#M630</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You do not necessarily need to implement a custom location datasource.&lt;/P&gt;&lt;P&gt;If you successfully pair your external GPS receiver with the device, then iOS should start using the location feed coming from the receiver instead of the in-built sensor. That location feed will come through to all apps using the standard Apple location manager apis, which is what the default&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;AGSCLLocationDataSource uses, so you don't need to build a custom location datasource.&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;You really only need a custom datasource if you want to use special apis/sdk that the manufacturer&amp;nbsp;provides for pulling extended or proprietary information&amp;nbsp;from the receiver, or if you want to add additional intelligence in the datasource for dealing with location updates&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 May 2018 17:52:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66993#M630</guid>
      <dc:creator>DiveshGoyal</dc:creator>
      <dc:date>2018-05-04T17:52:39Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66994#M631</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Divesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your reply. I'm getting a Bad Elf GPS Unit and will be testing that out.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Bad Elf GPS has its own sdk/api to pull so much info from the receiver. I think soon or later I will be asked to read other extended infos from the receiver and in this case I will have to implement a custom location datasource as you suggested.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think I also have another use case of custom location datasource: location feed from drones. One of our projects looks at getting drone location and drone status (pitch, roll, yaw and gimbal) using the drone api. It was proposed that the project/app transmit the location data obtained from drones to an ad-hoc peer to peer wireless connected device using the Apple's MultiPeer Connectivity framework. Thus our apps will need to use the location feeds from drones and that's why I'm thinking the custom location datasource class... Any advises on this as well please? &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So any advises on how to implement a custom location datasource or directions leading to any documentation about it would be much appreciated, and everyone please?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 06 May 2018 23:57:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66994#M631</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-06T23:57:02Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66995#M632</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Divesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Just found out that our users have already tried what you suggested pairing Bad Elf GPS receivers and their devices and had the problem of iOS switching location feeds from external GPS receiver and the in-built sensor randomly. They want to be able to control the source of location feeds. Looks like the custom location datasource is the way for me to go...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 May 2018 03:06:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66995#M632</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-07T03:06:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66996#M633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI &lt;A href="https://community.esri.com/migrated-users/23123"&gt;Shimin Cai&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you're still looking to implement your own data source, look at the reference doc &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/category_a_g_s_location_data_source_07_for_subclass_eyes_only_08.html"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's what you need to do.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Implement&amp;nbsp;a class that inherits from &lt;EM&gt;AGSLocationDataSource&lt;/EM&gt;. The key functions you need to implement are &lt;STRONG&gt;doStart()&lt;/STRONG&gt; and &lt;STRONG&gt;doStop()&lt;/STRONG&gt;. These are the entry points to your class.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;&amp;lt; Runtime communicating &lt;SPAN style="text-decoration: underline;"&gt;to&lt;/SPAN&gt; your custom location data source:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;EM&gt;doStart()&lt;/EM&gt; will be called by the Runtime when you call &lt;EM&gt;AGSMapView.locationDisplay.startWithCompletion()&lt;/EM&gt;.&lt;/LI&gt;&lt;LI&gt;&lt;EM&gt;doStop()&lt;/EM&gt; will be called by the Runtime when you call &lt;EM&gt;AGSMapView.locationDisplay.stop()&lt;/EM&gt;.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt; Providing feedback to&amp;nbsp;Runtime during startup/shutdown:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Starting your external device&amp;nbsp;- When Runtime calls your &lt;EM&gt;doStart()&lt;/EM&gt; function, you need to tell Runtime once the external device has started up. Call &lt;EM&gt;self.didStartOrFailWithError:()&lt;/EM&gt;&amp;nbsp;from within your &lt;EM&gt;doStart()&lt;/EM&gt; function to let the Runtime know your external device has started or that it failed to start.&lt;/LI&gt;&lt;LI&gt;Stopping your external device&amp;nbsp;- When Runtime calls your &lt;EM&gt;doStop()&lt;/EM&gt; function, you need to tell Runtime once&amp;nbsp;the external device has stopped. Call &lt;EM&gt;didStop()&lt;/EM&gt; from within your &lt;EM&gt;doStop()&lt;/EM&gt; function to let the Runtime know your external GPS device has stopped.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt; Providing location updates&amp;nbsp;&lt;SPAN style="text-decoration: underline;"&gt;to&lt;/SPAN&gt; Runtime:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Getting a new location -&amp;nbsp;Whenever your external device's API gives you a new location,&amp;nbsp;construct a new &lt;EM&gt;AGSLocation&lt;/EM&gt; object and pass it to&amp;nbsp;&lt;EM&gt;self.didUpdateLocation:()&lt;/EM&gt;.&lt;/LI&gt;&lt;LI&gt;Getting a new&amp;nbsp;heading&amp;nbsp;- If you get a new heading only (and not a completely new location), call &lt;EM&gt;self.didUpdateHeading:()&lt;/EM&gt; with the new heading to let the Runtime know.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 May 2018 13:10:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66996#M633</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-05-15T13:10:17Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66997#M634</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot for your reply. Yes I will be implementing the custom location display datasource. I figured out what to do after reading the relevant docs in the 100.2.1 which provide clearer explanations about the custom datasource than that in the 10.2.5. Your instructions here verified what I'm thinking to do and are much appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I also had a look at the external gps receiver support of the Collector app. Basically we would like to achieve the similar functionalities in our apps. Did Collector implement the support in a similar way or do you have any suggestion?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm currently looking at the gps hexadecimal string data/NMEA sentences. I haven't found a complete NMEA parser in Swift in the net and had the feeling I have to write it myself... Any advises please?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 May 2018 23:09:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66997#M634</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-15T23:09:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66998#M635</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/23123"&gt;Shimin Cai&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Collector does indeed take a similar&amp;nbsp;approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For inspiration you could look at &lt;A href="https://github.com/dotMorten/NmeaParser"&gt;this C# NMEA Parser&lt;/A&gt;. You would have to translate from C# to Swift but there might be some useful info for you there in building your Location Data Source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 May 2018 00:45:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66998#M635</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-05-23T00:45:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66999#M636</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your reply. NMEA Parser is not a problem. I wrote a simple one and it works fine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I'm having trouble making the custom datasource to work and hoping you can help me out. Here is my simple implementation of the custom datasource for trying it out. Sorry I'm still on 10.2.5.&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; UIKit&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; ExternalAccessory&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;class&lt;/SPAN&gt;&lt;SPAN&gt; FCNSWGPSLocationDataSource: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSObject&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;AGSLocationDisplayDataSource&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4f8187; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; delegate: &lt;/SPAN&gt;&lt;SPAN&gt;AGSLocationDisplayDataSourceDelegate&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; error: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Error&lt;/SPAN&gt;&lt;SPAN&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; isStarted = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;false&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; sessionController: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;SessionController&lt;/SPAN&gt;&lt;SPAN&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; accessory: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EAAccessory&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;required&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;init&lt;/SPAN&gt;&lt;SPAN&gt;(sessionController: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;SessionController&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;sessionController&lt;/SPAN&gt;&lt;SPAN&gt; = sessionController&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;accessory&lt;/SPAN&gt;&lt;SPAN&gt; = sessionController.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_accessory&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; start()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NotificationCenter&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;addObserver&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, selector: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;#selector&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;sessionDataReceived&lt;/SPAN&gt;&lt;SPAN&gt;), name: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSNotification&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Name&lt;/SPAN&gt;&lt;SPAN&gt;(rawValue: &lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;"EXGPSSessionDataReceivedNotification"&lt;/SPAN&gt;&lt;SPAN&gt;), object: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;NotificationCenter&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;default&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;addObserver&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;, selector: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;#selector&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;accessoryDidDisconnect&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;), name: &lt;/SPAN&gt;&lt;SPAN&gt;NSNotification&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Name&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;EAAccessoryDidDisconnect&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;, object: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; sessionOpened = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;sessionController&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;openSession&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;isStarted&lt;/SPAN&gt;&lt;SPAN&gt; = sessionOpened&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; sessionOpened&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #31595d; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;locationDisplayDataSourceStarted&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;error&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSError&lt;/SPAN&gt;&lt;SPAN&gt;(domain: &lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;""&lt;/SPAN&gt;&lt;SPAN&gt;, code: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;-1&lt;/SPAN&gt;&lt;SPAN&gt;, userInfo: [&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSLocalizedDescriptionKey&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;"Failed to open an EA session."&lt;/SPAN&gt;&lt;SPAN&gt;])&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;locationDisplayDataSource&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, didFailWithError: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;error&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; stop()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NotificationCenter&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;removeObserver&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, name: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSNotification&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Name&lt;/SPAN&gt;&lt;SPAN&gt;(rawValue: &lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;"EXGPSSessionDataReceivedNotification"&lt;/SPAN&gt;&lt;SPAN&gt;), object: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;NotificationCenter&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;default&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;removeObserver&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;, name: &lt;/SPAN&gt;&lt;SPAN&gt;NSNotification&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Name&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;EAAccessoryDidDisconnect&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;, object: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4f8187; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sessionController&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;closeSession&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;isStarted&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;false&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #31595d; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;locationDisplayDataSourceStopped&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: - Session Updates&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; sessionDataReceived(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt; notification: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Notification&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4f8187; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN&gt;sessionController&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;_dataAsString&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; != &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; rawNMEAString = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;sessionController&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_dataAsString&lt;/SPAN&gt;&lt;SPAN&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; nmeaSentences = rawNMEAString.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;components&lt;/SPAN&gt;&lt;SPAN&gt;(separatedBy: &lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;"\r\n"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; rmcData: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;RmcData&lt;/SPAN&gt;&lt;SPAN&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; ggaData: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;GgaData&lt;/SPAN&gt;&lt;SPAN&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; gsaData: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;GsaData&lt;/SPAN&gt;&lt;SPAN&gt;!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;for&lt;/SPAN&gt;&lt;SPAN&gt; nmeaSentence &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; nmeaSentences&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; nmeaData = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;NmeaParser&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;parseSentence&lt;/SPAN&gt;&lt;SPAN&gt;(data: nmeaSentence)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; nmeaData.isKind(of: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;RmcData&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;rmcData = nmeaData &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;as&lt;/SPAN&gt;&lt;SPAN&gt;! &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;RmcData&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; nmeaData.isKind(of: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;GgaData&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;ggaData = nmeaData &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;as&lt;/SPAN&gt;&lt;SPAN&gt;! &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;GgaData&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; nmeaData.isKind(of: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;GsaData&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;gsaData = nmeaData &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;as&lt;/SPAN&gt;&lt;SPAN&gt;! &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;GsaData&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; rmcData != &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; coordinate = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;CLLocationCoordinate2D&lt;/SPAN&gt;&lt;SPAN&gt;(latitude: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;latitude&lt;/SPAN&gt;&lt;SPAN&gt;, longitude: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;longitude&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;//these are just for testing purposes and the real data should come from the GGA and GSA sentences&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; altitude = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;CLLocationDistance&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; horizontalAccuracy = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;CLLocationAccuracy&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; verticalAccuracy = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;CLLocationAccuracy&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; clLocation = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;CLLocation&lt;/SPAN&gt;&lt;SPAN&gt;(coordinate: coordinate,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;altitude: altitude,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;horizontalAccuracy: horizontalAccuracy,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;verticalAccuracy: verticalAccuracy,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;course: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;course&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;speed: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;speed&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;timestamp: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;timeStamp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; agsLocation = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;AGSLocation&lt;/SPAN&gt;&lt;SPAN&gt;(clLocation: clLocation)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;locationDisplayDataSource&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, didUpdateWith: agsLocation)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;locationDisplayDataSource&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, didUpdateWithHeading: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;course&lt;/SPAN&gt;&lt;SPAN&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// MARK: - EAAccessory Disconnection&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; accessoryDidDisconnect(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt; notification: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Notification&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; disconnectedAccessory = notification.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;userInfo&lt;/SPAN&gt;&lt;SPAN&gt;![&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EAAccessoryKey&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (disconnectedAccessory &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;AnyObject&lt;/SPAN&gt;&lt;SPAN&gt;).connectionID == &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;accessory&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;connectionID&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;In the above codes the &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;sessionController&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;is from Bad Elf sample app which communicates with the connected accessory to retrieve&amp;nbsp;nmea string data. I think this bit works fine as I can get valid&amp;nbsp;nmea sentences as shown below and the latitude and longitude creating the agsLocation object are correct:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/408805_pastedImage_1.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;I create an instance of my custom datasource class and set the mapView.locationDisplay.dataSource with the instance. Then after the map fully loads, if I try to invoke the mapView.locationDisplay.startDataSource(), the map always zooms to the centre of the map and displays the gps symbol there, not the expected current location. I checked the mapView.locationDisplay.location and mapLocation() and they are all nil. Obviously the location update did not get to pass through to the location display. What did I do wrong? By the way, Collector does the correct thing with the same gps device!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;Thank you very much for your help.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;Shimin&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 May 2018 07:33:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/66999#M636</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-23T07:33:15Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67000#M637</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm still checking to see if this is a requirement, but you could try dispatching the &lt;EM&gt;AGSLocationDisplaySource&lt;/EM&gt;&lt;SPAN&gt; delegate&lt;/SPAN&gt;&amp;nbsp;calls to&amp;nbsp;the&amp;nbsp;main thread. If the&amp;nbsp;&lt;EM&gt;sessionDataReceived&lt;/EM&gt; notification is being fired (and so received) on a background thread I could see that could potentially cause problems.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 May 2018 11:24:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67000#M637</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-05-23T11:24:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67001#M638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tried your suggestion but it did not help:&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;DispatchQueue&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;main&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;async&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;locationDisplayDataSource&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, didUpdateWith: agsLocation)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;locationDisplayDataSource&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, didUpdateWithHeading: rmcData.&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;course&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;Below are the sessionController codes and hopefully it'll help figure out the problem.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;Thank you&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;Shimin&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;Copyright (C) 2016 Bad Elf, LLC. All Rights Reserved.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;See LICENSE.txt for this sample’s licensing information&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;Abstract:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;Controller for managing connected accessory and communicating with the accessory via NSInput &amp;amp; NSOutput streams.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; UIKit&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; ExternalAccessory&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;// Consider refactoring the code to use the non-optional operators.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;fileprivate&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; &amp;lt; &amp;lt;T : &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Comparable&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;(lhs: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;?, rhs: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;?) -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Bool&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;switch&lt;/SPAN&gt;&lt;SPAN&gt; (lhs, rhs) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; (l?, r?):&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; l &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt; r&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt;?):&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #ba2da2; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;true&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #ba2da2; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #ba2da2; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;false&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;// Consider refactoring the code to use the non-optional operators.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;fileprivate&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; &amp;gt;= &amp;lt;T : &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Comparable&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;(lhs: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;?, rhs: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;?) -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Bool&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;switch&lt;/SPAN&gt;&lt;SPAN&gt; (lhs, rhs) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; (l?, r?):&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; l &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN&gt; r&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #ba2da2; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;!&lt;/SPAN&gt;&lt;SPAN&gt;(lhs &lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt; rhs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;// Consider refactoring the code to use the non-optional operators.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;fileprivate&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; &amp;gt; &amp;lt;T : &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Comparable&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;(lhs: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;?, rhs: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;?) -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Bool&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;switch&lt;/SPAN&gt;&lt;SPAN&gt; (lhs, rhs) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; (l?, r?):&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; l &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; r&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #ba2da2; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; rhs &lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt; lhs&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;class&lt;/SPAN&gt;&lt;SPAN&gt; SessionController: &lt;/SPAN&gt;&lt;SPAN&gt;NSObject&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;EAAccessoryDelegate&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;StreamDelegate&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;static&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; sharedController = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;SessionController&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; _accessory: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EAAccessory&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; _session: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EASession&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; _protocolString: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;String&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; _writeData: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSMutableData&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; _readData: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSMutableData&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; _dataAsString: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSString&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: Controller Setup&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; setupController(forAccessory accessory: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EAAccessory&lt;/SPAN&gt;&lt;SPAN&gt;, withProtocolString protocolString: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;String&lt;/SPAN&gt;&lt;SPAN&gt;) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_accessory&lt;/SPAN&gt;&lt;SPAN&gt; = accessory&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_protocolString&lt;/SPAN&gt;&lt;SPAN&gt; = protocolString&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: Opening &amp;amp; Closing Sessions&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; openSession() -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Bool&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_accessory&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EASession&lt;/SPAN&gt;&lt;SPAN&gt;(accessory: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_accessory&lt;/SPAN&gt;&lt;SPAN&gt;!, forProtocol: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_protocolString&lt;/SPAN&gt;&lt;SPAN&gt;!)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt; != &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;schedule&lt;/SPAN&gt;&lt;SPAN&gt;(in: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoop&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;current&lt;/SPAN&gt;&lt;SPAN&gt;, forMode: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;defaultRunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;open&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;schedule&lt;/SPAN&gt;&lt;SPAN&gt;(in: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoop&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;current&lt;/SPAN&gt;&lt;SPAN&gt;, forMode: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;defaultRunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;open&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #d12f1b; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"Failed to create session"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt; != &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; closeSession() {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;close&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;remove&lt;/SPAN&gt;&lt;SPAN&gt;(from: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoop&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;current&lt;/SPAN&gt;&lt;SPAN&gt;, forMode: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;defaultRunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;close&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;remove&lt;/SPAN&gt;&lt;SPAN&gt;(from: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoop&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;current&lt;/SPAN&gt;&lt;SPAN&gt;, forMode: &lt;/SPAN&gt;&lt;SPAN&gt;RunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;defaultRunLoopMode&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: Write &amp;amp; Read Data&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; writeData(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt; data: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Data&lt;/SPAN&gt;&lt;SPAN&gt;) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt; == &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSMutableData&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;append&lt;/SPAN&gt;&lt;SPAN&gt;(data)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;writeData&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; readData(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt; bytesToRead: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Int&lt;/SPAN&gt;&lt;SPAN&gt;) -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Data&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; data: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Data&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;length&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN&gt; bytesToRead {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; range = &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;NSMakeRange&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, bytesToRead)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;data = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;subdata&lt;/SPAN&gt;&lt;SPAN&gt;(with: range)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;replaceBytes&lt;/SPAN&gt;&lt;SPAN&gt;(in: range, withBytes: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt;, length: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; data!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; readBytesAvailable() -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Int&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;length&lt;/SPAN&gt;&lt;SPAN&gt;)!&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: - Helpers&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; updateReadData() {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; bufferSize = &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;128&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; buffer = [&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;UInt8&lt;/SPAN&gt;&lt;SPAN&gt;](repeating: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, count: bufferSize)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;hasBytesAvailable&lt;/SPAN&gt;&lt;SPAN&gt; == &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;true&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; bytesRead = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;inputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;read&lt;/SPAN&gt;&lt;SPAN&gt;(&amp;amp;buffer, maxLength: bufferSize)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt; == &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSMutableData&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_readData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;append&lt;/SPAN&gt;&lt;SPAN&gt;(buffer, length: bytesRead!)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_dataAsString&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NSString&lt;/SPAN&gt;&lt;SPAN&gt;(bytes: buffer, length: bytesRead!, encoding: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;String&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Encoding&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;utf8&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;rawValue&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;NotificationCenter&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;post&lt;/SPAN&gt;&lt;SPAN&gt;(name: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Notification&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Name&lt;/SPAN&gt;&lt;SPAN&gt;(rawValue: &lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;"EXGPSSessionDataReceivedNotification"&lt;/SPAN&gt;&lt;SPAN&gt;), object: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;fileprivate&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; writeData() {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;hasSpaceAvailable&lt;/SPAN&gt;&lt;SPAN&gt; == &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;true&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN&gt;length&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; buffer = [&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;UInt8&lt;/SPAN&gt;&lt;SPAN&gt;](repeating: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, count: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;!.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;length&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;getBytes&lt;/SPAN&gt;&lt;SPAN&gt;(&amp;amp;buffer, length: (&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;length&lt;/SPAN&gt;&lt;SPAN&gt;)!)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;let&lt;/SPAN&gt;&lt;SPAN&gt; bytesWritten = &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_session&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;outputStream&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;write&lt;/SPAN&gt;&lt;SPAN&gt;(&amp;amp;buffer, maxLength: &lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;!.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;length&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; bytesWritten == &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;-1&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #d12f1b;"&gt;"Write Error"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; bytesWritten &lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #4f8187;"&gt;_writeData&lt;/SPAN&gt;&lt;SPAN&gt;?.&lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;replaceBytes&lt;/SPAN&gt;&lt;SPAN&gt;(in: &lt;/SPAN&gt;&lt;SPAN style="color: #3e1e81;"&gt;NSMakeRange&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, bytesWritten!), withBytes: &lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;nil&lt;/SPAN&gt;&lt;SPAN&gt;, length: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: - EAAcessoryDelegate&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; accessoryDidDisconnect(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt; accessory: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;EAAccessory&lt;/SPAN&gt;&lt;SPAN&gt;) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// Accessory diconnected from iOS, updating accordingly&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// MARK: - NSStreamDelegateEventExtensions&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; stream(&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;_&lt;/SPAN&gt;&lt;SPAN&gt; aStream: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;, handle eventCode: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;switch&lt;/SPAN&gt;&lt;SPAN&gt; eventCode {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;():&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;openCompleted&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;hasBytesAvailable&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// Read Data&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;updateReadData&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;hasSpaceAvailable&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// Write Data&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #31595d;"&gt;writeData&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;errorOccurred&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #703daa; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;case&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Stream&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Event&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;endEncountered&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;default&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;break&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 May 2018 23:07:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67001#M638</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-23T23:07:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67002#M639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you log&amp;nbsp;the AGSLocation to the console from within the dispatch to main, does it look correct?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 May 2018 23:35:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67002#M639</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-05-23T23:35:53Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67003#M640</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it looks ok to me. I think the 4326 is WGS84.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/408940_pastedImage_4.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2018 00:09:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67003#M640</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-24T00:09:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67004#M641</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry Nick. Checked again and the coordinate does not look correct at all. It is NOT my current location! Something went wrong with my calculation from nmea string to lat and lon. I'm checking now and will report back here.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks you very much for picking this up!!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2018 00:29:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67004#M641</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-24T00:29:17Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67005#M642</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Found the cause of the problem that is convert minutes to decimal degrees where I was using 3 (probably a typo) in the second offsetBy. Now after changed to 2 things start working as expected!!!&lt;/P&gt;&lt;P style="color: #008400; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;/// Lat stringValue Format XXYY.ZZZZ -&amp;gt; XX° + (YY.ZZZZ / 60)°&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #ba2da2;"&gt;func&lt;/SPAN&gt;&lt;SPAN&gt; convertLatitudeToDegree(with stringValue: &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;String&lt;/SPAN&gt;&lt;SPAN&gt;) -&amp;gt; &lt;/SPAN&gt;&lt;SPAN style="color: #703daa;"&gt;Double&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #ba2da2;"&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; Double(stringValue.substring(to: stringValue.index(stringValue.startIndex, offsetBy: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)))! + Double(stringValue.substring(from: stringValue.index(stringValue.startIndex, offsetBy: &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)))! / &lt;/SPAN&gt;&lt;SPAN style="color: #272ad8;"&gt;60&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #000000; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think my problem has been resolved. Thank you very much for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shimin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2018 01:24:51 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67005#M642</guid>
      <dc:creator>ShiminCai</dc:creator>
      <dc:date>2018-05-24T01:24:51Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67006#M643</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great stuff. Glad it's working!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2018 16:43:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67006#M643</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-05-24T16:43:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67007#M644</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi @Nick, Its working for me.. thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Aug 2018 08:00:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67007#M644</guid>
      <dc:creator>MuruganandhamKuppan1</dc:creator>
      <dc:date>2018-08-30T08:00:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67008#M645</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks &lt;A href="https://community.esri.com/migrated-users/314085"&gt;Muruganandham Kuppan&lt;/A&gt;‌. Great to hear. Could you mark your original question as answered please? It'll help other people home in on the right answer.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Aug 2018 16:04:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67008#M645</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-08-30T16:04:43Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67009#M646</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/3289"&gt;Divesh Goyal&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What is the actual process to test the&amp;nbsp;Navigation in either device or simulator&amp;nbsp;when we are in&amp;nbsp;development mode using ArcGIS Runtime SDK, like it is not possible to debug when we only really travel to get new AGSLocation Data so rather than doing that, is there any options to test the static points like Source to Destination with realtime Testing and Debugging when we are developing the app. Would be appreciate if you could suggest me on this. Meanwhile the question is how to test and debug the app in Device/Simulator on realtime without traveling and it was not so feasible to debug when we are traveling &lt;IMG src="https://community.esri.com/legacyfs/online/emoticons/silly.png" /&gt;&amp;nbsp;&lt;IMG src="https://community.esri.com/legacyfs/online/emoticons/wink.png" /&gt;. So basically we can set the Source and Destination Route Stops in a JSON file format or something like that once the map loaded it will start navigating the app based on the JSON Route stops so that we can able to test for the re-routing and realtime navigation to found dead code or faulty/bugs to fix it rather than a Real Test.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 30 Sep 2018 09:18:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67009#M646</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2018-09-30T09:18:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67010#M647</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You could record a journey to a GPX file using GPS tracking software of your choice&amp;nbsp;and then test your Runtime app using the &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_g_p_x_location_data_source.html"&gt;AGSGPXLocationDataSource&lt;/A&gt;. Create a new instance of that pointing at your GPX file, then set your mapView.locationDisplay.dataSource to this new instance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Oct 2018 17:42:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67010#M647</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-10-08T17:42:00Z</dc:date>
    </item>
    <item>
      <title>Re: How to use external gps location data</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67011#M648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@&lt;A _jive_internal="true" class="" data-userid="2201" data-username="NFurness-esristaff" href="https://community.esri.com/people/NFurness-esristaff" style="color: #3778c7; background-color: #ffffff; border: 0px; font-weight: 200; text-decoration: underline; font-size: 1.286rem;"&gt;Nicholas Furness&lt;/A&gt;&amp;nbsp; Ignore my previous reply, i found the solution to work, thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jan 2019 14:30:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/how-to-use-external-gps-location-data/m-p/67011#M648</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2019-01-25T14:30:23Z</dc:date>
    </item>
  </channel>
</rss>

