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
Child:
2:e818c80e6d5c
prueba

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JuanManuelAmador 0:3d456b8ce449 1 /**
JuanManuelAmador 0:3d456b8ce449 2 * @author Juan Manuel Amador Olivares (virtualmech)
JuanManuelAmador 0:3d456b8ce449 3 */
JuanManuelAmador 0:3d456b8ce449 4 #include "GuardarOtroNombre.h"
JuanManuelAmador 0:3d456b8ce449 5
JuanManuelAmador 0:3d456b8ce449 6 extern FechaHora FH;
JuanManuelAmador 0:3d456b8ce449 7 extern ScreenManager SC;
JuanManuelAmador 0:3d456b8ce449 8 extern SistemaArchivos SA;
JuanManuelAmador 0:3d456b8ce449 9 extern MSCFileSystem msc;
JuanManuelAmador 0:3d456b8ce449 10 extern Teclado keyboard;
JuanManuelAmador 0:3d456b8ce449 11
JuanManuelAmador 0:3d456b8ce449 12 extern Mensaje guardadoCorrect;
JuanManuelAmador 0:3d456b8ce449 13 extern Mensaje guardadoCorrectEN;
JuanManuelAmador 0:3d456b8ce449 14
JuanManuelAmador 0:3d456b8ce449 15 extern Mensaje nombreExistente;
JuanManuelAmador 0:3d456b8ce449 16 extern Mensaje nombreExistenteEN;
JuanManuelAmador 0:3d456b8ce449 17
JuanManuelAmador 0:3d456b8ce449 18 extern DigitalOut myled;
JuanManuelAmador 0:3d456b8ce449 19
JuanManuelAmador 0:3d456b8ce449 20 GuardarOtroNombre::GuardarOtroNombre(char nextScreen[], char newAdvice[], char newWaitMsg[]):Mensaje(nextScreen, newAdvice){
JuanManuelAmador 0:3d456b8ce449 21 nombreAntiguo = NULL;
JuanManuelAmador 0:3d456b8ce449 22 strcpy(waitMsg, newWaitMsg);
JuanManuelAmador 0:3d456b8ce449 23 }
JuanManuelAmador 0:3d456b8ce449 24
JuanManuelAmador 0:3d456b8ce449 25 void GuardarOtroNombre::setNombreAntiguo(char *oldName){
JuanManuelAmador 0:3d456b8ce449 26 nombreAntiguo = oldName;
JuanManuelAmador 0:3d456b8ce449 27 }
JuanManuelAmador 0:3d456b8ce449 28
JuanManuelAmador 0:3d456b8ce449 29 void GuardarOtroNombre::disableNombreAntiguo(){
JuanManuelAmador 0:3d456b8ce449 30 nombreAntiguo = NULL;
JuanManuelAmador 0:3d456b8ce449 31 }
JuanManuelAmador 0:3d456b8ce449 32
JuanManuelAmador 0:3d456b8ce449 33 void GuardarOtroNombre::initialize(DogMLCD* lcd){
JuanManuelAmador 0:3d456b8ce449 34 // select font to use:
JuanManuelAmador 0:3d456b8ce449 35 lcd->XFont = xfont_11;
JuanManuelAmador 0:3d456b8ce449 36 // Se pinta un mensaje de espera
JuanManuelAmador 0:3d456b8ce449 37 lcd->XString(OFFSETX + 8, 23, waitMsg);
JuanManuelAmador 0:3d456b8ce449 38 // Se envía a la pantalla física
JuanManuelAmador 0:3d456b8ce449 39 lcd->Flush();
JuanManuelAmador 0:3d456b8ce449 40 // Se deja la pantalla en blanco para cuando se acabe de cambair de nombre el archivo
JuanManuelAmador 0:3d456b8ce449 41 lcd->Clear();
JuanManuelAmador 0:3d456b8ce449 42
JuanManuelAmador 0:3d456b8ce449 43 // Se cambia el nombre del archivo del propio USB
JuanManuelAmador 0:3d456b8ce449 44 char oldFile[64];
JuanManuelAmador 0:3d456b8ce449 45 char newName[64];
JuanManuelAmador 0:3d456b8ce449 46 char aux[64];
JuanManuelAmador 0:3d456b8ce449 47
JuanManuelAmador 0:3d456b8ce449 48 // Si el nombreAntiguo vale NULL se toma como nombre antiguo la última fecha y hora guardado
JuanManuelAmador 0:3d456b8ce449 49 if(nombreAntiguo == NULL){
JuanManuelAmador 0:3d456b8ce449 50 strcpy(aux, FH.getFechaHora());
JuanManuelAmador 0:3d456b8ce449 51 strcpy(oldFile, "/usb/RAW");
JuanManuelAmador 0:3d456b8ce449 52 strcat(oldFile, aux);
JuanManuelAmador 0:3d456b8ce449 53 strcat(oldFile, ".txt");
JuanManuelAmador 0:3d456b8ce449 54 }else{
JuanManuelAmador 0:3d456b8ce449 55 strcpy(oldFile, "/usb/");
JuanManuelAmador 0:3d456b8ce449 56 strcat(oldFile, nombreAntiguo);
JuanManuelAmador 0:3d456b8ce449 57 strcat(oldFile, ".txt");
JuanManuelAmador 0:3d456b8ce449 58 }
JuanManuelAmador 0:3d456b8ce449 59
JuanManuelAmador 0:3d456b8ce449 60 // Si el archivo no se puede cargar se pasa a la pantalla que avisa que el USB está lleno o desconectado
JuanManuelAmador 0:3d456b8ce449 61 FILE* file;
JuanManuelAmador 0:3d456b8ce449 62 file = fopen(oldFile, "r");
JuanManuelAmador 0:3d456b8ce449 63 if(file == NULL){
JuanManuelAmador 0:3d456b8ce449 64 SC.changeScreen("USBdesconectado");
JuanManuelAmador 0:3d456b8ce449 65 }else{
JuanManuelAmador 0:3d456b8ce449 66 // Se cierra el archivo
JuanManuelAmador 0:3d456b8ce449 67 fclose(file);
JuanManuelAmador 0:3d456b8ce449 68 // El nombre nuevo se toma de el texto introducido con el teclado
JuanManuelAmador 0:3d456b8ce449 69 strcpy(aux, keyboard.getNombre());
JuanManuelAmador 0:3d456b8ce449 70 // Se comprueba si ya existe un fichero con este nombre
JuanManuelAmador 0:3d456b8ce449 71 if(SA.alredyExist(aux)){
JuanManuelAmador 0:3d456b8ce449 72 // Se configura la pantalla siguiente según si se está guardan un viaje nuevo con otro nombre o se está cambiando el nombre a uno ya existente
JuanManuelAmador 0:3d456b8ce449 73 if(nombreAntiguo != NULL){ // Se debe de volver a la pantalla de opciones del viaje
JuanManuelAmador 0:3d456b8ce449 74 nombreExistente.setNextScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 75 nombreExistente.setBackScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 76 nombreExistenteEN.setNextScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 77 nombreExistenteEN.setBackScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 78 }else{ // Se debe volver a la pantalla de guardado de nuevo viaje
JuanManuelAmador 0:3d456b8ce449 79 nombreExistente.setNextScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 80 nombreExistente.setBackScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 81 nombreExistenteEN.setNextScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 82 nombreExistenteEN.setBackScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 83 }
JuanManuelAmador 0:3d456b8ce449 84 SC.changeScreen("alredyExist");
JuanManuelAmador 0:3d456b8ce449 85 }else{
JuanManuelAmador 0:3d456b8ce449 86 // Se va a guardar cno otro nombre el archivo asi que
JuanManuelAmador 0:3d456b8ce449 87 if(nombreAntiguo != NULL){
JuanManuelAmador 0:3d456b8ce449 88 SA.renameRide(nombreAntiguo, aux);
JuanManuelAmador 0:3d456b8ce449 89 }else{ // Se guarda el nuevo nombre del archivo en la lista de nombres de los viajes sólo si nombreAntiguo vale NULL
JuanManuelAmador 0:3d456b8ce449 90 strcpy(newName, "/usb/");
JuanManuelAmador 0:3d456b8ce449 91 strcat(newName, aux);
JuanManuelAmador 0:3d456b8ce449 92 strcat(newName, ".txt");
JuanManuelAmador 0:3d456b8ce449 93 SA.file_rename(oldFile, newName);
JuanManuelAmador 0:3d456b8ce449 94 strcpy(newName, keyboard.getNombre());
JuanManuelAmador 0:3d456b8ce449 95 SA.addElement(newName);
JuanManuelAmador 0:3d456b8ce449 96 }
JuanManuelAmador 0:3d456b8ce449 97
JuanManuelAmador 0:3d456b8ce449 98 // Se muestra el mensaje de archivo guardado correctamente por pantalla
JuanManuelAmador 0:3d456b8ce449 99 Mensaje::initialize(lcd);
JuanManuelAmador 0:3d456b8ce449 100 }
JuanManuelAmador 0:3d456b8ce449 101 }
JuanManuelAmador 0:3d456b8ce449 102 }
JuanManuelAmador 0:3d456b8ce449 103
JuanManuelAmador 0:3d456b8ce449 104 void GuardarOtroNombre::button5pressed(DogMLCD* lcd){
JuanManuelAmador 0:3d456b8ce449 105 Mensaje::button5pressed(lcd);
JuanManuelAmador 0:3d456b8ce449 106 }