#include <SdFat.h>

const int chipSelect1 = 4; // Pin CS de la primera tarjeta SD
const int chipSelect2 = 5; // Pin CS de la segunda tarjeta SD
SdFat SD1;
SdFat SD2;

void setup() {
  Serial.begin(115200);

  if (!SD1.begin(chipSelect1)) {
    Serial.println("\r\nError al inicializar la primera tarjeta SD.");
    return;
  }
  Serial.println("\r\nPrimera tarjeta SD inicializada correctamente.");

  // Inicialización de la segunda tarjeta SD
  if (!SD2.begin(chipSelect2)) {
    Serial.println("\r\nError al inicializar la segunda tarjeta SD.");
    return;
  }
  Serial.println("\r\nSegunda tarjeta SD inicializada correctamente.");

  // --- Guarda un archivo de prueba
  File txtfile = SD1.open("archivo.txt", FILE_WRITE);
  txtfile.println("\r\n****************************************************");
  txtfile.println("Esto es una prueba de copia de archivos entre dos SD");
  txtfile.println("Veamos si funciona...");
  txtfile.println("****************************************************\r\n");
  txtfile.flush();
  txtfile.close();
  // --------------------------------

  // Lee y escribe el archivo en ambas tarjetas
  transferirArchivo("archivo.txt");
}

void loop() {
}

void transferirArchivo(String nombreArchivo) {
  // Abre el archivo de lectura en la primera tarjeta
  File archivoLectura = SD1.open(nombreArchivo, FILE_READ);

  // Si no se puede abrir el archivo, muestra un mensaje y termina la función
  if (!archivoLectura) {
    Serial.println("Error al abrir el archivo en la primera tarjeta SD.");
    return;
  }

  // Abre el archivo de escritura en la segunda tarjeta
  File archivoEscritura = SD2.open(nombreArchivo, FILE_WRITE);

  // Si no se puede abrir el archivo, muestra un mensaje y termina la función
  if (!archivoEscritura) {
    Serial.println("Error al abrir el archivo en la segunda tarjeta SD.");
    archivoLectura.close();
    return;
  }

  // Lee el contenido del archivo de lectura y escríbelo en el archivo de escritura
  Serial.println("Copiando");
  while (archivoLectura.available()) {
    archivoEscritura.write(archivoLectura.read());
  }

  // Cierra ambos archivos
  archivoLectura.close();
  archivoEscritura.close();

  Serial.println("Archivo transferido correctamente de la primera a la segunda tarjeta SD.");

  Serial.println("\r\nVerificando...");
  //File
  archivoEscritura = SD2.open(nombreArchivo, FILE_READ);

  // Si no se puede abrir el archivo, muestra un mensaje y termina la función
  if (!archivoEscritura) {
    Serial.println("Error al abrir el archivo en la segunda tarjeta SD.");
    return;
  }

  // Lee el contenido del archivo de escritura
  Serial.print("Contenido de " + nombreArchivo + " en SD2");
  while (archivoEscritura.available()) {
    Serial.write(archivoEscritura.read());
  }

}