VSF Documented
Data Structures | Typedefs | Enumerations | Functions
vsf_scsi.h File Reference
#include "./vsf_scsi_cfg.h"
#include "kernel/vsf_kernel.h"
#include "utilities/ooc_class.h"
#include "./driver/virtual_scsi/vsf_virtual_scsi.h"
#include "./driver/mal_scsi/vsf_mal_scsi.h"

Go to the source code of this file.

Data Structures

struct  scsi_inquiry_t
 
class  vk_scsi_drv_t
 
class  vk_scsi_t
 

Typedefs

typedef enum scsi_sensekey_t scsi_sensekey_t
 This module provides SCSI device class which can execute SCSI commands. !
 
typedef enum scsi_asc_t scsi_asc_t
 
typedef enum scsi_group_code_t scsi_group_code_t
 
typedef enum scsi_cmd_code_t scsi_cmd_code_t
 
typedef struct scsi_inquiry_t scsi_inquiry_t
 

Enumerations

enum  scsi_sensekey_t {
  SCSI_SENSEKEY_NO_SENSE = 0 ,
  SCSI_SENSEKEY_RECOVERED_ERROR = 1 ,
  SCSI_SENSEKEY_NOT_READY = 2 ,
  SCSI_SENSEKEY_MEDIUM_ERROR = 3 ,
  SCSI_SENSEKEY_HARDWARE_ERROR = 4 ,
  SCSI_SENSEKEY_ILLEGAL_REQUEST = 5 ,
  SCSI_SENSEKEY_UNIT_ATTENTION = 6 ,
  SCSI_SENSEKEY_DATA_PROTECT = 7 ,
  SCSI_SENSEKEY_BLANK_CHECK = 8 ,
  SCSI_SENSEKEY_VENDOR_SPECIFIC = 9 ,
  SCSI_SENSEKEY_COPY_ABORTED = 10 ,
  SCSI_SENSEKEY_ABORTED_COMMAND = 11 ,
  SCSI_SENSEKEY_VOLUME_OVERFLOW = 13 ,
  SCSI_SENSEKEY_MISCOMPARE = 14
}
 This module provides SCSI device class which can execute SCSI commands. ! More...
 
enum  scsi_asc_t {
  SCSI_ASC_NONE = 0x00 ,
  SCSI_ASC_PARAMETER_LIST_LENGTH_ERROR = 0x1A ,
  SCSI_ASC_INVALID_COMMAND = 0x20 ,
  SCSI_ASC_INVALID_FIELD_IN_COMMAND = 0x24 ,
  SCSI_ASC_INVALID_FIELD_IN_PARAMETER_LIST = 0x26 ,
  SCSI_ASC_MEDIUM_HAVE_CHANGED = 0x28 ,
  SCSI_ASC_ADDRESS_OUT_OF_RANGE = 0x21 ,
  SCSI_ASC_MEDIUM_NOT_PRESENT = 0x3A
}
 
enum  scsi_group_code_t {
  SCSI_GROUPCODE6 = 0x00 ,
  SCSI_GROUPCODE10_1 = 0x20 ,
  SCSI_GROUPCODE10_2 = 0x40 ,
  SCSI_GROUPCODE16 = 0x80 ,
  SCSI_GROUPCODE12 = 0xA0
}
 
enum  scsi_cmd_code_t {
  SCSI_CMDCODE_TEST_UNIT_READY = 0x00 ,
  SCSI_CMDCODE_ATA_COMMAND_PASS_THROUGH12 = 0x01 ,
  SCSI_CMDCODE_REQUEST_SENSE = 0x03 ,
  SCSI_CMDCODE_READ_FORMAT_CAPACITIES = 0x03 ,
  SCSI_CMDCODE_READ_TOC = 0x03 ,
  SCSI_CMDCODE_REPORT_ID_INFO = 0x03 ,
  SCSI_CMDCODE_FORMAT_UNIT = 0x04 ,
  SCSI_CMDCODE_READ_CAPACITY = 0x05 ,
  SCSI_CMDCODE_ATA_COMMAND_PASS_THROUGH16 = 0x05 ,
  SCSI_CMDCODE_READ = 0x08 ,
  SCSI_CMDCODE_SERVICE_ACTION_OUT12 = 0x09 ,
  SCSI_CMDCODE_WRITE = 0x0A ,
  SCSI_CMDCODE_GET_EVENT_STATUS_NOTIFY = 0x0A ,
  SCSI_CMDCODE_SERVICE_ACTION_IN12 = 0x0B ,
  SCSI_CMDCODE_SERVICE_ACTION_IN16 = 0x0E ,
  SCSI_CMDCODE_VERIFY = 0x0F ,
  SCSI_CMDCODE_SYNC_CACHE16 = 0x11 ,
  SCSI_CMDCODE_INQUIRY = 0x12 ,
  SCSI_CMDCODE_MODE_SELECT = 0x15 ,
  SCSI_CMDCODE_SYNC_CACHE10 = 0x15 ,
  SCSI_CMDCODE_MODE_SENSE = 0x1A ,
  SCSI_CMDCODE_START_STOP_UNIT = 0x1B ,
  SCSI_CMDCODE_SEND_DIAGNOSTIC = 0x1D ,
  SCSI_CMDCODE_ALLOW_MEDIUM_REMOVAL = 0x1E ,
  SCSI_CMDCODE_SERVICE_ACTION_OUT16 = 0x1F
}
 

Functions

vsf_err_t vk_scsi_init (vk_scsi_t *pthis)
 
vsf_err_t vk_scsi_fini (vk_scsi_t *pthis)
 
bool vk_scsi_prepare_buffer (vk_scsi_t *pthis, uint8_t *cbd, vsf_mem_t *mem)
 
