Add support for connecting external GPS receivers via BLE (Bluetooth 4.0+)
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 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, ...
- 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 See discussion here
Related to #1893
"The Geode uses Bluetooth 2.1+EDR SPP (Serial Port Profile) and does not use BLE (Bluetooth 4.0+). The original Geode (later referred to as GNS1) did not support Apple devices, but the later GNS2 and now GNS3 models do have the hardware and certifications required by Apple. Bluetooth 2.1 SPP devices like the Geode can still be Apple MFI certified and apps can be added to the MFI Product Plan for the device to then be able to open a direct EASession to the device using the EAAccessoryManager in iOS."
I then asked for clarification from Juniper regarding the Geode having the BLE chip as spelt out in their spec sheet
"I guess we need to clarify that in the spec sheet. The GNS3 does use a newer Bluetooth (4.0) module than did the GNS2 and GNS1 (since the previous module went end of life), though it still communicates using the old (2.1+EDR) SPP (Serial Port Profile) standard. The module is Class 1 (100 meter line-of-sight) range equivalent to the old standard with high power antenna for long range, but does not use BLE (Bluetooth Low Energy) such as the newer Coded S8 PHY standard for long range. "