#1 Burning Software

It is currently Thu Dec 19, 2024 6:21 am

All times are UTC




Post new topic Reply to topic  [ 12 posts ] 
Author Message
 Post subject: error calling DiscAtOnceRawPWFromFile
PostPosted: Fri Jul 30, 2004 11:23 am 
Offline

Joined: Thu Jul 08, 2004 8:25 am
Posts: 51
Location: Germany
Hi all.

I'm trying to write a DAO via StarBurn_CdvdBurnerGrabber_DiscAtOnceRawPWFromFile (mode is supported)...what's the meaning of:
WARNING! NWA is not valid!!! and
Next Writable Address (LBA): -12488 ???

the code is:

Code:
          nEXCEPTION_NUMBER = StarBurn_CdvdBurnerGrabber_DiscAtOnceRawPWFromFile( astCDEntry[ m_iDestinationDrive ].pvDiscObject,
                                                                                  ( PCHAR )( &szExceptionText ),
                                                                                  sizeof( szExceptionText ),
                                                                                  &lStatus,
                                                                                  &stCDB_FAILURE_INFORMATION,
                                                                                  &m_DiscLayout,
                                                                                  TRUE,
                                                                                  FALSE,
                                                                                  FALSE,
                                                                                  FALSE,
                                                                                  1,
                                                                                  1 );


I also tried it with FALSE for p__BOOLEAN__IsXA with the same "result".

below is the debug-output:
Code:
StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK01.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK02.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK03.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK04.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK05.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK06.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK07.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK08.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK09.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK10.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK11.WAV' is 1

StarBurn.dll:StarBurnI_IsWAV(): IsWAV of 'C:\Temp\TRACK12.WAV' is 1

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): ENTERed for 0x06335878

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Inserted disc type 0x00000002

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Setting write parameters to AUDIO

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Setting write parameters to CDROM/XA

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Setting write parameters

StarBurn_DumpCdvdWriteParametersPage(): WARNING! Size 50 less then 56!

Write parameter page dump:
Page Code: 0x05, PSBit (Page Saveable): 0
Page Length: 50 UCHARs, Write Type: 0x01, Test Write: No, Reserved2_1: 0x00
BUP (Buffer Underrun Protection) Enabled: No
Track Mode: 0x04, Copy Allowed: No, FP (Is Fixed Packet): No
Next Session: 0x00, Data Block Type: 0x08, Reserved4: 0x00
Host Application Code: 0x00, Session Format: 0x00
Packet Size: 0, Audio Pause Length: 150
Media Catalog Number: 0x00000000000000000000000000000000
ISRC: 0x00000000000000000000000000000000
SubHeaderUCHAR0: 0x00, SubHeaderUCHAR1: 0x00
SubHeaderUCHAR2: 0x00, SubHeaderUCHAR3: 0x00
Vendor Specific: 0x00 0x00 0x00 0x00


StarBurn_DumpCdvdWriteParametersPage(): WARNING! Size 50 less then 56!

Write parameter page dump:
Page Code: 0x05, PSBit (Page Saveable): 0
Page Length: 50 UCHARs, Write Type: 0x03, Test Write: No, Reserved2_1: 0x00
BUP (Buffer Underrun Protection) Enabled: No
Track Mode: 0x00, Copy Allowed: No, FP (Is Fixed Packet): No
Next Session: 0x00, Data Block Type: 0x03, Reserved4: 0x00
Host Application Code: 0x00, Session Format: 0x20
Packet Size: 0, Audio Pause Length: 150
Media Catalog Number: 0x00000000000000000000000000000000
ISRC: 0x00000000000000000000000000000000
SubHeaderUCHAR0: 0x00, SubHeaderUCHAR1: 0x00
SubHeaderUCHAR2: 0x00, SubHeaderUCHAR3: 0x00
Vendor Specific: 0x00 0x00 0x00 0x00


StarBurn_DumpCdvdWriteParametersPage(): WARNING! Size 50 less then 56!

Write parameter page dump:
Page Code: 0x05, PSBit (Page Saveable): 0
Page Length: 50 UCHARs, Write Type: 0x03, Test Write: No, Reserved2_1: 0x00
BUP (Buffer Underrun Protection) Enabled: No
Track Mode: 0x00, Copy Allowed: No, FP (Is Fixed Packet): No
Next Session: 0x00, Data Block Type: 0x03, Reserved4: 0x00
Host Application Code: 0x00, Session Format: 0x20
Packet Size: 0, Audio Pause Length: 150
Media Catalog Number: 0x00000000000000000000000000000000
ISRC: 0x00000000000000000000000000000000
SubHeaderUCHAR0: 0x00, SubHeaderUCHAR1: 0x00
SubHeaderUCHAR2: 0x00, SubHeaderUCHAR3: 0x00
Vendor Specific: 0x00 0x00 0x00 0x00


CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Reading track information

Track Information dump:
Track Number: 1, Session Number: 1
Track Mode: 0x00, Copy: No, Damage: No
Data Mode: 0x0F, FP (Fixed Packet): No, Packet: No, Blank: Yes
RT (Reserved Track): No, NWA_V (Next Writable Address Valid): No
Track Start Address (LBA): 0, Next Writable Address (LBA): -12488
Free Block(s): 372337, Fixed Packet Size: 0 UCHARs


CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): WARNING! NWA is not valid!!!

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Lead-in LBA ( -12488 ), NWA -12488, Lead-in size in LBs 12338

CStarBurn_ISO9660FileTreeRawRawPW::ExpandCookedWithRawRawPW(): Track switch, track index 0, track LBA 23307, track size in LBs 23307

CStarBurn_CdvdBurnerGrabber::WriteCacheThread(): Cache full event set #1

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Before writing lead-in, NWA -12488, lead-in size in LBs 12338

CStarBurn_ScsiTransportASPI::ExecuteCDB(): Command failed!!!

SCSI request block dump:
SRB_Status: 0x04, SRB_HaStat: 0x00, SRB_TargStat: 0x02
CDB Length: 10, CDB dump: 0x2A 0x00 0xFF 0xFF 0xCF 0x38 0x00 0x00 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00


SCSI sense data dump:
Error Code: 0x70, Is Sense Valid: No, Segment Number: 0x00 (0)
Sense Key: 0x03, Reserved: 0x00, Incorrect Length: No
End Of Media: No, File Mark: No, Information: 0x00 0x00 0x00 0x00
Additional Sense Length: 0x0C (12)
Command Specific Information: 0x00 0x00 0x00 0x00
Additional Sense Code (ASC): 0x64, Additional Sense Code Qualifier (ASCQ): 0xC0

First-chance exception at 0x77e53887 in SnapIt!.exe: Microsoft C++ exception: CStarBurn_Exception @ 0x00112604.

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Method in sequence failed!!!

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): EXITing with failure, status 8, message 'CStarBurn_ScsiTransportASPI::ExecuteCDB(): Command failed!!!'!!!

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Ejecting disc...

CStarBurn_CdvdBurnerGrabber::Eject(): ENTERed

CStarBurn_ScsiTransportASPI::ExecuteCDB(): Command failed!!!

SCSI request block dump:
SRB_Status: 0x04, SRB_HaStat: 0x00, SRB_TargStat: 0x02
CDB Length: 6, CDB dump: 0x1B 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00


SCSI sense data dump:
Error Code: 0x70, Is Sense Valid: No, Segment Number: 0x00 (0)
Sense Key: 0x02, Reserved: 0x00, Incorrect Length: No
End Of Media: No, File Mark: No, Information: 0x00 0x00 0x00 0x00
Additional Sense Length: 0x0C (12)
Command Specific Information: 0x00 0x00 0x00 0x00
Additional Sense Code (ASC): 0x53, Additional Sense Code Qualifier (ASCQ): 0x02

First-chance exception at 0x77e53887 in SnapIt!.exe: Microsoft C++ exception: CStarBurn_Exception @ 0x00111ea4.

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): Eject() failed!!!

CStarBurn_CdvdBurnerGrabber::DiscAtOnceRawPW(): WARNING! Status 8, message 'CStarBurn_ScsiTransportASPI::ExecuteCDB(): Command failed!!!'!!!

CStarBurn_CdvdBurnerGrabber::WriteCacheThread(): We're allowed to die #1

CStarBurn_CdvdBurnerGrabber::WriteCacheThread(): We're allowed to die #2

CStarBurn_CdvdBurnerGrabber::WriteCacheThread(): Set cache thread dead event
The thread 'Win32 Thread' (0x528) has exited with code 0 (0x0).
First-chance exception at 0x77e53887 in SnapIt!.exe: Microsoft C++ exception: CStarBurn_Exception @ 0x0011280c.


what's going wrong here???

