diff --git a/src/BlueSCSI.cpp b/src/BlueSCSI.cpp index 856ddf1..4b47c6b 100644 --- a/src/BlueSCSI.cpp +++ b/src/BlueSCSI.cpp @@ -147,6 +147,9 @@ void readSCSIDeviceConfig(uint8_t scsi_id, SCSI_DEVICE *dev) { return; } + LOG_FILE.println(); + LOG_FILE.print("\t\tINI Overrides: "); + // create section name from id section[4] = INT_TO_CHAR(scsi_id); @@ -155,13 +158,13 @@ void readSCSIDeviceConfig(uint8_t scsi_id, SCSI_DEVICE *dev) { case 0: dev->m_type = SCSI_DEVICE_HDD; memcpy(iq, &default_hdd, sizeof(default_hdd)); - LOG_FILE.println("Forced HDD"); + LOG_FILE.print("Forced HDD"); break; case 2: dev->m_type = SCSI_DEVICE_OPTICAL; memcpy(iq, &default_optical, sizeof(default_optical)); - LOG_FILE.println("Forced Optical"); + LOG_FILE.print("Forced CDROM"); break; case 99: @@ -169,25 +172,25 @@ void readSCSIDeviceConfig(uint8_t scsi_id, SCSI_DEVICE *dev) { break; default: - LOG_FILE.println("Unsupported override type"); + LOG_FILE.print("Unsupported type override"); } if(ini_gets(section, "vendor", NULL, buf, SCSI_BUF_SIZE, BLUESCSI_INI)) { memcpy(iq->vendor, buf, SCSI_VENDOR_LENGTH); - LOG_FILE.print("vendor:"); - LOG_FILE.println(buf); + LOG_FILE.print(" / Vendor: "); + LOG_FILE.print(buf); } if(ini_gets(section, "product", NULL, buf, SCSI_BUF_SIZE, BLUESCSI_INI)) { memcpy(iq->product, buf, SCSI_PRODUCT_LENGTH); - LOG_FILE.print("product:"); - LOG_FILE.println(buf); + LOG_FILE.print(" / Product: "); + LOG_FILE.print(buf); } if(ini_gets(section, "revision", NULL, buf, SCSI_BUF_SIZE, BLUESCSI_INI)) { memcpy(iq->revision, buf, SCSI_REVISION_LENGTH); - LOG_FILE.print("revision:"); - LOG_FILE.println(buf); + LOG_FILE.print(" / Revision: "); + LOG_FILE.print(buf); } } @@ -197,42 +200,44 @@ void readSDCardInfo(int success_mhz) cid_t sd_cid; LOG_FILE.println("SDCard Info:"); - LOG_FILE.print(" Format:"); + LOG_FILE.print("\tFormat: "); switch(SD.vol()->fatType()) { case FAT_TYPE_EXFAT: - LOG_FILE.println("exFAT"); - break; + LOG_FILE.println("exFAT"); + break; default: - LOG_FILE.print("FAT32/16/12 - exFAT may improve performance"); + LOG_FILE.println("FAT32/16/12 - exFAT may improve performance"); } - LOG_FILE.print("SPI speed: "); + LOG_FILE.print("\tSPI Speed: "); LOG_FILE.print(success_mhz); - LOG_FILE.println("Mhz"); - LOG_FILE.print(" Max Filename Length:"); + LOG_FILE.println("MHz"); + LOG_FILE.print("\tMax Filename Length: "); LOG_FILE.println(MAX_FILE_PATH); if(SD.card()->readCID(&sd_cid)) { - LOG_FILE.print(" MID:"); + LOG_FILE.print("\tMID: "); LOG_FILE.print(sd_cid.mid, 16); - LOG_FILE.print(" OID:"); + LOG_FILE.print(" OID: "); LOG_FILE.print(sd_cid.oid[0]); LOG_FILE.println(sd_cid.oid[1]); - LOG_FILE.print(" Name:"); + LOG_FILE.print("\tName: "); LOG_FILE.print(sd_cid.pnm[0]); LOG_FILE.print(sd_cid.pnm[1]); LOG_FILE.print(sd_cid.pnm[2]); LOG_FILE.print(sd_cid.pnm[3]); LOG_FILE.print(sd_cid.pnm[4]); - LOG_FILE.print(" Date:"); + LOG_FILE.print(" Date: "); LOG_FILE.print(sd_cid.mdtMonth()); LOG_FILE.print("/"); LOG_FILE.println(sd_cid.mdtYear()); - LOG_FILE.print(" Serial:"); + LOG_FILE.print("\tSerial: "); LOG_FILE.println(sd_cid.psn()); + } else { + LOG_FILE.println("\tWARNING: Unable to read SDCard CID data"); } LOG_FILE.sync(); } @@ -271,16 +276,16 @@ bool hddimageOpen(SCSI_DEVICE *dev, FsFile *file,int id,int lun,int blocksize) dev->m_fileSize = dev->m_file.size(); if(dev->m_fileSize < 1) { - LOG_FILE.println(" - file is 0 bytes, can not use."); + LOG_FILE.println("\t\tERROR: File is 0 bytes"); goto failed; } + if(!dev->m_file.isContiguous()) { - LOG_FILE.println(" - file is fragmented, see https://github.com/erichelgeson/BlueSCSI/wiki/Image-File-Fragmentation"); + LOG_FILE.println("\t\tWARNING: File is fragmented, see https://github.com/erichelgeson/BlueSCSI/wiki/Image-File-Fragmentation"); } if(dev->m_type == SCSI_DEVICE_OPTICAL) { - LOG_FILE.print(" CDROM"); dev->m_blocksize = CDROM_COMMON_SECTORSIZE; // Borrowed from PCEM @@ -303,6 +308,7 @@ bool hddimageOpen(SCSI_DEVICE *dev, FsFile *file,int id,int lun,int blocksize) // Last ditch effort // size must be less than 700MB if(dev->m_fileSize > 912579600) { + LOG_FILE.println("\t\tERROR: ISO too large!"); goto failed; } @@ -314,27 +320,25 @@ bool hddimageOpen(SCSI_DEVICE *dev, FsFile *file,int id,int lun,int blocksize) dev->m_rawblocksize = CDROM_COMMON_SECTORSIZE; } else { // I give up! - LOG_FILE.println(" InvalidISO"); + LOG_FILE.println("\t\tERROR: Invalid ISO!"); goto failed; } } - } else { - LOG_FILE.print(" HDD"); } dev->m_blockcount = dev->m_fileSize / dev->m_blocksize; // check blocksize dummy file - LOG_FILE.print(" / "); + LOG_FILE.print("\t\tFile size: "); LOG_FILE.print(dev->m_fileSize); - LOG_FILE.print("bytes / "); + LOG_FILE.print(" bytes, "); LOG_FILE.print(dev->m_fileSize / 1024); - LOG_FILE.print("KiB / "); + LOG_FILE.print("KiB, "); LOG_FILE.print(dev->m_fileSize / 1024 / 1024); LOG_FILE.println("MiB"); if(dev->m_type == SCSI_DEVICE_OPTICAL) { - LOG_FILE.print(" MODE2:");LOG_FILE.print(IS_MODE2(dev->flags)); - LOG_FILE.print(" BlockSize:");LOG_FILE.println(IS_RAW(dev->flags)); + LOG_FILE.print(" MODE2: ");LOG_FILE.print(IS_MODE2(dev->flags)); + LOG_FILE.print(" BlockSize: ");LOG_FILE.println(IS_RAW(dev->flags)); } return true; // File opened @@ -527,10 +531,11 @@ void setup() #endif flashError(ERROR_NO_SDCARD); } + initFileLog(); readSDCardInfo(mhz); - //HD image file open + // HD image file open scsi_id_mask = 0x00; if(ini_getl("SCSI", "MapLunsToIDs", 0, BLUESCSI_INI)) @@ -553,12 +558,13 @@ void setup() if (root.isDirectory()) { LOG_FILE.print("Looking for images in: "); LOG_FILE.println(image_set_dir_name); - LOG_FILE.sync(); } else { root.close(); root.open("/"); + LOG_FILE.println("Looking for images in: /"); } + LOG_FILE.sync(); findDriveImages(root); root.close(); @@ -578,8 +584,8 @@ void setup() } finalizeFileLog(); - LED_OFF(); - //Occurs when the RST pin state changes from HIGH to LOW + + // Occurs when the RST pin state changes from HIGH to LOW attachInterrupt(RST, onBusReset, FALLING); } @@ -635,6 +641,8 @@ void findDriveImages(FsFile root) { int lun = DEFAULT_SCSI_LUN; int blk = HDD_BLOCK_SIZE; + LOG_FILE.print("\t- "); LOG_FILE.println(name); + // Positionally read in and coerce the chars to integers. // We only require the minimum and read in the next if provided. int file_name_length = strlen(name); @@ -645,8 +653,7 @@ void findDriveImages(FsFile root) { if(tmp_id > -1 && tmp_id <= MAX_SCSIID) { id = tmp_id; } else { - LOG_FILE.print(name); - LOG_FILE.println(" - bad SCSI id in filename, Using default ID 1"); + LOG_FILE.println("\t\tWARNING: Bad SCSI ID in filename, Using default ID 1"); } } @@ -657,8 +664,7 @@ void findDriveImages(FsFile root) { if(tmp_lun > -1 && tmp_lun <= NUM_SCSILUN) { lun = tmp_lun; } else { - LOG_FILE.print(name); - LOG_FILE.println(" - bad SCSI LUN in filename, Using default LUN ID 0"); + LOG_FILE.println("\t\tWARNING: Bad SCSI LUN in filename, Using default LUN ID 0"); } } @@ -678,30 +684,36 @@ void findDriveImages(FsFile root) { blk = 2048; } - if(id < NUM_SCSIID && lun < NUM_SCSILUN) { - dev = &scsi_device_list[id][lun]; - LOG_FILE.print(" - "); - LOG_FILE.print(name); - dev->m_type = device_type; - image_ready = hddimageOpen(dev, &file, id, lun, blk); - if(image_ready) { // Marked as a responsive ID - scsi_id_mask |= 1<m_type) - { - case SCSI_DEVICE_HDD: - // default SCSI HDD - dev->inquiry_block = default_hdd; - break; + dev = &scsi_device_list[id][lun]; + dev->m_type = device_type; + image_ready = hddimageOpen(dev, &file, id, lun, blk); + if(image_ready) { // Marked as a responsive ID + scsi_id_mask |= 1<inquiry_block = default_optical; - break; - } + switch(dev->m_type) + { + case SCSI_DEVICE_HDD: + // default SCSI HDD + dev->inquiry_block = default_hdd; + break; - readSCSIDeviceConfig(id, dev); + case SCSI_DEVICE_OPTICAL: + // default SCSI CDROM + dev->inquiry_block = default_optical; + break; } + + readSCSIDeviceConfig(id, dev); } } LOG_FILE.sync(); @@ -719,7 +731,7 @@ void initFileLog() { LOG_FILE.print("VER: "); LOG_FILE.print(VERSION); LOG_FILE.println(BUILD_TAGS); - LOG_FILE.print("DEBUG:"); + LOG_FILE.print("DEBUG: "); LOG_FILE.println(DEBUG); LOG_FILE.sync(); }