Versión sin post-procesado del software del VmRideR
Dependencies: mbed
Diff: FileManager/Configuracion.cpp
- Revision:
- 0:3d456b8ce449
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FileManager/Configuracion.cpp Mon Jun 15 15:34:27 2015 +0000 @@ -0,0 +1,111 @@ +#include "Configuracion.h" + +extern ScreenManager SC; +extern SelecManager SM; + +Configuracion::Configuracion(){ + // Se lee el archivo de configuración, en caso de no existir se crea + FILE* file; + if((file = fopen("/local/Config.vme","r")) == NULL){ + setDefaults(); + createFile(); + }else{ // El archivo ya existe + getParam(file, "adquisitionvelocity", velocidadAdquisicion); + getParam(file, "languaje", idioma); + getParam(file, "selectiontype", formaSeleccion); + } + // Se cierra el fichero + if(file != NULL){ + fclose(file); + } +} + +void Configuracion::restoreSettings(){ + setDefaults(); + createFile(); +} + +void Configuracion::setDefaults(){ + strcpy(velocidadAdquisicion, "1000"); + strcpy(idioma, "spanish"); + strcpy(formaSeleccion, "shading"); + + // Además del fichero de configuración se cambia la configuración actual de la interfaz + char aux[16]; + // Se selecciona el idioma + getIdioma(aux); + if(strcmp(aux, "spanish") == 0){ + SC.selectGroup(0); + }else if(strcmp(aux, "english") == 0){ + SC.selectGroup(1); + } + // Se selecciona el modo de selección + getFormaSeleccion(aux); + if(strcmp(aux, "shading") == 0){ + SM.setInverterSelection(); + }else if(strcmp(aux, "framing") == 0){ + SM.setRectSelection(); + } +} + +// Esta función busca el valor del parámetro nameParam y lo guarda en buf +// Para ello se recorrera cada una de las lineas del archivo de configuración hasta encontrarlo y leer su valor +// Recordar: El archivo de configuración tiene le siguiente formato +// nombreParámetro valorParámetro +void Configuracion::getParam(FILE* file, char nameParam[], char buf[]){ + // se calcula la longitud del nombre del parámetro + int lenParam = strlen(nameParam); + char aux[NCARACTERESLECTURA]; + bool encontrado = false; + while(!encontrado && (!feof(file))){ // Solo se para de leer si se ha llegado al fin de fichero o se ha encontrado el valor del parámetro + // Se lee una linea + fgets(aux, NCARACTERESLECTURA, file); + if(strncmp(nameParam, aux, lenParam)== 0){ + // Se ha encontrado la línea del parámetro que está guardada en aux + // se guarda el valor del parámetro (que empieza después de un espacio desde el nombre del parámetro y acaba antes del salto de línea) + // Antes se calcula cuantos caracteres tiene el valor del parámetro + // que será la longitud de la línea menos a longitud del nombre del parámetro - 2 (un caracter que es el espacio y el caracter final \n que tampoco debe copiarse + for(int i = 0; i < strlen(aux) - lenParam - 2; i++){ + buf[i] = aux[i + lenParam + 1]; // +1 porque se empieza a guardar a partir del espacio entre el nombre y el valor + } + encontrado = true; + } + } +} + +void Configuracion::createFile(){ + FILE* file = fopen("/local/Config.vme","w"); + fprintf(file, "adquisitionvelocity %s\n", velocidadAdquisicion); + fprintf(file, "languaje %s\n", idioma); + fprintf(file, "selectiontype %s\n", formaSeleccion); + fclose(file); +} + +void Configuracion::setVelocidadAdquision(int nuevaVelocidadAdqusicion){ + sprintf(velocidadAdquisicion,"%d",nuevaVelocidadAdqusicion); + createFile(); +} +void Configuracion::setIdioma(char nuevoIdioma[]){ + strcpy(idioma, nuevoIdioma); + createFile(); +} +void Configuracion::setFormaSeleccion(char nuevaFormaSeleccion[]){ + strcpy(formaSeleccion, nuevaFormaSeleccion); + createFile(); +} + +int Configuracion::getVelocidadAdquisicion(){ + return atoi(velocidadAdquisicion); +} + +void Configuracion::getVelocidadAdquisicionString(char buff[]){ + strcpy(buff, velocidadAdquisicion); +} + +void Configuracion::getIdioma(char buf[]){ + strcpy(buf, idioma); +} + +void Configuracion::getFormaSeleccion(char buf[]){ + strcpy(buf, formaSeleccion); +} \ No newline at end of file