by the way, because I don't want to ask you for every little failure: I was looking for a list of SCSI Sense Codes - havn't found one. Where can I get such a list?

Thanks
Spin


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 30, 2004 12:46 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
I'm using scsierrs.c from CDRECORD. However reported ASC/ASCQ combination is not listed here :( While I'm checking the code would you please try to burn the same files with DiscAtOnceFromFile sample? Looks like you're doing what you're supposed to do but... Just in case!

/* @(#)scsierrs.c 2.28 02/04/16 Copyright 1987-1996 J. Schilling */
#ifndef lint
static char sccsid[] =
"@(#)scsierrs.c 2.28 02/04/16 Copyright 1987-1996 J. Schilling";
#endif
/*
* Error printing for scsitransp.c
*
* Copyright (c) 1987-1996 J. Schilling
*/
/*
* This program 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 2, or (at your option)
* any later version.
*
* This program 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 this program; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include <mconfig.h>

#include <stdio.h>
#include <unixstd.h> /* for sys/types.h needed in schily.h for sprintf() */
#include <standard.h>
#include <schily.h>

#include <scg/scsireg.h>
#include <scg/scsidefs.h>
#include <scg/scgcmd.h> /*XXX JS wird eigentlich nicht benoetigt!! */
/*XXX JS kommt weg, wenn struct sense und status */
/*XXX JS von scgio.h nach scsireg.h kommen */
#include <scg/scsitransp.h>

#define CTYPE_CCS 0
#define CTYPE_MD21 1
#define CTYPE_ACB4000 2
#define CTYPE_SMO_C501 3

#define SMO_C501

EXPORT const char *scg_sensemsg __PR((int, int, int,
const char **, char *, int maxcnt));
EXPORT int scg__errmsg __PR((SCSI *scgp, char *obuf, int maxcnt,
struct scsi_sense *,
struct scsi_status *,
int));
/*
* Map old non extended sense to sense key.
*/
static Uchar sd_adaptec_keys[] = {
0, 4, 4, 4, 2, 2, 4, 4, /* 0x00-0x07 */
4, 4, 4, 4, 4, 4, 4, 4, /* 0x08-0x0f */
4, 3, 3, 3, 3, 4, 3, 1, /* 0x10-0x17 */
1, 1, 3, 4, 3, 4, 3, 3, /* 0x18-0x1f */
5, 5, 5, 5, 5, 5, 5, 7, /* 0x20-0x27 */
6, 6, 6, 5, 4,11,11,11 /* 0x28-0x2f */
};
#define MAX_ADAPTEC_KEYS (sizeof (sd_adaptec_keys))

/*
* Deviations to CCS found on old pre CCS devices
*/
static const char *sd_adaptec_error_str[] = {
"\031\000ECC error during verify", /* 0x19 */
"\032\000interleave error", /* 0x1a */
"\034\000bad format on drive", /* 0x1c */
"\035\000self test failed", /* 0x1d */
"\036\000defective track", /* 0x1e */
"\043\000volume overflow", /* 0x23 */
"\053\000set limit violation", /* 0x2b */
"\054\000error counter overflow", /* 0x2c */
"\055\000initiator detected error", /* 0x2d */
"\056\000scsi parity error", /* 0x2e */
"\057\000adapter parity error", /* 0x2f */
NULL
};

