New version of quadcopter software written to OO principles
Dependencies: mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS
ConfigFileWrapper.cpp
00001 #include "ConfigFileWrapper.h" 00002 00003 ConfigFileWrapper::ConfigFileWrapper() 00004 { 00005 _str = new char[1024]; 00006 loadSettings(); 00007 00008 DEBUG("Config file wrapper initialised\r\n"); 00009 } 00010 00011 ConfigFileWrapper::~ConfigFileWrapper(){} 00012 00013 PidWrapper::PidParameter ConfigFileWrapper::getYawRateParameters() 00014 { 00015 return _yawRateParameters; 00016 } 00017 00018 PidWrapper::PidParameter ConfigFileWrapper::getPitchRateParameters() 00019 { 00020 return _pitchRateParameters; 00021 } 00022 00023 PidWrapper::PidParameter ConfigFileWrapper::getRollRateParameters() 00024 { 00025 return _rollRateParameters; 00026 } 00027 00028 PidWrapper::PidParameter ConfigFileWrapper::getYawStabParameters() 00029 { 00030 return _yawStabParameters; 00031 } 00032 00033 PidWrapper::PidParameter ConfigFileWrapper::getPitchStabParameters() 00034 { 00035 return _pitchStabParameters; 00036 } 00037 00038 PidWrapper::PidParameter ConfigFileWrapper::getRollStabParameters() 00039 { 00040 return _rollStabParameters; 00041 } 00042 00043 PidWrapper::PidParameter ConfigFileWrapper::getAltitudeRateParameters() 00044 { 00045 return _altitudeRateParameters; 00046 } 00047 00048 PidWrapper::PidParameter ConfigFileWrapper::getAltitudeStabParameters() 00049 { 00050 return _altitudeStabParameters; 00051 } 00052 00053 bool ConfigFileWrapper::setYawRateParameters(PidWrapper::PidParameter pidParameters) 00054 { 00055 _yawRateParameters = pidParameters; 00056 return true; 00057 } 00058 00059 bool ConfigFileWrapper::setPitchRateParameters(PidWrapper::PidParameter pidParameters) 00060 { 00061 _pitchRateParameters = pidParameters; 00062 return true; 00063 } 00064 00065 bool ConfigFileWrapper::setRollRateParameters(PidWrapper::PidParameter pidParameters) 00066 { 00067 _rollRateParameters = pidParameters; 00068 return true; 00069 } 00070 00071 bool ConfigFileWrapper::setYawStabParameters(PidWrapper::PidParameter pidParameters) 00072 { 00073 _yawStabParameters = pidParameters; 00074 return true; 00075 } 00076 00077 bool ConfigFileWrapper::setPitchStabParameters(PidWrapper::PidParameter pidParameters) 00078 { 00079 _pitchStabParameters = pidParameters; 00080 return true; 00081 } 00082 00083 bool ConfigFileWrapper::setRollStabParameters(PidWrapper::PidParameter pidParameters) 00084 { 00085 _rollStabParameters = pidParameters; 00086 return true; 00087 } 00088 00089 bool ConfigFileWrapper::setAltitudeRateParameters(PidWrapper::PidParameter pidParameters) 00090 { 00091 _altitudeRateParameters = pidParameters; 00092 return true; 00093 } 00094 00095 bool ConfigFileWrapper::setAltitudeStabParameters(PidWrapper::PidParameter pidParameters) 00096 { 00097 _altitudeStabParameters = pidParameters; 00098 return true; 00099 } 00100 00101 float ConfigFileWrapper::getAccelZeroPitch() 00102 { 00103 return _accelZeroPitch; 00104 } 00105 00106 float ConfigFileWrapper::getAccelZeroRoll() 00107 { 00108 return _accelZeroRoll; 00109 } 00110 00111 bool ConfigFileWrapper::setAccelZeroPitch(float value) 00112 { 00113 _accelZeroPitch = value; 00114 return true; 00115 } 00116 00117 bool ConfigFileWrapper::setAccelZeroRoll(float value) 00118 { 00119 _accelZeroRoll = value; 00120 return true; 00121 } 00122 00123 void ConfigFileWrapper::convertToCharArray(double number) 00124 { 00125 sprintf(_str, "%1.8f", number ); 00126 } 00127 00128 void ConfigFileWrapper::convertToCharArray(int number) 00129 { 00130 sprintf(_str, "%d", number ); 00131 } 00132 00133 void ConfigFileWrapper::loadSettings() 00134 { 00135 char value[BUFSIZ]; 00136 00137 DEBUG("Loading settings from config file\n\r"); 00138 00139 //Read a configuration file from a mbed. 00140 LocalFileSystem local("local"); 00141 if (!_configFile.read("/local/CONFIG.CFG")) 00142 { 00143 DEBUG("Config file does not exist\n\r"); 00144 return; 00145 } 00146 else 00147 { 00148 //Get values 00149 if (_configFile.getValue("yawRatePIDControllerP", &value[0], sizeof(value))) _yawRateParameters.p = atof(value); 00150 else DEBUG("Failed to get value for yawRatePIDControllerP\n\r"); 00151 00152 if (_configFile.getValue("yawRatePIDControllerI", &value[0], sizeof(value))) _yawRateParameters.i = atof(value); 00153 else DEBUG("Failed to get value for yawRatePIDControllerI\n\r"); 00154 00155 if (_configFile.getValue("yawRatePIDControllerD", &value[0], sizeof(value))) _yawRateParameters.d = atof(value); 00156 else DEBUG("Failed to get value for yawRatePIDControllerD\n\r"); 00157 00158 if (_configFile.getValue("pitchRatePIDControllerP", &value[0], sizeof(value))) _pitchRateParameters.p = atof(value); 00159 else DEBUG("Failed to get value for pitchRatePIDControllerP\n\r"); 00160 00161 if (_configFile.getValue("pitchRatePIDControllerI", &value[0], sizeof(value))) _pitchRateParameters.i = atof(value); 00162 else DEBUG("Failed to get value for pitchRatePIDControllerI\n\r"); 00163 00164 if (_configFile.getValue("pitchRatePIDControllerD", &value[0], sizeof(value))) _pitchRateParameters.d = atof(value); 00165 else DEBUG("Failed to get value for pitchRatePIDControllerD\n\r"); 00166 00167 if (_configFile.getValue("rollRatePIDControllerP", &value[0], sizeof(value))) _rollRateParameters.p = atof(value); 00168 else DEBUG("Failed to get value for rollRatePIDControllerP\n\r"); 00169 00170 if (_configFile.getValue("rollRatePIDControllerI", &value[0], sizeof(value))) _rollRateParameters.i = atof(value); 00171 else DEBUG("Failed to get value for rollRatePIDControllerI\n\r"); 00172 00173 if (_configFile.getValue("rollRatePIDControllerD", &value[0], sizeof(value))) _rollRateParameters.d = atof(value); 00174 else DEBUG("Failed to get value for rollRatePIDControllerD\n\r"); 00175 00176 if (_configFile.getValue("yawStabPIDControllerP", &value[0], sizeof(value))) _yawStabParameters.p = atof(value); 00177 else DEBUG("Failed to get value for yawStabPIDControllerP\n\r"); 00178 00179 if (_configFile.getValue("yawStabPIDControllerI", &value[0], sizeof(value))) _yawStabParameters.i = atof(value); 00180 else DEBUG("Failed to get value for yawStabPIDControllerI\n\r"); 00181 00182 if (_configFile.getValue("yawStabPIDControllerD", &value[0], sizeof(value))) _yawStabParameters.d = atof(value); 00183 else DEBUG("Failed to get value for yawStabPIDControllerD\n\r"); 00184 00185 if (_configFile.getValue("pitchStabPIDControllerP", &value[0], sizeof(value))) _pitchStabParameters.p = atof(value); 00186 else DEBUG("Failed to get value for pitchStabPIDControllerP\n\r"); 00187 00188 if (_configFile.getValue("pitchStabPIDControllerI", &value[0], sizeof(value))) _pitchStabParameters.i = atof(value); 00189 else DEBUG("Failed to get value for pitchStabPIDControllerI\n\r"); 00190 00191 if (_configFile.getValue("pitchStabPIDControllerD", &value[0], sizeof(value))) _pitchStabParameters.d = atof(value); 00192 else DEBUG("Failed to get value for pitchStabPIDControllerD\n\r"); 00193 00194 if (_configFile.getValue("rollStabPIDControllerP", &value[0], sizeof(value))) _rollStabParameters.p = atof(value); 00195 else DEBUG("Failed to get value for rollStabPIDControllerP\n\r"); 00196 00197 if (_configFile.getValue("rollStabPIDControllerI", &value[0], sizeof(value))) _rollStabParameters.i = atof(value); 00198 else DEBUG("Failed to get value for rollStabPIDControllerI\n\r"); 00199 00200 if (_configFile.getValue("rollStabPIDControllerD", &value[0], sizeof(value))) _rollStabParameters.d = atof(value); 00201 else DEBUG("Failed to get value for rollStabPIDControllerD\n\r"); 00202 00203 if (_configFile.getValue("altitudeRatePIDControllerP", &value[0], sizeof(value))) _altitudeRateParameters.p = atof(value); 00204 else DEBUG("Failed to get value for altitudeRatePIDControllerP\n\r"); 00205 00206 if (_configFile.getValue("altitudeRatePIDControllerI", &value[0], sizeof(value))) _altitudeRateParameters.i = atof(value); 00207 else DEBUG("Failed to get value for altitudeRatePIDControllerI\n\r"); 00208 00209 if (_configFile.getValue("altitudeRatePIDControllerD", &value[0], sizeof(value))) _altitudeRateParameters.d = atof(value); 00210 else DEBUG("Failed to get value for altitudeRatePIDControllerD\n\r"); 00211 00212 if (_configFile.getValue("altitudeStabPIDControllerP", &value[0], sizeof(value))) _altitudeStabParameters.p = atof(value); 00213 else DEBUG("Failed to get value for altitudeStabPIDControllerP\n\r"); 00214 00215 if (_configFile.getValue("altitudeStabPIDControllerI", &value[0], sizeof(value))) _altitudeStabParameters.i = atof(value); 00216 else DEBUG("Failed to get value for altitudeStabPIDControllerI\n\r"); 00217 00218 if (_configFile.getValue("altitudeStabPIDControllerD", &value[0], sizeof(value))) _altitudeStabParameters.d = atof(value); 00219 else DEBUG("Failed to get value for altitudeStabPIDControllerD\n\r"); 00220 00221 if (_configFile.getValue("accelZeroPitch", &value[0], sizeof(value))) _accelZeroPitch = atof(value); 00222 else DEBUG("Failed to get value for accelZeroPitch\n\r"); 00223 00224 if (_configFile.getValue("accelZeroRoll", &value[0], sizeof(value))) _accelZeroRoll = atof(value); 00225 else DEBUG("Failed to get value for accelZeroRoll\n\r"); 00226 00227 /*if (_configFile.getValue("zeroPitch", &value[0], sizeof(value))) _zeroValues[1] = atof(value); 00228 else DEBUG("Failed to get value for zero pitch\n\r"); 00229 00230 if (_configFile.getValue("zeroRoll", &value[0], sizeof(value))) _zeroValues[2] = atof(value); 00231 else printf("Failed to get value for zero roll\n\r");*/ 00232 } 00233 00234 DEBUG("Finished loading settings from config file\n\r"); 00235 } 00236 00237 bool ConfigFileWrapper::saveSettings() 00238 { 00239 DEBUG("Writing settings to config file\n\r"); 00240 00241 LocalFileSystem local("local"); 00242 if (!_configFile.read("/local/CONFIG.CFG")) 00243 { 00244 DEBUG("Config file does not exist\n\r"); 00245 return false; 00246 } 00247 else 00248 { 00249 //Write values 00250 convertToCharArray(_yawRateParameters.p); 00251 if (!_configFile.setValue("yawRatePIDControllerP", _str)) DEBUG("Failed to write value for yawRatePIDControllerP\n\r"); 00252 00253 convertToCharArray(_yawRateParameters.i); 00254 if (!_configFile.setValue("yawRatePIDControllerI", _str)) DEBUG("Failed to write value for yawRatePIDControllerI\n\r"); 00255 00256 convertToCharArray(_yawRateParameters.d); 00257 if (!_configFile.setValue("yawRatePIDControllerD", _str)) DEBUG("Failed to write value for yawRatePIDControllerD\n\r"); 00258 00259 convertToCharArray(_pitchRateParameters.p); 00260 if (!_configFile.setValue("pitchRatePIDControllerP", _str)) DEBUG("Failed to write value for pitchRatePIDControllerP\n\r"); 00261 00262 convertToCharArray(_pitchRateParameters.i); 00263 if (!_configFile.setValue("pitchRatePIDControllerI", _str)) DEBUG("Failed to write value for pitchRatePIDControllerI\n\r"); 00264 00265 convertToCharArray(_pitchRateParameters.d); 00266 if (!_configFile.setValue("pitchRatePIDControllerD", _str)) DEBUG("Failed to write value for pitchRatePIDControllerD\n\r"); 00267 00268 convertToCharArray(_rollRateParameters.p); 00269 if (!_configFile.setValue("rollRatePIDControllerP", _str)) DEBUG("Failed to write value for rollRatePIDControllerP\n\r"); 00270 00271 convertToCharArray(_rollRateParameters.i); 00272 if (!_configFile.setValue("rollRatePIDControllerI", _str)) DEBUG("Failed to write value for rollRatePIDControllerI\n\r"); 00273 00274 convertToCharArray(_rollRateParameters.d); 00275 if (!_configFile.setValue("rollRatePIDControllerD", _str)) DEBUG("Failed to write value for rollRatePIDControllerD\n\r"); 00276 00277 convertToCharArray(_yawStabParameters.p); 00278 if (!_configFile.setValue("yawStabPIDControllerP", _str)) DEBUG("Failed to write value for yawStabPIDControllerP\n\r"); 00279 00280 convertToCharArray(_yawStabParameters.i); 00281 if (!_configFile.setValue("yawStabPIDControllerI", _str)) DEBUG("Failed to write value for yawStabPIDControllerI\n\r"); 00282 00283 convertToCharArray(_yawStabParameters.d); 00284 if (!_configFile.setValue("yawStabPIDControllerD", _str)) DEBUG("Failed to write value for yawStabPIDControllerD\n\r"); 00285 00286 convertToCharArray(_pitchStabParameters.p); 00287 if (!_configFile.setValue("pitchStabPIDControllerP", _str)) DEBUG("Failed to write value for pitchStabPIDControllerP\n\r"); 00288 00289 convertToCharArray(_pitchStabParameters.i); 00290 if (!_configFile.setValue("pitchStabPIDControllerI", _str)) DEBUG("Failed to write value for pitchStabPIDControllerI\n\r"); 00291 00292 convertToCharArray(_pitchStabParameters.d); 00293 if (!_configFile.setValue("pitchStabPIDControllerD", _str)) DEBUG("Failed to write value for pitchStabPIDControllerD\n\r"); 00294 00295 convertToCharArray(_rollStabParameters.p); 00296 if (!_configFile.setValue("rollStabPIDControllerP", _str)) DEBUG("Failed to write value for rollStabPIDControllerP\n\r"); 00297 00298 convertToCharArray(_rollStabParameters.i); 00299 if (!_configFile.setValue("rollStabPIDControllerI", _str)) DEBUG("Failed to write value for _rollStabPIDControllerI\n\r"); 00300 00301 convertToCharArray(_rollStabParameters.d); 00302 if (!_configFile.setValue("rollStabPIDControllerD", _str)) DEBUG("Failed to write value for rollStabPIDControllerD\n\r"); 00303 00304 convertToCharArray(_altitudeRateParameters.p); 00305 if (!_configFile.setValue("altitudeRatePIDControllerP", _str)) DEBUG("Failed to write value for altitudeRatePIDControllerP\n\r"); 00306 00307 convertToCharArray(_altitudeRateParameters.i); 00308 if (!_configFile.setValue("altitudeRatePIDControllerI", _str)) DEBUG("Failed to write value for altitudeRatePIDControllerI\n\r"); 00309 00310 convertToCharArray(_altitudeRateParameters.d); 00311 if (!_configFile.setValue("altitudeRatePIDControllerD", _str)) DEBUG("Failed to write value for altitudeRatePIDControllerD\n\r"); 00312 00313 convertToCharArray(_altitudeStabParameters.p); 00314 if (!_configFile.setValue("altitudeStabPIDControllerP", _str)) DEBUG("Failed to write value for altitudeStabPIDControllerP\n\r"); 00315 00316 convertToCharArray(_altitudeStabParameters.i); 00317 if (!_configFile.setValue("altitudeStabPIDControllerI", _str)) DEBUG("Failed to write value for altitudeStabPIDControllerI\n\r"); 00318 00319 convertToCharArray(_altitudeStabParameters.d); 00320 if (!_configFile.setValue("altitudeStabPIDControllerD", _str)) DEBUG("Failed to write value for altitudeStabPIDControllerD\n\r"); 00321 00322 convertToCharArray(_accelZeroPitch); 00323 if (!_configFile.setValue("accelZeroPitch", _str)) DEBUG("Failed to write value for accelZeroPitch\n\r"); 00324 00325 convertToCharArray(_accelZeroRoll); 00326 if (!_configFile.setValue("accelZeroRoll", _str)) DEBUG("Failed to write value for accelZeroRoll\n\r"); 00327 00328 00329 //convertToCharArray(_zeroValues[1]); 00330 //if (!_configFile.setValue("_zeroPitch", _str)) DEBUG("Failed to write value for zero pitch\n\r"); 00331 00332 //convertToCharArray(_zeroValues[2]); 00333 //if (!_configFile.setValue("_zeroRoll", _str)) DEBUG("Failed to write value for zero roll\n\r"); 00334 00335 if (!_configFile.write("/local/CONFIG.CFG")) 00336 { 00337 DEBUG("Failure to write settings to configuration file.\n\r"); 00338 return false; 00339 } 00340 else 00341 { 00342 DEBUG("Successfully wrote settings to configuration file.\n\r"); 00343 return true; 00344 } 00345 } 00346 }
Generated on Fri Jul 15 2022 00:21:58 by 1.7.2