Pārlūkot izejas kodu

Merge pull request #195 from BlueSCSI/eric/variousThings

Various things
Eric Helgeson 1 gadu atpakaļ
vecāks
revīzija
a45bfc3b0a
4 mainītis faili ar 17 papildinājumiem un 21 dzēšanām
  1. 1 0
      .gitignore
  2. 1 1
      README.adoc
  3. 5 5
      src/BlueSCSI_disk.cpp
  4. 10 15
      src/BlueSCSI_initiator.cpp

+ 1 - 0
.gitignore

@@ -9,3 +9,4 @@ dist/
 .vscode/ipch
 .vscode/extensions.json
 cc-nc-hardware/*/*-backups/
+.idea/

+ 1 - 1
README.adoc

@@ -10,7 +10,7 @@ Join us in #bluescsi on https://discord.gg/GKcvtgU7P9[Discord] or open an issue
 
 ## Hardware
 
-Hardware schematics, designs, and production files can be found under the `cc-nc-hardware` folder.
+Hardware schematics, designs, and production files can be found under the `hardware` folder.
 
 Hardware version numbers are based on when the design was updated plus a sub-revision letter, such as "2022_11b" and "2022_12a".
 

+ 5 - 5
src/BlueSCSI_disk.cpp

@@ -512,11 +512,11 @@ static void checkDiskGeometryDivisible(image_config_t &img)
         uint32_t sectorsPerHeadTrack = img.sectorsPerTrack * img.headsPerCylinder;
         if (img.scsiSectors % sectorsPerHeadTrack != 0)
         {
-            log("WARNING: Host used command ", scsiDev.cdb[0],
-                " which is affected by drive geometry. Current settings are ",
-                (int)img.sectorsPerTrack, " sectors x ", (int)img.headsPerCylinder, " heads = ",
-                (int)sectorsPerHeadTrack, " but image size of ", (int)img.scsiSectors,
-                " sectors is not divisible. This can cause error messages in diagnostics tools.");
+            debuglog("WARNING: Host used command ", scsiDev.cdb[0],
+                     " which is affected by drive geometry. Current settings are ",
+                     (int)img.sectorsPerTrack, " sectors x ", (int)img.headsPerCylinder, " heads = ",
+                     (int)sectorsPerHeadTrack, " but image size of ", (int)img.scsiSectors,
+                     " sectors is not divisible. This can cause error messages in diagnostics tools.");
             img.geometrywarningprinted = true;
         }
     }

+ 10 - 15
src/BlueSCSI_initiator.cpp

@@ -235,13 +235,12 @@ void scsiInitiatorMainLoop()
                 g_initiator_state.sectorcount = g_initiator_state.sectorcount_all = 0;
             }
 
-            const char *filename_format = "HD00_imaged.hda";
+            char filename[18] = "";
             if (inquiryok)
             {
                 g_initiator_state.deviceType = inquiry_data[0] & 0x1F;
                 if (g_initiator_state.deviceType == DEVICE_TYPE_CD)
                 {
-                    filename_format = "CD00_imaged.iso";
                     g_initiator_state.ejectWhenDone = true;
                 }
                 else if(g_initiator_state.deviceType != DEVICE_TYPE_DIRECT_ACCESS)
@@ -252,11 +251,7 @@ void scsiInitiatorMainLoop()
 
             if (g_initiator_state.sectorcount > 0)
             {
-                char filename[32] = {0};
-                int lun = 0;
-
-                strncpy(filename, filename_format, sizeof(filename) - 1);
-                filename[2] += g_initiator_state.target_id;
+                int image_num = 0;
 
                 uint64_t sd_card_free_bytes = (uint64_t)SD.vol()->freeClusterCount() * SD.vol()->bytesPerCluster();
                 if(sd_card_free_bytes < total_bytes)
@@ -266,14 +261,14 @@ void scsiInitiatorMainLoop()
                     return;
                 }
 
-                while(SD.exists(filename))
-                {
-                    filename[3] = lun++ + '0';
-                }
-                if(lun != 0)
-                {
-                    log("Using filename: ", filename, " to avoid overwriting existing file.");
-                }
+                do {
+                    sprintf(filename, "%s%d_imaged-%03d.%s",
+                            (g_initiator_state.deviceType == DEVICE_TYPE_CD) ? "CD" : "HD",
+                            g_initiator_state.target_id,
+                            ++image_num,
+                            (g_initiator_state.deviceType == DEVICE_TYPE_CD) ? "iso" : "hda");
+                } while(SD.exists(filename));
+                log("Imaging filename: ", filename, ".");
                 g_initiator_state.target_file = SD.open(filename, O_WRONLY | O_CREAT | O_TRUNC);
                 if (!g_initiator_state.target_file.isOpen())
                 {