/*
* The sense codes of SCSI-1/CCS, SCSI-2 and SCSI-3 devices.
*/
static const char *sd_ccs_error_str[] = {
"\000\000no additional sense information", /* 00 00 */
"\000\001filemark detected", /* 00 01 */
"\000\002end-of-partition/medium detected", /* 00 02 */
"\000\003setmark detected", /* 00 03 */
"\000\004beginning-of-partition/medium detected", /* 00 04 */
"\000\005end-of-data detected", /* 00 05 */
"\000\006i/o process terminated", /* 00 06 */
"\000\021audio play operation in progress", /* 00 11 */
"\000\022audio play operation paused", /* 00 12 */
"\000\023audio play operation successfully completed", /* 00 13 */
"\000\024audio play operation stopped due to error", /* 00 14 */
"\000\025no current audio status to return", /* 00 15 */
"\000\026operation in progress", /* 00 16 */
"\000\027cleaning requested", /* 00 17 */
"\001\000no index/sector signal", /* 01 00 */
"\002\000no seek complete", /* 02 00 */
"\003\000peripheral device write fault", /* 03 00 */
"\003\001no write current", /* 03 01 */
"\003\002excessive write errors", /* 03 02 */
"\004\000logical unit not ready, cause not reportable", /* 04 00 */
"\004\001logical unit is in process of becoming ready", /* 04 01 */
"\004\002logical unit not ready, initializing cmd. required", /* 04 02 */
"\004\003logical unit not ready, manual intervention required", /* 04 03 */
"\004\004logical unit not ready, format in progress", /* 04 04 */
"\004\005logical unit not ready, rebuild in progress", /* 04 05 */
"\004\006logical unit not ready, recalculation in progress", /* 04 06 */
"\004\007logical unit not ready, operation in progress",/* 04 07 */
"\004\010logical unit not ready, long write in progress", /* 04 08 */
"\004\011logical unit not ready, self-test in progress",/* 04 09 */
"\004\012asymmetric access code 3 (00-232) [proposed]", /* 04 0A */
"\004\013asymmetric access code 1 (00-232) [proposed]", /* 04 0B */
"\004\014asymmetric access code 2 (00-232) [proposed]", /* 04 0C */
"\004\020auxiliary memory code 2 (99-148) [proposed]", /* 04 10 */
"\005\000logical unit does not respond to selection", /* 05 00 */
"\006\000no reference position found", /* 06 00 */
"\007\000multiple peripheral devices selected", /* 07 00 */
"\010\000logical unit communication failure", /* 08 00 */
"\010\001logical unit communication time-out", /* 08 01 */
"\010\002logical unit communication parity error", /* 08 02 */
"\010\003logical unit communication crc error (ultra-dma/32)", /* 08 03 */
"\010\004unreachable copy target", /* 08 04 */
"\011\000track following error", /* 09 00 */
"\011\001tracking servo failure", /* 09 01 */
"\011\002focus servo failure", /* 09 02 */
"\011\003spindle servo failure", /* 09 03 */
"\011\004head select fault", /* 09 04 */
"\012\000error log overflow", /* 0A 00 */
"\013\000warning", /* 0B 00 */
"\013\001warning - specified temperature exceeded", /* 0B 01 */
"\013\002warning - enclosure degraded", /* 0B 02 */
"\014\000write error", /* 0C 00 */
"\014\001write error - recovered with auto reallocation", /* 0C 01 */
"\014\002write error - auto reallocation failed", /* 0C 02 */
"\014\003write error - recommend reassignment", /* 0C 03 */
"\014\004compression check miscompare error", /* 0C 04 */
"\014\005data expansion occurred during compression", /* 0C 05 */
"\014\006block not compressible", /* 0C 06 */
"\014\007write error - recovery needed", /* 0C 07 */
"\014\010write error - recovery failed", /* 0C 08 */
"\014\011write error - loss of streaming", /* 0C 09 */
"\014\012write error - padding blocks added", /* 0C 0A */
"\014\013auxiliary memory code 4 (99-148) [proposed]", /* 0C 0B */
"\015\000error detected by third party temporary initiator", /* 0D 00 */
"\015\001third party device failure", /* 0D 01 */
"\015\002copy target device not reachable", /* 0D 02 */
"\015\003incorrect copy target device type", /* 0D 03 */
"\015\004copy target device data underrun", /* 0D 04 */
"\015\005copy target device data overrun", /* 0D 05 */
#ifdef __used__
"\016\000", /* 0E 00 */
"\017\000", /* 0F 00 */
#endif
"\020\000id crc or ecc error", /* 10 00 */
"\021\000unrecovered read error", /* 11 00 */
"\021\001read retries exhausted", /* 11 01 */
"\021\002error too long to correct", /* 11 02 */
"\021\003multiple read errors", /* 11 03 */
"\021\004unrecovered read error - auto reallocate failed", /* 11 04 */
"\021\005l-ec uncorrectable error", /* 11 05 */
"\021\006circ unrecovered error", /* 11 06 */
"\021\007data re-synchronization error", /* 11 07 */
"\021\010incomplete block read", /* 11 08 */
"\021\011no gap found", /* 11 09 */
"\021\012miscorrected error", /* 11 0A */
"\021\013unrecovered read error - recommend reassignment", /* 11 0B */
"\021\014unrecovered read error - recommend rewrite the data", /* 11 0C */
"\021\015de-compression crc error", /* 11 0D */
"\021\016cannot decompress using declared algorithm", /* 11 0E */
"\021\017error reading upc/ean number", /* 11 0F */
"\021\020error reading isrc number", /* 11 10 */
"\021\021read error - loss of streaming", /* 11 11 */
"\021\022auxiliary memory code 3 (99-148) [proposed]", /* 11 12 */
"\022\000address mark not found for id field", /* 12 00 */
"\023\000address mark not found for data field", /* 13 00 */
"\024\000recorded entity not found", /* 14 00 */
"\024\001record not found", /* 14 01 */
"\024\002filemark or setmark not found", /* 14 02 */
"\024\003end-of-data not found", /* 14 03 */
"\024\004block sequence error", /* 14 04 */
"\024\005record not found - recommend reassignment", /* 14 05 */
"\024\006record not found - data auto-reallocated", /* 14 06 */
"\025\000random positioning error", /* 15 00 */
"\025\001mechanical positioning error", /* 15 01 */
"\025\002positioning error detected by read of medium", /* 15 02 */
"\026\000data synchronization mark error", /* 16 00 */
"\026\001data sync error - data rewritten", /* 16 01 */
"\026\002data sync error - recommend rewrite", /* 16 02 */
"\026\003data sync error - data auto-reallocated", /* 16 03 */
"\026\004data sync error - recommend reassignment", /* 16 04 */
"\027\000recovered data with no error correction applied", /* 17 00 */
"\027\001recovered data with retries", /* 17 01 */
"\027\002recovered data with positive head offset", /* 17 02 */
"\027\003recovered data with negative head offset", /* 17 03 */
"\027\004recovered data with retries and/or circ applied", /* 17 04 */
"\027\005recovered data using previous sector id", /* 17 05 */
"\027\006recovered data without ecc - data auto-reallocated", /* 17 06 */
"\027\007recovered data without ecc - recommend reassignment", /* 17 07 */
"\027\010recovered data without ecc - recommend rewrite", /* 17 08 */
"\027\011recovered data without ecc - data rewritten", /* 17 09 */
"\030\000recovered data with error correction applied", /* 18 00 */
"\030\001recovered data with error corr. & retries applied", /* 18 01 */
"\030\002recovered data - data auto-reallocated", /* 18 02 */
"\030\003recovered data with circ", /* 18 03 */
"\030\004recovered data with l-ec", /* 18 04 */
"\030\005recovered data - recommend reassignment", /* 18 05 */
"\030\006recovered data - recommend rewrite", /* 18 06 */
"\030\007recovered data with ecc - data rewritten", /* 18 07 */
"\030\010recovered data with linking", /* 18 08 */
"\031\000defect list error", /* 19 00 */
"\031\001defect list not available", /* 19 01 */
"\031\002defect list error in primary list", /* 19 02 */
"\031\003defect list error in grown list", /* 19 03 */
"\032\000parameter list length error", /* 1A 00 */
"\033\000synchronous data transfer error", /* 1B 00 */
"\034\000defect list not found", /* 1C 00 */
"\034\001primary defect list not found", /* 1C 01 */
"\034\002grown defect list not found", /* 1C 02 */
"\035\000miscompare during verify operation", /* 1D 00 */
"\036\000recovered id with ecc correction", /* 1E 00 */
"\037\000partial defect list transfer", /* 1F 00 */
"\040\000invalid command operation code", /* 20 00 */
"\040\001access controls code 1 (99-314) [proposed]", /* 20 01 */
"\040\002access controls code 2 (99-314) [proposed]", /* 20 02 */
"\040\003access controls code 3 (99-314) [proposed]", /* 20 03 */
"\040\004read type operation while in write capable state", /* 20 04 */
"\040\005write type operation while in read capable state", /* 20 05 */
"\040\006illegal command while in explicit address model", /* 20 06 */
"\040\007illegal command while in implicit address model", /* 20 07 */
"\040\010access controls code 5 (99-245) [proposed]", /* 20 08 */
"\040\011access controls code 6 (99-245) [proposed]", /* 20 09 */
"\040\012access controls code 7 (99-245) [proposed]", /* 20 0A */
"\040\013access controls code 8 (99-245) [proposed]", /* 20 0B */
"\041\000logical block address out of range", /* 21 00 */
"\041\001invalid element address", /* 21 01 */
"\041\002invalid address for write", /* 21 02 */
"\042\000illegal function (use 20 00, 24 00, or 26 00)",/* 22 00 */
#ifdef __used__
"\043\000", /* 23 00 */
#endif
"\044\000invalid field in cdb", /* 24 00 */
"\044\001cdb decryption error", /* 24 01 */
"\044\002invalid cdb field while in explicit block address model", /* 24 02 */
"\044\003invalid cdb field while in implicit block address model", /* 24 03 */
"\045\000logical unit not supported", /* 25 00 */
"\046\000invalid field in parameter list", /* 26 00 */
"\046\001parameter not supported", /* 26 01 */
"\046\002parameter value invalid", /* 26 02 */
"\046\003threshold parameters not supported", /* 26 03 */
"\046\004invalid release of persistent reservation", /* 26 04 */
"\046\005data decryption error", /* 26 05 */
"\046\006too many target descriptors", /* 26 06 */
"\046\007unsupported target descriptor type code", /* 26 07 */
"\046\010too many segment descriptors", /* 26 08 */
"\046\011unsupported segment descriptor type code", /* 26 09 */
"\046\012unexpected inexact segment", /* 26 0A */
"\046\013inline data length exceeded", /* 26 0B */
"\046\014invalid operation for copy source or destination", /* 26 0C */
"\046\015copy segment granularity violation", /* 26 0D */
"\047\000write protected", /* 27 00 */
"\047\001hardware write protected", /* 27 01 */
"\047\002logical unit software write protected", /* 27 02 */
"\047\003associated write protect", /* 27 03 */
"\047\004persistent write protect", /* 27 04 */
"\047\005permanent write protect", /* 27 05 */
"\047\006conditional write protect", /* 27 06 */
"\050\000not ready to ready change, medium may have changed", /* 28 00 */
"\050\001import or export element accessed", /* 28 01 */
"\051\000power on, reset, or bus device reset occurred",/* 29 00 */
"\051\001power on occurred", /* 29 01 */
"\051\002scsi bus reset occurred", /* 29 02 */
"\051\003bus device reset function occurred", /* 29 03 */
"\051\004device internal reset", /* 29 04 */
"\051\005transceiver mode changed to single-ended", /* 29 05 */
"\051\006transceiver mode changed to lvd", /* 29 06 */
"\052\000parameters changed", /* 2A 00 */
"\052\001mode parameters changed", /* 2A 01 */
"\052\002log parameters changed", /* 2A 02 */
"\052\003reservations preempted", /* 2A 03 */
"\052\004reservations released", /* 2A 04 */
"\052\005registrations preempted", /* 2A 05 */
"\052\006asymmetric access code 6 (00-232) [proposed]", /* 2A 06 */
"\052\007asymmetric access code 7 (00-232) [proposed]", /* 2A 07 */
"\053\000copy cannot execute since host cannot disconnect", /* 2B 00 */
"\054\000command sequence error", /* 2C 00 */
"\054\001too many windows specified", /* 2C 01 */
"\054\002invalid combination of windows specified", /* 2C 02 */
"\054\003current program area is not empty", /* 2C 03 */
"\054\004current program area is empty", /* 2C 04 */
"\054\005illegal power condition request", /* 2C 05 */
"\054\006persistent prevent conflict", /* 2C 06 */
"\055\000overwrite error on update in place", /* 2D 00 */
"\056\000insufficient time for operation", /* 2E 00 */
"\057\000commands cleared by another initiator", /* 2F 00 */
"\060\000incompatible medium installed", /* 30 00 */
"\060\001cannot read medium - unknown format", /* 30 01 */
"\060\002cannot read medium - incompatible format", /* 30 02 */
"\060\003cleaning cartridge installed", /* 30 03 */
"\060\004cannot write medium - unknown format", /* 30 04 */
"\060\005cannot write medium - incompatible format", /* 30 05 */
"\060\006cannot format medium - incompatible medium", /* 30 06 */
"\060\007cleaning failure", /* 30 07 */
"\060\010cannot write - application code mismatch", /* 30 08 */
"\060\011current session not fixated for append", /* 30 09 */
"\060\020medium not formatted", /* 30 10 */
"\061\000medium format corrupted", /* 31 00 */
"\061\001format command failed", /* 31 01 */
"\061\002zoned formatting failed due to spare linking", /* 31 02 */
"\062\000no defect spare location available", /* 32 00 */
"\062\001defect list update failure", /* 32 01 */
"\063\000tape length error", /* 33 00 */
"\064\000enclosure failure", /* 34 00 */
"\065\000enclosure services failure", /* 35 00 */
"\065\001unsupported enclosure function", /* 35 01 */
"\065\002enclosure services unavailable", /* 35 02 */
"\065\003enclosure services transfer failure", /* 35 03 */
"\065\004enclosure services transfer refused", /* 35 04 */
"\066\000ribbon, ink, or toner failure", /* 36 00 */
"\067\000rounded parameter", /* 37 00 */
"\070\000event status notification", /* 38 00 */
"\070\002esn - power management class event", /* 38 02 */
"\070\004esn - media class event", /* 38 04 */
"\070\006esn - device busy class event", /* 38 06 */
"\071\000saving parameters not supported", /* 39 00 */
"\072\000medium not present", /* 3A 00 */
"\072\001medium not present - tray closed", /* 3A 01 */
"\072\002medium not present - tray open", /* 3A 02 */
"\072\003medium not present - loadable", /* 3A 03 */
"\072\004medium not present - medium auxiliary memory accessible", /* 3A 04 */
"\073\000sequential positioning error", /* 3B 00 */
"\073\001tape position error at beginning-of-medium", /* 3B 01 */
"\073\002tape position error at end-of-medium", /* 3B 02 */
"\073\003tape or electronic vertical forms unit not ready", /* 3B 03 */
"\073\004slew failure", /* 3B 04 */
"\073\005paper jam", /* 3B 05 */
"\073\006failed to sense top-of-form", /* 3B 06 */
"\073\007failed to sense bottom-of-form", /* 3B 07 */
"\073\010reposition error", /* 3B 08 */
"\073\011read past end of medium", /* 3B 09 */
"\073\012read past beginning of medium", /* 3B 0A */
"\073\013position past end of medium", /* 3B 0B */
"\073\014position past beginning of medium", /* 3B 0C */
"\073\015medium destination element full", /* 3B 0D */
"\073\016medium source element empty", /* 3B 0E */
"\073\017end of medium reached", /* 3B 0F */
"\073\021medium magazine not accessible", /* 3B 11 */
"\073\022medium magazine removed", /* 3B 12 */
"\073\023medium magazine inserted", /* 3B 13 */
"\073\024medium magazine locked", /* 3B 14 */
"\073\025medium magazine unlocked", /* 3B 15 */
"\073\026mechanical positioning or changer error", /* 3B 16 */
#ifdef __used__
"\074\000", /* 3C 00 */
#endif
"\075\000invalid bits in identify message", /* 3D 00 */
"\076\000logical unit has not self-configured yet", /* 3E 00 */
"\076\001logical unit failure", /* 3E 01 */
"\076\002timeout on logical unit", /* 3E 02 */
"\076\003logical unit failed self-test", /* 3E 03 */
"\076\004logical unit unable to update self-test log", /* 3E 04 */
"\077\000target operating conditions have changed", /* 3F 00 */
"\077\001microcode has been changed", /* 3F 01 */
"\077\002changed operating definition", /* 3F 02 */
"\077\003inquiry data has changed", /* 3F 03 */
"\077\004component device attached", /* 3F 04 */
"\077\005device identifier changed", /* 3F 05 */
"\077\006redundancy group created or modified", /* 3F 06 */
"\077\007redundancy group deleted", /* 3F 07 */
"\077\010spare created or modified", /* 3F 08 */
"\077\011spare deleted", /* 3F 09 */
"\077\012volume set created or modified", /* 3F 0A */
"\077\013volume set deleted", /* 3F 0B */
"\077\014volume set deassigned", /* 3F 0C */
"\077\015volume set reassigned", /* 3F 0D */
"\077\016reported luns data has changed", /* 3F 0E */
"\077\017echo buffer overwritten", /* 3F 0F */
"\077\020medium loadable", /* 3F 10 */
"\077\021medium auxiliary memory accessible", /* 3F 11 */
"\100\000ram failure (should use 40 nn)", /* 40 00 */
#ifdef XXX
"\100\000nn diagnostic failure on component nn (80h-ffh)", /* 40 00 */
#endif
"\100\000diagnostic failure on component nn (80h-ffh)", /* 40 00 */
"\101\000data path failure (should use 40 nn)", /* 41 00 */
"\102\000power-on or self-test failure (should use 40 nn)", /* 42 00 */
"\103\000message error", /* 43 00 */
"\104\000internal target failure", /* 44 00 */
"\105\000select or reselect failure", /* 45 00 */
"\106\000unsuccessful soft reset", /* 46 00 */
"\107\000scsi parity error", /* 47 00 */
"\107\001data phase crc error detected", /* 47 01 */
"\107\002scsi parity error detected during st data phase", /* 47 02 */
"\107\003information unit crc error detected", /* 47 03 */
"\107\004asynchronous information protection error detected", /* 47 04 */
"\110\000initiator detected error message received", /* 48 00 */
"\111\000invalid message error", /* 49 00 */
"\112\000command phase error", /* 4A 00 */
"\113\000data phase error", /* 4B 00 */
"\114\000logical unit failed self-configuration", /* 4C 00 */
#ifdef XXX
"\115\000nn tagged overlapped commands (nn = queue tag)", /* 4D 00 */
#endif
"\115\000tagged overlapped commands (nn = queue tag)", /* 4D 00 */
"\116\000overlapped commands attempted", /* 4E 00 */
#ifdef __used__
"\117\000", /* 4F 00 */
#endif
"\120\000write append error", /* 50 00 */
"\120\001write append position error", /* 50 01 */
"\120\002position error related to timing", /* 50 02 */
"\121\000erase failure", /* 51 00 */
"\121\001erase failure - incomplete erase operation detected", /* 51 01 */
"\122\000cartridge fault", /* 52 00 */
"\123\000media load or eject failed", /* 53 00 */
"\123\001unload tape failure", /* 53 01 */
"\123\002medium removal prevented", /* 53 02 */
"\124\000scsi to host system interface failure", /* 54 00 */
"\125\000system resource failure", /* 55 00 */
"\125\001system buffer full", /* 55 01 */
"\125\002insufficient reservation resources", /* 55 02 */
"\125\003insufficient resources", /* 55 03 */
"\125\004insufficient registration resources", /* 55 04 */
"\125\005access controls code 4 (99-314) [proposed]", /* 55 05 */
"\125\006auxiliary memory code 1 (99-148) [proposed]", /* 55 06 */
#ifdef __used__
"\126\000", /* 56 00 */
#endif
"\127\000unable to recover table-of-contents", /* 57 00 */
"\130\000generation does not exist", /* 58 00 */
"\131\000updated block read", /* 59 00 */
"\132\000operator request or state change input", /* 5A 00 */
"\132\001operator medium removal request", /* 5A 01 */
"\132\002operator selected write protect", /* 5A 02 */
"\132\003operator selected write permit", /* 5A 03 */
"\133\000log exception", /* 5B 00 */
"\133\001threshold condition met", /* 5B 01 */
"\133\002log counter at maximum", /* 5B 02 */
"\133\003log list codes exhausted", /* 5B 03 */
"\134\000rpl status change", /* 5C 00 */
"\134\001spindles synchronized", /* 5C 01 */
"\134\002spindles not synchronized", /* 5C 02 */
"\135\000failure prediction threshold exceeded", /* 5D 00 */
"\135\001media failure prediction threshold exceeded", /* 5D 01 */
"\135\002logical unit failure prediction threshold exceeded", /* 5D 02 */
"\135\003spare area exhaustion prediction threshold exceeded", /* 5D 03 */
"\135\020hardware impending failure general hard drive failure",/* 5D 10 */
"\135\021hardware impending failure drive error rate too high", /* 5D 11 */
"\135\022hardware impending failure data error rate too high", /* 5D 12 */
"\135\023hardware impending failure seek error rate too high", /* 5D 13 */
"\135\024hardware impending failure too many block reassigns", /* 5D 14 */
"\135\025hardware impending failure access times too high", /* 5D 15 */
"\135\026hardware impending failure start unit times too high", /* 5D 16 */
"\135\027hardware impending failure channel parametrics",/* 5D 17 */
"\135\030hardware impending failure controller detected",/* 5D 18 */
"\135\031hardware impending failure throughput performance", /* 5D 19 */
"\135\032hardware impending failure seek time performance", /* 5D 1A */
"\135\033hardware impending failure spin-up retry count", /* 5D 1B */
"\135\034hardware impending failure drive calibration retry count", /* 5D 1C */
"\135\040controller impending failure general hard drive failure", /* 5D 20 */
"\135\041controller impending failure drive error rate too high", /* 5D 21 */
"\135\042controller impending failure data error rate too high",/* 5D 22 */
"\135\043controller impending failure seek error rate too high",/* 5D 23 */
"\135\044controller impending failure too many block reassigns",/* 5D 24 */
"\135\045controller impending failure access times too high", /* 5D 25 */
"\135\046controller impending failure start unit times too high", /* 5D 26 */
"\135\047controller impending failure channel parametrics", /* 5D 27 */
"\135\050controller impending failure controller detected", /* 5D 28 */
"\135\051controller impending failure throughput performance", /* 5D 29 */
"\135\052controller impending failure seek time performance", /* 5D 2A */
"\135\053controller impending failure spin-up retry count", /* 5D 2B */
"\135\054controller impending failure drive calibration retry count", /* 5D 2C */
"\135\060data channel impending failure general hard drive failure", /* 5D 30 */
"\135\061data channel impending failure drive error rate too high", /* 5D 31 */
"\135\062data channel impending failure data error rate too high", /* 5D 32 */
"\135\063data channel impending failure seek error rate too high", /* 5D 33 */
"\135\064data channel impending failure too many block reassigns", /* 5D 34 */
"\135\065data channel impending failure access times too high", /* 5D 35 */
"\135\066data channel impending failure start unit times too high", /* 5D 36 */
"\135\067data channel impending failure channel parametrics", /* 5D 37 */
"\135\070data channel impending failure controller detected", /* 5D 38 */
"\135\071data channel impending failure throughput performance",/* 5D 39 */
"\135\072data channel impending failure seek time performance", /* 5D 3A */
"\135\073data channel impending failure spin-up retry count", /* 5D 3B */
"\135\074data channel impending failure drive calibration retry count", /* 5D 3C */
"\135\100servo impending failure general hard drive failure", /* 5D 40 */
"\135\101servo impending failure drive error rate too high", /* 5D 41 */
"\135\102servo impending failure data error rate too high", /* 5D 42 */
"\135\103servo impending failure seek error rate too high", /* 5D 43 */
"\135\104servo impending failure too many block reassigns", /* 5D 44 */
"\135\105servo impending failure access times too high",/* 5D 45 */
"\135\106servo impending failure start unit times too high", /* 5D 46 */
"\135\107servo impending failure channel parametrics", /* 5D 47 */
"\135\110servo impending failure controller detected", /* 5D 48 */
"\135\111servo impending failure throughput performance", /* 5D 49 */
"\135\112servo impending failure seek time performance",/* 5D 4A */
"\135\113servo impending failure spin-up retry count", /* 5D 4B */
"\135\114servo impending failure drive calibration retry count",/* 5D 4C */
"\135\120spindle impending failure general hard drive failure", /* 5D 50 */
"\135\121spindle impending failure drive error rate too high", /* 5D 51 */
"\135\122spindle impending failure data error rate too high", /* 5D 52 */
"\135\123spindle impending failure seek error rate too high", /* 5D 53 */
"\135\124spindle impending failure too many block reassigns", /* 5D 54 */
"\135\125spindle impending failure access times too high", /* 5D 55 */
"\135\126spindle impending failure start unit times too high", /* 5D 56 */
"\135\127spindle impending failure channel parametrics",/* 5D 57 */
"\135\130spindle impending failure controller detected",/* 5D 58 */
"\135\131spindle impending failure throughput performance", /* 5D 59 */
"\135\132spindle impending failure seek time performance", /* 5D 5A */
"\135\133spindle impending failure spin-up retry count",/* 5D 5B */
"\135\134spindle impending failure drive calibration retry count", /* 5D 5C */
"\135\140firmware impending failure general hard drive failure",/* 5D 60 */
"\135\141firmware impending failure drive error rate too high", /* 5D 61 */
"\135\142firmware impending failure data error rate too high", /* 5D 62 */
"\135\143firmware impending failure seek error rate too high", /* 5D 63 */
"\135\144firmware impending failure too many block reassigns", /* 5D 64 */
"\135\145firmware impending failure access times too high", /* 5D 65 */
"\135\146firmware impending failure start unit times too high", /* 5D 66 */
"\135\147firmware impending failure channel parametrics", /* 5D 67 */
"\135\150firmware impending failure controller detected", /* 5D 68 */
"\135\151firmware impending failure throughput performance", /* 5D 69 */
"\135\152firmware impending failure seek time performance", /* 5D 6A */
"\135\153firmware impending failure spin-up retry count", /* 5D 6B */
"\135\154firmware impending failure drive calibration retry count", /* 5D 6C */
"\135\377failure prediction threshold exceeded (false)",/* 5D FF */
"\136\000low power condition on", /* 5E 00 */
"\136\001idle condition activated by timer", /* 5E 01 */
"\136\002standby condition activated by timer", /* 5E 02 */
"\136\003idle condition activated by command", /* 5E 03 */
"\136\004standby condition activated by command", /* 5E 04 */
"\136\101power state change to active", /* 5E 41 */
"\136\102power state change to idle", /* 5E 42 */
"\136\103power state change to standby", /* 5E 43 */
"\136\105power state change to sleep", /* 5E 45 */
"\136\107power state change to device control", /* 5E 47 */
#ifdef __used__
"\137\000", /* 5F 00 */
#endif
"\140\000lamp failure", /* 60 00 */
"\141\000video acquisition error", /* 61 00 */
"\141\001unable to acquire video", /* 61 01 */
"\141\002out of focus", /* 61 02 */
"\142\000scan head positioning error", /* 62 00 */
"\143\000end of user area encountered on this track", /* 63 00 */
"\143\001packet does not fit in available space", /* 63 01 */
"\144\000illegal mode for this track", /* 64 00 */
"\144\001invalid packet size", /* 64 01 */
"\145\000voltage fault", /* 65 00 */
"\146\000automatic document feeder cover up", /* 66 00 */
"\146\001automatic document feeder lift up", /* 66 01 */
"\146\002document jam in automatic document feeder", /* 66 02 */
"\146\003document miss feed automatic in document feeder", /* 66 03 */
"\147\000configuration failure", /* 67 00 */
"\147\001configuration of incapable logical units failed", /* 67 01 */
"\147\002add logical unit failed", /* 67 02 */
"\147\003modification of logical unit failed", /* 67 03 */
"\147\004exchange of logical unit failed", /* 67 04 */
"\147\005remove of logical unit failed", /* 67 05 */
"\147\006attachment of logical unit failed", /* 67 06 */
"\147\007creation of logical unit failed", /* 67 07 */
"\147\010assign failure occurred", /* 67 08 */
"\147\011multiply assigned logical unit", /* 67 09 */
"\147\012asymmetric access code 4 (00-232) [proposed]", /* 67 0A */
"\147\013asymmetric access code 5 (00-232) [proposed]", /* 67 0B */
"\150\000logical unit not configured", /* 68 00 */
"\151\000data loss on logical unit", /* 69 00 */
"\151\001multiple logical unit failures", /* 69 01 */
"\151\002parity/data mismatch", /* 69 02 */
"\152\000informational, refer to log", /* 6A 00 */
"\153\000state change has occurred", /* 6B 00 */
"\153\001redundancy level got better", /* 6B 01 */
"\153\002redundancy level got worse", /* 6B 02 */
"\154\000rebuild failure occurred", /* 6C 00 */
"\155\000recalculate failure occurred", /* 6D 00 */
"\156\000command to logical unit failed", /* 6E 00 */
"\157\000copy protection key exchange failure - authentication failure",/* 6F 00 */
"\157\001copy protection key exchange failure - key not present", /* 6F 01 */
"\157\002copy protection key exchange failure - key not established", /* 6F 02 */
"\157\003read of scrambled sector without authentication", /* 6F 03 */
"\157\004media region code is mismatched to logical unit region", /* 6F 04 */
"\157\005drive region must be permanent/region reset count error", /* 6F 05 */
#ifdef XXX
"\160\000nn decompression exception short algorithm id of nn", /* 70 00 */
#endif
"\160\000decompression exception short algorithm id of nn", /* 70 00 */
"\161\000decompression exception long algorithm id", /* 71 00 */
"\162\000session fixation error", /* 72 00 */
"\162\001session fixation error writing lead-in", /* 72 01 */
"\162\002session fixation error writing lead-out", /* 72 02 */
"\162\003session fixation error - incomplete track in session", /* 72 03 */
"\162\004empty or partially written reserved track", /* 72 04 */
"\162\005no more track reservations allowed", /* 72 05 */
"\163\000cd control error", /* 73 00 */
"\163\001power calibration area almost full", /* 73 01 */
"\163\002power calibration area is full", /* 73 02 */
"\163\003power calibration area error", /* 73 03 */
"\163\004program memory area update failure", /* 73 04 */
"\163\005program memory area is full", /* 73 05 */
"\163\006rma/pma is almost full", /* 73 06 */
#ifdef __used__
"\164\000", /* 74 00 */
"\165\000", /* 75 00 */
"\166\000", /* 76 00 */
"\167\000", /* 77 00 */
"\170\000", /* 78 00 */
"\171\000", /* 79 00 */
"\172\000", /* 7A 00 */
"\173\000", /* 7B 00 */
"\174\000", /* 7C 00 */
"\175\000", /* 7D 00 */
"\176\000", /* 7E 00 */
"\177\000", /* 7F 00 */
#endif
#ifdef XXX
"\200\000start vendor unique", /* 80 00 */
#endif
NULL
};

