@@ -30,6 +30,14 @@ typedef struct
3030 bool is_valid ;
3131} GPSData ;
3232
33+ #if 0
34+ #define DEBUG_printf printf
35+ #else
36+ #define DEBUG_printf (...)
37+ #endif
38+
39+ #define INFO_printf printf
40+ #define ERROR_printf printf
3341
3442/**
3543 * @brief Initializes the UART interface for GPS communication.
@@ -62,19 +70,19 @@ void uart_gps_init()
6270bool validate_nmea_checksum (char * nmea_string )
6371{
6472 int len = strlen (nmea_string );
65- printf ("Checksum Validation - String Length: %d\n" , len );
66- printf ("Full NMEA String: %s" , nmea_string );
73+ DEBUG_printf ("Checksum Validation - String Length: %d\n" , len );
74+ INFO_printf ("Full NMEA String: %s" , nmea_string );
6775
6876 if (len < 7 )
6977 {
70- printf ("Invalid: Too short (< 7 chars)\n" );
78+ ERROR_printf ("Invalid: Too short (< 7 chars)\n" );
7179 return false;
7280 }
7381
7482 char * checksum_ptr = strchr (nmea_string , '*' );
7583 if (!checksum_ptr )
7684 {
77- printf ("Invalid: No checksum marker (*) found\n" );
85+ ERROR_printf ("Invalid: No checksum marker (*) found\n" );
7886 return false;
7987 }
8088
@@ -87,12 +95,13 @@ bool validate_nmea_checksum(char *nmea_string)
8795 char hex_checksum [3 ];
8896 snprintf (hex_checksum , sizeof (hex_checksum ), "%02X" , calculated_checksum );
8997
90- printf ("Calculated Checksum: %s\n" , hex_checksum );
91- printf ("Received Checksum: %s\n" , checksum_ptr + 1 );
98+ DEBUG_printf ("Calculated Checksum: %s\n" , hex_checksum );
99+ DEBUG_printf ("Received Checksum: %s\n" , checksum_ptr + 1 );
92100
93101 bool is_valid = strncmp (hex_checksum , checksum_ptr + 1 , 2 ) == 0 ;
94- printf ("Checksum Validation: %s\n" , is_valid ? "VALID" : "INVALID" );
95-
102+ if (!is_valid ) {
103+ ERROR_printf ("Checksum Validation: INVALID\n" );
104+ }
96105 return is_valid ;
97106}
98107
@@ -130,7 +139,7 @@ bool parse_nmea_gps(char *nmea_string, GPSData *gps_data)
130139{
131140 if (!validate_nmea_checksum (nmea_string ))
132141 {
133- printf ("Invalid NMEA Checksum\n" );
142+ ERROR_printf ("Invalid NMEA Checksum\n" );
134143 return false;
135144 }
136145
@@ -209,7 +218,7 @@ void process_gps_data(GPSData *gps_data)
209218
210219 if (parse_nmea_gps (nmea_buffer , gps_data ))
211220 {
212- printf ("Valid GPS Data Received\n" );
221+ INFO_printf ("Valid GPS Data Received\n" );
213222 }
214223 break ;
215224 }
@@ -233,16 +242,16 @@ int main()
233242 uart_gps_init ();
234243
235244 GPSData gps_data = {0 };
236-
245+
246+ INFO_printf ("Waiting for NMEA data\n" );
237247 while (1 )
238248 {
239249 process_gps_data (& gps_data );
240250
241251 if (gps_data .is_valid )
242252 {
243- printf ("GPS Location:\n" );
244- printf ("Latitude: %.6f\n" , gps_data .latitude );
245- printf ("Longitude: %.6f\n" , gps_data .longitude );
253+ INFO_printf ("Latitude: %.6f\n" , gps_data .latitude );
254+ INFO_printf ("Longitude: %.6f\n" , gps_data .longitude );
246255 gps_data .is_valid = false;
247256 }
248257 }
0 commit comments