29
29
30
30
ROM persistent_data_t PERSISTENT_DATA[]=
31
31
{
32
- {BOARD_ID, " Board_ID" , false , 0 .0f , 0 }, // ! Board ID Hash to avoid board confusion
33
-
34
32
{SENS_TILT_ROLL," SensTilt_Roll" , true , 0 .0f , 0 }, // ! IMU Sensor tilt angle signed / degrees front right down frame
35
33
{SENS_TILT_PITCH," SensTilt_Pitch" , true , 0 .0f , 0 }, // ! IMU Sensor tilt angle signed
36
34
{SENS_TILT_YAW, " SensTilt_Yaw" , true , 0 .0f , 0 }, // ! IMU Sensor tilt angle signed
@@ -52,7 +50,6 @@ ROM persistent_data_t PERSISTENT_DATA[]=
52
50
{VARIO_INT_TC, " Vario_Int_TC" , false , 30 .0f , 0 }, // ! Vario integrator time constant unsigned s / ( 100.0f / 65536 )
53
51
{WIND_TC, " Wind_TC" , false , 5 .0f , 0 }, // ! Wind fast time constant unsigned s / ( 100.0f / 65536 )
54
52
{MEAN_WIND_TC, " Mean_Wind_TC" , false , 30 .0f , 0 }, // ! Wind slow time constant unsigned s / ( 100.0f / 65536 )
55
- {VETF, " VrtclEnrgTuning" , false , 1 .0f , 0 }, // ! Vertical Energy tuning factor s / ( 1.0f / 65536 )
56
53
{HORIZON, " Horizon_active" , false , 1 .0f , 0 }, // ! Horizon output is available
57
54
58
55
{GNSS_CONFIGURATION, " GNSS_CONFIG" , false , 1 .0f , 0 }, // ! type of GNSS system
@@ -63,17 +60,26 @@ ROM persistent_data_t PERSISTENT_DATA[]=
63
60
64
61
ROM unsigned PERSISTENT_DATA_ENTRIES = sizeof (PERSISTENT_DATA) / sizeof (persistent_data_t );
65
62
66
- bool all_EEPROM_parameters_existing ( void )
63
+ void ensure_EEPROM_parameter_integrity ( void )
67
64
{
65
+ bool EEPROM_has_been_unlocked = false ;
68
66
float dummy;
69
- const persistent_data_t * parameter = PERSISTENT_DATA + 1 ; // skip BOARD_ID
67
+ const persistent_data_t * parameter = PERSISTENT_DATA;
70
68
while ( parameter < PERSISTENT_DATA + PERSISTENT_DATA_ENTRIES)
71
69
{
72
- if ( true == read_EEPROM_value ( parameter->id , dummy))
73
- return false ; // read error
70
+ if ( true == read_EEPROM_value ( parameter->id , dummy)) // parameter missing
71
+ {
72
+ if ( EEPROM_has_been_unlocked == false )
73
+ {
74
+ lock_EEPROM ( false );
75
+ EEPROM_has_been_unlocked = true ;
76
+ }
77
+ (void ) write_EEPROM_value ( parameter->id , parameter->default_value );
78
+ }
74
79
++parameter;
75
80
}
76
- return true ;
81
+ if ( EEPROM_has_been_unlocked)
82
+ lock_EEPROM ( true );
77
83
}
78
84
79
85
const persistent_data_t * find_parameter_from_ID ( EEPROM_PARAMETER_ID id)
@@ -182,17 +188,6 @@ bool EEPROM_convert( EEPROM_PARAMETER_ID id, EEPROM_data_t & EEPROM_value, float
182
188
else
183
189
EEPROM_value.u16 = (uint16_t )(value * 655 .36f );
184
190
break ;
185
- case VETF:
186
- if ( read)
187
- value = (float )(EEPROM_value.u16 ) / 65536 .0f ;
188
- else
189
- {
190
- unsigned uvalue = (unsigned ) round ( value * 65536 .0f );
191
- if ( uvalue >= 65536 )
192
- uvalue = 65535 ;
193
- EEPROM_value.u16 = (uint16_t )uvalue;
194
- }
195
- break ;
196
191
case EEPROM_PARAMETER_ID_END:
197
192
default :
198
193
value = 0 .0f ; // just to be sure ...
0 commit comments