@@ -12,9 +12,28 @@ TxBackpackConfig::Load()
1212 // Check if version number matches
1313 if (m_config.version != (uint32_t )(TX_BACKPACK_CONFIG_VERSION | TX_BACKPACK_CONFIG_MAGIC ))
1414 {
15- // If not, revert to defaults for this version
16- DBGLN (" EEPROM version mismatch! Resetting to defaults..." );
17- SetDefaults ();
15+ // If a known previous version is detected, migrate in place; otherwise revert to defaults
16+ if (m_config.version == (uint32_t )(4U | TX_BACKPACK_CONFIG_MAGIC ))
17+ {
18+ m_config.version = TX_BACKPACK_CONFIG_VERSION | TX_BACKPACK_CONFIG_MAGIC ;
19+ memset (m_config.trainerPeerMac , 0 , 6 );
20+ m_config.trainerMode = TRAINER_MODE_OFF ;
21+ m_modified = true ;
22+ Commit ();
23+ }
24+ else if (m_config.version == (uint32_t )(5U | TX_BACKPACK_CONFIG_MAGIC ))
25+ {
26+ // Version 5 → 6: added trainerMode field
27+ m_config.version = TX_BACKPACK_CONFIG_VERSION | TX_BACKPACK_CONFIG_MAGIC ;
28+ m_config.trainerMode = TRAINER_MODE_OFF ;
29+ m_modified = true ;
30+ Commit ();
31+ }
32+ else
33+ {
34+ DBGLN (" EEPROM version mismatch! Resetting to defaults..." );
35+ SetDefaults ();
36+ }
1837 }
1938}
2039
@@ -54,6 +73,8 @@ TxBackpackConfig::SetDefaults()
5473 m_config.wifiService = WIFI_SERVICE_UPDATE ;
5574 m_config.mavlinkListenPort = 14555 ; // Default MavLink listen port
5675 m_config.mavlinkSendPort = 14550 ; // Default MavLink send port
76+ memset (m_config.trainerPeerMac , 0 , 6 );
77+ m_config.trainerMode = TRAINER_MODE_OFF ;
5778 m_modified = true ;
5879 Commit ();
5980}
@@ -99,6 +120,7 @@ TxBackpackConfig::SetTelemMode(telem_mode_t mode)
99120 m_config.telemMode = mode;
100121 m_modified = true ;
101122}
123+
102124void
103125TxBackpackConfig::SetMavlinkListenPort (uint16_t port)
104126{
@@ -112,6 +134,38 @@ TxBackpackConfig::SetMavlinkSendPort(uint16_t port)
112134 m_config.mavlinkSendPort = port;
113135 m_modified = true ;
114136}
137+
138+ bool
139+ TxBackpackConfig::IsTrainerPaired () const
140+ {
141+ for (int i = 0 ; i < 6 ; i++)
142+ {
143+ if (m_config.trainerPeerMac [i] != 0 ) return true ;
144+ }
145+ return false ;
146+ }
147+
148+ void
149+ TxBackpackConfig::SetTrainerPeer (const uint8_t mac[6 ])
150+ {
151+ memcpy (m_config.trainerPeerMac , mac, 6 );
152+ m_modified = true ;
153+ }
154+
155+ void
156+ TxBackpackConfig::ClearTrainerPeer ()
157+ {
158+ memset (m_config.trainerPeerMac , 0 , 6 );
159+ m_modified = true ;
160+ }
161+
162+ void
163+ TxBackpackConfig::SetTrainerMode (trainer_mode_t mode)
164+ {
165+ m_config.trainerMode = mode;
166+ m_modified = true ;
167+ }
168+
115169#endif
116170
117171// ///////////////////////////////////////////////////
0 commit comments