1 /*
2 ********************************************************************************************************************
3 *                                              usb host driver
4 *
5 *                              (c) Copyright 2007-2010, javen.China
6 *                                       All Rights Reserved
7 *
8 * File Name     : UsbBlkDev.h
9 *
10 * Author        : javen
11 *
12 * Version       : 2.0
13 *
14 * Date          : 2010.03.02
15 *
16 * Description   :
17 *
18 * History       :
19 *
20 ********************************************************************************************************************
21 */
22 #ifndef  __BLKDEV_H__
23 #define  __BLKDEV_H__
24 
25 #include  "usbh_disk_info.h"
26 
27 #define  USB_BLK_DEV_MAGIC              0x5a13d099
28 #define  USB_BULK_DISK_MAX_NAME_LEN     32
29 
30 typedef struct __UsbBlkDev
31 {
32     unsigned int   last_lun;               //如果为1,表示是最后一个分区
33     unsigned int   Magic;                  /* 表示设备是否合法                 */
34     __mscLun_t *Lun;                /* sd和其他scsi device共有的属性    */
35 
36     /* Disk information */
37     unsigned int used;                     /* 打开设备计数                     */
38     __dev_devop_t DiskOp;           /* 设备操作函数                     */
39 
40     /* Disk manager */
41     void *DevParaHdle;      /* open时的句柄                     */
42     void *DevRegHdle;       /* reg时的句柄                      */
43 
44     unsigned int DevNo;                                /* 此设备号, 它由host_id, target_id, lun 组成   */
45     unsigned char ClassName[USB_BULK_DISK_MAX_NAME_LEN]; /* 设备类名, 如"disk"               */
46     unsigned char DevName[USB_BULK_DISK_MAX_NAME_LEN];   /* 此设备名, 如"SCSI_DISK_000"      */
47 
48     unsigned int is_RegDisk;               /* 是否注册过disk设备                           */
49     unsigned int ErrCmdNr;                 /* test_unit_ready期间, 未知错误的次数          */
50 
51     void *Extern;                   /* 扩展属性, 如cd                               */
52 
53     usbh_disk_device_info_t device_info;
54 } __UsbBlkDev_t;
55 
56 //------------------------------------------
57 //
58 //------------------------------------------
59 __UsbBlkDev_t *UsbBlkDevAllocInit(__mscLun_t *mscLun);
60 int UsbBlkDevFree(__UsbBlkDev_t *BlkDev);
61 
62 void GetDiskInfo(__UsbBlkDev_t *BlkDev);
63 void ShutDown(__UsbBlkDev_t *BlkDev);
64 
65 int UsbBlkDevReg(__UsbBlkDev_t *BlkDev, unsigned char *ClassName, unsigned int RegDisk);
66 int UsbBlkDevUnReg(__UsbBlkDev_t *BlkDev);
67 
68 
69 #endif   //__BLKDEV_H__
70 
71 
72