|  | @@ -0,0 +1,58 @@
 | 
	
		
			
				|  |  | +//	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 "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_t 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;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 |