Versión de Firmware con funciones de RAM incorporadas.

Dependencies:   mbed

Fork of VmRecorderV1dot1 by virtualmech

Committer:
JuanManuelAmador
Date:
Tue Jul 14 08:34:11 2015 +0000
Revision:
2:e818c80e6d5c
Parent:
0:3d456b8ce449
Funciones de memoria RAM introducidas.

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 GuardarOtroNombre::GuardarOtroNombre(char nextScreen[], char newAdvice[], char newWaitMsg[]):Mensaje(nextScreen, newAdvice){
JuanManuelAmador 0:3d456b8ce449 19 nombreAntiguo = NULL;
JuanManuelAmador 0:3d456b8ce449 20 strcpy(waitMsg, newWaitMsg);
JuanManuelAmador 0:3d456b8ce449 21 }
JuanManuelAmador 0:3d456b8ce449 22
JuanManuelAmador 0:3d456b8ce449 23 void GuardarOtroNombre::setNombreAntiguo(char *oldName){
JuanManuelAmador 0:3d456b8ce449 24 nombreAntiguo = oldName;
JuanManuelAmador 0:3d456b8ce449 25 }
JuanManuelAmador 0:3d456b8ce449 26
JuanManuelAmador 0:3d456b8ce449 27 void GuardarOtroNombre::disableNombreAntiguo(){
JuanManuelAmador 0:3d456b8ce449 28 nombreAntiguo = NULL;
JuanManuelAmador 0:3d456b8ce449 29 }
JuanManuelAmador 0:3d456b8ce449 30
JuanManuelAmador 0:3d456b8ce449 31 void GuardarOtroNombre::initialize(DogMLCD* lcd){
JuanManuelAmador 0:3d456b8ce449 32 // select font to use:
JuanManuelAmador 0:3d456b8ce449 33 lcd->XFont = xfont_11;
JuanManuelAmador 0:3d456b8ce449 34 // Se pinta un mensaje de espera
JuanManuelAmador 0:3d456b8ce449 35 lcd->XString(OFFSETX + 8, 23, waitMsg);
JuanManuelAmador 0:3d456b8ce449 36 // Se envía a la pantalla física
JuanManuelAmador 0:3d456b8ce449 37 lcd->Flush();
JuanManuelAmador 0:3d456b8ce449 38 // Se deja la pantalla en blanco para cuando se acabe de cambair de nombre el archivo
JuanManuelAmador 0:3d456b8ce449 39 lcd->Clear();
JuanManuelAmador 0:3d456b8ce449 40
JuanManuelAmador 0:3d456b8ce449 41 // Se cambia el nombre del archivo del propio USB
JuanManuelAmador 0:3d456b8ce449 42 char oldFile[64];
JuanManuelAmador 0:3d456b8ce449 43 char newName[64];
JuanManuelAmador 0:3d456b8ce449 44 char aux[64];
JuanManuelAmador 0:3d456b8ce449 45
JuanManuelAmador 0:3d456b8ce449 46 // Si el nombreAntiguo vale NULL se toma como nombre antiguo la última fecha y hora guardado
JuanManuelAmador 0:3d456b8ce449 47 if(nombreAntiguo == NULL){
JuanManuelAmador 0:3d456b8ce449 48 strcpy(aux, FH.getFechaHora());
JuanManuelAmador 0:3d456b8ce449 49 strcpy(oldFile, "/usb/RAW");
JuanManuelAmador 0:3d456b8ce449 50 strcat(oldFile, aux);
JuanManuelAmador 0:3d456b8ce449 51 strcat(oldFile, ".txt");
JuanManuelAmador 0:3d456b8ce449 52 }else{
JuanManuelAmador 0:3d456b8ce449 53 strcpy(oldFile, "/usb/");
JuanManuelAmador 0:3d456b8ce449 54 strcat(oldFile, nombreAntiguo);
JuanManuelAmador 0:3d456b8ce449 55 strcat(oldFile, ".txt");
JuanManuelAmador 0:3d456b8ce449 56 }
JuanManuelAmador 0:3d456b8ce449 57
JuanManuelAmador 0:3d456b8ce449 58 // Si el archivo no se puede cargar se pasa a la pantalla que avisa que el USB está lleno o desconectado
JuanManuelAmador 0:3d456b8ce449 59 FILE* file;
JuanManuelAmador 0:3d456b8ce449 60 file = fopen(oldFile, "r");
JuanManuelAmador 0:3d456b8ce449 61 if(file == NULL){
JuanManuelAmador 0:3d456b8ce449 62 SC.changeScreen("USBdesconectado");
JuanManuelAmador 0:3d456b8ce449 63 }else{
JuanManuelAmador 0:3d456b8ce449 64 // Se cierra el archivo
JuanManuelAmador 0:3d456b8ce449 65 fclose(file);
JuanManuelAmador 0:3d456b8ce449 66 // El nombre nuevo se toma de el texto introducido con el teclado
JuanManuelAmador 0:3d456b8ce449 67 strcpy(aux, keyboard.getNombre());
JuanManuelAmador 0:3d456b8ce449 68 // Se comprueba si ya existe un fichero con este nombre
JuanManuelAmador 0:3d456b8ce449 69 if(SA.alredyExist(aux)){
JuanManuelAmador 0:3d456b8ce449 70 // 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 71 if(nombreAntiguo != NULL){ // Se debe de volver a la pantalla de opciones del viaje
JuanManuelAmador 0:3d456b8ce449 72 nombreExistente.setNextScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 73 nombreExistente.setBackScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 74 nombreExistenteEN.setNextScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 75 nombreExistenteEN.setBackScreen("rOptions");
JuanManuelAmador 0:3d456b8ce449 76 }else{ // Se debe volver a la pantalla de guardado de nuevo viaje
JuanManuelAmador 0:3d456b8ce449 77 nombreExistente.setNextScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 78 nombreExistente.setBackScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 79 nombreExistenteEN.setNextScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 80 nombreExistenteEN.setBackScreen("guardaViaje");
JuanManuelAmador 0:3d456b8ce449 81 }
JuanManuelAmador 0:3d456b8ce449 82 SC.changeScreen("alredyExist");
JuanManuelAmador 0:3d456b8ce449 83 }else{
JuanManuelAmador 0:3d456b8ce449 84 // Se va a guardar cno otro nombre el archivo asi que
JuanManuelAmador 0:3d456b8ce449 85 if(nombreAntiguo != NULL){
JuanManuelAmador 0:3d456b8ce449 86 SA.renameRide(nombreAntiguo, aux);
JuanManuelAmador 0:3d456b8ce449 87 }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 88 strcpy(newName, "/usb/");
JuanManuelAmador 0:3d456b8ce449 89 strcat(newName, aux);
JuanManuelAmador 0:3d456b8ce449 90 strcat(newName, ".txt");
JuanManuelAmador 0:3d456b8ce449 91 SA.file_rename(oldFile, newName);
JuanManuelAmador 0:3d456b8ce449 92 strcpy(newName, keyboard.getNombre());
JuanManuelAmador 0:3d456b8ce449 93 SA.addElement(newName);
JuanManuelAmador 0:3d456b8ce449 94 }
JuanManuelAmador 0:3d456b8ce449 95
JuanManuelAmador 0:3d456b8ce449 96 // Se muestra el mensaje de archivo guardado correctamente por pantalla
JuanManuelAmador 0:3d456b8ce449 97 Mensaje::initialize(lcd);
JuanManuelAmador 0:3d456b8ce449 98 }
JuanManuelAmador 0:3d456b8ce449 99 }
JuanManuelAmador 0:3d456b8ce449 100 }
JuanManuelAmador 0:3d456b8ce449 101
JuanManuelAmador 0:3d456b8ce449 102 void GuardarOtroNombre::button5pressed(DogMLCD* lcd){
JuanManuelAmador 0:3d456b8ce449 103 Mensaje::button5pressed(lcd);
JuanManuelAmador 0:3d456b8ce449 104 }