#ifdef SMO_C501
static const char *sd_smo_c501_error_str[] = {
"\012\000disk not inserted", /* 0x0a */
"\013\000load/unload failure", /* 0x0b */
"\014\000spindle failure", /* 0x0c */
"\015\000focus failure", /* 0x0d */
"\016\000tracking failure", /* 0x0e */
"\017\000bias magnet failure", /* 0x0f */
"\043\000illegal function for medium type", /* 0x23 */
/*XXX*/ "\070\000recoverable write error", /* 0x38 */
/*XXX*/ "\071\000write error recovery failed", /* 0x39 */
"\072\000defect list update failed", /* 0x3a */
"\075\000defect list not available", /* 0x3d */
"\200\000limited laser life", /* 0x80 */
"\201\000laser focus coil over-current", /* 0x81 */
"\202\000laser tracking coil over-current", /* 0x82 */
"\203\000temperature alarm", /* 0x83 */
NULL
};
#endif

static char *sd_sense_keys[] = {
"No Additional Sense", /* 0x00 */
"Recovered Error", /* 0x01 */
"Not Ready", /* 0x02 */
"Medium Error", /* 0x03 */
"Hardware Error", /* 0x04 */
"Illegal Request", /* 0x05 */
"Unit Attention", /* 0x06 */
"Data Protect", /* 0x07 */
"Blank Check", /* 0x08 */
"Vendor Unique", /* 0x09 */
"Copy Aborted", /* 0x0a */
"Aborted Command", /* 0x0b */
"Equal", /* 0x0c */
"Volume Overflow", /* 0x0d */
"Miscompare", /* 0x0e */
"Reserved" /* 0x0f */
};

