diff --git a/apps/main.c b/apps/main.c index 2062efa347..36a3f4e71d 100644 --- a/apps/main.c +++ b/apps/main.c @@ -76,7 +76,7 @@ extern int poolend[]; void init(void) { - int rc; + int rc, i; struct partinfo* pinfo; system_init(); @@ -124,10 +124,17 @@ void init(void) pinfo = disk_init(); if (!pinfo) panicf("disk: NULL"); - - rc = fat_mount(pinfo[0].start); - if(rc) - panicf("mount: %d",rc); + + for ( i=0; i<4; i++ ) { + if ( pinfo[i].type == PARTITION_TYPE_FAT32 ) { + rc = fat_mount(pinfo[i].start); + if(rc) + panicf("mount: %d",rc); + } + } + if ( i==4 ) { + panicf("No FAT32 partition!"); + } settings_load(); global_settings.total_boots++; diff --git a/firmware/common/disk.h b/firmware/common/disk.h index 8a78386c6c..d8e1bc5ddd 100644 --- a/firmware/common/disk.h +++ b/firmware/common/disk.h @@ -25,6 +25,8 @@ struct partinfo { unsigned char type; }; +#define PARTITION_TYPE_FAT32 0x0c + /* returns a pointer to an array of 8 partinfo structs */ struct partinfo* disk_init(void);