1218893Sdim/**
2193323Sed *
3193323Sed * TODO: description
4193323Sed *
5193323Sed * This file is a part of USB SCSI CAM for Haiku.
6193323Sed * May be used under terms of the MIT License
7193323Sed *
8193323Sed * Author(s):
9193323Sed * 	Siarzhuk Zharski <imker@gmx.li>
10193323Sed *
11193323Sed *
12193323Sed */
13193323Sed#ifndef _DEVICE_INFO_H_
14193323Sed	#define _DEVICE_INFO_H_
15193323Sed
16193323Sed#ifndef _SCSI_COMMANDS_H_
17193323Sed	#include "scsi_commands.h"
18193323Sed#endif /*_SCSI_COMMANDS_H_*/
19249423Sdim
20212904Sdim#ifndef _PROTO_MODULE_H_
21249423Sdim	#include "proto_module.h"
22249423Sdim#endif /* _PROTO_MODULE_H_ */
23249423Sdim
24249423Sdimtypedef struct _usb_device_info{
25193323Sed	uint8 dev_num;				/**/
26193323Sed	const usb_device device;	/**/
27198090Srdivacky	uint16 interface;			/**/
28234353Sdim	uint8	max_lun;			/**/
29249423Sdim
30249423Sdim	uint32 properties;
31193323Sed
32198090Srdivacky	usb_pipe pipe_in;			/**/
33234353Sdim	usb_pipe pipe_out;			/**/
34198090Srdivacky	usb_pipe pipe_intr;			/**/
35249423Sdim
36198396Srdivacky	sem_id lock_sem;			/**/
37193323Sed	sem_id trans_sem;			/**/
38193323Sed	uint32 tag;					/**/
39198090Srdivacky	status_t status;			/**/
40198090Srdivacky
41198090Srdivacky	bigtime_t trans_timeout;
42198090Srdivacky	usb_module_info *usb_m;
43198090Srdivacky
44198090Srdivacky	void *data;					/**/
45198090Srdivacky	int actual_len;				/**/
46198892Srdivacky
47199481Srdivacky	protocol_module_info *protocol_m;
48199481Srdivacky	char *protocol_m_path;
49193323Sed
50199481Srdivacky	transform_module_info *transform_m;
51199481Srdivacky	char *transform_m_path;
52199481Srdivacky
53199481Srdivacky	bool b_trace;
54199481Srdivacky	void (*trace)(bool b_force, const char *fmt, ...);
55234353Sdim	void (*trace_bytes)(const char *prefix, const uint8 *bytes, size_t bytes_len);
56234353Sdim
57234353Sdim	uint8 scsi_command_buf[IOCDBLEN];
58234353Sdim	/* auto sense buffer. Some commands doesn't have it. emulate */
59234353Sdim	scsi_sense_data autosense_data;
60234353Sdim	/* iovec					 autosense_sg; DO NOT RESTORE IT !!!*/
61234353Sdim	uint8 not_ready_luns;
62234353Sdim} usb_device_info;
63234353Sdim
64234353Sdim#endif /* _DEVICE_INFO_H_ */
65234353Sdim
66234353Sdim