mirror of
https://github.com/moibenko/mtx.git
synced 2026-01-06 20:16:22 +00:00
Changes required for Spectra Logic Tape library.
This commit is contained in:
@@ -503,11 +503,22 @@ static void Status(void)
|
||||
else {
|
||||
printf("Data Transfer Element %d ", ElementStatus->DataTransferElementAddress[TransferElementNumber]);
|
||||
phys_loc = (PhysicalLocation_T *) &ElementStatus->DataTransferElementPhysicalLocation[TransferElementNumber];
|
||||
printf("Phys Loc F%u,C%u,R%u,Z%u SN%s ID %s:",
|
||||
if (ElementStatus->DataTransferElementSerialNumber[TransferElementNumber][0] == " ")
|
||||
{
|
||||
printf("Phys Loc F%u,C%u,R%u,Z%u SN%s ID %s:",
|
||||
phys_loc->frame, phys_loc->column, phys_loc->row, phys_loc->zone,
|
||||
ElementStatus->DataTransferElementSerialNumber[TransferElementNumber],
|
||||
ElementStatus->DataTransferElementProductId[TransferElementNumber]
|
||||
);
|
||||
}
|
||||
else {
|
||||
printf("Phys Loc F%u,C%u,R%u,Z%u SN %s ID %s:",
|
||||
phys_loc->frame, phys_loc->column, phys_loc->row, phys_loc->zone,
|
||||
ElementStatus->DataTransferElementSerialNumber[TransferElementNumber],
|
||||
ElementStatus->DataTransferElementProductId[TransferElementNumber]
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
if (ElementStatus->DataTransferElementFull[TransferElementNumber])
|
||||
{
|
||||
|
||||
@@ -1103,8 +1103,24 @@ static void ParseElementStatus( int *EmptyStorageElementAddress,
|
||||
BigEndian16(TransportElementDescriptor->SourceStorageElementAddress);
|
||||
InquiryShort_T *inqs;
|
||||
inqs = (InquiryShort_T *) TransportElementDescriptor->PrimaryVolumeTag;
|
||||
copy_char_buffer(inqs->SerialNumber, ElementStatus->DataTransferElementSerialNumber[ElementStatus->DataTransferElementCount], 12);
|
||||
copy_char_buffer(inqs->ProductIdentification+2, ElementStatus->DataTransferElementProductId[ElementStatus->DataTransferElementCount], 12);
|
||||
/* This is a hack to differentiate TS4500 and TFinity returned data */
|
||||
/* For TFinity
|
||||
inqs->VendorIdentification[0] == 0x0
|
||||
and inqs->VendorIdentification[1] == 0x20
|
||||
*/
|
||||
if (inqs->VendorIdentification[0] == 0x0 && inqs->VendorIdentification[1] == 0x20)
|
||||
{
|
||||
|
||||
unsigned char * cptr;
|
||||
cptr = (unsigned char *) &inqs->VendorIdentification[2];
|
||||
copy_char_buffer(cptr, ElementStatus->DataTransferElementSerialNumber[ElementStatus->DataTransferElementCount], 12);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
copy_char_buffer(inqs->SerialNumber, ElementStatus->DataTransferElementSerialNumber[ElementStatus->DataTransferElementCount], 12);
|
||||
copy_char_buffer(inqs->ProductIdentification+2, ElementStatus->DataTransferElementProductId[ElementStatus->DataTransferElementCount], 12);
|
||||
}
|
||||
ElementStatus->DataTransferElementCount++;
|
||||
break;
|
||||
}
|
||||
@@ -1204,6 +1220,8 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumChangerFD, RequestSense_T *
|
||||
int FirstElem, NumElements, NumThisRES;
|
||||
|
||||
ElementModeSense_T *mode_sense = NULL;
|
||||
unsigned char no_barcodes_saved;
|
||||
|
||||
|
||||
if (inquiry_info->MChngr && inquiry_info->PeripheralDeviceType != MEDIUM_CHANGER_TYPE)
|
||||
{
|
||||
@@ -1353,6 +1371,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumChangerFD, RequestSense_T *
|
||||
#endif
|
||||
flags->elementtype = DataTransferElement; /* sigh! */
|
||||
flags->absolute_addressing = 0;
|
||||
|
||||
DataBuffer = SendElementStatusRequest( MediumChangerFD, RequestSense,
|
||||
inquiry_info, flags,
|
||||
mode_sense->DataTransferStart,
|
||||
@@ -1380,11 +1399,14 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumChangerFD, RequestSense_T *
|
||||
free(DataBuffer); /* sigh! */
|
||||
|
||||
flags->absolute_addressing = 1;
|
||||
no_barcodes_saved = flags->no_barcodes;
|
||||
flags->no_barcodes = 1;
|
||||
DataBuffer = SendElementStatusRequest( MediumChangerFD, RequestSense,
|
||||
inquiry_info, flags,
|
||||
mode_sense->DataTransferStart,
|
||||
mode_sense->NumDataTransfer,
|
||||
SCSI_RES_ELEMENTS * 52 +120);
|
||||
flags->no_barcodes = no_barcodes_saved;
|
||||
if (!DataBuffer)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
|
||||
Reference in New Issue
Block a user