Developing iOS app for use with Geode GNS2
20 Mar 2020
The easiest method is to just connect Geode GNS2 over Bluetooth in iOS settings and access the data through the Core Location API as described at the following web page. The Geode GNS2 takes the place of the integrated location sensor for access via the Core Location API as soon as it is paired via Bluetooth and is still turned on and in range.
Though using this method, your iOS app won’t have true accuracy data, or raw NMEA stream, just the location data provided through the iOS location manager (basically, Lat/Long, Altitude, Velocity, Heading, and HDOP/VDOP/PDOP which only provide a rough accuracy indication). This method also has limitations as described at the following web page.
The best method is to become an authorized Geode external accessory developer. To do so, follow the instructions in this web document.
Once authorized, developers can communicate directly with the Geode via an EASession using the EAAccessoryManager, as follows.
- Find the Geode device in the accessory manager (should match the protocol we provide).
- Get the EAAccessory instance from the manager.
- Use the EAAccessory instance to connect via an EASession.
- Sample code in Objective C:
Once you have direct access to NMEA data, you can then use RMS data such as from the GST string to achieve a better indication of statistical location accuracy. If you have limited or no access to real-time data from a Geode GNSS receiver, some previously recorded samples are as follows. The first sample shows the default NMEA-0183 version 4.1 data that comes out from the Geode with the default settings applied. The second sample shows only the GST and RRE messages enabled for statistical accuracy information. Both samples end with the custom battery level message.
The Geode contains the Hemisphere OEM P206 receiver. The following Hemisphere GNSS Technical Reference Manual shows the parsing for all of the components of each NMEA message, including GST and RRE such as for possibly deriving a better indication of when achieving sub-meter horizontal positioning accuracies.