/*
 * versuch4_write-file.c
 *
 *  Created on: Dec 1, 2025
 *      Author: jonny
 */

#include "versuch4_write-file.h"
#include "fatfs.h"


void versuch4_write_file(void)
{
    FATFS fs;
    FIL fp;
    FRESULT res;

    // mount fs
    printf("1. mounting filesystem...\n");
    res = f_mount(&fs, "/", 0);
    if (res != FR_OK){
        printf("Fehler beim mounten vom dateisystem\n");
        return;
    }

    // open file
    printf("2. opening file...\n");
    res = f_open(&fp, "test-asd.txt", FA_CREATE_ALWAYS | FA_WRITE);
    if (res != FR_OK)
    {
        printf("Fehler beim Oeffnen der Datei!\n");
        return;
    }

    // write file
    printf("3. writing file...\n");
    UINT numBytesWritten = 0;
    char buf[] = "heute ist der 02.12.2025";
    res = f_write(&fp, buf, strlen(buf), &numBytesWritten);
    if (res != FR_OK || numBytesWritten == 0)
        printf("Fehler beim schreiben der datei\n");

    printf("wrote %d bytes\n", numBytesWritten);

    // close file
    printf("4. closing file...\n");
    f_close(&fp);


    // open file
    printf("5. opening file...\n");
    res = f_open(&fp, "test-asd.txt", FA_READ);
    if (res != FR_OK)
    {
        printf("Fehler beim Oeffnen der Datei!\n");
        return;
    }


    // read file
    printf("6. reading file...\n");
    char bufRead[26];
    uint8_t numBytesRead = 0;

    res = f_read(&fp, bufRead, 25, &numBytesRead);

    printf("read bytes: %d\n", numBytesRead);
    bufRead[numBytesRead] = 0;
    //printf("read text: %s\n", bufRead);

    if (res == FR_OK && numBytesWritten > 0){
        //bufRead[25] = 0;
        printf("Gelesene Zeichen: %s\n", bufRead);
    }
    else
        printf("Fehler beim lesen der Datei oder weniger als 25 Zeichen\n");


    // close file
    printf("4. closing file...\n");
    f_close(&fp);


}

