2018-09-28 00:50:46 -04:00
|
|
|
#include "../fatfs/ff.h"
|
2018-10-09 01:42:28 -04:00
|
|
|
#include "../kmalloc.h"
|
2018-09-28 00:50:46 -04:00
|
|
|
|
2018-10-01 17:25:57 -04:00
|
|
|
#include <common.h>
|
|
|
|
|
#include <stdio.h>
|
2018-09-28 00:50:46 -04:00
|
|
|
|
|
|
|
|
bool fatfs_test() {
|
|
|
|
|
FATFS fs;
|
|
|
|
|
FRESULT ret;
|
|
|
|
|
FILINFO info;
|
|
|
|
|
FIL file;
|
|
|
|
|
char *buff = NULL;
|
|
|
|
|
uint32_t read = 0;
|
|
|
|
|
|
2018-10-01 17:25:57 -04:00
|
|
|
printf("Mounting drive 0... ");
|
2018-09-28 00:50:46 -04:00
|
|
|
ret = f_mount(&fs, "", 1);
|
|
|
|
|
if (ret != FR_OK) goto fail;
|
2018-10-01 17:25:57 -04:00
|
|
|
printf("OK\n");
|
2018-09-28 00:50:46 -04:00
|
|
|
|
|
|
|
|
ret = f_stat("README", &info);
|
|
|
|
|
if (ret != FR_OK || !info.fsize) goto fail;
|
|
|
|
|
|
2018-10-01 17:25:57 -04:00
|
|
|
printf("Opening README with size %llu... \n", info.fsize);
|
2018-09-28 00:50:46 -04:00
|
|
|
ret = f_open(&file, "README", FA_READ);
|
|
|
|
|
if (ret != FR_OK) goto fail;
|
2018-10-01 17:25:57 -04:00
|
|
|
printf("OK\n");
|
2018-09-28 00:50:46 -04:00
|
|
|
|
2018-10-09 01:42:28 -04:00
|
|
|
buff = kmalloc((size_t) info.fsize + 1);
|
2018-09-28 00:50:46 -04:00
|
|
|
if (buff == NULL) goto fail;
|
|
|
|
|
|
|
|
|
|
ret = f_read(&file, buff, (uint32_t) info.fsize, &read);
|
|
|
|
|
if (ret != FR_OK || read != info.fsize) goto fail;
|
|
|
|
|
|
2018-10-01 17:25:57 -04:00
|
|
|
printf("File read successfully.\n\n");
|
2018-09-28 00:50:46 -04:00
|
|
|
// buff[read] = 0;
|
2018-10-01 17:25:57 -04:00
|
|
|
// printf("%s\n", (char *) buff);
|
2018-09-28 00:50:46 -04:00
|
|
|
|
|
|
|
|
goto end;
|
|
|
|
|
|
|
|
|
|
fail:
|
2018-10-01 17:25:57 -04:00
|
|
|
printf("fatfs fail %d\n", ret);
|
2018-09-28 00:50:46 -04:00
|
|
|
|
|
|
|
|
end:
|
2018-10-09 01:42:28 -04:00
|
|
|
kfree(buff);
|
2018-09-28 00:50:46 -04:00
|
|
|
f_close(&file);
|
|
|
|
|
f_unmount("");
|
|
|
|
|
return ret == FR_OK;
|
|
|
|
|
}
|