void handleSatelites(char * gpgsv) { char *argv[9]; uint8_t argc = parseNMEA(gpgsv, argv, 9); if(argc < 8) return; // t_print(argv[2]); //Satellites in view // t_print(" "); // t_print(argv[3]); //PRN number // t_print(" "); t_print(argv[4]); //elivation // t_print(" "); // t_print(argv[5]); //azimuth // t_print(" "); // t_print(argv[6]); //SNR t_print("\n"); if( t_atoi(argv[4]) > 1) { gpsOK = 1; GPIO_SetBits(GPIOC, GPIO_Pin_8); } else { gpsOK = 0; GPIO_ResetBits(GPIOC, GPIO_Pin_8); } }
void handleTime(char * gpgga) { char *argv[7]; uint8_t argc = parseNMEA(gpgga, argv, 7); if(argc < 5) return; argv[0][4] = 0; gpsMinute = t_atoi(&argv[0][2]); argv[0][2] = 0; gpsHour = t_atoi(argv[0]); static uint8_t flag = 0; if(flag) GPIO_ResetBits(GPIOC, GPIO_Pin_9); else GPIO_SetBits(GPIOC, GPIO_Pin_9); flag = !flag; d_print(gpsHour); t_print(":"); d_print(gpsMinute); t_print("\n"); }
// called from uart2 irq getting the received char c void parseGPS(unsigned char c) { if (fcSetup.components[gpsComponent] == 1) { if(GPStype == NMEA) { if (NMEAdone == 0) parseNMEA(c); } else { if(GPStype == UBX) { parseUBX(c); } } } }