vsf_err_t vk_scsi_execute (vk_scsi_t *pthis, uint8_t *cbd, vsf_mem_t *mem)
 
vsf_err_t vk_scsi_execute_stream (vk_scsi_t *pthis, uint8_t *cbd, vsf_stream_t *stream)
 

Typedef Documentation

◆ scsi_sensekey_t

This module provides SCSI device class which can execute SCSI commands. !

Author
SimonQian !
Note
Enabled by VSF_USE_SCSI. Drivers: ! virtual_scsi by VSF_SCSI_USE_VIRTUAL_SCSI: ! Used to convert other devices to SCSI devices. ! mal_scsi by VSF_SCSI_USE_MAL_SCSI, depends on VSF_SCSI_USE_VIRTUAL_SCSI: ! Convert a mal(memory abstraction layer) device to SCSI device.

◆ scsi_asc_t

typedef enum scsi_asc_t scsi_asc_t

◆ scsi_group_code_t

◆ scsi_cmd_code_t

◆ scsi_inquiry_t

Enumeration Type Documentation

◆ scsi_sensekey_t

This module provides SCSI device class which can execute SCSI commands. !

Author
SimonQian !
Note
Enabled by VSF_USE_SCSI. Drivers: ! virtual_scsi by VSF_SCSI_USE_VIRTUAL_SCSI: ! Used to convert other devices to SCSI devices. ! mal_scsi by VSF_SCSI_USE_MAL_SCSI, depends on VSF_SCSI_USE_VIRTUAL_SCSI: ! Convert a mal(memory abstraction layer) device to SCSI device.
Enumerator
SCSI_SENSEKEY_NO_SENSE 
SCSI_SENSEKEY_RECOVERED_ERROR 
SCSI_SENSEKEY_NOT_READY 
SCSI_SENSEKEY_MEDIUM_ERROR 
SCSI_SENSEKEY_HARDWARE_ERROR 
SCSI_SENSEKEY_ILLEGAL_REQUEST 
SCSI_SENSEKEY_UNIT_ATTENTION 
SCSI_SENSEKEY_DATA_PROTECT 
SCSI_SENSEKEY_BLANK_CHECK 
SCSI_SENSEKEY_VENDOR_SPECIFIC 
SCSI_SENSEKEY_COPY_ABORTED 
SCSI_SENSEKEY_ABORTED_COMMAND 
SCSI_SENSEKEY_VOLUME_OVERFLOW 
SCSI_SENSEKEY_MISCOMPARE 

◆ scsi_asc_t

enum scsi_asc_t
Enumerator
SCSI_ASC_NONE 
SCSI_ASC_PARAMETER_LIST_LENGTH_ERROR 
SCSI_ASC_INVALID_COMMAND 
SCSI_ASC_INVALID_FIELD_IN_COMMAND 
SCSI_ASC_INVALID_FIELD_IN_PARAMETER_LIST 
SCSI_ASC_MEDIUM_HAVE_CHANGED 
SCSI_ASC_ADDRESS_OUT_OF_RANGE 
SCSI_ASC_MEDIUM_NOT_PRESENT 

◆ scsi_group_code_t

Enumerator
SCSI_GROUPCODE6 
SCSI_GROUPCODE10_1 
SCSI_GROUPCODE10_2 
SCSI_GROUPCODE16 
SCSI_GROUPCODE12 

◆ scsi_cmd_code_t

Enumerator
SCSI_CMDCODE_TEST_UNIT_READY 
SCSI_CMDCODE_ATA_COMMAND_PASS_THROUGH12 
SCSI_CMDCODE_REQUEST_SENSE 
SCSI_CMDCODE_READ_FORMAT_CAPACITIES 
SCSI_CMDCODE_READ_TOC 
SCSI_CMDCODE_REPORT_ID_INFO 
SCSI_CMDCODE_FORMAT_UNIT 
SCSI_CMDCODE_READ_CAPACITY 
SCSI_CMDCODE_ATA_COMMAND_PASS_THROUGH16 
SCSI_CMDCODE_READ 
SCSI_CMDCODE_SERVICE_ACTION_OUT12 
SCSI_CMDCODE_WRITE 
SCSI_CMDCODE_GET_EVENT_STATUS_NOTIFY 
SCSI_CMDCODE_SERVICE_ACTION_IN12 
SCSI_CMDCODE_SERVICE_ACTION_IN16 
SCSI_CMDCODE_VERIFY 
SCSI_CMDCODE_SYNC_CACHE16 
SCSI_CMDCODE_INQUIRY 
SCSI_CMDCODE_MODE_SELECT 
SCSI_CMDCODE_SYNC_CACHE10 
SCSI_CMDCODE_MODE_SENSE 
SCSI_CMDCODE_START_STOP_UNIT 
SCSI_CMDCODE_SEND_DIAGNOSTIC 
SCSI_CMDCODE_ALLOW_MEDIUM_REMOVAL 
SCSI_CMDCODE_SERVICE_ACTION_OUT16 

Function Documentation

◆ vk_scsi_init()

vsf_err_t vk_scsi_init ( vk_scsi_t pthis)
extern

◆ vk_scsi_fini()

vsf_err_t vk_scsi_fini ( vk_scsi_t pthis)
extern

◆ vk_scsi_prepare_buffer()

bool vk_scsi_prepare_buffer ( vk_scsi_t pthis,
uint8_t cbd,
vsf_mem_t mem 
)
extern

◆ vk_scsi_execute()

vsf_err_t vk_scsi_execute ( vk_scsi_t pthis,
uint8_t cbd,
vsf_mem_t mem 
)
extern

◆ vk_scsi_execute_stream()

vsf_err_t vk_scsi_execute_stream ( vk_scsi_t pthis,
uint8_t cbd,
vsf_stream_t stream 
)
extern