Versión de Firmware con funciones de RAM incorporadas.

Dependencies:   mbed

Fork of VmRecorderV1dot1 by virtualmech

Committer:
JuanManuelAmador
Date:
Mon Jun 15 15:34:27 2015 +0000
Revision:
0:3d456b8ce449
prueba

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JuanManuelAmador 0:3d456b8ce449 1 #include "Configuracion.h"
JuanManuelAmador 0:3d456b8ce449 2
JuanManuelAmador 0:3d456b8ce449 3 extern ScreenManager SC;
JuanManuelAmador 0:3d456b8ce449 4 extern SelecManager SM;
JuanManuelAmador 0:3d456b8ce449 5
JuanManuelAmador 0:3d456b8ce449 6 Configuracion::Configuracion(){
JuanManuelAmador 0:3d456b8ce449 7 // Se lee el archivo de configuración, en caso de no existir se crea
JuanManuelAmador 0:3d456b8ce449 8 FILE* file;
JuanManuelAmador 0:3d456b8ce449 9 if((file = fopen("/local/Config.vme","r")) == NULL){
JuanManuelAmador 0:3d456b8ce449 10 setDefaults();
JuanManuelAmador 0:3d456b8ce449 11 createFile();
JuanManuelAmador 0:3d456b8ce449 12 }else{ // El archivo ya existe
JuanManuelAmador 0:3d456b8ce449 13 getParam(file, "adquisitionvelocity", velocidadAdquisicion);
JuanManuelAmador 0:3d456b8ce449 14 getParam(file, "languaje", idioma);
JuanManuelAmador 0:3d456b8ce449 15 getParam(file, "selectiontype", formaSeleccion);
JuanManuelAmador 0:3d456b8ce449 16 }
JuanManuelAmador 0:3d456b8ce449 17 // Se cierra el fichero
JuanManuelAmador 0:3d456b8ce449 18 if(file != NULL){
JuanManuelAmador 0:3d456b8ce449 19 fclose(file);
JuanManuelAmador 0:3d456b8ce449 20 }
JuanManuelAmador 0:3d456b8ce449 21 }
JuanManuelAmador 0:3d456b8ce449 22
JuanManuelAmador 0:3d456b8ce449 23 void Configuracion::restoreSettings(){
JuanManuelAmador 0:3d456b8ce449 24 setDefaults();
JuanManuelAmador 0:3d456b8ce449 25 createFile();
JuanManuelAmador 0:3d456b8ce449 26 }
JuanManuelAmador 0:3d456b8ce449 27
JuanManuelAmador 0:3d456b8ce449 28 void Configuracion::setDefaults(){
JuanManuelAmador 0:3d456b8ce449 29 strcpy(velocidadAdquisicion, "1000");
JuanManuelAmador 0:3d456b8ce449 30 strcpy(idioma, "spanish");
JuanManuelAmador 0:3d456b8ce449 31 strcpy(formaSeleccion, "shading");
JuanManuelAmador 0:3d456b8ce449 32
JuanManuelAmador 0:3d456b8ce449 33 // Además del fichero de configuración se cambia la configuración actual de la interfaz
JuanManuelAmador 0:3d456b8ce449 34 char aux[16];
JuanManuelAmador 0:3d456b8ce449 35 // Se selecciona el idioma
JuanManuelAmador 0:3d456b8ce449 36 getIdioma(aux);
JuanManuelAmador 0:3d456b8ce449 37 if(strcmp(aux, "spanish") == 0){
JuanManuelAmador 0:3d456b8ce449 38 SC.selectGroup(0);
JuanManuelAmador 0:3d456b8ce449 39 }else if(strcmp(aux, "english") == 0){
JuanManuelAmador 0:3d456b8ce449 40 SC.selectGroup(1);
JuanManuelAmador 0:3d456b8ce449 41 }
JuanManuelAmador 0:3d456b8ce449 42 // Se selecciona el modo de selección
JuanManuelAmador 0:3d456b8ce449 43 getFormaSeleccion(aux);
JuanManuelAmador 0:3d456b8ce449 44 if(strcmp(aux, "shading") == 0){
JuanManuelAmador 0:3d456b8ce449 45 SM.setInverterSelection();
JuanManuelAmador 0:3d456b8ce449 46 }else if(strcmp(aux, "framing") == 0){
JuanManuelAmador 0:3d456b8ce449 47 SM.setRectSelection();
JuanManuelAmador 0:3d456b8ce449 48 }
JuanManuelAmador 0:3d456b8ce449 49 }
JuanManuelAmador 0:3d456b8ce449 50
JuanManuelAmador 0:3d456b8ce449 51 // Esta función busca el valor del parámetro nameParam y lo guarda en buf
JuanManuelAmador 0:3d456b8ce449 52 // Para ello se recorrera cada una de las lineas del archivo de configuración hasta encontrarlo y leer su valor
JuanManuelAmador 0:3d456b8ce449 53 // Recordar: El archivo de configuración tiene le siguiente formato
JuanManuelAmador 0:3d456b8ce449 54 // nombreParámetro valorParámetro
JuanManuelAmador 0:3d456b8ce449 55 void Configuracion::getParam(FILE* file, char nameParam[], char buf[]){
JuanManuelAmador 0:3d456b8ce449 56 // se calcula la longitud del nombre del parámetro
JuanManuelAmador 0:3d456b8ce449 57 int lenParam = strlen(nameParam);
JuanManuelAmador 0:3d456b8ce449 58 char aux[NCARACTERESLECTURA];
JuanManuelAmador 0:3d456b8ce449 59 bool encontrado = false;
JuanManuelAmador 0:3d456b8ce449 60 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
JuanManuelAmador 0:3d456b8ce449 61 // Se lee una linea
JuanManuelAmador 0:3d456b8ce449 62 fgets(aux, NCARACTERESLECTURA, file);
JuanManuelAmador 0:3d456b8ce449 63 if(strncmp(nameParam, aux, lenParam)== 0){
JuanManuelAmador 0:3d456b8ce449 64 // Se ha encontrado la línea del parámetro que está guardada en aux
JuanManuelAmador 0:3d456b8ce449 65 // 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)
JuanManuelAmador 0:3d456b8ce449 66 // Antes se calcula cuantos caracteres tiene el valor del parámetro
JuanManuelAmador 0:3d456b8ce449 67 // 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
JuanManuelAmador 0:3d456b8ce449 68 for(int i = 0; i < strlen(aux) - lenParam - 2; i++){
JuanManuelAmador 0:3d456b8ce449 69 buf[i] = aux[i + lenParam + 1]; // +1 porque se empieza a guardar a partir del espacio entre el nombre y el valor
JuanManuelAmador 0:3d456b8ce449 70 }
JuanManuelAmador 0:3d456b8ce449 71 encontrado = true;
JuanManuelAmador 0:3d456b8ce449 72 }
JuanManuelAmador 0:3d456b8ce449 73 }
JuanManuelAmador 0:3d456b8ce449 74 }
JuanManuelAmador 0:3d456b8ce449 75
JuanManuelAmador 0:3d456b8ce449 76 void Configuracion::createFile(){
JuanManuelAmador 0:3d456b8ce449 77 FILE* file = fopen("/local/Config.vme","w");
JuanManuelAmador 0:3d456b8ce449 78 fprintf(file, "adquisitionvelocity %s\n", velocidadAdquisicion);
JuanManuelAmador 0:3d456b8ce449 79 fprintf(file, "languaje %s\n", idioma);
JuanManuelAmador 0:3d456b8ce449 80 fprintf(file, "selectiontype %s\n", formaSeleccion);
JuanManuelAmador 0:3d456b8ce449 81 fclose(file);
JuanManuelAmador 0:3d456b8ce449 82 }
JuanManuelAmador 0:3d456b8ce449 83
JuanManuelAmador 0:3d456b8ce449 84 void Configuracion::setVelocidadAdquision(int nuevaVelocidadAdqusicion){
JuanManuelAmador 0:3d456b8ce449 85 sprintf(velocidadAdquisicion,"%d",nuevaVelocidadAdqusicion);
JuanManuelAmador 0:3d456b8ce449 86 createFile();
JuanManuelAmador 0:3d456b8ce449 87 }
JuanManuelAmador 0:3d456b8ce449 88 void Configuracion::setIdioma(char nuevoIdioma[]){
JuanManuelAmador 0:3d456b8ce449 89 strcpy(idioma, nuevoIdioma);
JuanManuelAmador 0:3d456b8ce449 90 createFile();
JuanManuelAmador 0:3d456b8ce449 91 }
JuanManuelAmador 0:3d456b8ce449 92 void Configuracion::setFormaSeleccion(char nuevaFormaSeleccion[]){
JuanManuelAmador 0:3d456b8ce449 93 strcpy(formaSeleccion, nuevaFormaSeleccion);
JuanManuelAmador 0:3d456b8ce449 94 createFile();
JuanManuelAmador 0:3d456b8ce449 95 }
JuanManuelAmador 0:3d456b8ce449 96
JuanManuelAmador 0:3d456b8ce449 97 int Configuracion::getVelocidadAdquisicion(){
JuanManuelAmador 0:3d456b8ce449 98 return atoi(velocidadAdquisicion);
JuanManuelAmador 0:3d456b8ce449 99 }
JuanManuelAmador 0:3d456b8ce449 100
JuanManuelAmador 0:3d456b8ce449 101 void Configuracion::getVelocidadAdquisicionString(char buff[]){
JuanManuelAmador 0:3d456b8ce449 102 strcpy(buff, velocidadAdquisicion);
JuanManuelAmador 0:3d456b8ce449 103 }
JuanManuelAmador 0:3d456b8ce449 104
JuanManuelAmador 0:3d456b8ce449 105 void Configuracion::getIdioma(char buf[]){
JuanManuelAmador 0:3d456b8ce449 106 strcpy(buf, idioma);
JuanManuelAmador 0:3d456b8ce449 107 }
JuanManuelAmador 0:3d456b8ce449 108
JuanManuelAmador 0:3d456b8ce449 109 void Configuracion::getFormaSeleccion(char buf[]){
JuanManuelAmador 0:3d456b8ce449 110 strcpy(buf, formaSeleccion);
JuanManuelAmador 0:3d456b8ce449 111 }