/
USBMassStorage.cpp
45 lines (37 loc) · 1.14 KB
/
USBMassStorage.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "USBMassStorage.h"
#include "usb_mass.h"
#include "usb_mass_mal.h"
#include "usb_serial.h"
#include <string.h>
void USBMassStorageDevice::begin() {
if(!enabled) {
USBComposite.clear();
registerComponent();
USBComposite.begin();
enabled = true;
}
}
void USBMassStorageDevice::end() {
USBComposite.end();
}
void USBMassStorageDevice::loop() {
usb_mass_loop();
}
bool USBMassStorageDevice::registerComponent() {
return USBComposite.add(&usbMassPart, this);
}
void USBMassStorageDevice::setDrive(uint32 driveNumber, uint32 byteSize, MassStorageReader reader,
MassStorageWriter writer, MassStorageStatuser statuser, MassStorageInitializer initializer) {
if (driveNumber >= USB_MASS_MAX_DRIVES)
return;
usb_mass_drives[driveNumber].blockCount = byteSize/512;
usb_mass_drives[driveNumber].read = reader;
usb_mass_drives[driveNumber].write = writer;
usb_mass_drives[driveNumber].status = statuser;
usb_mass_drives[driveNumber].init = initializer;
usb_mass_drives[driveNumber].format = initializer;
}
void USBMassStorageDevice::clearDrives() {
memset(usb_mass_drives, 0, sizeof(usb_mass_drives));
}
USBMassStorageDevice MassStorage;