static char *sd_cmds[] = {
"\000test unit ready", /* 0x00 */
"\001rezero", /* 0x01 */
"\003request sense", /* 0x03 */
"\004format", /* 0x04 */
"\007reassign", /* 0x07 */
"\010read", /* 0x08 */
"\012write", /* 0x0a */
"\013seek", /* 0x0b */
"\022inquiry", /* 0x12 */
"\025mode select", /* 0x15 */
"\026reserve", /* 0x16 */
"\027release", /* 0x17 */
"\030copy", /* 0x18 */
"\032mode sense", /* 0x1a */
"\033start/stop", /* 0x1b */
"\036door lock", /* 0x1e */
"\067read defect data", /* 0x37 */
NULL
};

EXPORT
const char *
scg_sensemsg(ctype, code, qual, vec, sbuf, maxcnt)
register int ctype;
register int code;
register int qual;
register const char **vec;
char *sbuf;
int maxcnt;
{
register int i;

/*
* Ignore controller type if error vec is supplied.
*/
if (vec == (const char **)NULL) switch (ctype) {
case DEV_MD21:
vec = sd_ccs_error_str;
break;

case DEV_ACB40X0:
case DEV_ACB4000:
case DEV_ACB4010:
case DEV_ACB4070:
case DEV_ACB5500:
vec = sd_adaptec_error_str;
break;

#ifdef SMO_C501
case DEV_SONY_SMO:
vec = sd_smo_c501_error_str;
break;
#endif

default:
vec = sd_ccs_error_str;
}
if (vec == (const char **)NULL)
return ("");

for (i = 0; i < 2; i++) {
while (*vec != (char *) NULL) {
if (code == (Uchar)(*vec)[0] &&
qual == (Uchar)(*vec)[1]) {
return (&(*vec)[2]);
} else {
vec++; /* Next entry */
}
}
if (*vec == (char *) NULL) /* End of List: switch over */
vec = sd_ccs_error_str;
}
if (code == 0x40) {
js_snprintf(sbuf, maxcnt,
"diagnostic failure on component 0x%X", qual);
return (sbuf);
}
if (code == 0x4D) {
js_snprintf(sbuf, maxcnt,
"tagged overlapped commands, queue tag is 0x%X",
qual);
return (sbuf);
}
if (code == 0x70) {
js_snprintf(sbuf, maxcnt,
"decompression exception short algorithm id of 0x%X",
qual);
return (sbuf);
}
if (qual != 0)
return ((char *)NULL);

if (code < 0x80) {
js_snprintf(sbuf, maxcnt, "invalid sense code 0x%X", code);
return (sbuf);
}
js_snprintf(sbuf, maxcnt, "vendor unique sense code 0x%X", code);
return (sbuf);
}

