USB tiny disk

Dependents:   USBTinyDisk_Arch

USBTinyDisk.cpp

Committer:
yihui
Date:
2014-01-21
Revision:
0:bc3d724e2ea5

File content as of revision 0:bc3d724e2ea5:


#include <stdint.h>
#include "USBTinyDisk.h"

#include "DiskImage.c"  // include DiskImage[]

// Min size of a disk recognized by windows is 8192 bytes
#define DISK_SIZE_MIN           8192
#define DISK_SIZE()             ((sizeof(DiskImage) > DISK_SIZE_MIN) ? sizeof(DiskImage) : DISK_SIZE_MIN)

USBTinyDisk::USBTinyDisk(uint16_t vendor_id, uint16_t product_id, uint16_t product_release) : USBMSD(vendor_id, product_id, product_release) {
    
}

int USBTinyDisk::disk_read(uint8_t * data, uint64_t block) {
    int offset = 512 * block;
    if (offset < sizeof(DiskImage)) {
        memcpy(data, DiskImage + offset, 512);
    } else {
        memset(data, 0, 512);
    }
    return 0;
}

int USBTinyDisk::disk_write(const uint8_t * data, uint64_t block) {
    return 1;
}

int USBTinyDisk::disk_initialize() {
    return 0;
}

uint64_t USBTinyDisk::disk_sectors() {
    
    return DISK_SIZE() / 512;
}

uint64_t USBTinyDisk::disk_size() {
    return DISK_SIZE();
}

int USBTinyDisk::disk_status() {
    return 4;
}

uint8_t * USBTinyDisk::stringImanufacturerDesc() {
    static uint8_t stringImanufacturerDescriptor[] = {
        0x0C,                                           //bLength
        STRING_DESCRIPTOR,                              //bDescriptorType 0x03
        'S',0,'E',0,'E',0,'E',0,'D',0                   //bString iVendor- Seeed
    };
    return stringImanufacturerDescriptor;
}

uint8_t * USBTinyDisk::stringIproductDesc() {
    static uint8_t stringIproductDescriptor[] = {
        0x12,                                           //bLength
        STRING_DESCRIPTOR,                              //bDescriptorType 0x03
        'A',0,'r',0,'c',0,'h',0,' ',0,'P',0,'r',0,'o',0 //bString iProduct - Arch
    };
    return stringIproductDescriptor;
}

uint8_t * USBTinyDisk::stringIserialDesc() {
    static uint8_t stringIserialDescriptor[] = {
        0x12,                                           //bLength
        STRING_DESCRIPTOR,                              //bDescriptorType 0x03
        '2',0,'0',0,'1',0,'3',0,'0',0,'9',0,'2',0,'2',0,'A',0      //bString iSerial - 20130620A
    };
    return stringIserialDescriptor;
}