51   uint8 valid_partition = 0;
 
   54   fs->currentsector.dirty = 0;
 
   56   fs->next_free_cluster = 0; 
 
   61   if (!
fs->disk_io.read_media)
 
   68   if (!
fs->disk_io.read_media(0, 
fs->currentsector.sector, 1))
 
  113   if (!
fs->disk_io.read_media(
fs->lba_begin, 
fs->currentsector.sector, 1))
 
  136   fs->rootdir_first_sector = reserved_sectors + (num_of_fats * 
fs->fat_sectors);
 
  140   fs->fat_begin_lba = 
fs->lba_begin + reserved_sectors;
 
  143   fs->cluster_begin_lba = 
fs->fat_begin_lba + (num_of_fats * 
fs->fat_sectors);
 
  164   if (
fs->sectors_per_cluster != 0) {
 
  165     count_of_clusters = data_sectors / 
fs->sectors_per_cluster;
 
  167     if (count_of_clusters < 4085)
 
  170     else if (count_of_clusters < 65525) {
 
  172       fs->rootdir_first_cluster = 0;
 
  193     return (
fs->cluster_begin_lba + (
fs->root_entry_count * 32 / 
FAT_SECTOR_SIZE) + ((Cluster_Number - 2) * 
fs->sectors_per_cluster));
 
  195     return ((
fs->cluster_begin_lba + ((Cluster_Number - 2) * 
fs->sectors_per_cluster)));
 
  201   return fs->disk_io.read_media(lba, target, count);
 
  207   return fs->disk_io.write_media(lba, target, count);
 
  214   uint32 sector_to_read = 0;
 
  215   uint32 cluster_to_read = 0;
 
  222     if (offset < fs->rootdir_sectors)
 
  223       lba = 
fs->lba_begin + 
fs->rootdir_first_sector + offset;
 
  230     cluster_chain = start_cluster;
 
  233     cluster_to_read = offset / 
fs->sectors_per_cluster;
 
  234     sector_to_read = offset - (cluster_to_read * 
fs->sectors_per_cluster);
 
  237     for (i = 0; i < cluster_to_read; i++)
 
  250     return fs->disk_io.read_media(lba, target, 1);
 
  252   else if (lba != 
fs->currentsector.address) {
 
  253     fs->currentsector.address = lba;
 
  254     return fs->disk_io.read_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  269     if (sector < fs->rootdir_sectors)
 
  270       lba = 
fs->lba_begin + 
fs->rootdir_first_sector + sector;
 
  277       return fs->disk_io.read_media(lba, target, 1);
 
  281       fs->currentsector.address = lba;
 
  284       return fs->disk_io.read_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  295       return fs->disk_io.read_media(lba, target, 1);
 
  302       return fs->disk_io.read_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  310 #if FATFS_INC_WRITE_SUPPORT 
  313   if (!
fs->disk_io.write_media)
 
  321     if (sector < fs->rootdir_sectors)
 
  322       lba = 
fs->lba_begin + 
fs->rootdir_first_sector + sector;
 
  329       return fs->disk_io.write_media(lba, target, 1);
 
  333       fs->currentsector.address = lba;
 
  336       return fs->disk_io.write_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  347       return fs->disk_io.write_media(lba, target, 1);
 
  354       return fs->disk_io.write_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  365   FAT_PRINTF((
" Root Dir First Cluster = %x\r\n", 
fs->rootdir_first_cluster));
 
  366   FAT_PRINTF((
" FAT Begin LBA = 0x%x\r\n",
fs->fat_begin_lba));
 
  367   FAT_PRINTF((
" Cluster Begin LBA = 0x%x\r\n",
fs->cluster_begin_lba));
 
  368   FAT_PRINTF((
" Sectors Per Cluster = %d\r\n", 
fs->sectors_per_cluster));
 
  375   return fs->rootdir_first_cluster;
 
  385   char *long_filename = 
NULL;
 
  386   char short_filename[13];
 
  405 #if FATFS_INC_LFN_SUPPORT 
  428             memset(short_filename, 0, 
sizeof(short_filename));
 
  431             for (i = 0; i < 8; i++)
 
  436             for (i = 8; i < 11; i++) {
 
  445               if (short_filename[0] != 
'.')
 
  446                 short_filename[8] = 
'.';
 
  448                 short_filename[8] = 
' ';
 
  451               short_filename[8] = 
' ';
 
  461 #if FATFS_INC_LFN_SUPPORT 
  477 #if FATFS_INC_WRITE_SUPPORT 
  497 #if FATFS_INC_LFN_SUPPORT 
  524 #if FATFS_INC_TIME_DATE_SUPPORT 
  528     struct tm * time_info;
 
  536     time_info = localtime(&time_now);
 
  577 #if FATFS_INC_WRITE_SUPPORT 
  585   if (!
fs->disk_io.write_media)
 
  601 #if FATFS_INC_LFN_SUPPORT 
  617 #if FATFS_INC_TIME_DATE_SUPPORT 
  626             return fs->disk_io.write_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  642 #if FATFS_INC_WRITE_SUPPORT 
  650   if (!
fs->disk_io.write_media)
 
  666 #if FATFS_INC_LFN_SUPPORT 
  683 #if FATFS_INC_TIME_DATE_SUPPORT 
  692             return fs->disk_io.write_media(
fs->currentsector.address, 
fs->currentsector.sector, 1);
 
  707 #if FATFS_DIR_LIST_SUPPORT 
  718 #if FATFS_DIR_LIST_SUPPORT 
  723   char *long_filename = 
NULL;
 
  724   char short_filename[13];
 
  743 #if FATFS_INC_LFN_SUPPORT 
  763 #if FATFS_INC_TIME_DATE_SUPPORT 
  786           memset(short_filename, 0, 
sizeof(short_filename));
 
  789           for (i = 0; i < 8; i++)
 
  794           for (i = 8; i < 11; i++) {
 
  803             if (short_filename[0] != 
'.')
 
  804               short_filename[8] = 
'.';
 
  806               short_filename[8] = 
' ';
 
  809             short_filename[8] = 
' ';
 
  818 #if FATFS_INC_TIME_DATE_SUPPORT