Outdoor Location Engine
outdoor-location-engine is built on nRF Connect SDK (Zephyr) and in essence does the following two things:
- Listen and Respond to External Commands
- Report Location to the Cloud
The above two responsibilites are managed by the following sub-systems:
UDPListener listens on port
12345 for Commands and relays them to the Dispatcher.
We listen on GPIO port 0; Pin 10. GPIO
PowerDown (1) bit from the IndoorLocationEngine,
this controls the power mode of the NRF-9160. When a PowerDown bit is received, the NRF-9160 puts itself into deep-sleep
and wakes up on PowerUp interrupt.
The role of the
Dispatcher is to manage the
lost mode state for the
It comes into play when commands are sent via UDP Listener or GPIO pin, in turn triggering the
Dispatcher to initiate
an appropriate callback to the Responder.
When directed to be in an activated state, the Responder takes charge of coordinating the processes that lead to the establishment of a connection with the MQTT-SN gateway. It then communicates with the LocationEngine to get a location fix and subsequently initiates periodic location reports according to the predefined interval.
The LocationEngine is reponsible for communicating with the NRF-9160 modem and getting a location fix. It uses a fallback of Cellular location for when GNSS is unavailable.
Following are the required config options to set before you can flash the firmware onto the Tracker.
CONFIG_DEVICE_ID: Set this to the same as the unique ble ID as scanned by the iOS app.
CONFIG_FINDMYCAT_CLOUD_HOSTNAME: FindMyCat Cloud instance hostname.
CONFIG_MQTT_SN_PUBLISH_TOPIC: Your MQTT topic string that device should publish to. (also see this step)
(optional, for fine tuning)
CONFIG_LTE_EDRX_REQ_VALUE_LTE_M: controls how long device sleeps before being reachable for external commands.
CONFIG_ACTIVE_MODE_LOCATION_REFRESH_PERIOD_SECONDS: Interval for location refreshes in active mode. (420s default (7 mins))
CONFIG_LOST_MODE_LOCATION_REFRESH_PERIOD_SECONDS: Interval for location refreshes in lost mode. (30s default)