Răsfoiți Sursa

Fix reported length and set device profile when image present.

saybur 2 ani în urmă
părinte
comite
ae1ff6cb04
1 a modificat fișierele cu 7 adăugiri și 6 ștergeri
  1. 7 6
      src/BlueSCSI_cdrom.cpp

+ 7 - 6
src/BlueSCSI_cdrom.cpp

@@ -941,8 +941,8 @@ void doGetConfiguration(uint8_t rt, uint16_t startFeature, uint16_t allocationLe
     if (!img.ejected)
     {
         // disk in drive, current profile is CD-ROM
-        scsiDev.data[6] = 0;
-        scsiDev.data[7] = 0; // TODO
+        scsiDev.data[6] = 0x00;
+        scsiDev.data[7] = 0x08;
     }
     else
     {
@@ -1090,10 +1090,11 @@ void doGetConfiguration(uint8_t rt, uint16_t startFeature, uint16_t allocationLe
 #endif
 
     // finally, rewrite data length to match
-    scsiDev.data[0] = len >> 24;
-    scsiDev.data[1] = len >> 16;
-    scsiDev.data[2] = len >> 8;
-    scsiDev.data[3] = len;
+    uint32_t dlen = len - 8;
+    scsiDev.data[0] = dlen >> 24;
+    scsiDev.data[1] = dlen >> 16;
+    scsiDev.data[2] = dlen >> 8;
+    scsiDev.data[3] = dlen;
 
     if (len > allocationLength)
     {