#undef sense /*XXX JS Hack, solange scgio.h noch nicht fertig ist */
EXPORT int
scg__errmsg(scgp, obuf, maxcnt, sense, status, sense_code)
SCSI *scgp;
char *obuf;
int maxcnt;
register struct scsi_sense *sense;
register struct scsi_status *status;
int sense_code;
{
char sbuf[80];
const char *sensemsg, *cmdname, *sensekey;
#define ext_sense ((struct scsi_ext_sense* ) sense)
register int blkno = 0;
register int code;
int badqual = 0;
int qual = 0;
int fru = 0;
int key = 0;
int segment = 0;
int blkvalid = 0;
int fm = 0;
int eom = 0;
int ili = 0;
int sksv = 0;
int n;
int sizeleft = maxcnt;

sensekey = sensemsg = "[]";
if (sense->code >= 0x70) {
if (sense_code >= 0)
code = sense_code;
else
code = ext_sense->sense_code;
segment = ext_sense->seg_num;
qual = ext_sense->qual_code;
fru = ext_sense->fru_code;
sksv = ext_sense->sksv;
} else {
code = sense->code;
}
if (status->chk == 0) {
sensemsg = "no sense";
} else {
if (sense->code >= 0x70) {
key = ext_sense->key;
if (key < 0x10)
sensekey = sd_sense_keys[ext_sense->key];
else
sensekey = "invalid sensekey";
blkno = (ext_sense->info_1 << 24) |
(ext_sense->info_2 << 16) |
(ext_sense->info_3 << 8) |
ext_sense->info_4;
fm = ext_sense->fil_mk;
eom = ext_sense->eom;
ili = ext_sense->ili;
} else {
key = -1;
sensekey = "[]";
blkno = (sense->high_addr << 16) |
(sense->mid_addr << 8) |
sense->low_addr;
fm = eom = 0;
}
blkvalid = sense->adr_val;

sensemsg = scg_sensemsg(scgp->dev, code, qual, scgp->nonstderrs, sbuf, sizeof(sbuf));
if (sensemsg == NULL) {
sensemsg = scg_sensemsg(scgp->dev, code, 0, scgp->nonstderrs, sbuf, sizeof(sbuf));
badqual = 1;
}
}
/*
if (un->un_cmd < sizeof(scsi_cmds)) {
cmdname = scsi_cmds[un->un_cmd];
} else {
cmdname = "unknown cmd";
}
*/
cmdname = "";
n = js_snprintf(obuf, sizeleft, "%sSense Key: 0x%X %s%s, Segment %d\n",
cmdname, key, sensekey,
(sense->code == 0x71)?", deferred error":"",
segment);
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
n = js_snprintf(obuf, sizeleft, "Sense Code: 0x%02X Qual 0x%02X %s%s%s%s Fru 0x%X\n",
code, qual, *sensemsg?"(":"", sensemsg, *sensemsg?")":"",
badqual? " [No matching qualifier]":"",
fru);
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
n = js_snprintf(obuf, sizeleft, "Sense flags: Blk %d %s%s%s%s",
blkno, blkvalid?"(valid) ":"(not valid) ",
fm?"file mark detected ":"",
eom?"end of medium ":"",
ili?"illegal block length ":"");
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
if (!sksv) {
n = js_snprintf(obuf, sizeleft, "\n");
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
return (maxcnt - sizeleft);
}
switch (key) {

case SC_ILLEGAL_REQUEST:
n = js_snprintf(obuf, sizeleft, "error refers to %s part, bit ptr %d %s field ptr %d",
ext_sense->cd? "command":"data",
ext_sense->bptr,
ext_sense->bpv? "(valid)":"(not valid)",
ext_sense->field_ptr[0] << 8 |
ext_sense->field_ptr[1]);
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
break;

case SC_RECOVERABLE_ERROR:
case SC_HARDWARE_ERROR:
case SC_MEDIUM_ERROR:
n = js_snprintf(obuf, sizeleft, "actual retry count %d",
ext_sense->field_ptr[0] << 8 |
ext_sense->field_ptr[1]);
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
break;

case SC_NOT_READY:
n = js_snprintf(obuf, sizeleft, "operation %d%% done",
(100*(ext_sense->field_ptr[0] << 8 |
ext_sense->field_ptr[1]))/(unsigned)65536);
if (n < 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
break;
}
n = js_snprintf(obuf, sizeleft, "\n");
if (n <= 0) {
obuf[0] = '\0';
return (maxcnt - sizeleft);
}
obuf += n;
sizeleft -= n;
return (maxcnt - sizeleft);
}

#ifdef DEBUG
print_err(code, ctype)
{
register int i;
register char **vec = (char **)NULL;

switch (ctype) {
case CTYPE_MD21:
case CTYPE_CCS:
vec = sd_ccs_error_str;
break;

case CTYPE_ACB4000:
vec = sd_adaptec_error_str;
break;

#ifdef SMO_C501
case CTYPE_SMO_C501:
vec = sd_smo_c501_error_str;
break;
#endif

#ifdef CDD_521
case DEV_CDD_521:
vec = sd_cdd_521_error_str;
break;
#endif
}
js_printf("error code: 0x%x", code);
if (vec == (char **)NULL)
return;

for (i = 0; i < 2; i++) {
while (*vec != (char *) NULL) {
if (code == (Uchar)*vec[0]) {
js_printf(" (%s)", (char *)((int)(*vec)+1));
return;
} else
vec++;
}
if (*vec == (char *) NULL)
vec = sd_ccs_error_str;
}
}


main()
{
int i;

#ifdef ACB
for (i = 0; i < 0x30; i++) {
/* js_printf("Code: 0x%x Key: 0x%x ", i, sd_adaptec_keys[i]);*/
js_printf("Key: 0x%x %-16s ", sd_adaptec_keys[i],
sd_sense_keys[sd_adaptec_keys[i]] );
js_print_err(i, CTYPE_ACB4000);
js_printf("\n");
}
#else
/* for (i = 0; i < 0x84; i++) {*/
for (i = 0; i < 0xd8; i++) {
/* print_err(i, CTYPE_SMO_C501);*/
print_err(i, DEV_CDD_521);
js_printf("\n");
}
#endif
}
#endif


Top
 Profile  
 
 Post subject: DiscAtOnceFromFile
PostPosted: Fri Jul 30, 2004 1:09 pm 
Offline

Joined: Thu Jul 08, 2004 8:25 am
Posts: 51
Location: Germany
I did...here is the output:

Image

the line:
DiscAtOnceFromFile:main(): Getting disc information... OK!
DiscAtOnceFromFile:main(): Disc erasable: No, Disc status: 0x00, Last session status: 0x00, Disc type: 2

what is Disc type: 2 ????????

*Note: I skipped sending OPC in my Application...


Top
 Profile  
 
 Post subject: Re: DiscAtOnceFromFile
PostPosted: Fri Jul 30, 2004 1:29 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
Disc type 2 is DISC_TYPE_CDR.

About bad writable address, failed OPC etc. It looks like at least StarBurn cannot burn in DAO mode to this media. Can try Session-At-Once? Track-At-Once (togher with StarBurn)? Other media type? Other applications in DAO mode (Nero?) and this medea. Please do some experiments to gather statistics :)

