see https://developer.mbed.org/users/okini3939/notebook/graphic-poi/
Dependencies: IAP RAM_DISK USBDevice mbed
Diff: file.cpp
- Revision:
- 2:d50445fa62da
- Parent:
- 0:49512863ec9b
--- a/file.cpp Thu Dec 01 02:01:22 2016 +0000 +++ b/file.cpp Thu Dec 01 06:31:12 2016 +0000 @@ -3,8 +3,6 @@ #include "IAP.h" #include "file.h" -//http://www.umekkii.jp/data/computer/file_format/bitmap.cgi - //USBMSD_Ram msd; IAP iap; extern DigitalOut led; @@ -15,7 +13,7 @@ int count = 0; int sector = 0; -int parseBmp (const uint8_t *buf) { +int parseBmp (const uint8_t *buf, int len) { int i, n = 0; if (modeBmp == 0) { @@ -39,10 +37,10 @@ led = 0; __disable_irq(); iap.prepare(FLASH_SECTOR + sector, FLASH_SECTOR + sector); - iap.write((char*)buf, sector_start_adress[FLASH_SECTOR + sector] + 512 * count, 512); + iap.write((char*)buf, sector_start_adress[FLASH_SECTOR + sector] + 512 * count, len); __enable_irq(); - count ++; - filesize -= 512; + count += len / 512; + filesize -= len; if (filesize <= 0 || count >= (FLASH_SECTOR_SIZE / 512)) { modeBmp = 0; @@ -57,7 +55,7 @@ return 0; } -void parseFat(int sector, const uint8_t *buf) { +void parseFat(int sector, const uint8_t *buf, int len) { int i; if (sector == 2) { @@ -75,7 +73,7 @@ if (sector > 2) { // data if (parseSector && sector >= parseSector) { - if (parseBmp(buf)) { + if (parseBmp(buf, len)) { parseSector = 0; } } else {