Skip to content

Latest commit

 

History

History
42 lines (29 loc) · 1.43 KB

File metadata and controls

42 lines (29 loc) · 1.43 KB

NMEA Simulator

A simple SwiftUI macOS app that simulates a GPS source over TCP or Bluetooth LE (GATT) by streaming NMEA 0183 sentences.

Clients can connect over TCP or BLE to receive live simulated GPS output (GPRMC and GPGGA).

Alt text

What It Does

  • Runs a TCP server for NMEA clients
  • Runs a BLE GATT peripheral service for NMEA clients
  • Sends periodic GPS sentences at a configurable rate
  • Lets you set latitude, longitude, altitude, speed, and course
  • Supports optional movement simulation
  • Includes a map dialog to set/reset start position

Requirements

  • macOS
  • Xcode 15+ (or newer)

Run

  1. Open NMEA Simulator.xcodeproj in Xcode.
  2. Select the NMEA Simulator scheme.
  3. Build and run on macOS.

Basic Usage

  1. Select transport mode (TCP or Bluetooth LE (GATT)), then set transport and GPS values.
  2. Click Start Simulator.
  3. Connect your NMEA client:
    • TCP: connect to <local-ip>:<port>
    • BLE: connect to service UUID FFE0 and subscribe to characteristic UUID FFE1
  4. Watch incoming NMEA sentences in your client (and optionally in the app log).

Notes

  • In TCP mode, the app listens on all interfaces (0.0.0.0) and displays the active local IP for convenience.
  • In BLE mode, the app advertises service UUID FFE0 with notify characteristic UUID FFE1.
  • Network client/server entitlements are enabled for sandboxed macOS execution.