From what I see this seems to be 100% not your fault. Either ours (if other apps would work OK) or drives (if not).

SpinDoctor wrote:
I did...here is the output:

Image

the line:
DiscAtOnceFromFile:main(): Getting disc information... OK!
DiscAtOnceFromFile:main(): Disc erasable: No, Disc status: 0x00, Last session status: 0x00, Disc type: 2

what is Disc type: 2 ????????

*Note: I skipped sending OPC in my Application...


Top
 Profile  
 
 Post subject: Bad Media
PostPosted: Fri Jul 30, 2004 3:55 pm 
Offline

Joined: Thu Jul 08, 2004 8:25 am
Posts: 51
Location: Germany
OK...looks like I have 50 bad CD-R's (brand new)...15 Euros for 50 CD-R's - that can't be high qualitity - should have known it!
CloneCD, Nero...they all fail on this type (bought them the first time)
gonna get some new tomorrow and try it again (with a brand, I know that works with my writer)

another curious thing:
when I erase a disc with StarBurn, a DAO from file will result in a slightly different copy (CDDB cant find an EXACT match). a disc, erased with XP-Explorer or Nero or ConeCD can be used for an "exact" copy (I'm talking about FastMode erasing for both: StarBurn and other applications)...any idea??

Thanks
Spin


Top
 Profile  
 
 Post subject: Re: Bad Media
PostPosted: Fri Jul 30, 2004 7:38 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
Well... Shit happens! However bad results does not necessary mean you have broken media. You can have broken drive (or the one does not supporting particular purchased media). Your one is "aged" (I think was manufactured 2001 or 2002) so you can try to ask some of your friends to use CD-Rs purchased by you. They may work with newer burners!

Back to erase question... I did not experiment with this a lot. I think you just can use full erase as preferred method (does not take a lot of time with modern devices and ultra speed CD-RWs).

SpinDoctor wrote:
OK...looks like I have 50 bad CD-R's (brand new)...15 Euros for 50 CD-R's - that can't be high qualitity - should have known it!
CloneCD, Nero...they all fail on this type (bought them the first time)
gonna get some new tomorrow and try it again (with a brand, I know that works with my writer)

another curious thing:
when I erase a disc with StarBurn, a DAO from file will result in a slightly different copy (CDDB cant find an EXACT match). a disc, erased with XP-Explorer or Nero or ConeCD can be used for an "exact" copy (I'm talking about FastMode erasing for both: StarBurn and other applications)...any idea??

Thanks
Spin


Top
 Profile  
 
 Post subject: yep
PostPosted: Fri Jul 30, 2004 8:00 pm 
Offline

Joined: Thu Jul 08, 2004 8:25 am
Posts: 51
Location: Germany
Gave the CD-R's a friend of mine - her Writer is also "aged" ( :D telling a man of 39, that a device of 2 or 3 years is AGED isn't funny - especially a view weeks from his 40th !!!!!! :D ) but she phoned, that they are working on her PC - Maybe I need a new Writer??? (while I'm talking 'bout...my girlfriend ask me about a gift for my birthday :D )

Anyway - the erasing problem seems to be a problem of the media-age (once again) ... I normally use CD-R's. For testing only I bought a few (5) CD-RW's and the one I used has been written/erased for perhaps 30 / 40 times...waste...a new one now works perfect (fastmode erase and full erase)

going on tomorrow with new CD-R's
bye and thanks
Spin


Top
 Profile  
 
 Post subject: Re: yep
PostPosted: Fri Jul 30, 2004 8:56 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
According to some researches creativity age for programmers ends when overcoming 25 years old border. This means we're all dinosaurs here :)

Nice to hear you've found a place to use rest of your purchased CD-Rs and just do not need to dump them all. Or make your local CD-R dealer sold the stuff to you eat whole CD-R cake for breakfast w/o mustard :)

It's also nice to hear CD-RW problem was a problem of multiple erases. This really happens. CD-RW are far from claimed "1000 erases and still OK". Basically after 10 erases cheap media gets problems (start jerking off on some stand alone audio devices f.e.) and around 50 erases seems to be able to kill virtually every high quality CD-RW disc.

About your present... I think we'll release StarWave (audio compression/decompression library) and would issue you with a free license copy. It's always good to stick with one software vendor when developing your software title instead of having complete ZOO of things roaring at the different frequences, right? :)

SpinDoctor wrote:
Gave the CD-R's a friend of mine - her Writer is also "aged" ( :D telling a man of 39, that a device of 2 or 3 years is AGED isn't funny - especially a view weeks from his 40th !!!!!! :D ) but she phoned, that they are working on her PC - Maybe I need a new Writer??? (while I'm talking 'bout...my girlfriend ask me about a gift for my birthday :D )

Anyway - the erasing problem seems to be a problem of the media-age (once again) ... I normally use CD-R's. For testing only I bought a few (5) CD-RW's and the one I used has been written/erased for perhaps 30 / 40 times...waste...a new one now works perfect (fastmode erase and full erase)

going on tomorrow with new CD-R's
bye and thanks
Spin


Top
 Profile  
 
 Post subject: Re: yep
PostPosted: Sat Jul 31, 2004 12:51 pm 
Offline

