Hi I am working with the GNSS module of Legato; it seems my application is unable to get a position fix.
If I use “gnss get posInfo” command on the terminal while my app is running, the app also gets the info and subsequently gets the information.
It also works if I run the whole process, from enable to getdata in a single sequence, without letting anything but getData happen in a sequence ie if I put getData sequence in a while 1 loop after setting parameters and le_gnss_Start().
I am not using le_gnss_AddpositionHandler() and is relying on le_gnss_GetLastSampleRef().
Using gnss target tool is a good way to check that GNSS works and you can get a position fix: # gnss start # gnss watch 60
You can also check position information from NMEA flow: # cat /dev/nmea
For GNSS app implementation, you can use gnss target tool source code (apps/tools/gnss/gnss.c) or gnssTest app (legato/apps/test/positioning/gnssTest/gnssTest/gnssTest.c) as sample code to develop your app. “while 1 loop” is really not recommended.
In COMPONENT_INIT (main thread), you should create a thread to add a position handler: positionThreadRef = le_thread_Create(“PositionThread”,PositionThread,NULL); le_thread_Start(positionThreadRef);
A position handler should be added from that “PositionThread”, and then runs the event loop for the calling thread: le_gnss_Start(); PositionHandlerRef = le_gnss_AddPositionHandler(PositionHandlerFunction, NULL); le_event_RunLoop();
referring to Event-driven Programming .
Then you will be notified for position information at 1Hz (default update rate).
From “PositionHandlerFunction”, you can check position state using the le_gnss_GetPositionState function. When the position is fixed (2D/3D), you can get position information using le_gnss_getXXXX functions.
I have the same issue with le_gnss_GetLastSampleRef(). The problem happens when several conditions are met (le_gnss_Stop and after that le_gnss_Start), but “gnss get satStat” or similar help the application to receive the position fix again. I’m using WP7702 module with Legato 19.07.0.