📄 scsireg.h
字号:
#if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */
typedef struct { /* CD Cap / mech status */
MP_P_CODE; /* parsave & pagecode */
Uchar p_len; /* 0x14 = 20 Bytes */
Ucbit cd_r_read : 1; /* Reads CD-R media */
Ucbit cd_rw_read : 1; /* Reads CD-RW media */
Ucbit method2 : 1; /* Reads fixed packet method2 media */
Ucbit dvd_rom_read : 1; /* Reads DVD ROM media */
Ucbit dvd_r_read : 1; /* Reads DVD-R media */
Ucbit dvd_ram_read : 1; /* Reads DVD-RAM media */
Ucbit res_2_67 : 2; /* Reserved */
Ucbit cd_r_write : 1; /* Supports writing CD-R media */
Ucbit cd_rw_write : 1; /* Supports writing CD-RW media */
Ucbit test_write : 1; /* Supports emulation write */
Ucbit res_3_3 : 1; /* Reserved */
Ucbit dvd_r_write : 1; /* Supports writing DVD-R media */
Ucbit dvd_ram_write : 1; /* Supports writing DVD-RAM media */
Ucbit res_3_67 : 2; /* Reserved */
Ucbit audio_play : 1; /* Supports Audio play operation */
Ucbit composite : 1; /* Deliveres composite A/V stream */
Ucbit digital_port_2 : 1; /* Supports digital output on port 2 */
Ucbit digital_port_1 : 1; /* Supports digital output on port 1 */
Ucbit mode_2_form_1 : 1; /* Reads Mode-2 form 1 media (XA) */
Ucbit mode_2_form_2 : 1; /* Reads Mode-2 form 2 media */
Ucbit multi_session : 1; /* Reads multi-session media */
Ucbit res_4 : 1; /* Reserved */
Ucbit cd_da_supported : 1; /* Reads audio data with READ CD cmd */
Ucbit cd_da_accurate : 1; /* READ CD data stream is accurate */
Ucbit rw_supported : 1; /* Reads R-W sub channel information */
Ucbit rw_deint_corr : 1; /* Reads de-interleved R-W sub chan */
Ucbit c2_pointers : 1; /* Supports C2 error pointers */
Ucbit ISRC : 1; /* Reads ISRC information */
Ucbit UPC : 1; /* Reads media catalog number (UPC) */
Ucbit read_bar_code : 1; /* Supports reading bar codes */
Ucbit lock : 1; /* PREVENT/ALLOW may lock media */
Ucbit lock_state : 1; /* Lock state 0=unlocked 1=locked */
Ucbit prevent_jumper : 1; /* State of prev/allow jumper 0=pres */
Ucbit eject : 1; /* Ejects disc/cartr with STOP LoEj */
Ucbit res_6_4 : 1; /* Reserved */
Ucbit loading_type : 3; /* Loading mechanism type */
Ucbit sep_chan_vol : 1; /* Vol controls each channel separat */
Ucbit sep_chan_mute : 1; /* Mute controls each channel separat*/
Ucbit disk_present_rep: 1; /* Changer supports disk present rep */
Ucbit sw_slot_sel : 1; /* Load empty slot in changer */
Ucbit side_change : 1; /* Side change capable */
Ucbit pw_in_lead_in : 1; /* Reads raw P-W sucode from lead in */
Ucbit res_7 : 2; /* Reserved */
Uchar max_read_speed[2]; /* Max. read speed in KB/s */
Uchar num_vol_levels[2]; /* # of supported volume levels */
Uchar buffer_size[2]; /* Buffer size for the data in KB */
Uchar cur_read_speed[2]; /* Current read speed in KB/s */
Uchar res_16; /* Reserved */
Ucbit res_17_0 : 1; /* Reserved */
Ucbit BCK : 1; /* Data valid on falling edge of BCK */
Ucbit RCK : 1; /* Set: HIGH high LRCK=left channel */
Ucbit LSBF : 1; /* Set: LSB first Clear: MSB first */
Ucbit length : 2; /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/
Ucbit res_17 : 2; /* Reserved */
Uchar max_write_speed[2]; /* Max. write speed supported in KB/s*/
Uchar cur_write_speed[2]; /* Current write speed in KB/s */
}cd_mode_page_2A;
#else /* Motorola byteorder */
typedef struct { /* CD Cap / mech status */
MP_P_CODE; /* parsave & pagecode */
Uchar p_len; /* 0x14 = 20 Bytes */
Ucbit res_2_67 : 2; /* Reserved */
Ucbit dvd_ram_read : 1; /* Reads DVD-RAM media */
Ucbit dvd_r_read : 1; /* Reads DVD-R media */
Ucbit dvd_rom_read : 1; /* Reads DVD ROM media */
Ucbit method2 : 1; /* Reads fixed packet method2 media */
Ucbit cd_rw_read : 1; /* Reads CD-RW media */
Ucbit cd_r_read : 1; /* Reads CD-R media */
Ucbit res_3_67 : 2; /* Reserved */
Ucbit dvd_ram_write : 1; /* Supports writing DVD-RAM media */
Ucbit dvd_r_write : 1; /* Supports writing DVD-R media */
Ucbit res_3_3 : 1; /* Reserved */
Ucbit test_write : 1; /* Supports emulation write */
Ucbit cd_rw_write : 1; /* Supports writing CD-RW media */
Ucbit cd_r_write : 1; /* Supports writing CD-R media */
Ucbit res_4 : 1; /* Reserved */
Ucbit multi_session : 1; /* Reads multi-session media */
Ucbit mode_2_form_2 : 1; /* Reads Mode-2 form 2 media */
Ucbit mode_2_form_1 : 1; /* Reads Mode-2 form 1 media (XA) */
Ucbit digital_port_1 : 1; /* Supports digital output on port 1 */
Ucbit digital_port_2 : 1; /* Supports digital output on port 2 */
Ucbit composite : 1; /* Deliveres composite A/V stream */
Ucbit audio_play : 1; /* Supports Audio play operation */
Ucbit read_bar_code : 1; /* Supports reading bar codes */
Ucbit UPC : 1; /* Reads media catalog number (UPC) */
Ucbit ISRC : 1; /* Reads ISRC information */
Ucbit c2_pointers : 1; /* Supports C2 error pointers */
Ucbit rw_deint_corr : 1; /* Reads de-interleved R-W sub chan */
Ucbit rw_supported : 1; /* Reads R-W sub channel information */
Ucbit cd_da_accurate : 1; /* READ CD data stream is accurate */
Ucbit cd_da_supported : 1; /* Reads audio data with READ CD cmd */
Ucbit loading_type : 3; /* Loading mechanism type */
Ucbit res_6_4 : 1; /* Reserved */
Ucbit eject : 1; /* Ejects disc/cartr with STOP LoEj */
Ucbit prevent_jumper : 1; /* State of prev/allow jumper 0=pres */
Ucbit lock_state : 1; /* Lock state 0=unlocked 1=locked */
Ucbit lock : 1; /* PREVENT/ALLOW may lock media */
Ucbit res_7 : 2; /* Reserved */
Ucbit pw_in_lead_in : 1; /* Reads raw P-W sucode from lead in */
Ucbit side_change : 1; /* Side change capable */
Ucbit sw_slot_sel : 1; /* Load empty slot in changer */
Ucbit disk_present_rep: 1; /* Changer supports disk present rep */
Ucbit sep_chan_mute : 1; /* Mute controls each channel separat*/
Ucbit sep_chan_vol : 1; /* Vol controls each channel separat */
Uchar max_read_speed[2]; /* Max. read speed in KB/s */
Uchar num_vol_levels[2]; /* # of supported volume levels */
Uchar buffer_size[2]; /* Buffer size for the data in KB */
Uchar cur_read_speed[2]; /* Current read speed in KB/s */
Uchar res_16; /* Reserved */
Ucbit res_17 : 2; /* Reserved */
Ucbit length : 2; /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/
Ucbit LSBF : 1; /* Set: LSB first Clear: MSB first */
Ucbit RCK : 1; /* Set: HIGH high LRCK=left channel */
Ucbit BCK : 1; /* Data valid on falling edge of BCK */
Ucbit res_17_0 : 1; /* Reserved */
Uchar max_write_speed[2]; /* Max. write speed supported in KB/s*/
Uchar cur_write_speed[2]; /* Current write speed in KB/s */
}cd_mode_page_2A;
#endif
#define LT_CADDY 0
#define LT_TRAY 1
#define LT_POP_UP 2
#define LT_RES3 3
#define LT_CHANGER_IND 4
#define LT_CHANGER_CART 5
#define LT_RES6 6
#define LT_RES7 7
typedef struct {
scsi_mode_header header;
scsi_mode_blockdesc blockdesc;
union pagex {
acb_mode_data acb;
scsi_mode_page_01 page1;
scsi_mode_page_02 page2;
scsi_mode_page_03 page3;
scsi_mode_page_04 page4;
scsi_mode_page_05 page5;
scsi_mode_page_07 page7;
scsi_mode_page_08 page8;
scsi_mode_page_09 page9;
scsi_mode_page_0A pageA;
scsi_mode_page_0B pageB;
scsi_mode_page_0C pageC;
scsi_mode_page_0D pageD;
sony_mode_page_20 sony20;
toshiba_mode_page_20 toshiba20;
ccs_mode_page_38 ccs38;
} pagex;
}scsi_mode_data;
typedef struct {
int c_baddr; /* must convert byteorder!! */
int c_bsize; /* must convert byteorder!! */
}scsi_capacity;
#if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */
typedef struct {
Ucbit : 8;
Ucbit format : 3;
Ucbit gdl : 1;
Ucbit mdl : 1;
Ucbit : 3;
Uchar length[2];
}scsi_def_header;
#else /* Motorola byteorder */
typedef struct {
Ucbit : 8;
Ucbit : 3;
Ucbit mdl : 1;
Ucbit gdl : 1;
Ucbit format : 3;
Uchar length[2];
}scsi_def_header;
#endif
#if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */
typedef struct {
Ucbit res : 8; /* Adaptec 5500: 1 --> format track */
Ucbit vu : 1;
Ucbit : 3;
Ucbit serr : 1; /* Stop on error */
Ucbit dcert : 1; /* Disable certification */
Ucbit dmdl : 1; /* Disable manufacturer defect list */
Ucbit enable : 1; /* Enable to use the next 3 bits */
Uchar length[2]; /* Length of following list in bytes*/
}scsi_format_header;
#else /* Motorola byteorder */
typedef struct {
Ucbit res : 8; /* Adaptec 5500: 1 --> format track */
Ucbit enable : 1; /* Enable to use the next 3 bits */
Ucbit dmdl : 1; /* Disable manufacturer defect list */
Ucbit dcert : 1; /* Disable certification */
Ucbit serr : 1; /* Stop on error */
Ucbit : 3;
Ucbit vu : 1;
Uchar length[2]; /* Length of following list in bytes*/
}scsi_format_header;
#endif
typedef struct {
Uchar cyl[3];
Uchar head;
Uchar bfi[4];
}scsi_def_bfi;
typedef struct {
Uchar cyl[3];
Uchar head;
Uchar sec[4];
}scsi_def_phys;
typedef struct {
scsi_def_header hd;
union {
Uchar list_block[1][4];
scsi_def_bfi list_bfi[1];
scsi_def_phys list_phys[1];
} def_list;
}scsi_def_list;
typedef struct {
scsi_format_header hd;
union {
Uchar list_block[1][4];
scsi_def_bfi list_bfi[1];
scsi_def_phys list_phys[1];
} def_list;
}scsi_format_data;
#define def_block def_list.list_block
#define def_bfi def_list.list_bfi
#define def_phys def_list.list_phys
#define SC_DEF_BLOCK 0
#define SC_DEF_BFI 4
#define SC_DEF_PHYS 5
#define SC_DEF_VU 6
#define SC_DEF_RES 7
typedef struct {
Uchar cmd;
Uchar addr[4];
Ucbit : 8;
} scsi_send_diag_cmd;
#if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */
typedef struct {
Uchar cyl[2];
Uchar head;
Uchar sec;
Ucbit : 5;
Ucbit rp : 1;
Ucbit sp : 1;
Ucbit dt : 1;
}scsi_sector_header;
#else /* Motorola byteorder */
typedef struct {
Uchar cyl[2];
Uchar head;
Uchar sec;
Ucbit dt : 1;
Ucbit sp : 1;
Ucbit rp : 1;
Ucbit : 5;
}scsi_sector_header;
#endif
typedef struct{
Uchar opc_speed[2];
Uchar opc_val[6];
} opc;
#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
typedef struct {
Uchar data_len[2];
Uchar track_number_LSB;
Uchar session_number_LSB;
Uchar reserved4;
Ucbit track_mode : 4;
Ucbit copy : 1;
Ucbit damage : 1;
Ucbit res1 : 2;
Ucbit data_mode : 4;
Ucbit fp : 1;
Ucbit packet : 1;
Ucbit blank : 1;
Ucbit RT : 1;
Ucbit NWA_V : 1;
Ucbit LRA_V : 1;
Ucbit res2 : 6;
Uchar track_start_addr[4];
Uchar next_writtable_addr[4];
Uchar free_blocks[4];
Uchar fixed_packet_size[4];
Uchar track_size[4];
Uchar last_record_addr[4];
Uchar track_number_MSB;
Uchar session_number_MSB;
Uchar reserved34[2];
}track_info;
#else /* Motorola bitorder */
typedef struct {
Uchar data_len[2];
Uchar track_number_LSB;
Uchar session_number_LSB;
Uchar reserved4;
Ucbit res1 : 2;
Ucbit damage : 1;
Ucbit copy : 1;
Ucbit track_mode : 4;
Ucbit RT : 1;
Ucbit blank : 1;
Ucbit packet : 1;
Ucbit fp : 1;
Ucbit data_mode : 4;
Ucbit res2 : 6;
Ucbit LRA_V : 1;
Ucbit NWA_V : 1;
Uchar track_start_addr[4];
Uchar next_writtable_addr[4];
Uchar free_blocks[4];
Uchar fixed_packet_size[4];
Uchar last_record_addr[4];
Uchar track_number_MSB;
Uchar session_number_MSB;
Uchar reserved34[2];
} track_info;
#endif
#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
typedef struct {
Uchar data_len[2]; /* Data len without this info */
Ucbit disk_status : 2; /* Status of the disk */
Ucbit sess_status : 2; /* Status of last session */
Ucbit erasable : 1; /* Disk is erasable */
Ucbit res2 : 3; /* Reserved */
Uchar first_track; /* # of first track on disk */
Uchar numsess; /* # of sessions */
Uchar first_track_ls; /* First track in last sessaion */
Uchar last_track_ls; /* Last track in last sessaion */
Ucbit res7_04 : 5; /* Reserved */
Ucbit uru : 1; /* This is an unrestricted disk */
Ucbit dbc_v : 1; /* Disk bar code valid */
Ucbit did_v : 1; /* Disk id valid */
Uchar disk_type; /* Disk type */
Uchar res9[3]; /* Reserved */
Uchar disk_id[4]; /* Disk identification */
Uchar last_lead_in[4]; /* Last session lead in time */
Uchar last_lead_out[4]; /* Last session lead out time */
Uchar disk_barcode[8]; /* Disk bar code */
Uchar res32; /* Reserved */
Uchar num_opc_entries; /* # of OPC table entries */
opc opc_table[1]; /* OPC table */
}disk_info;
#else /* Motorola bitorder */
typedef struct {
Uchar data_len[2]; /* Data len without this info */
Ucbit res2 : 3; /* Reserved */
Ucbit erasable : 1; /* Disk is erasable */
Ucbit sess_status : 2; /* Status of last session */
Ucbit disk_status : 2; /* Status of the disk */
Uchar first_track; /* # of first track on disk */
Uchar numsess; /* # of sessions */
Uchar first_track_ls; /* First track in last sessaion */
Uchar last_track_ls; /* Last track in last sessaion */
Ucbit did_v : 1; /* Disk id valid */
Ucbit dbc_v : 1; /* Disk bar code valid */
Ucbit uru : 1; /* This is an unrestricted disk */
Ucbit res7_04 : 5; /* Reserved */
Uchar disk_type; /* Disk type */
Uchar res9[3]; /* Reserved */
Uchar disk_id[4]; /* Disk identification */
Uchar last_lead_in[4]; /* Last session lead in time */
Uchar last_lead_out[4]; /* Last session lead out time */
Uchar disk_barcode[8]; /* Disk bar code */
Uchar res32; /* Reserved */
Uchar num_opc_entries; /* # of OPC table entries */
opc opc_table[1]; /* OPC table */
}disk_info;
#endif
#if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */
typedef struct{ /* scsi extended sense for error class 7 */
/* byte 0 */
Ucbit type : 7; /* fixed at 0x70 */
Ucbit adr_val : 1; /* sense data is valid */
/* byte 1 */
Uchar seg_num; /* segment number, applies to copy cmd only */
/* byte 2 */
Ucbit key : 4; /* sense key, see below */
Ucbit : 1; /* reserved */
Ucbit ili : 1; /* incorrect length indicator */
Ucbit eom : 1; /* end of media */
Ucbit fil_mk : 1; /* file mark on device */
/* bytes 3 through 7 */
Uchar info_1; /* information byte 1 */
Uchar info_2; /* information byte 2 */
Uchar info_3; /* information byte 3 */
Uchar info_4; /* information byte 4 */
Uchar add_len; /* number of additional bytes */
/* bytes 8 through 13, CCS additions */
Uchar optional_8; /* CCS search and copy only */
Uchar optional_9; /* CCS search and copy only */
Uchar optional_10; /* CCS search and copy only */
Uchar optional_11; /* CCS search and copy only */
Uchar ASC; /* sense code */
Uchar ASCQ; /* sense code qualifier */
Uchar fru_code; /* Field replacable unit code */
Ucbit bptr : 3; /* bit pointer for failure (if bpv) */
Ucbit bpv : 1; /* bit pointer is valid */
Ucbit : 2;
Ucbit cd : 1; /* pointers refer to command not data */
Ucbit sksv : 1; /* sense key specific valid */
Uchar field_ptr[2]; /* field pointer for failure */
Uchar add_info[2]; /* round up to 20 bytes */
} scsi_sense;
#else /* Motorola byteorder */
typedef struct { /* scsi extended sense for error class 7 */
/* byte 0 */
Ucbit adr_val : 1; /* sense data is valid */
Ucbit type : 7; /* fixed at 0x70 */
/* byte 1 */
Uchar seg_num; /* segment number, applies to copy cmd only */
/* byte 2 */
Ucbit fil_mk : 1; /* file mark on device */
Ucbit eom : 1; /* end of media */
Ucbit ili : 1; /* incorrect length indicator */
Ucbit : 1; /* reserved */
Ucbit key : 4; /* sense key, see below */
/* bytes 3 through 7 */
Uchar info_1; /* information byte 1 */
Uchar info_2; /* information byte 2 */
Uchar info_3; /* information byte 3 */
Uchar info_4; /* information byte 4 */
Uchar add_len; /* number of additional bytes */
/* bytes 8 through 13, CCS additions */
Uchar optional_8; /* CCS search and copy only */
Uchar optional_9; /* CCS search and copy only */
Uchar optional_10; /* CCS search and copy only */
Uchar optional_11; /* CCS search and copy only */
Uchar ASC /* sense code */
Uchar ASCQ; /* sense code qualifier */
Uchar fru_code; /* Field replacable unit code */
Ucbit sksv : 1; /* sense key specific valid */
Ucbit cd : 1; /* pointers refer to command not data */
Ucbit : 2;
Ucbit bpv : 1; /* bit pointer is valid */
Ucbit bptr : 3; /* bit pointer for failure (if bpv) */
Uchar field_ptr[2]; /* field pointer for failure */
Uchar add_info[2]; /* round up to 20 bytes */
}scsi_sense;
#endif
#ifdef __cplusplus
}
#endif
#endif /* _SCG_SCSIREG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -