Adding vendor specific (OMTI) commands v4.7
authorMichael McMaster <michael@codesrc.com>
Sun, 12 Mar 2017 04:16:00 +0000 (14:16 +1000)
committerMichael McMaster <michael@codesrc.com>
Sun, 12 Mar 2017 04:16:00 +0000 (14:16 +1000)
software/SCSI2SD/src/vendor.c [new file with mode: 0755]
software/SCSI2SD/src/vendor.h [new file with mode: 0755]

diff --git a/software/SCSI2SD/src/vendor.c b/software/SCSI2SD/src/vendor.c
new file mode 100755 (executable)
index 0000000..2fb70b1
--- /dev/null
@@ -0,0 +1,59 @@
+//     Copyright (C) 2016 Michael McMaster <michael@codesrc.com>
+//
+//     This file is part of SCSI2SD.
+//
+//     SCSI2SD is free software: you can redistribute it and/or modify
+//     it under the terms of the GNU General Public License as published by
+//     the Free Software Foundation, either version 3 of the License, or
+//     (at your option) any later version.
+//
+//     SCSI2SD is distributed in the hope that it will be useful,
+//     but WITHOUT ANY WARRANTY; without even the implied warranty of
+//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//     GNU General Public License for more details.
+//
+//     You should have received a copy of the GNU General Public License
+//     along with SCSI2SD.  If not, see <http://www.gnu.org/licenses/>.
+
+#include "device.h"
+#include "scsi.h"
+#include "vendor.h"
+
+
+// Callback after the DATA OUT phase is complete.
+static void doAssignDiskParameters(void)
+{
+       scsiDev.phase = STATUS;
+}
+
+int scsiVendorCommand()
+{
+       int commandHandled = 1;
+
+       uint8 command = scsiDev.cdb[0];
+
+       if (command == 0xC0)
+       {
+               // Define flexible disk format
+               // OMTI-5204 controller
+               // http://bitsavers.informatik.uni-stuttgart.de/pdf/sms/OMTI_5x00.pdf
+               // Stub. Sectors-per-track should be configured by scsi2sd-util
+       }
+       else if (command == 0xC2)
+       {
+               // Assign Disk Parameters command
+               // OMTI-5204 controller
+               // http://bitsavers.informatik.uni-stuttgart.de/pdf/sms/OMTI_5x00.pdf
+               // Stub to read and discard 10 bytes.
+               scsiDev.dataLen = 10;
+               scsiDev.phase = DATA_OUT;
+               scsiDev.postDataOutHook = doAssignDiskParameters;
+       }
+       else
+       {
+               commandHandled = 0;
+       }
+
+       return commandHandled;
+}
+
diff --git a/software/SCSI2SD/src/vendor.h b/software/SCSI2SD/src/vendor.h
new file mode 100755 (executable)
index 0000000..7e267f1
--- /dev/null
@@ -0,0 +1,22 @@
+//     Copyright (C) 2016 Michael McMaster <michael@codesrc.com>
+//
+//     This file is part of SCSI2SD.
+//
+//     SCSI2SD is free software: you can redistribute it and/or modify
+//     it under the terms of the GNU General Public License as published by
+//     the Free Software Foundation, either version 3 of the License, or
+//     (at your option) any later version.
+//
+//     SCSI2SD is distributed in the hope that it will be useful,
+//     but WITHOUT ANY WARRANTY; without even the implied warranty of
+//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//     GNU General Public License for more details.
+//
+//     You should have received a copy of the GNU General Public License
+//     along with SCSI2SD.  If not, see <http://www.gnu.org/licenses/>.
+#ifndef S2S_VENDOR_H
+#define S2S_VENDOR_H
+
+int scsiVendorCommand(void);
+
+#endif