X-Git-Url: https://codewiz.org/gitweb?p=rmslog.git;a=blobdiff_plain;f=rmslog%2Fmain.c;h=d4bb6a0a5641796d2cb6fb0e14278ac58d53dd64;hp=9f52d5f789ea5e4fe76fad5468140137ba0ab3d4;hb=953c42c0ea7e1c27793ba465db862e2fbc7ffdf9;hpb=11db4fb1c52b7460f55d84402d5eb44da7bbda99 diff --git a/rmslog/main.c b/rmslog/main.c index 9f52d5f..d4bb6a0 100644 --- a/rmslog/main.c +++ b/rmslog/main.c @@ -10,6 +10,11 @@ * console messages. */ +#define FILE_NAME "log.txt" +#define FILE_OVERWRITE 1 +#define FILE_PREALLOC_SIZE 102400 + + #include "hw/hw_led.h" #define LOG_LEVEL 3 @@ -150,9 +155,6 @@ static void init(void) timer_delay(1000); kfile_printf(&ser.fd, "Hello, world!\r\n"); -#ifdef BERTOS_FAT - ser_init(&spi, SER_SPI); -#else DDRB |= BV(PORTB0) | BV(PORTB2) | BV(PORTB3) | BV(PORTB5); if (!sd_raw_init()) { @@ -168,35 +170,36 @@ int main(void) { init(); -#ifdef BERTOS_FAT + size_t size; + char buf[256]; + bool sync_pending = false; - FRESULT fat_err; - if ((fat_err = f_mount(0, &fs)) != FR_OK) + /* create file */ + if(!fat_create_file(dd, FILE_NAME, &dir_entry)) { - LOG_ERR("Error mounting FAT volume: %d\n", fat_err); + #if FILE_OVERWRITE + fat_delete_file(fs, &dir_entry); + fat_create_file(dd, FILE_NAME, &dir_entry); + #endif } - fat_err = fatfile_open(&file, "foo.txt", FA_WRITE | FA_CREATE_ALWAYS); - ASSERT(fat_err == FR_OK); - - size_t count = kfile_write(&file.fd, "Hello, world!", strlen("Hello, world!")); - ASSERT(count == strlen("Hello, world!")); + fd = open_file_in_dir(fs, dd, FILE_NAME); -#else - - fat_create_file(dd, "log.txt", &dir_entry); - fd = open_file_in_dir(fs, dd, "log.txt"); - int32_t offset = 0; - fat_seek_file(fd, &offset, FAT_SEEK_END); + /* preallocate file */ + #if FILE_PREALLOC_SIZE + { + LED_ON(); + for (int i = 0; i < (int)(FILE_PREALLOC_SIZE / sizeof(buf)); ++i) + fat_write_file(fd, (void *)buf, sizeof(buf)); -#endif + int32_t offset = 0; + fat_seek_file(fd, &offset, FAT_SEEK_SET); + LED_OFF(); + } + #endif while (1) { - size_t size; - char buf[128]; - bool sync_pending = false; - if ((size = ser_read(&ser, buf, sizeof(buf))) != 0) { LED_ON();