Versión de Firmware con funciones de RAM incorporadas.

Dependencies:   mbed

Fork of VmRecorderV1dot1 by virtualmech

Revision:
0:3d456b8ce449
Child:
2:e818c80e6d5c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Pantallas/GuardarOtroNombre.cpp	Mon Jun 15 15:34:27 2015 +0000
@@ -0,0 +1,106 @@
+/**
+ * @author Juan Manuel Amador Olivares (virtualmech)
+ */
+#include "GuardarOtroNombre.h"
+
+extern FechaHora FH;
+extern ScreenManager SC;
+extern SistemaArchivos SA;
+extern MSCFileSystem msc;
+extern Teclado keyboard;
+
+extern Mensaje guardadoCorrect;
+extern Mensaje guardadoCorrectEN;
+
+extern Mensaje nombreExistente;
+extern Mensaje nombreExistenteEN;
+
+extern DigitalOut myled;
+
+GuardarOtroNombre::GuardarOtroNombre(char nextScreen[], char newAdvice[], char newWaitMsg[]):Mensaje(nextScreen, newAdvice){
+    nombreAntiguo = NULL;
+    strcpy(waitMsg, newWaitMsg);
+}
+
+void GuardarOtroNombre::setNombreAntiguo(char *oldName){
+    nombreAntiguo = oldName;
+}
+
+void GuardarOtroNombre::disableNombreAntiguo(){
+    nombreAntiguo = NULL;
+}
+
+void GuardarOtroNombre::initialize(DogMLCD* lcd){
+    // select font to use:
+    lcd->XFont = xfont_11;  
+    // Se pinta un mensaje de espera
+    lcd->XString(OFFSETX + 8, 23, waitMsg);
+    // Se envía a la pantalla física
+    lcd->Flush();
+    // Se deja la pantalla en blanco para cuando se acabe de cambair de nombre el archivo
+    lcd->Clear();
+    
+    // Se cambia el nombre del archivo del propio USB    
+    char oldFile[64];
+    char newName[64];
+    char aux[64];
+    
+    // Si el nombreAntiguo vale NULL se toma como nombre antiguo la última fecha y hora guardado    
+    if(nombreAntiguo == NULL){
+        strcpy(aux, FH.getFechaHora());
+        strcpy(oldFile, "/usb/RAW");
+        strcat(oldFile, aux);
+        strcat(oldFile, ".txt");
+    }else{
+        strcpy(oldFile, "/usb/");
+        strcat(oldFile, nombreAntiguo);
+        strcat(oldFile, ".txt");
+    }
+    
+    // Si el archivo no se puede cargar se pasa a la pantalla que avisa que el USB está lleno o desconectado    
+    FILE* file;
+    file = fopen(oldFile, "r");
+    if(file == NULL){
+        SC.changeScreen("USBdesconectado");        
+    }else{
+        // Se cierra el archivo
+        fclose(file);
+        // El nombre nuevo se toma de el texto introducido con el teclado
+        strcpy(aux, keyboard.getNombre());
+        // Se comprueba si ya existe un fichero con este nombre
+        if(SA.alredyExist(aux)){
+            // 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
+            if(nombreAntiguo != NULL){  // Se debe de volver a la pantalla de opciones del viaje
+                nombreExistente.setNextScreen("rOptions");
+                nombreExistente.setBackScreen("rOptions");
+                nombreExistenteEN.setNextScreen("rOptions");
+                nombreExistenteEN.setBackScreen("rOptions");
+            }else{                  // Se debe volver a la pantalla de guardado de nuevo viaje
+                nombreExistente.setNextScreen("guardaViaje");
+                nombreExistente.setBackScreen("guardaViaje");
+                nombreExistenteEN.setNextScreen("guardaViaje");
+                nombreExistenteEN.setBackScreen("guardaViaje");
+            }
+            SC.changeScreen("alredyExist");                      
+        }else{        
+            // Se va a guardar cno otro nombre el archivo asi que
+            if(nombreAntiguo != NULL){
+                SA.renameRide(nombreAntiguo, aux);            
+            }else{  // Se guarda el nuevo nombre del archivo en la lista de nombres de los viajes sólo si nombreAntiguo vale NULL
+                strcpy(newName, "/usb/");
+                strcat(newName, aux);
+                strcat(newName, ".txt");
+                SA.file_rename(oldFile, newName);
+                strcpy(newName, keyboard.getNombre());
+                SA.addElement(newName);
+            }
+            
+            // Se muestra el mensaje de archivo guardado correctamente por pantalla
+            Mensaje::initialize(lcd);
+        }
+    }
+}
+
+void GuardarOtroNombre::button5pressed(DogMLCD* lcd){    
+    Mensaje::button5pressed(lcd);    
+}
\ No newline at end of file