Add NMEA sentence process function

This commit is contained in:
Sanyog Nevase Nevase 2024-11-29 15:29:43 +05:30
parent 0372a221f8
commit 576c2af533
1 changed files with 37 additions and 0 deletions

37
main.c
View File

@ -70,6 +70,43 @@ void control_leds_based_on_speed(float speed_kmh) {
}
}
void nmea_sentence_process(const char *nmea_sentence)
{
uint8_t i = 0;
uint8_t field_number = 0;
float speed_kmh = 0.0;
uint8_t field_index = 0;
if (nmea_sentence[0] != '$') return; // Invalid sentence, exit
if (strncmp(nmea_sentence + 1, "GPRMC", 5) == 0)
{
for (i = 6; nmea_sentence[i] != '\0'; i++)
{
if (nmea_sentence[i] == ',')
{
if (field_number == 7) // Speed in knots (field 7)
{ speed_kmh = atof(nmea_sentence + i - field_index);
control_leds_based_on_speed(speed_kmh);
}
field_number++;
field_index = 0;
}
else if (nmea_sentence[i] == '*')
{
break;
}
else
{
field_index++;
}
}
}
}
void UART1_Handler(void)
{
char data = UART1_DR_R & 0xFF;