Cellular Positioning
Cellular positioning is a part of the Cellular Telephony Architecture
Cellular Positioning
Geoclue is the component that provides location services offering a D-Bus interface for location aware applications. Geoclue supports multiple technologies and methods for finding the current location. The technology support is implemented as a provider and new providers can be added via a plugin mechanism.
BeaconDB Location Provider
Sailfish OS includes a Geoclue provider which uses oFono to fetch MCC, MNC, LAC, CID and SS (Mobile Country Code, Mobile Network Code, Location Area Code, Cell Id and Signal Strength) information about nearby cell towers, and uses that information along with available WLAN networks to make online location requests to the BeaconDB service to determine approximate device location. The BeaconDB service is based on the now-defunct Mozilla Location Service API.
The source code for that plugin can be found here.
GSM Location Provider
Geoclue has a GSM cell based position provider (gsmloc) that uses oFono to fetch MCC, MNC, LAC and CID (Mobile Country Code, Mobile Network Code, Location Area Code and Cell Id) which it then matches with the data provided by the web service (http://www.opencellid.org/) via a lookup table. The web service is used to fetch the latitude and longitude of the current cell. The lookup table is used to map MCC with ISO (International Organisation for Standardization) country code, eg: MCC 244 equals ISO 3166-1 alpha-2 two letter code FI of Finland.
Currently this plugin is not included in Sailfish OS, but it may be added in the future as an alternative to the existing positioning providers.