New version of quadcopter software written to OO principles

Dependencies:   mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ConfigFileWrapper.cpp Source File

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 }