diff options
| -rw-r--r-- | apps/settings.c | 2 | ||||
| -rw-r--r-- | firmware/drivers/fat.c | 5 | ||||
| -rw-r--r-- | firmware/drivers/fat.h | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/apps/settings.c b/apps/settings.c index 67530a9..e285d26 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -198,7 +198,7 @@ static int save_config_buffer( void ) /* update the checksum in the end of the block before saving */ calculate_config_checksum(rtc_config_block + sizeof(rtc_config_block) - 2); #ifdef SAVE_TO_DISK - if(battery_level_safe()) + if(battery_level_safe() && (fat_firstsector()!=0)) return !ata_write_sectors( 61, 1, rtc_config_block); else return -1; diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index 7fe011c..78d0f8f 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -218,6 +218,11 @@ static int first_sector_of_cluster(int cluster) return (cluster - 2) * fat_bpb.bpb_secperclus + fat_bpb.firstdatasector; } +int fat_startsector(void) +{ + return fat_bpb.startsector; +} + int fat_mount(int startsector) { unsigned char buf[SECTOR_SIZE]; diff --git a/firmware/drivers/fat.h b/firmware/drivers/fat.h index 844864d..836d5c6 100644 --- a/firmware/drivers/fat.h +++ b/firmware/drivers/fat.h @@ -66,6 +66,7 @@ extern int fat_mount(int startsector); extern int fat_create_file(unsigned int currdir, char *name); extern int fat_create_dir(unsigned int currdir, char *name); #endif +extern int fat_startsector(void); extern int fat_open(unsigned int cluster, struct fat_file *ent); extern int fat_read(struct fat_file *ent, int sectorcount, void* buf ); extern int fat_seek(struct fat_file *ent, int sector ); |