@@ -524,6 +524,15 @@ void beginTCXO(TwoWire *i2cBus)
524524
525525 if (!myTCXO->begin (*i2cBus, SFE_GNSSDO_OSC_STP3593LF))
526526 return ;
527+
528+ if (settings.lastSeenTCXO != SFE_GNSSDO_OSC_STP3593LF)
529+ {
530+ // Update the default P and I terms to match a new oscillator
531+ settings.lastSeenTCXO = SFE_GNSSDO_OSC_STP3593LF;
532+ settings.Pk = myTCXO->getDefaultFrequencyByBiasPTerm ();
533+ settings.Ik = myTCXO->getDefaultFrequencyByBiasITerm ();
534+ recordSystemSettings ();
535+ }
527536
528537 systemPrintln (" Using STP3593LF OCXO" );
529538 }
@@ -534,6 +543,15 @@ void beginTCXO(TwoWire *i2cBus)
534543 if (!myTCXO->begin (*i2cBus, SFE_GNSSDO_OSC_SIT5811))
535544 return ;
536545
546+ if (settings.lastSeenTCXO != SFE_GNSSDO_OSC_SIT5811)
547+ {
548+ // Update the default P and I terms to match a new oscillator
549+ settings.lastSeenTCXO = SFE_GNSSDO_OSC_SIT5811;
550+ settings.Pk = myTCXO->getDefaultFrequencyByBiasPTerm ();
551+ settings.Ik = myTCXO->getDefaultFrequencyByBiasITerm ();
552+ recordSystemSettings ();
553+ }
554+
537555 systemPrintln (" Using SiT5811 OCXO" );
538556 }
539557 else if (presentSIT5358)
@@ -543,6 +561,15 @@ void beginTCXO(TwoWire *i2cBus)
543561 if (!myTCXO->begin (*i2cBus, SFE_GNSSDO_OSC_SIT5358))
544562 return ;
545563
564+ if (settings.lastSeenTCXO != SFE_GNSSDO_OSC_SIT5358)
565+ {
566+ // Update the default P and I terms to match a new oscillator
567+ settings.lastSeenTCXO = SFE_GNSSDO_OSC_SIT5358;
568+ settings.Pk = myTCXO->getDefaultFrequencyByBiasPTerm ();
569+ settings.Ik = myTCXO->getDefaultFrequencyByBiasITerm ();
570+ recordSystemSettings ();
571+ }
572+
546573 systemPrintln (" Using SiT5358 TCXO" );
547574 }
548575 else
0 commit comments