 $GPGGA
 $GPRMC


===============================================

www.gpsinformation.org/dale/nmea.htm

  $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47

Where:
     GGA          Global Positioning System Fix Data
     123519       Fix taken at 12:35:19 UTC
     4807.038,N   Latitude 48 deg 07.038' N
     01131.000,E  Longitude 11 deg 31.000' E
     1            Fix quality: 0 = invalid
                               1 = GPS fix (SPS)
                               2 = DGPS fix
                               3 = PPS fix
			       4 = Real Time Kinematic
			       5 = Float RTK
                               6 = estimated (dead reckoning) (2.3 feature)
			       7 = Manual input mode
			       8 = Simulation mode
     08           Number of satellites being tracked
     0.9          Horizontal dilution of position
     545.4,M      Altitude, Meters, above mean sea level
     46.9,M       Height of geoid (mean sea level) above WGS84
                      ellipsoid
     (empty field) time in seconds since last DGPS update
     (empty field) DGPS station ID number
     *47          the checksum data, always begins with *

If the height of geoid is missing then the altitude should be suspect. 
Some non-standard implementations report altitude with respect to 
the ellipsoid rather than geoid altitude. Some units do not report 
negative altitudes at all. This is the only sentence that reports altitude. 


RMC - NMEA has its own version of essential gps pvt 
(position, velocity, time) data. 
It is called RMC, The Recommended Minimum, which will look similar to:

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

Where:
     RMC          Recommended Minimum sentence C
     123519       Fix taken at 12:35:19 UTC
     A            Status A=active or V=Void.
     4807.038,N   Latitude 48 deg 07.038' N
     01131.000,E  Longitude 11 deg 31.000' E
     022.4        Speed over the ground in knots
     084.4        Track angle in degrees True
     230394       Date - 23rd of March 1994
     003.1,W      Magnetic Variation
     *6A          The checksum data, always begins with *

Note that, as of the 2.3 release of NMEA, 
there is a new field in the RMC sentence at the end just prior to the checksum. 
For more information on this field see here. 
The last version 2 iteration of the NMEA standard was 2.3. 
It added a mode indicator to several sentences which is used to 
indicate the kind of fix the receiver currently has.
This indication is part of the signal integrity information needed by the FAA. 
The value can be A=autonomous, D=differential, E=Estimated, N=not valid, 
S=Simulator. Sometimes there can be a null value as well. 
Only the A and D values will correspond to an Active and reliable Sentence. 
This mode character has been added to the RMC, RMB, VTG, and GLL, sentences 
and optionally some others including the BWC and XTE sentences. 

===============================================
eventuell besser:

http://aprs.gids.nl/nmea/#gga

http://aprs.gids.nl/nmea/#rmc

===============================================

Latitude
  S --> negative
  
Longitude
  W --> negative
  
data type: float  

===============================================

$GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W*70

nmea character ring buffer
  uint8_t buf[]
  uint16_t start
  uint16_t good_end
  uint16_t end
  uint8_t is_full
  uint8_t sentence_cnt		number of complete sentences in the ring buffer
  assert(good_end <= end)
  empty if start==end
  if not empty, then buf[start]  == '$'
  


crb_IsFull()				returns true, if the buffer is full. Chars can 
						not be added. It is required to delete a NMEA sentence first
					  
crb_IsEmpty()				return true if the crb is empty

crb_AddChar(uint8_t)		add a char to the buffer, no return value

crb_DelSentence()			if sentence_cnt >= 1, delete the sentence at buf[start]