Joined: Thu Jul 08, 2004 8:25 am
Posts: 51
Location: Germany
anton (staff) wrote:
According to some researches creativity age for programmers ends when overcoming 25 years old border. This means we're all dinosaurs here :)

Nice to hear you've found a place to use rest of your purchased CD-Rs and just do not need to dump them all. Or make your local CD-R dealer sold the stuff to you eat whole CD-R cake for breakfast w/o mustard :)

It's also nice to hear CD-RW problem was a problem of multiple erases. This really happens. CD-RW are far from claimed "1000 erases and still OK". Basically after 10 erases cheap media gets problems (start jerking off on some stand alone audio devices f.e.) and around 50 erases seems to be able to kill virtually every high quality CD-RW disc.

About your present... I think we'll release StarWave (audio compression/decompression library) and would issue you with a free license copy. It's always good to stick with one software vendor when developing your software title instead of having complete ZOO of things roaring at the different frequences, right? :)



I do need a new writer!
The new (usual) discs are also "bad" (for nero, CloneCD, StarBurn) when it comes to a write-speed over 600 KB/s...That's it.
Between the two of us: the frequency of usage in the last 2 or 3 weeks (when did I "found you"?) is similar to the overall usage of the last 2 or 3 years (me, I'm really not a disc-jockey, except when developing a copy-tool)

Do you really plan such a thing as StarWave? I mean, it's very Ok, what you say about the zoo...Currently I'm using FMod as an mp3-decoder...and (as you know) I'm still looking for an encoder...

anyway, a new beta-release of SnapIt! (now with StarBurn integrated and "Copy Audio CD" implemented) is available at:
http://mitglied.lycos.de/spindoctorinc
I have to decide now, what to do next...either implementing "Grabbing mp3's from CD-Audio" (with aid of StarBurn & Lame) or some other GUI-stuff...
but first of all it's weekend, BBQ's waiting.

many thanks and a nice weekend from germany
Spin


Top
 Profile  
 
 Post subject: Re: yep
PostPosted: Sat Jul 31, 2004 8:21 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
I would recommend get a couple of burners if you're planning to invest more time into this topic. And use them sequentially. They will last (all of them) longer compared to situation when you'll be dealing with one burner until it's death.

We're not planning we've completed coding StarWave. So just docummentation waits to be written. Actual code is done. If you're not afraid to deal with undocumented API (however there are less then 10 API calls and they are EXTREMELY simple -- care is taken) I can issue you with StarWave SDK pre-release copy. However there are two issues: 1) it does not support OGG Vorbis are input (decompression) format. I'll take care of this soon. 2) it does not support anything except WMA as output (compression). MP3 would be *NEVER* supported b/s stupid licensing policy by Thompson Multimedia. And OGG may be supported if hardware devices supporting OGG Vorbis would appear. So let me know if you're interested :) Our new version of Grab & Burn (would be released quite soon) does grabbing directly to WMA files (w/o intermediate WAV buffering).

I would consider creating some other tools. Tons of small things are much better stuff then single "universal" tool.

SpinDoctor wrote:
anton (staff) wrote:
According to some researches creativity age for programmers ends when overcoming 25 years old border. This means we're all dinosaurs here :)

Nice to hear you've found a place to use rest of your purchased CD-Rs and just do not need to dump them all. Or make your local CD-R dealer sold the stuff to you eat whole CD-R cake for breakfast w/o mustard :)

It's also nice to hear CD-RW problem was a problem of multiple erases. This really happens. CD-RW are far from claimed "1000 erases and still OK". Basically after 10 erases cheap media gets problems (start jerking off on some stand alone audio devices f.e.) and around 50 erases seems to be able to kill virtually every high quality CD-RW disc.

About your present... I think we'll release StarWave (audio compression/decompression library) and would issue you with a free license copy. It's always good to stick with one software vendor when developing your software title instead of having complete ZOO of things roaring at the different frequences, right? :)



I do need a new writer!
The new (usual) discs are also "bad" (for nero, CloneCD, StarBurn) when it comes to a write-speed over 600 KB/s...That's it.
Between the two of us: the frequency of usage in the last 2 or 3 weeks (when did I "found you"?) is similar to the overall usage of the last 2 or 3 years (me, I'm really not a disc-jockey, except when developing a copy-tool)

Do you really plan such a thing as StarWave? I mean, it's very Ok, what you say about the zoo...Currently I'm using FMod as an mp3-decoder...and (as you know) I'm still looking for an encoder...

anyway, a new beta-release of SnapIt! (now with StarBurn integrated and "Copy Audio CD" implemented) is available at:
http://mitglied.lycos.de/spindoctorinc
I have to decide now, what to do next...either implementing "Grabbing mp3's from CD-Audio" (with aid of StarBurn & Lame) or some other GUI-stuff...
but first of all it's weekend, BBQ's waiting.

many thanks and a nice weekend from germany
Spin


Top
 Profile  
 
 Post subject: Re: yep
PostPosted: Sun Aug 01, 2004 9:59 am 
Offline

Joined: Thu Jul 08, 2004 8:25 am
Posts: 51
Location: Germany
anton (staff) wrote:
MP3 would be *NEVER* supported b/s stupid licensing policy by Thompson Multimedia.


We've been talking 'bout...I remember. But explain (to a dummy), please. I would now grab tracks with StarBurn_GrabTrack (=> *.wav) and then use lame or somethin' else to compress them to mp3's. What's the benefit when using StarWave and dealing with WMA's instead (the resulting files shall be mp3's)???

btw, I'm surely not afraid of using undocumented-beta-libraries, I'm dealing with Win SDK for about 12years :D

anton (staff) wrote:
I would consider creating some other tools. Tons of small things are much better stuff then single "universal" tool.


exactly not! SnapIt! is meant to be a "universal" - tool. But - Simple! Me (and you and others) are quite familiare when it comes to use different tools for different purposes (very simple example: grabbing a DVD with one tool (lossless), downsizing it to divx with another tool, and finally burn it with a third tool ).
I don't wanted a replacement for those expert-tools, I simply want my girl-friend to be able, to do some things (without any aid) in scope of Audio, w/o setting tons of options and w/o using dozens of different tools.
When playing mp3's, I used to use WinAmp (still the best), but have you ever tried, to organize/edit tags with this tool? And me (as an expert), I needed hours till I found out, how I can use WinAmp for grabbing a CD to mp3's...EXPERTS can do a lot with such a tool...Most developers forget, that end-users might not be developers (though they are 25 or younger :D )....
today is sunday and I feel like a prayer now ... :lol:

happy sunday
Spin


Top
 Profile  
 
 Post subject: Re: yep
PostPosted: Mon Aug 02, 2004 9:33 am 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
1) No benefits. Except:

a) your software would be license clean (no MP3 compression related issues)

b) you'll stick with one software vendor resulting better compabibitity and smaller application installation size

c) WMA has much wider compression rates choice (including lossless compression which lack MP3)

OK, so I'll prepare the headers for you and you'll have at least the choice to do WMA *TOGETHER* with MP3.

2) There's nothing like "pure black" or "pure white". The truth is somewhare in the middle :)

SpinDoctor wrote:
anton (staff) wrote:
MP3 would be *NEVER* supported b/s stupid licensing policy by Thompson Multimedia.


We've been talking 'bout...I remember. But explain (to a dummy), please. I would now grab tracks with StarBurn_GrabTrack (=> *.wav) and then use lame or somethin' else to compress them to mp3's. What's the benefit when using StarWave and dealing with WMA's instead (the resulting files shall be mp3's)???

btw, I'm surely not afraid of using undocumented-beta-libraries, I'm dealing with Win SDK for about 12years :D

anton (staff) wrote:
I would consider creating some other tools. Tons of small things are much better stuff then single "universal" tool.


exactly not! SnapIt! is meant to be a "universal" - tool. But - Simple! Me (and you and others) are quite familiare when it comes to use different tools for different purposes (very simple example: grabbing a DVD with one tool (lossless), downsizing it to divx with another tool, and finally burn it with a third tool ).
I don't wanted a replacement for those expert-tools, I simply want my girl-friend to be able, to do some things (without any aid) in scope of Audio, w/o setting tons of options and w/o using dozens of different tools.
When playing mp3's, I used to use WinAmp (still the best), but have you ever tried, to organize/edit tags with this tool? And me (as an expert), I needed hours till I found out, how I can use WinAmp for grabbing a CD to mp3's...EXPERTS can do a lot with such a tool...Most developers forget, that end-users might not be developers (though they are 25 or younger :D )....
today is sunday and I feel like a prayer now ... :lol:

happy sunday
Spin


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 12 posts ] 

All times are UTC


Who is online

Users browsing this forum: Google [Bot] and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group