     delay((60 - second) * 1000);
   }
   to_maidenhead(lat, lon);
+  display_gps_data(lat, lon);
   return true;
 }
 
 void populate_gps_data() {
   while (true) {
-    while (ss.available()) {
-      if (gps.encode(ss.read())) {
+    while (gps.available()) {
+      if (gps_data.encode(gps.read())) {
         return;
       }
     }


  // Reset the tone to the base frequency and turn on the output
  si5351.output_enable(SI5351_CLK0, 1);
//  digitalWrite(LED_PIN, HIGH);

  for(i = 0; i < symbol_count; i++)
  {
      si5351.set_freq((freq * 100) + (tx_buffer[i] * tone_spacing), SI5351_CLK0);
      proceed = false;
      while(!proceed);
  }

  // Turn off the output
  si5351.output_enable(SI5351_CLK0, 0);
  //digitalWrite(LED_PIN, LOW);
}




bool can_transmit() {
  float lat, lon;
  int year, retries;
  byte month, day, hour, minute, second, hundredths;
 
  populate_gps_data();
  while (retries++ < 10) {
    gps_data.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &fix_age);  
    if (fix_age != TinyGPS::GPS_INVALID_AGE) {
      break;
    }
    lcd.print("Bad GPS Data"); lcd.write(13);
    delay(1000);
    populate_gps_data();
  }
  if (retries >= 10) {
    return false;
  }
  gps_data.f_get_position(&lat, &lon, &fix_age);
  if (!valid_coords(lat, lon)) {
    return false;
  }
