/*Z dane NMEA zpravy vypreparuje potrebne informace*/
/*Autor: Zbynek*/
#include "GPS_dekoduj.h"
#include <string.h>
NMEA_GPGGA GPGGA_informace;

/************************************************************************
* Funkce: dekoduj_zpravu_GPS
* Ucel:  Z RX0_buffer vytahne informace o soucasne poloze, je tam ulozena cela veta RMC
* Vstup: Zadny
* Vystup:  Zadny                                                                      
************************************************************************/
void dekoduj_zpravu_GPS (uint8_t* NMEA_retezec, uint8_t NMEA_delka)
{

        uint8_t i = 0, j = 0, k = 0, l = 0;
        uint8_t pocet_carek = 0;
        for ( i = 0; i < NMEA_delka; i++)
        {
                if (pocet_carek == 1)
                {
                        GPGGA_informace.UTC_time[l] = NMEA_retezec[i];
                        l++;
                }
                if (pocet_carek == 2 || pocet_carek == 3)
                {
                        GPGGA_informace.Latitude[k] = NMEA_retezec[i];
                        k++;
                        l = 0;
                }
                if (pocet_carek == 4 || pocet_carek == 5)
                {

                        GPGGA_informace.Longitude[j] = NMEA_retezec[i];
                        j++;
                }
                if (pocet_carek == 6)
                {
                        GPGGA_informace.UTC_time[l-1] = 0;
                        GPGGA_informace.Latitude[k-1] = 0;
                        GPGGA_informace.Longitude[j-1] = 0;

                        GPGGA_informace.Status_GPS = NMEA_retezec[i-1];
                        j = 0;
                }
                
                if (pocet_carek == 9)
                {
                        GPGGA_informace.Altitude[j] = NMEA_retezec[i];
                        j++;
                }
                
                if (NMEA_retezec[i] == ',')
                {
                        pocet_carek++;
                }
                if (pocet_carek >9)
                {
                        GPGGA_informace.Altitude[j-1] = 0; // konec Stringu
                        break;  // nema vyznam dal zapisovat, potrebne je ulozeno.
                }
        }
}