This is SCSI.h in view mode; [Download] [Up]
//
// SCSI2_Class - provides architecture independendent low-level
// SCSI device access.
//
// Copyright (C) 1994 by Christopher Wolf.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free
// Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Bug-reports, comments and questions should be directed to:
// Christopher Wolf <chris@alchemy.geo.cornell.edu>
//
// Portions of this code are derived from an earlier work
// (SCSI Inquirer) Copyright (C) 1990, 1991, 1992 by Jiro Nakamura
// and used with permission.
//
//
// For best results view this file with a tab size of 4 and
// a display width of 132 columns or wider.
//
// file version information
#define RCSSH "$Id: SCSI.h,v 0.40 94/09/19 17:19:15 chris Exp Locker: chris $"
// generic Unix headers
#import <objc/Object.h>
#import <sys/types.h>
#import <bsd/dev/scsireg.h>
// SCSI2 class specific headers
#import "scsi2reg.h"
// Read and Write Big-Endian Byte Order Values
int readBigEndianLong(void *address);
int readBigEndianShort(void *address);
int readBigEndianValue(void *address, int numBits);
void writeBigEndianLong(int value, void *address);
void writeBigEndianShort(int value, void *address);
void writeBigEndianValue(int value, void *address, int numBits);
@interface SCSI: Object
{
BOOL isOpen; // TRUE if SCSI device open
int target, lun; // Target / logical unit
int fd; // File descriptor
char *dev_name; // Generic SCSI Device
struct scsi_req sr; // SCSI command request parameters
struct scsi_adr sa; // SCSI address parameters
char errorString[100]; // English error information
}
// Factory method
+ new;
// Open, close, select a device
- (int) openTarget: (int) target lun: (int) lun;
- (int) open;
- (int) setTarget: (int) target lun: (int)lun;
- (int) close;
// Find a device
- (int) findDevice;
- (int) findDevice: (int) trg;
- (BOOL) isDevice;
// Retrieve Error and Status Information
- (char *) errorString;
- (char *) returnError: sender;
- (char *) returnDriverStatus: (char **) driverStat scsiStatus: (char **) scsiStat andExtendedSense: (char **) esense;
- (struct scsi_req *) statusReq;
- (BOOL) isOpen;
// Issue Pre-packaged SCSI commands
- (int) inquiry: (struct inquiry2_reply *) ibuffer;
- (int) readCapacity: (struct capacity2_reply *) rbuffer;
- (int) requestSense: (struct esense2_reply *) rbuffer;
- (int) testUnitReady;
- (int) sendDiagnosticPf: (BOOL) pf selfTest: (BOOL) st deviceOffLine: (BOOL) dol
unitOffLine: (BOOL) uol parameterListLength: (int) pll parameterBuffer: (char *) pbuf;
- (int) receiveDiagnosticAlloc: (int) alloc buffer: (char *) buf;
- (int) modeSensePage: (int) page pc: (int) pc dbd: (BOOL) dbd mpbuf: (struct mode_parameters *) mpbuf;
// Issue Low Level SCSI Commands
- (int) executeRequest: (struct scsi_req *) sp;
- (int) executeBusReset;
+ (void) clearCommandBlock: (union cdb *) cdbp;
// Private methods
- (int) performRequest;
// Archiving methods
- write: (NXTypedStream *) stream;
- read: (NXTypedStream *) stream;
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.