// Definitions for SCSI style command data blocks. #ifndef __BLOCKCMD_H #define __BLOCKCMD_H #include "types.h" // u8 #define CDB_CMD_READ_10 0x28 #define CDB_CMD_VERIFY_10 0x2f #define CDB_CMD_WRITE_10 0x2a struct cdb_rwdata_10 { u8 command; u8 flags; u32 lba; u8 resreved_06; u16 count; u8 reserved_09; u8 pad[6]; } PACKED; #define CDB_CMD_READ_CAPACITY 0x25 struct cdb_read_capacity { u8 command; u8 flags; u8 resreved_02[8]; u8 pad[6]; } PACKED; struct cdbres_read_capacity { u32 sectors; u32 blksize; } PACKED; #define CDB_CMD_INQUIRY 0x12 #define CDB_CMD_REQUEST_SENSE 0x03 struct cdb_request_sense { u8 command; u8 flags; u16 reserved_02; u8 length; u8 reserved_05; u8 pad[10]; } PACKED; struct cdbres_request_sense { u8 errcode; u8 segment; u8 flags; u32 info; u8 additional; u32 specific; u8 asc; u8 ascq; u32 reserved_0e; } PACKED; struct cdbres_inquiry { u8 pdt; u8 removable; u8 reserved_02[2]; u8 additional; u8 reserved_05[3]; char vendor[8]; char product[16]; char rev[4]; } PACKED; // blockcmd.c int cdb_get_inquiry(struct disk_op_s *op, struct cdbres_inquiry *data); int cdb_get_sense(struct disk_op_s *op, struct cdbres_request_sense *data); int cdb_read_capacity(struct disk_op_s *op, struct cdbres_read_capacity *data); int cdb_inquiry(struct disk_op_s *op, struct cdbres_inquiry *data); int cdb_read(struct disk_op_s *op); #endif // blockcmd.h