MerginMaps / MerginMaps/mobile
Add support for connecting external GPS receivers via BLE (Bluetooth 4.0+)
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 388
- Forks
- 87
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 20
Description
Currently, Mergin Maps supports a connection of external receivers through basic Bluetooth technology.
Basic Bluetooth API is supported on Android, Windows, Linux and Mac, but not on iOS due to security concerns.
However, there is a "new" Bluetooth standard called BLE (4.0+). It has multiple advantages over the classic Bluetooth and is supported also by iOS API. Connecting a device that is shipped with BLE is, however, not the same as connecting a device with classic Bluetooth, so we need to do several changes in the connection process (basically adding a new position provider).
There already are GPS devices that work with BLE, for example, GEODE GNS3 (https://junipersys.com/products/geode).
By using also the new BLE API, we should (in theory, needs to be proved via prototype) be able to:
- connect [MFi certified](https://mfi.apple.com/) GPS receiver directly from Mergin Maps on iOS without the need to go through operating system and therefore see more advanced GEO position information like a number of satellites, precision, hdop, ...
**UPDATE:** MFi uses [external accessory Apple framework](https://developer.apple.com/documentation/externalaccessory/) built on top of the classic BT ~ we'd need objc (native) code here.
- support the latest GPS receivers as I expect those to be shipped with the new BLE standard
Note: It is currently not possible to connect GPS receiver with BLE to any supported platform by Mergin Maps
See [this reference](https://doc.arcgis.com/en/collector-classic/ios/create-maps/gps-receiver-support.htm#:~:text=device%27s%20location%20service.-,GPS%20receivers%20supported%20on%20iOS,-To%20directly%20connect)
See [discussion here](https://merginmaps.slack.com/archives/C02D4SQ3DAT/p1659643893686599)
Related to #1893
Related to https://github.com/MerginMaps/mobile/issues/2214
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing classic Bluetooth connection process and the related issues #1893 and #2214, then investigate the BLE APIs for the supported platforms. A prototype should establish whether a BLE GPS receiver can connect and expose position details such as satellite count, precision, and HDOP.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, cpp, ios
- Domain
- mobile-dev, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100