1 #ifndef SG_LIB_DATA_H 2 #define SG_LIB_DATA_H 3 4 /* 5 * Copyright (c) 2007-2016 Douglas Gilbert. 6 * All rights reserved. 7 * Use of this source code is governed by a BSD-style 8 * license that can be found in the BSD_LICENSE file. 9 */ 10 11 /* 12 * This header file contains some structure declarations and array name 13 * declarations which are defined in the sg_lib_data.c . 14 * Typically this header does not need to be exposed to users of the 15 * sg_lib interface declared in sg_libs.h . 16 */ 17 18 #include <stdint.h> 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 /* Operation codes with associated service actions that change or qualify 25 * the command name */ 26 #define SG_EXTENDED_COPY 0x83 /* since spc4r34 became next entry */ 27 #define SG_3PARTY_COPY_OUT 0x83 /* new in spc4r34: Third party copy out */ 28 #define SG_RECEIVE_COPY 0x84 /* since spc4r34 became next entry */ 29 #define SG_3PARTY_COPY_IN 0x84 /* new in spc4r34: Third party copy in */ 30 #define SG_MAINTENANCE_IN 0xa3 31 #define SG_MAINTENANCE_OUT 0xa4 32 #define SG_PERSISTENT_RESERVE_IN 0x5e 33 #define SG_PERSISTENT_RESERVE_OUT 0x5f 34 #define SG_READ_ATTRIBUTE 0x8c 35 #define SG_READ_BUFFER 0x3c 36 #define SG_READ_POSITION 0x34 /* SSC command with service actions */ 37 #define SG_SANITIZE 0x48 38 #define SG_SERVICE_ACTION_BIDI 0x9d 39 #define SG_SERVICE_ACTION_IN_12 0xab 40 #define SG_SERVICE_ACTION_IN_16 0x9e 41 #define SG_SERVICE_ACTION_OUT_12 0xa9 42 #define SG_SERVICE_ACTION_OUT_16 0x9f 43 #define SG_VARIABLE_LENGTH_CMD 0x7f 44 #define SG_WRITE_BUFFER 0x3b 45 #define SG_ZONING_OUT 0x94 46 #define SG_ZONING_IN 0x95 47 48 49 50 struct sg_lib_value_name_t { 51 int value; 52 int peri_dev_type; /* 0 -> SPC and/or PDT_DISK, >0 -> PDT */ 53 const char * name; 54 }; 55 56 struct sg_lib_asc_ascq_t { 57 unsigned char asc; /* additional sense code */ 58 unsigned char ascq; /* additional sense code qualifier */ 59 const char * text; 60 }; 61 62 struct sg_lib_asc_ascq_range_t { 63 unsigned char asc; /* additional sense code (ASC) */ 64 unsigned char ascq_min; /* ASCQ minimum in range */ 65 unsigned char ascq_max; /* ASCQ maximum in range */ 66 const char * text; 67 }; 68 69 70 extern const char * sg_lib_version_str; 71 72 extern struct sg_lib_value_name_t sg_lib_normal_opcodes[]; 73 extern struct sg_lib_value_name_t sg_lib_read_buff_arr[]; 74 extern struct sg_lib_value_name_t sg_lib_write_buff_arr[]; 75 extern struct sg_lib_value_name_t sg_lib_maint_in_arr[]; 76 extern struct sg_lib_value_name_t sg_lib_maint_out_arr[]; 77 extern struct sg_lib_value_name_t sg_lib_pr_in_arr[]; 78 extern struct sg_lib_value_name_t sg_lib_pr_out_arr[]; 79 extern struct sg_lib_value_name_t sg_lib_sanitize_sa_arr[]; 80 extern struct sg_lib_value_name_t sg_lib_serv_in12_arr[]; 81 extern struct sg_lib_value_name_t sg_lib_serv_out12_arr[]; 82 extern struct sg_lib_value_name_t sg_lib_serv_in16_arr[]; 83 extern struct sg_lib_value_name_t sg_lib_serv_out16_arr[]; 84 extern struct sg_lib_value_name_t sg_lib_serv_bidi_arr[]; 85 extern struct sg_lib_value_name_t sg_lib_xcopy_sa_arr[]; 86 extern struct sg_lib_value_name_t sg_lib_rec_copy_sa_arr[]; 87 extern struct sg_lib_value_name_t sg_lib_variable_length_arr[]; 88 extern struct sg_lib_value_name_t sg_lib_zoning_out_arr[]; 89 extern struct sg_lib_value_name_t sg_lib_zoning_in_arr[]; 90 extern struct sg_lib_value_name_t sg_lib_read_attr_arr[]; 91 extern struct sg_lib_value_name_t sg_lib_read_pos_arr[]; 92 extern struct sg_lib_asc_ascq_range_t sg_lib_asc_ascq_range[]; 93 extern struct sg_lib_asc_ascq_t sg_lib_asc_ascq[]; 94 extern const char * sg_lib_sense_key_desc[]; 95 extern const char * sg_lib_pdt_strs[]; 96 extern const char * sg_lib_transport_proto_strs[]; 97 extern int sg_lib_pdt_decay_arr[]; 98 99 100 #ifdef __cplusplus 101 } 102 #endif 103 104 #endif 105