1 #ifndef MASSSTORAGE_CLASS_H
2 #define MASSSTORAGE_CLASS_H
5 *----------------------------------------------------------------------------
6 * Includes for MS class
7 *----------------------------------------------------------------------------
8 * By Chris Hodges <chrisly@platon42.de>
13 #include <libraries/expansion.h>
14 #include <libraries/configregs.h>
15 #include <libraries/configvars.h>
16 #include <libraries/asl.h>
18 #include <dos/dostags.h>
19 #include <scsi/commands.h>
20 #include <scsi/values.h>
21 #include <dos/dosextens.h>
22 #include <dos/filehandler.h>
23 #include <resources/filesysres.h>
25 #include <devices/usb.h>
26 #include <devices/usbhardware.h>
27 #include <devices/usb_massstorage.h>
28 #include <libraries/usbclass.h>
34 #include "massstorage.h"
41 #define TD_FORMAT64 27
46 struct NepClassMS
* GM_UNIQUENAME(usbAttemptInterfaceBinding
)(struct NepMSBase
*nh
, struct PsdInterface
*pif
);
47 struct NepClassMS
* GM_UNIQUENAME(usbForceInterfaceBinding
)(struct NepMSBase
*nh
, struct PsdInterface
*pif
);
48 void GM_UNIQUENAME(usbReleaseInterfaceBinding
)(struct NepMSBase
*nh
, struct NepClassMS
*ncm
);
50 struct NepClassMS
* GM_UNIQUENAME(nAllocMS
)(void);
51 void GM_UNIQUENAME(nFreeMS
)(struct NepClassMS
*ncm
);
53 BOOL
GM_UNIQUENAME(nLoadClassConfig
)(struct NepMSBase
*nh
);
54 BOOL
GM_UNIQUENAME(nLoadBindingConfig
)(struct NepClassMS
*ncm
);
55 LONG
GM_UNIQUENAME(nOpenBindingCfgWindow
)(struct NepMSBase
*nh
, struct NepClassMS
*ncm
);
57 void GM_UNIQUENAME(nGUITaskCleanup
)(struct NepClassMS
*ncm
);
58 BOOL
GM_UNIQUENAME(nStoreConfig
)(struct NepClassMS
*ncm
);
60 LONG
nScsiDirect(struct NepClassMS
*ncm
, struct SCSICmd
*scsicmd
);
61 LONG
nScsiDirectBulk(struct NepClassMS
*ncm
, struct SCSICmd
*scsicmd
);
62 LONG
nScsiDirectCBI(struct NepClassMS
*ncm
, struct SCSICmd
*scsicmd
);
63 LONG
nBulkReset(struct NepClassMS
*ncm
);
64 void nLockXFer(struct NepClassMS
*ncm
);
65 void nUnlockXFer(struct NepClassMS
*ncm
);
66 LONG
nRead64(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
67 LONG
nWrite64(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
68 LONG
nFormat64(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
69 LONG
nSeek64(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
70 LONG
nGetGeometry(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
71 LONG
nGetWriteProtect(struct NepClassMS
*ncm
);
72 LONG
nStartStop(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
74 BOOL
nStartRemovableTask(struct Library
*ps
, struct NepMSBase
*nh
);
75 struct NepMSBase
* GM_UNIQUENAME(nAllocRT
)(void);
76 void GM_UNIQUENAME(nFreeRT
)(struct NepMSBase
*nh
);
77 void nUnmountPartition(struct NepClassMS
*ncm
);
78 LONG
nIOCmdTunnel(struct NepClassMS
*ncm
, struct IOStdReq
*ioreq
);
79 LONG
nScsiDirectTunnel(struct NepClassMS
*ncm
, struct SCSICmd
*scsicmd
);
81 BPTR
CreateSegment(struct NepClassMS
*ncm
, const ULONG
*MyData
);
82 struct DeviceNode
* FindMatchingDevice(struct NepClassMS
*ncm
, struct DosEnvec
*envec
);
83 void CheckFATPartition(struct NepClassMS
*ncm
, ULONG startblock
);
84 void ProcessRDB(struct NepClassMS
*ncm
);
85 void AutoMountCD(struct NepClassMS
*ncm
);
86 void CheckISO9660(struct NepClassMS
*ncm
);
88 void AutoDetectMaxTransfer(struct NepClassMS
*ncm
);
90 AROS_UFP0(void, GM_UNIQUENAME(nMSTask
));
91 AROS_UFP0(void, GM_UNIQUENAME(nRemovableTask
));
92 AROS_UFP0(void, GM_UNIQUENAME(nGUITask
));
94 AROS_UFP3(LONG
, GM_UNIQUENAME(LUNListDisplayHook
),
95 AROS_UFPA(struct Hook
*, hook
, A0
),
96 AROS_UFPA(char **, strarr
, A2
),
97 AROS_UFPA(struct NepClassMS
*, ncm
, A1
));
99 BOOL
CheckPartitions(struct NepClassMS
*ncm
);
101 #endif /* MASSSTORAGE_CLASS_H */