USB tiny disk

Dependents:   USBTinyDisk_Arch

Committer:
yihui
Date:
Tue Jan 21 08:38:35 2014 +0000
Revision:
0:bc3d724e2ea5
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 0:bc3d724e2ea5 1 /*
yihui 0:bc3d724e2ea5 2 * Implements a tiny USB disk
yihui 0:bc3d724e2ea5 3 */
yihui 0:bc3d724e2ea5 4
yihui 0:bc3d724e2ea5 5 #ifndef __USB_TINY_DISK_H__
yihui 0:bc3d724e2ea5 6 #define __USB_TINY_DISK_H__
yihui 0:bc3d724e2ea5 7
yihui 0:bc3d724e2ea5 8 #include "USBMSD.h"
yihui 0:bc3d724e2ea5 9
yihui 0:bc3d724e2ea5 10 class USBTinyDisk: public USBMSD {
yihui 0:bc3d724e2ea5 11 public:
yihui 0:bc3d724e2ea5 12 USBTinyDisk(uint16_t vendor_id = 0x2886, uint16_t product_id = 0x0070, uint16_t product_release = 0x0001);
yihui 0:bc3d724e2ea5 13
yihui 0:bc3d724e2ea5 14 protected:
yihui 0:bc3d724e2ea5 15 /*
yihui 0:bc3d724e2ea5 16 * read a block on a storage chip
yihui 0:bc3d724e2ea5 17 *
yihui 0:bc3d724e2ea5 18 * @param data pointer where will be stored read data
yihui 0:bc3d724e2ea5 19 * @param block block number
yihui 0:bc3d724e2ea5 20 * @returns 0 if successful
yihui 0:bc3d724e2ea5 21 */
yihui 0:bc3d724e2ea5 22 virtual int disk_read(uint8_t * data, uint64_t block);
yihui 0:bc3d724e2ea5 23
yihui 0:bc3d724e2ea5 24 /*
yihui 0:bc3d724e2ea5 25 * write a block on a storage chip
yihui 0:bc3d724e2ea5 26 *
yihui 0:bc3d724e2ea5 27 * @param data data to write
yihui 0:bc3d724e2ea5 28 * @param block block number
yihui 0:bc3d724e2ea5 29 * @returns 0 if successful
yihui 0:bc3d724e2ea5 30 */
yihui 0:bc3d724e2ea5 31 virtual int disk_write(const uint8_t * data, uint64_t block);
yihui 0:bc3d724e2ea5 32
yihui 0:bc3d724e2ea5 33 /*
yihui 0:bc3d724e2ea5 34 * Disk initilization
yihui 0:bc3d724e2ea5 35 */
yihui 0:bc3d724e2ea5 36 virtual int disk_initialize();
yihui 0:bc3d724e2ea5 37
yihui 0:bc3d724e2ea5 38 /*
yihui 0:bc3d724e2ea5 39 * Return the number of blocks
yihui 0:bc3d724e2ea5 40 *
yihui 0:bc3d724e2ea5 41 * @returns number of blocks
yihui 0:bc3d724e2ea5 42 */
yihui 0:bc3d724e2ea5 43 virtual uint64_t disk_sectors();
yihui 0:bc3d724e2ea5 44
yihui 0:bc3d724e2ea5 45 /*
yihui 0:bc3d724e2ea5 46 * Return memory size
yihui 0:bc3d724e2ea5 47 *
yihui 0:bc3d724e2ea5 48 * @returns memory size
yihui 0:bc3d724e2ea5 49 */
yihui 0:bc3d724e2ea5 50 virtual uint64_t disk_size();
yihui 0:bc3d724e2ea5 51
yihui 0:bc3d724e2ea5 52
yihui 0:bc3d724e2ea5 53 /*
yihui 0:bc3d724e2ea5 54 * To check the status of the storage chip
yihui 0:bc3d724e2ea5 55 *
yihui 0:bc3d724e2ea5 56 * @returns status: 0: OK, 1: disk not initialized, 2: no medium in the drive, 4: write protected
yihui 0:bc3d724e2ea5 57 */
yihui 0:bc3d724e2ea5 58 virtual int disk_status();
yihui 0:bc3d724e2ea5 59
yihui 0:bc3d724e2ea5 60 /*
yihui 0:bc3d724e2ea5 61 * Get string manufacturer descriptor
yihui 0:bc3d724e2ea5 62 *
yihui 0:bc3d724e2ea5 63 * @returns pointer to the string manufacturer descriptor
yihui 0:bc3d724e2ea5 64 */
yihui 0:bc3d724e2ea5 65 virtual uint8_t * stringImanufacturerDesc();
yihui 0:bc3d724e2ea5 66
yihui 0:bc3d724e2ea5 67 /*
yihui 0:bc3d724e2ea5 68 * Get string product descriptor
yihui 0:bc3d724e2ea5 69 *
yihui 0:bc3d724e2ea5 70 * @returns pointer to the string product descriptor
yihui 0:bc3d724e2ea5 71 */
yihui 0:bc3d724e2ea5 72 virtual uint8_t * stringIproductDesc();
yihui 0:bc3d724e2ea5 73
yihui 0:bc3d724e2ea5 74 /*
yihui 0:bc3d724e2ea5 75 * Get string serial descriptor
yihui 0:bc3d724e2ea5 76 *
yihui 0:bc3d724e2ea5 77 * @returns pointer to the string serial descriptor
yihui 0:bc3d724e2ea5 78 */
yihui 0:bc3d724e2ea5 79 virtual uint8_t * stringIserialDesc();
yihui 0:bc3d724e2ea5 80 };
yihui 0:bc3d724e2ea5 81
yihui 0:bc3d724e2ea5 82 #endif