Hi everyone,
I’m developing an iOS app that communicates with a Reach RX (MFi) receiver using Apple’s ExternalAccessory framework. I want to confirm whether this is really the “official” or recommended way to connect, receive NMEA data, and send RTCM3 corrections.
My current implementation uses the com.emlid.nmea and com.emlid.corrections protocols, creating two EASession instances — one for input (NMEA) and one for output (RTCM):
let nmeaProtocolString = "com.emlid.nmea"
let correctionsProtocolString = "com.emlid.corrections"
The basic logic is:
- Detect connected devices via EAAccessoryManager.
- Open one session to receive NMEA using inputStream, and another to send corrections using outputStream.
- Process the binary data received (usually ASCII-formatted NMEA sentences like
$GNGGA
, etc.). - Use Combine and SwiftUI to update the UI based on the connection status and data received.
My questions for the community and the Emlid team:
*Is this the architecture Emlid recommends for interacting with Reach RX on iOS?
- Is this use of ExternalAccessory correct for receiving NMEA data and sending NTRIP corrections?
- Is there any official documentation or more recent examples recommending a different or more efficient strategy?
- Am I missing anything important regarding communication or error handling?
Any feedback, suggestions, or recommendations would be greatly appreciated.
Thanks in advance