4 #include <aversive/pgmspace.h>
7 #include "fat_config.h"
10 #include "sd_raw_config.h"
13 static struct fat_file_struct *log_fd = NULL;
15 uint8_t find_file_in_dir(struct fat_fs_struct* fs,
16 struct fat_dir_struct* dd, const char* name,
17 struct fat_dir_entry_struct* dir_entry)
21 while(fat_read_dir(dd, dir_entry)) {
22 if(strcmp(dir_entry->long_name, name) == 0) {
31 struct fat_file_struct *open_file_in_dir(struct fat_fs_struct* fs,
32 struct fat_dir_struct* dd, const char* name)
34 struct fat_dir_entry_struct file_entry;
36 if(!find_file_in_dir(fs, dd, name, &file_entry))
39 return fat_open_file(fs, &file_entry);
42 struct fat_file_struct *open_log_file(void)
44 struct fat_file_struct *fd;
45 struct fat_fs_struct *fs;
46 struct partition_struct *partition ;
47 struct fat_dir_struct *dd;
48 struct fat_dir_entry_struct directory;
49 struct fat_dir_entry_struct file_entry;
53 /* setup sd card slot */
56 printf_P(PSTR("MMC/SD initialization failed\n"));
61 /* open first partition */
62 partition = partition_open(sd_raw_read,
64 #if SD_RAW_WRITE_SUPPORT
65 sd_raw_write, sd_raw_write_interval,
72 /* If the partition did not open, assume the storage device
73 * is a "superfloppy", i.e. has no MBR.
75 partition = partition_open(sd_raw_read,
77 #if SD_RAW_WRITE_SUPPORT
79 sd_raw_write_interval,
87 printf_P(PSTR("opening partition failed\n"));
93 /* open file system */
94 fs = fat_open(partition);
97 printf_P(PSTR("opening filesystem failed\n"));
102 /* open root directory */
103 fat_get_dir_entry_of_path(fs, "/", &directory);
104 dd = fat_open_dir(fs, &directory);
107 printf_P(PSTR("opening root directory failed\n"));
112 /* print some card information as a boot message */
113 //print_disk_info(fs);
115 printf("choose log file name\n");
117 snprintf(name, sizeof(name), "log%.4d", i++);
118 if (!find_file_in_dir(fs, dd, name, &file_entry))
122 printf("create log file %s\n", name);
123 if (!fat_create_file(dd, name, &file_entry)) {
124 printf_P(PSTR("error creating file: "));
127 fd = open_file_in_dir(fs, dd, name);
129 printf_P(PSTR("error opening "));
136 struct fat_file_struct *get_log_file(void)