Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interpreting RMC sentence with "D" for status #5151

Open
simon3789 opened this issue Mar 27, 2024 · 7 comments
Open

Interpreting RMC sentence with "D" for status #5151

simon3789 opened this issue Mar 27, 2024 · 7 comments

Comments

@simon3789
Copy link

Describe the issue

Using Q-Field with an Unicore UM960 Receiver. Everything is working. As soon as I reach a differential fix (like rtk float or rtk fix), Q-Field drops out.

I made some research, unicore introduced another caracter for the status in the RMC sentence. According to their documentation they only do it in their RMCH sentence, which is the one for the slave antenna, but I found it in the normal RMC sentence as well.
(The UM960 doesnt even have a slve antenna)

QField only expects "A" for active or "V" for void, but unicore also sends a "D" for differential.
As soon as I turn off the RMC sentence, the positioning is working, even with rtk fix.

Expected behavior

Qfield interpreting "D" in RMC senctence same as "A"

Observed behavior

Qfield interpreting "D" in RMC senctence as invalid

Mobile (please complete the following information)

  • Device: [Samsung Galxy Tab Active 4 and Samsung Galaxy Tab Active 3]
  • OS: [Android 14]
  • QField version: [72be17 v3.2.2]
@nirvn
Copy link
Member

nirvn commented Mar 27, 2024

@simon3789 , good reporting. Is this value unique to this vendor or you've seen it in RMC sentence specs?

@simon3789
Copy link
Author

@nirvn I only had expericence with ublox receivers before I bought this Unicore. Have never seen this behavior before.
It isn't contained in any official RMC sentence specs, not even in the unicore documentation.

But is is contained in the specification for the unicore-specific RMCH sentence which they use to report the values of the slave antenna.
So I guess it is a vendor or even firmware-specific mistake that this value is reported in the normal RMC sentence.

image

image

@bettellam
Copy link

@simon3789 , @nirvn
The NMEA $GNRMC phrase of UNICORE
contains a field <14>,
not foreseen in: QGIS/external/nmea/parse.c

405 int nmea_parse_GPRMC( const char *buff, int buff_sz, nmeaGPRMC *pack )
      {....
448 }

[Pag. 68-69] (https://core-electronics.com.au/attachments/localcontent/Unicore_Reference_Commands_Manual_For_N4_High_Precision_Products_V2_EN_R1_1_189543505cb.pdf)
Screenshot 2024-04-11 180239

I also plan to buy a Unicore GNSS receiver (UM980 or UM982)!!!
Ciao

@bettellam
Copy link

@nirvn
If I'm not mistaken, the changes to make would be quite simple:
external/nmea/sentence.h line 121
Add to :
121 char navstatus; //!< UNICORE Navigation Status type (S = Safe, C = Caution, U = Unsafe, V = Navigational status not valid)

external/nmea/parse.c line 418
change to:
418 "$G%CRMC,%s,%C,%f,%C,%f,%C,%f,%f,%2d%2d%2d,%f,%C,%C,%C*" ,

external/nmea/parse.c line 423
change to:
423 &( pack->declination ), &( pack->declin_ew ), &( pack->mode ) , &( pack->navstatus ));

external/nmea/parse.c line 425
change to:
425 if ( nsen != 14 && nsen != 15 && nsen != 16 )

Ciao :-)

@nirvn
Copy link
Member

nirvn commented Apr 14, 2024

@bettellam , good catches. My advise would be for you to open an issue and discussion this issue in upstream QGIS. I'm not sure we'd want to add a vendor-specific parameter to the RMC sentence, however we chould tolerate a 14th parameter that we don't necessarily consume but insures more GNSS devices work.

@bettellam
Copy link

bettellam commented Apr 14, 2024

@nirvn I have now checked the RMC phrase used by UNICORE and it corresponds to the new NMEA 0183 Version 4.1 : https://gpsd.gitlab.io/gpsd/NMEA.html#_rmc_recommended_minimum_navigation_information
external/nmea/sentence.h line 121
Add to :
121 char navstatus; //!< NMEA v4.1 - Navigation Status type (S = Safe, C = Caution, U = Unsafe, V = Navigational status not valid)

@nirvn
Copy link
Member

nirvn commented Apr 14, 2024

@bettellam , oh that's good news!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants