| @@ -0,0 +1,96 @@ | |||
| //Copyright 2020 by Warren Watson | |||
| // Version 02-Feb-20 | |||
| // | |||
| #include "Arduino.h" | |||
| #include "USBHost_t36.h" | |||
| USBHost myusb; | |||
| USBHub hub1(myusb); | |||
| USBHub hub2(myusb); | |||
| USBHub hub3(myusb); | |||
| USBHub hub4(myusb); | |||
| msController msDrive1(myusb); | |||
| msController msDrive2(myusb); | |||
| // Show USB drive information for the selected USB drive. | |||
| int showUSBDriveInfo(msController *drive) { | |||
| if(drive == &msDrive1) { | |||
| Serial.printf(F("msDrive1 is ")); | |||
| } else { | |||
| Serial.printf(F("msDrive2 is ")); | |||
| } | |||
| if(drive->msDriveInfo.mounted == true) {// check if mounted. | |||
| Serial.printf(F("Mounted\n\n")); | |||
| } else { | |||
| Serial.printf(F("NOT Mounted\n\n")); | |||
| } | |||
| // Now we will print out the information. | |||
| Serial.printf(F(" connected %d\n"),drive->msDriveInfo.connected); | |||
| Serial.printf(F(" initialized %d\n"),drive->msDriveInfo.initialized); | |||
| Serial.printf(F(" USB Vendor ID: %4.4x\n"),drive->msDriveInfo.idVendor); | |||
| Serial.printf(F(" USB Product ID: %4.4x\n"),drive->msDriveInfo.idProduct); | |||
| Serial.printf(F(" HUB Number: %d\n"),drive->msDriveInfo.hubNumber); | |||
| Serial.printf(F(" HUB Port: %d\n"),drive->msDriveInfo.hubPort); | |||
| Serial.printf(F(" Device Address: %d\n"),drive->msDriveInfo.deviceAddress); | |||
| Serial.printf(F("Removable Device: ")); | |||
| if(drive->msDriveInfo.inquiry.Removable == 1) | |||
| Serial.printf(F("YES\n")); | |||
| else | |||
| Serial.printf(F("NO\n")); | |||
| Serial.printf(F(" VendorID: %8.8s\n"),drive->msDriveInfo.inquiry.VendorID); | |||
| Serial.printf(F(" ProductID: %16.16s\n"),drive->msDriveInfo.inquiry.ProductID); | |||
| Serial.printf(F(" RevisionID: %4.4s\n"),drive->msDriveInfo.inquiry.RevisionID); | |||
| Serial.printf(F(" Version: %d\n"),drive->msDriveInfo.inquiry.Version); | |||
| Serial.printf(F(" Sector Count: %ld\n"),drive->msDriveInfo.capacity.Blocks); | |||
| Serial.printf(F(" Sector size: %ld\n"),drive->msDriveInfo.capacity.BlockSize); | |||
| Serial.printf(F(" Disk Capacity: %.f Bytes\n\n"),(double_t)drive->msDriveInfo.capacity.Blocks * | |||
| (double_t)drive->msDriveInfo.capacity.BlockSize); | |||
| return 0; | |||
| } | |||
| static uint8_t mscError = 0; | |||
| void setup() { | |||
| while(!Serial); | |||
| Serial.printf("\n\nMSC TEST\n\n"); | |||
| Serial.printf("Initializing USB Drive(s)\n"); | |||
| myusb.begin(); | |||
| if(mscError = msDrive1.mscInit()) | |||
| Serial.printf("msDrive1 not connected: Code: %d\n\n", mscError); | |||
| else | |||
| Serial.printf("msDrive1 connected\n"); | |||
| if(mscError = msDrive2.mscInit()) | |||
| Serial.printf("msDrive2 not connected: Code: %d\n\n", mscError); | |||
| else | |||
| Serial.printf("msDrive2 connected\n"); | |||
| } | |||
| void loop() { | |||
| char op = 0; | |||
| Serial.printf(F("\nPress a key to show USB drive info:\n\n")); | |||
| while(!Serial.available()) yield(); | |||
| op = Serial.read(); | |||
| if(Serial.available()) Serial.read(); // Get rid of CR or LF if there. | |||
| // Check if msDrive1 is plugged in and initialized | |||
| if((mscError = msDrive1.checkConnectedInitialized()) != MS_INIT_PASS) { | |||
| Serial.printf("msDrive1 not connected: Code: %d\n\n", mscError); | |||
| } else { | |||
| Serial.printf("msDrive1 connected/initilized\n"); | |||
| showUSBDriveInfo(&msDrive1); | |||
| } | |||
| // Check if msDrive2 is plugged in and initialized | |||
| if((mscError = msDrive2.checkConnectedInitialized()) != MS_INIT_PASS) { | |||
| Serial.printf("msDrive2 not connected: Code: %d\n\n", mscError); | |||
| } else { | |||
| Serial.printf("msDrive2 connected/initilized\n"); | |||
| showUSBDriveInfo(&msDrive2); | |||
| } | |||
| } | |||