Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BaseDAP SWD USBDAP USBLocalFileSystem mbed DA14580 SWSPI W25X40BV
USB memory + Writer for DA14580 BLE chip + CMSIS-DAP debugger + USB-UART functions in one chip
One button input loads your application into DA14580 or DA14580 included BLE modules
Quote:
Current compatible hardware description can be found at https://github.com/K4zuki/da14580/releases/tag/MurataBLEr04
Revision 6:cb6984367a7a, committed 2016-03-04
- Comitter:
- k4zuki
- Date:
- Fri Mar 04 10:34:25 2016 +0000
- Parent:
- 5:77c115650c1f
- Child:
- 7:5b78247c45c2
- Commit message:
- multi libraries update
Changed in this revision
--- a/DA14580.lib Sat Sep 19 10:48:38 2015 +0000 +++ b/DA14580.lib Fri Mar 04 10:34:25 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/k4zuki/code/DA14580/#a9684679d1ec +http://mbed.org/users/k4zuki/code/DA14580/#db0ae78150a3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SWSPI.lib Fri Mar 04 10:34:25 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/k4zuki/code/SWSPI/#457a920a1223
--- a/USBDAP.lib Sat Sep 19 10:48:38 2015 +0000 +++ b/USBDAP.lib Fri Mar 04 10:34:25 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/va009039/code/USBDAP/#7dee016756ce +http://mbed.org/users/va009039/code/USBDAP/#13462db266a8
--- a/USBLocalFileSystem.lib Sat Sep 19 10:48:38 2015 +0000 +++ b/USBLocalFileSystem.lib Fri Mar 04 10:34:25 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/k4zuki/code/USBLocalFileSystem/#eafffa3c41d9 +https://developer.mbed.org/users/k4zuki/code/USBLocalFileSystem/#c396747794c6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/W25X40BV.lib Fri Mar 04 10:34:25 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/k4zuki/code/W25X40BV/#b422cdc9d751
--- a/at45db161d.lib Sat Sep 19 10:48:38 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/k4zuki/code/at45db161d/#111e8cf6f263
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/loader.h Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,1553 @@
+static const uint8_t loader[] = {
+0x00, 0x08, 0x1A, 0x80,
+0x00, 0x00, 0x00, 0xB5,
+0x00, 0x00, 0x00, 0xBD,
+0x00, 0x00, 0x00, 0xBF,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xC1,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xC3,
+0x00, 0x00, 0x00, 0xC5,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x08, 0x02, 0x23,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x46, 0x85, 0x48, 0x03,
+0xF8, 0x4A, 0xF0, 0x00,
+0x47, 0x00, 0x48, 0x00,
+0x00, 0x08, 0x09, 0xB5,
+0x00, 0x08, 0x1A, 0x80,
+0x47, 0x80, 0x48, 0x04,
+0x47, 0x00, 0x48, 0x04,
+0xE7, 0xFE, 0xE7, 0xFE,
+0xE7, 0xFE, 0xE7, 0xFE,
+0xE7, 0xFE, 0xE7, 0xFE,
+0x00, 0x00, 0x00, 0xD1,
+0x00, 0x00, 0x00, 0xA1,
+0x20, 0x06, 0x49, 0x15,
+0x20, 0xFF, 0x80, 0x08,
+0x30, 0x01, 0x49, 0x14,
+0x20, 0x05, 0x60, 0x08,
+0x89, 0x41, 0x07, 0x00,
+0xD4, 0x09, 0x06, 0x09,
+0x06, 0x09, 0x8A, 0x81,
+0x89, 0x41, 0xD5, 0xFC,
+0x00, 0x89, 0x08, 0x89,
+0x89, 0x41, 0x81, 0x41,
+0xD5, 0xFC, 0x06, 0x09,
+0x80, 0x01, 0x21, 0x00,
+0x68, 0x91, 0x4A, 0x0B,
+0x43, 0x99, 0x23, 0x3E,
+0x60, 0x91, 0x31, 0x0E,
+0x22, 0x0F, 0x8A, 0x01,
+0x43, 0x11, 0x02, 0x12,
+0x49, 0x08, 0x82, 0x01,
+0x60, 0x08, 0x48, 0x06,
+0x49, 0x06, 0x47, 0x70,
+0x60, 0x08, 0x48, 0x04,
+0x00, 0x00, 0x47, 0x70,
+0x50, 0x00, 0x34, 0x00,
+0xE0, 0x00, 0xE1, 0x80,
+0x50, 0x00, 0x33, 0x00,
+0x00, 0xF4, 0x24, 0x00,
+0x00, 0x08, 0x16, 0x68,
+0x25, 0x01, 0x4C, 0x06,
+0xE0, 0x05, 0x4E, 0x06,
+0xCC, 0x07, 0x68, 0xE3,
+0x3C, 0x0C, 0x43, 0x2B,
+0x34, 0x10, 0x47, 0x98,
+0xD3, 0xF7, 0x42, 0xB4,
+0xFF, 0xA8, 0xF7, 0xFF,
+0x00, 0x00, 0x01, 0x80,
+0x00, 0x00, 0x01, 0xB0,
+0xC8, 0x08, 0xE0, 0x02,
+0xC1, 0x08, 0x1F, 0x12,
+0xD1, 0xFA, 0x2A, 0x00,
+0x47, 0x70, 0x47, 0x70,
+0xE0, 0x01, 0x20, 0x00,
+0x1F, 0x12, 0xC1, 0x01,
+0xD1, 0xFB, 0x2A, 0x00,
+0x00, 0x00, 0x47, 0x70,
+0x00, 0x00, 0x01, 0xB0,
+0x00, 0x08, 0x00, 0x00,
+0x00, 0x00, 0x16, 0x68,
+0x00, 0x00, 0x01, 0x60,
+0x00, 0x00, 0x18, 0x18,
+0x00, 0x08, 0x16, 0x68,
+0x00, 0x00, 0x00, 0x24,
+0x00, 0x00, 0x01, 0x60,
+0x00, 0x00, 0x18, 0x3C,
+0x00, 0x08, 0x16, 0x8C,
+0x00, 0x00, 0x03, 0xF4,
+0x00, 0x00, 0x01, 0x70,
+0x68, 0x01, 0x48, 0x02,
+0x68, 0x42, 0x46, 0x8D,
+0x00, 0x00, 0x47, 0x10,
+0x20, 0x00, 0x00, 0x00,
+0x4A, 0x6F, 0xB5, 0x10,
+0x46, 0x11, 0x46, 0x04,
+0x39, 0x10, 0x23, 0x00,
+0xF0, 0x00, 0x48, 0x6D,
+0x48, 0x6C, 0xFD, 0x77,
+0xFE, 0x08, 0xF0, 0x00,
+0x46, 0x23, 0x22, 0x00,
+0x48, 0x69, 0x46, 0x11,
+0xFF, 0x2F, 0xF0, 0x00,
+0xB5, 0xF0, 0xBD, 0x10,
+0xB0, 0x99, 0x20, 0x00,
+0x46, 0x04, 0x90, 0x14,
+0x90, 0x16, 0x90, 0x13,
+0x46, 0x07, 0x90, 0x15,
+0x46, 0x05, 0x46, 0x06,
+0x21, 0x1F, 0x90, 0x17,
+0x22, 0x0C, 0x46, 0x68,
+0xF0, 0x00, 0x03, 0x09,
+0x46, 0x68, 0xF8, 0xB5,
+0x28, 0x70, 0x78, 0x00,
+0x46, 0x68, 0xD1, 0x78,
+0x28, 0x52, 0x78, 0x40,
+0x98, 0x01, 0xD1, 0x74,
+0x98, 0x02, 0x90, 0x11,
+0x46, 0x68, 0x90, 0x10,
+0x90, 0x12, 0x22, 0x40,
+0xF0, 0x00, 0x99, 0x11,
+0x46, 0x68, 0xF8, 0xA3,
+0x28, 0xAA, 0x78, 0x80,
+0x46, 0x68, 0xD1, 0x11,
+0x28, 0x70, 0x78, 0x00,
+0x46, 0x68, 0xD1, 0x0D,
+0x28, 0x51, 0x78, 0x40,
+0x98, 0x01, 0xD1, 0x09,
+0x46, 0x68, 0x90, 0x14,
+0x90, 0x16, 0x78, 0xC0,
+0x90, 0x17, 0x98, 0x02,
+0x78, 0x06, 0xA8, 0x08,
+0x22, 0x40, 0x24, 0x01,
+0x98, 0x12, 0x99, 0x10,
+0xF8, 0x88, 0xF0, 0x00,
+0x78, 0x80, 0x46, 0x68,
+0xD1, 0x10, 0x28, 0xAA,
+0x78, 0x00, 0x46, 0x68,
+0xD1, 0x0C, 0x28, 0x70,
+0x78, 0x40, 0x46, 0x68,
+0xD1, 0x08, 0x28, 0x51,
+0x78, 0xC0, 0x46, 0x68,
+0x98, 0x01, 0x90, 0x15,
+0xA8, 0x08, 0x90, 0x13,
+0x9F, 0x02, 0x78, 0x05,
+0x2C, 0x03, 0x1C, 0xA4,
+0x2C, 0x01, 0xD0, 0x04,
+0x2C, 0x02, 0xD0, 0x0E,
+0xE0, 0x5F, 0xD0, 0x35,
+0x98, 0x15, 0x99, 0x16,
+0xD1, 0x01, 0x29, 0xFF,
+0xD0, 0x2E, 0x28, 0x00,
+0xD1, 0x01, 0x28, 0xFF,
+0xD0, 0x01, 0x29, 0x00,
+0xD3, 0x28, 0x42, 0x81,
+0x20, 0x00, 0x99, 0x11,
+0x9A, 0x14, 0x31, 0x40,
+0xF8, 0x5A, 0xF0, 0x00,
+0xD0, 0x02, 0x2E, 0x00,
+0xF7, 0xFF, 0x98, 0x14,
+0x21, 0x00, 0xFF, 0x7B,
+0x9A, 0x14, 0x46, 0x08,
+0xFC, 0xE4, 0xF0, 0x00,
+0x42, 0x88, 0x99, 0x17,
+0x2C, 0x03, 0xD0, 0x40,
+0x99, 0x10, 0xD1, 0x3E,
+0x31, 0x40, 0x20, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x2D, 0x00, 0xF8, 0x45,
+0x98, 0x13, 0xD0, 0x02,
+0xFF, 0x66, 0xF7, 0xFF,
+0x46, 0x08, 0x21, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x42, 0xB8, 0xFC, 0xCF,
+0xE0, 0x2B, 0xD1, 0x28,
+0x99, 0x10, 0xE0, 0x26,
+0x31, 0x40, 0x20, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x2D, 0x00, 0xF8, 0x31,
+0x98, 0x13, 0xD0, 0x02,
+0xFF, 0x52, 0xF7, 0xFF,
+0x46, 0x08, 0x21, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x42, 0xB8, 0xFC, 0xBB,
+0x2C, 0x03, 0xD0, 0x18,
+0x99, 0x11, 0xD1, 0x16,
+0x31, 0x40, 0x20, 0x00,
+0xF0, 0x00, 0x9A, 0x14,
+0x2E, 0x00, 0xF8, 0x1D,
+0x98, 0x14, 0xD0, 0x02,
+0xFF, 0x3E, 0xF7, 0xFF,
+0x46, 0x08, 0x21, 0x00,
+0xF0, 0x00, 0x9A, 0x14,
+0x99, 0x17, 0xFC, 0xA7,
+0xD0, 0x03, 0x42, 0x88,
+0x43, 0xC0, 0x20, 0x00,
+0xBD, 0xF0, 0xB0, 0x19,
+0xE7, 0xFB, 0x20, 0x00,
+0xF0, 0x00, 0xB5, 0x10,
+0xF0, 0x00, 0xFC, 0x1B,
+0xF0, 0x00, 0xFA, 0x12,
+0xF7, 0xFF, 0xFC, 0x4B,
+0xBD, 0x10, 0xFF, 0x3A,
+0xF0, 0x00, 0xB5, 0x10,
+0x20, 0x00, 0xF9, 0x0C,
+0x00, 0x00, 0xBD, 0x10,
+0x00, 0x08, 0x0F, 0xE8,
+0x00, 0x08, 0x16, 0x8C,
+0x07, 0x09, 0x21, 0x05,
+0x23, 0x08, 0x88, 0x8A,
+0x80, 0x8A, 0x43, 0x1A,
+0x21, 0x02, 0x4A, 0x16,
+0x49, 0x16, 0x80, 0x51,
+0x60, 0x0A, 0x22, 0x00,
+0x80, 0x0A, 0x49, 0x15,
+0x02, 0x12, 0x22, 0x7D,
+0x80, 0xCA, 0x80, 0x8A,
+0x60, 0x10, 0x4A, 0x13,
+0x80, 0x08, 0x20, 0x07,
+0x01, 0x58, 0x49, 0x12,
+0x47, 0x70, 0x60, 0x08,
+0x20, 0x06, 0x49, 0x0E,
+0x20, 0xFF, 0x80, 0x08,
+0x30, 0x01, 0x49, 0x0F,
+0x49, 0x0D, 0x60, 0x08,
+0x60, 0x08, 0x31, 0x80,
+0x48, 0x0A, 0x47, 0x70,
+0x29, 0x00, 0x68, 0x01,
+0x68, 0x01, 0xD0, 0x03,
+0x60, 0x01, 0x1E, 0x49,
+0x49, 0x04, 0x47, 0x70,
+0x60, 0x08, 0x20, 0x01,
+0x20, 0x06, 0x49, 0x03,
+0x47, 0x70, 0x80, 0x08,
+0x50, 0x00, 0x33, 0x00,
+0x00, 0x08, 0x16, 0x84,
+0x50, 0x00, 0x34, 0x00,
+0x00, 0x08, 0x16, 0x80,
+0xE0, 0x00, 0xE1, 0x00,
+0xE0, 0x00, 0xE2, 0x80,
+0x60, 0xD1, 0x4A, 0xF7,
+0x47, 0x70, 0x60, 0x90,
+0x20, 0x01, 0xB5, 0x10,
+0xFA, 0xBB, 0xF0, 0x00,
+0x02, 0x00, 0x20, 0x05,
+0xFA, 0xF8, 0xF0, 0x00,
+0xBD, 0x10, 0xB2, 0xC0,
+0x24, 0x00, 0xB5, 0x70,
+0xF7, 0xFF, 0x4D, 0xF0,
+0x07, 0xC0, 0xFF, 0xF1,
+0x1C, 0x64, 0xD0, 0x04,
+0xD3, 0xF8, 0x42, 0xAC,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0xF0, 0xF7, 0xFF,
+0xD1, 0x17, 0x28, 0x00,
+0xFA, 0xA1, 0xF0, 0x00,
+0xFA, 0x4C, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x9F,
+0x20, 0x00, 0xFA, 0xC6,
+0xFA, 0xC3, 0xF0, 0x00,
+0x20, 0x00, 0x04, 0x05,
+0xFA, 0xBF, 0xF0, 0x00,
+0x43, 0x2C, 0x02, 0x04,
+0xF0, 0x00, 0x20, 0x00,
+0x43, 0x20, 0xFA, 0xBA,
+0xF0, 0x00, 0x46, 0x05,
+0x46, 0x28, 0xFA, 0x40,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0xDF, 0xF7, 0xFF,
+0x4A, 0xDB, 0x4C, 0xD9,
+0x23, 0x14, 0x21, 0x00,
+0x58, 0xD5, 0x43, 0x4B,
+0x68, 0x5B, 0x18, 0x9B,
+0x40, 0x03, 0x40, 0x1D,
+0xD1, 0x0E, 0x42, 0x9D,
+0xB2, 0x08, 0x23, 0x14,
+0x80, 0x20, 0x43, 0x4B,
+0x68, 0x9D, 0x18, 0x9B,
+0x68, 0xDB, 0x60, 0xA5,
+0x23, 0x14, 0x60, 0xE3,
+0x18, 0x80, 0x43, 0x58,
+0xB2, 0x48, 0x60, 0x60,
+0x1C, 0x49, 0xBD, 0x70,
+0x29, 0x04, 0xB2, 0x89,
+0x20, 0x00, 0xD3, 0xE3,
+0x1E, 0x40, 0x60, 0x60,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0xAC, 0xF7, 0xFF,
+0xD1, 0x15, 0x28, 0x00,
+0xFA, 0x5D, 0xF0, 0x00,
+0x25, 0x00, 0x4E, 0xC5,
+0xF0, 0x00, 0x20, 0x06,
+0x24, 0x00, 0xFA, 0x99,
+0xFF, 0x96, 0xF7, 0xFF,
+0xD1, 0x03, 0x07, 0xC1,
+0xD5, 0x01, 0x07, 0x80,
+0xBD, 0x70, 0x20, 0x00,
+0x42, 0xB4, 0x1C, 0x64,
+0x1C, 0x6D, 0xD3, 0xF4,
+0xD3, 0xED, 0x2D, 0x32,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0x8E, 0xF7, 0xFF,
+0xD1, 0x15, 0x28, 0x00,
+0xFA, 0x3F, 0xF0, 0x00,
+0x25, 0x00, 0x4E, 0xB6,
+0xF0, 0x00, 0x20, 0x50,
+0x24, 0x00, 0xFA, 0x7B,
+0xFF, 0x78, 0xF7, 0xFF,
+0xD1, 0x03, 0x07, 0xC1,
+0xD5, 0x01, 0x07, 0x80,
+0xBD, 0x70, 0x20, 0x00,
+0x42, 0xB4, 0x1C, 0x64,
+0x1C, 0x6D, 0xD3, 0xF4,
+0xD3, 0xED, 0x2D, 0x32,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0x70, 0xF7, 0xFF,
+0xD1, 0x11, 0x28, 0x00,
+0xFA, 0x21, 0xF0, 0x00,
+0x25, 0x00, 0x4E, 0xA7,
+0xF0, 0x00, 0x20, 0x04,
+0x24, 0x00, 0xFA, 0x5D,
+0xFF, 0x5A, 0xF7, 0xFF,
+0xD0, 0x07, 0x07, 0x80,
+0x42, 0xB4, 0x1C, 0x64,
+0x1C, 0x6D, 0xD3, 0xF8,
+0xD3, 0xF1, 0x2D, 0x32,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x10, 0xBD, 0x70,
+0xF7, 0xFF, 0x46, 0x04,
+0x28, 0x00, 0xFF, 0x55,
+0x20, 0x01, 0xD1, 0x08,
+0xFA, 0x05, 0xF0, 0x00,
+0x30, 0xF9, 0x1D, 0xE0,
+0xFA, 0x42, 0xF0, 0x00,
+0xFF, 0x4A, 0xF7, 0xFF,
+0xB5, 0x70, 0xBD, 0x10,
+0x48, 0x94, 0x46, 0x06,
+0x68, 0x80, 0x46, 0x0D,
+0x42, 0x81, 0x19, 0x51,
+0x1B, 0x44, 0xD9, 0x01,
+0x46, 0x14, 0xE0, 0x00,
+0xFF, 0x3C, 0xF7, 0xFF,
+0xD1, 0x1A, 0x28, 0x00,
+0xF0, 0x00, 0x20, 0x02,
+0xF0, 0x00, 0xF9, 0xEC,
+0x21, 0x03, 0xF9, 0x97,
+0x06, 0x09, 0x46, 0x28,
+0xF0, 0x00, 0x43, 0x08,
+0x20, 0x00, 0xFA, 0x0E,
+0xF9, 0xE1, 0xF0, 0x00,
+0xE0, 0x05, 0x25, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0x70, 0x30, 0xFA, 0x06,
+0x1C, 0x76, 0x1C, 0x6D,
+0xD3, 0xF7, 0x42, 0xA5,
+0xF9, 0x89, 0xF0, 0x00,
+0xBD, 0x70, 0x46, 0x20,
+0x46, 0x05, 0xB5, 0x70,
+0x46, 0x0E, 0x48, 0x7E,
+0x46, 0x14, 0x68, 0xC0,
+0xD9, 0x00, 0x42, 0x82,
+0xF7, 0xFF, 0xB2, 0x84,
+0x28, 0x00, 0xFF, 0x13,
+0xF7, 0xFF, 0xD1, 0x1E,
+0x28, 0x00, 0xFF, 0x60,
+0x20, 0x02, 0xD1, 0x1A,
+0xF9, 0xBF, 0xF0, 0x00,
+0xF9, 0x6A, 0xF0, 0x00,
+0x46, 0x30, 0x21, 0x01,
+0x43, 0x08, 0x06, 0x49,
+0xF9, 0xE1, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0xE0, 0x05, 0xF9, 0xB4,
+0x1C, 0x6D, 0x78, 0x28,
+0xF9, 0xD9, 0xF0, 0x00,
+0xB2, 0xA4, 0x1E, 0x64,
+0xD1, 0xF7, 0x2C, 0x00,
+0xF9, 0x5D, 0xF0, 0x00,
+0xFE, 0xF2, 0xF7, 0xFF,
+0xB5, 0x70, 0xBD, 0x70,
+0x46, 0x04, 0x46, 0x0D,
+0xFF, 0x3D, 0xF7, 0xFF,
+0xD0, 0x02, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x20, 0x02, 0xBD, 0x70,
+0xF9, 0x99, 0xF0, 0x00,
+0x43, 0x20, 0x06, 0x28,
+0xF9, 0xD6, 0xF0, 0x00,
+0xFE, 0xDE, 0xF7, 0xFF,
+0xB5, 0x10, 0xBD, 0x70,
+0xFF, 0x2B, 0xF7, 0xFF,
+0xD0, 0x02, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x20, 0x00, 0xBD, 0x10,
+0xF9, 0x87, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0xC7,
+0xF7, 0xFF, 0xF9, 0xC5,
+0xB2, 0x40, 0xFE, 0xCD,
+0xB5, 0x10, 0xBD, 0x10,
+0xF7, 0xFF, 0x24, 0x00,
+0x28, 0x00, 0xFE, 0xC7,
+0x20, 0x01, 0xD1, 0x11,
+0xF9, 0x77, 0xF0, 0x00,
+0xF9, 0x22, 0xF0, 0x00,
+0x03, 0x00, 0x20, 0x09,
+0xF9, 0x9B, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0x20, 0x00, 0xF9, 0x98,
+0xF9, 0x95, 0xF0, 0x00,
+0xF0, 0x00, 0xB2, 0x84,
+0xB2, 0x20, 0xF9, 0x1C,
+0xB5, 0x70, 0xBD, 0x10,
+0x46, 0x2C, 0x25, 0x00,
+0xFE, 0xAC, 0xF7, 0xFF,
+0xD1, 0x18, 0x28, 0x00,
+0xF9, 0x5D, 0xF0, 0x00,
+0xF9, 0x08, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x4B,
+0x20, 0x02, 0xF9, 0x82,
+0xF9, 0x55, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0x20, 0x00, 0xF9, 0x7C,
+0xF9, 0x79, 0xF0, 0x00,
+0x46, 0x04, 0x26, 0x00,
+0xF0, 0x00, 0x46, 0x30,
+0x43, 0x30, 0xF9, 0x74,
+0xF0, 0x00, 0x46, 0x05,
+0x46, 0x28, 0xF8, 0xFA,
+0xBD, 0x70, 0x46, 0x21,
+0xB0, 0x82, 0xB5, 0xF7,
+0x46, 0x0E, 0x4F, 0x36,
+0x68, 0xF9, 0x91, 0x00,
+0x46, 0x0D, 0x46, 0x14,
+0xF0, 0x00, 0x46, 0x30,
+0x1C, 0x40, 0xFC, 0xF9,
+0x1E, 0x45, 0x43, 0x68,
+0xF0, 0x00, 0x20, 0x00,
+0x68, 0xB8, 0xF9, 0x32,
+0x42, 0xA0, 0x1B, 0x80,
+0x46, 0x04, 0xD2, 0x00,
+0x27, 0x00, 0x46, 0x26,
+0x98, 0x00, 0xE0, 0x19,
+0x42, 0xA8, 0x19, 0x80,
+0x98, 0x00, 0xD9, 0x02,
+0x1C, 0x76, 0x1A, 0x2E,
+0xB2, 0xB2, 0x98, 0x02,
+0x99, 0x00, 0x19, 0xC0,
+0xFF, 0x4A, 0xF7, 0xFF,
+0xD0, 0x03, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0xBD, 0xF0, 0xB0, 0x05,
+0x90, 0x00, 0x1C, 0x68,
+0x19, 0xBF, 0x48, 0x20,
+0x18, 0x2D, 0x68, 0xC0,
+0x42, 0xA7, 0x1B, 0xE6,
+0x46, 0x38, 0xD3, 0xE3,
+0xB5, 0x10, 0xE7, 0xF2,
+0xFE, 0x54, 0xF7, 0xFF,
+0xD1, 0x05, 0x28, 0x00,
+0xF9, 0x05, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0xB9,
+0x20, 0x00, 0xF9, 0x43,
+0xB5, 0x10, 0xBD, 0x10,
+0xF0, 0x00, 0x20, 0x00,
+0x20, 0xAB, 0xF8, 0xFC,
+0xF9, 0x3A, 0xF0, 0x00,
+0xBD, 0x10, 0x20, 0x00,
+0x4C, 0x11, 0xB5, 0x70,
+0x68, 0x60, 0x46, 0x05,
+0xD0, 0x06, 0x28, 0x00,
+0xFE, 0x8B, 0xF7, 0xFF,
+0xD0, 0x05, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x20, 0x05, 0xBD, 0x70,
+0xBD, 0x70, 0x43, 0xC0,
+0xFE, 0x26, 0xF7, 0xFF,
+0x7C, 0x09, 0x68, 0x61,
+0x40, 0x29, 0x43, 0x88,
+0xF7, 0xFF, 0x43, 0x08,
+0xBD, 0x70, 0xFE, 0xD0,
+0x48, 0x04, 0xB5, 0x10,
+0x7C, 0x40, 0x68, 0x40,
+0xFF, 0xE0, 0xF7, 0xFF,
+0xD0, 0x07, 0x28, 0x00,
+0xBD, 0x10, 0xB2, 0x40,
+0x00, 0x08, 0x16, 0x6C,
+0x00, 0x03, 0x0D, 0x40,
+0x00, 0x08, 0x0F, 0xF8,
+0xFF, 0x39, 0xF7, 0xFF,
+0xB5, 0x70, 0xE7, 0xF5,
+0x48, 0x39, 0x46, 0x05,
+0x68, 0xC0, 0x46, 0x0E,
+0x42, 0x82, 0x46, 0x14,
+0xB2, 0x84, 0xD9, 0x00,
+0xFE, 0x0A, 0xF7, 0xFF,
+0xD1, 0x1D, 0x28, 0x00,
+0xFE, 0x57, 0xF7, 0xFF,
+0xD1, 0x19, 0x28, 0x00,
+0xF0, 0x00, 0x20, 0x02,
+0xF0, 0x00, 0xF8, 0xB6,
+0x21, 0x01, 0xF8, 0x61,
+0x06, 0x49, 0x46, 0x30,
+0xF0, 0x00, 0x43, 0x08,
+0x20, 0x00, 0xF8, 0xD8,
+0xF8, 0xAB, 0xF0, 0x00,
+0x46, 0x28, 0xE0, 0x04,
+0xF8, 0xD1, 0xF0, 0x00,
+0xB2, 0xA4, 0x1E, 0x64,
+0xD1, 0xF8, 0x2C, 0x00,
+0xF8, 0x55, 0xF0, 0x00,
+0xFD, 0xEA, 0xF7, 0xFF,
+0xB5, 0xF7, 0xBD, 0x70,
+0x4F, 0x23, 0xB0, 0x82,
+0x91, 0x00, 0x46, 0x0E,
+0x46, 0x14, 0x68, 0xF9,
+0x46, 0x30, 0x46, 0x0D,
+0xFC, 0x54, 0xF0, 0x00,
+0x43, 0x68, 0x1C, 0x40,
+0x20, 0x00, 0x1E, 0x45,
+0xF8, 0x8D, 0xF0, 0x00,
+0x1B, 0x80, 0x68, 0xB8,
+0xD2, 0x00, 0x42, 0xA0,
+0x46, 0x26, 0x46, 0x04,
+0xE0, 0x17, 0x27, 0x00,
+0x19, 0x80, 0x98, 0x00,
+0xD9, 0x02, 0x42, 0xA8,
+0x1A, 0x2E, 0x98, 0x00,
+0xB2, 0xB2, 0x1C, 0x76,
+0x98, 0x02, 0x99, 0x00,
+0xFF, 0xAF, 0xF7, 0xFF,
+0xD0, 0x02, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x1C, 0x68, 0xE7, 0x5A,
+0x48, 0x0E, 0x90, 0x00,
+0x68, 0xC0, 0x19, 0xBF,
+0x1B, 0xE6, 0x18, 0x2D,
+0xD3, 0xE5, 0x42, 0xA7,
+0xE7, 0x4F, 0x46, 0x38,
+0x46, 0x6A, 0xB5, 0x1F,
+0x73, 0x10, 0x73, 0x51,
+0x90, 0x00, 0x20, 0x00,
+0x46, 0x03, 0x90, 0x01,
+0x46, 0x01, 0x46, 0x02,
+0xA8, 0x03, 0x90, 0x02,
+0xF8, 0x16, 0xF0, 0x00,
+0xFF, 0x59, 0xF7, 0xFF,
+0xFD, 0xCD, 0xF7, 0xFF,
+0xE7, 0x80, 0xB0, 0x04,
+0x00, 0x08, 0x16, 0x6C,
+0x48, 0x4F, 0xB5, 0x10,
+0x78, 0x00, 0x78, 0x41,
+0xF8, 0xAB, 0xF0, 0x00,
+0xB5, 0x10, 0xBD, 0x10,
+0x78, 0x41, 0x48, 0x4B,
+0xF0, 0x00, 0x78, 0x00,
+0xBD, 0x10, 0xF8, 0xAE,
+0x46, 0x0E, 0xB5, 0xF8,
+0x49, 0x47, 0x46, 0x15,
+0x9F, 0x07, 0x78, 0x02,
+0x78, 0x40, 0x70, 0x0A,
+0x70, 0x48, 0x46, 0x1C,
+0xFF, 0xED, 0xF7, 0xFF,
+0x07, 0x00, 0x20, 0x05,
+0x22, 0x01, 0x88, 0x81,
+0x43, 0x11, 0x02, 0xD2,
+0x48, 0x40, 0x80, 0x81,
+0x08, 0x49, 0x88, 0x01,
+0x80, 0x01, 0x00, 0x49,
+0x22, 0xFF, 0x88, 0x01,
+0x43, 0x91, 0x32, 0x81,
+0x43, 0x11, 0x01, 0xF2,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x40,
+0x43, 0x11, 0x01, 0xAA,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x04,
+0x43, 0x11, 0x00, 0xA2,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x02,
+0x00, 0x52, 0x9A, 0x06,
+0x80, 0x01, 0x43, 0x11,
+0x22, 0x01, 0x88, 0x01,
+0x43, 0x91, 0x03, 0x92,
+0x43, 0x11, 0x03, 0xBA,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x18,
+0x00, 0xD2, 0x9A, 0x08,
+0x80, 0x01, 0x43, 0x11,
+0x22, 0x01, 0x88, 0x01,
+0x80, 0x01, 0x43, 0x11,
+0x49, 0x27, 0xBD, 0xF8,
+0x08, 0x52, 0x88, 0x0A,
+0x80, 0x0A, 0x00, 0x52,
+0x23, 0xFF, 0x88, 0x0A,
+0x43, 0x9A, 0x33, 0x81,
+0x43, 0x02, 0x01, 0xC0,
+0x88, 0x08, 0x80, 0x0A,
+0x43, 0x10, 0x22, 0x01,
+0x47, 0x70, 0x80, 0x08,
+0x48, 0x1E, 0xB5, 0x10,
+0x08, 0x49, 0x88, 0x01,
+0x80, 0x01, 0x00, 0x49,
+0x07, 0x00, 0x20, 0x05,
+0x22, 0x01, 0x88, 0x81,
+0x43, 0x91, 0x02, 0xD2,
+0x48, 0x17, 0x80, 0x81,
+0x78, 0x00, 0x78, 0x41,
+0xF8, 0x45, 0xF0, 0x00,
+0x48, 0x15, 0xBD, 0x10,
+0x08, 0x49, 0x88, 0x01,
+0x80, 0x01, 0x00, 0x49,
+0xB5, 0x10, 0x47, 0x70,
+0x23, 0x00, 0x49, 0x11,
+0x05, 0xD2, 0x88, 0x0A,
+0x2A, 0x01, 0x0F, 0x92,
+0x0C, 0x04, 0xD9, 0x01,
+0x80, 0x48, 0x80, 0x8C,
+0x04, 0x80, 0x88, 0x08,
+0x20, 0x01, 0xD5, 0xFC,
+0x2A, 0x01, 0x80, 0xC8,
+0x88, 0x88, 0xD9, 0x01,
+0x88, 0x48, 0x04, 0x03,
+0xBD, 0x10, 0x18, 0xC0,
+0x46, 0x04, 0xB5, 0x10,
+0xFF, 0x68, 0xF7, 0xFF,
+0xF7, 0xFF, 0x46, 0x20,
+0x46, 0x04, 0xFF, 0xE2,
+0xFF, 0x69, 0xF7, 0xFF,
+0xBD, 0x10, 0x46, 0x20,
+0x00, 0x08, 0x16, 0x7C,
+0x50, 0x00, 0x12, 0x00,
+0xB5, 0x10, 0x47, 0x70,
+0xD1, 0x00, 0x28, 0x03,
+0x4C, 0x29, 0x20, 0x04,
+0x19, 0x00, 0x01, 0x40,
+0x18, 0x08, 0x00, 0x49,
+0x80, 0xC2, 0x43, 0x1A,
+0x28, 0x03, 0xBD, 0x10,
+0x20, 0x04, 0xD1, 0x00,
+0x01, 0x40, 0x4A, 0x23,
+0x22, 0x01, 0x18, 0x80,
+0x80, 0x82, 0x40, 0x8A,
+0x28, 0x03, 0x47, 0x70,
+0x20, 0x04, 0xD1, 0x00,
+0x01, 0x40, 0x4A, 0x1E,
+0x22, 0x01, 0x18, 0x80,
+0x80, 0x42, 0x40, 0x8A,
+0xB5, 0x70, 0x47, 0x70,
+0x98, 0x04, 0x46, 0x06,
+0x28, 0x00, 0x46, 0x14,
+0x46, 0x30, 0x46, 0x0D,
+0xF7, 0xFF, 0xD0, 0x02,
+0xE0, 0x01, 0xFF, 0xEC,
+0xFF, 0xDF, 0xF7, 0xFF,
+0x46, 0x29, 0x46, 0x22,
+0xF7, 0xFF, 0x46, 0x30,
+0xBD, 0x70, 0xFF, 0xCE,
+0x28, 0x00, 0xB5, 0x10,
+0x1E, 0x43, 0xD0, 0x07,
+0x00, 0x5B, 0x4C, 0x0F,
+0x19, 0x1B, 0x34, 0x70,
+0xD0, 0x02, 0x28, 0x01,
+0x23, 0x00, 0xE0, 0x02,
+0x31, 0x08, 0xE7, 0xF6,
+0x24, 0x01, 0x88, 0x18,
+0x43, 0xA0, 0x40, 0x8C,
+0x43, 0x02, 0x40, 0x8A,
+0xBD, 0x10, 0x80, 0x1A,
+0xD1, 0x00, 0x28, 0x03,
+0x4A, 0x05, 0x20, 0x04,
+0x18, 0x80, 0x01, 0x40,
+0x22, 0x01, 0x88, 0x00,
+0x40, 0x10, 0x40, 0x8A,
+0x20, 0x01, 0xD0, 0x00,
+0x00, 0x00, 0x47, 0x70,
+0x50, 0x00, 0x30, 0x00,
+0xF7, 0xFF, 0xB5, 0x38,
+0x20, 0x01, 0xFF, 0x63,
+0x02, 0x02, 0x23, 0x00,
+0x46, 0x19, 0x90, 0x00,
+0xF7, 0xFF, 0x46, 0x18,
+0x24, 0x00, 0xFF, 0xBC,
+0x02, 0x6D, 0x25, 0x01,
+0x46, 0x2A, 0x46, 0x23,
+0x46, 0x20, 0x21, 0x05,
+0xF7, 0xFF, 0x94, 0x00,
+0x23, 0x00, 0xFF, 0xB2,
+0x21, 0x04, 0x46, 0x2A,
+0x94, 0x00, 0x46, 0x18,
+0xFF, 0xAB, 0xF7, 0xFF,
+0x46, 0x2A, 0x23, 0x00,
+0x46, 0x18, 0x21, 0x07,
+0xF7, 0xFF, 0x94, 0x00,
+0x05, 0x28, 0xFF, 0xA4,
+0x4C, 0x18, 0x68, 0x00,
+0xD5, 0x0B, 0x00, 0x80,
+0x46, 0x68, 0x8A, 0x61,
+0x88, 0x00, 0x80, 0x01,
+0x00, 0x89, 0x08, 0x81,
+0x80, 0x01, 0x46, 0x68,
+0x82, 0x60, 0x88, 0x00,
+0xFB, 0x32, 0xF7, 0xFF,
+0x46, 0x68, 0x8A, 0x61,
+0x88, 0x01, 0x80, 0x01,
+0x03, 0xC0, 0x20, 0x01,
+0x46, 0x68, 0x43, 0x01,
+0x88, 0x00, 0x80, 0x01,
+0xBD, 0x38, 0x82, 0x60,
+0x24, 0x08, 0x4D, 0x0B,
+0x48, 0x09, 0x80, 0x2C,
+0x22, 0x02, 0x8A, 0x01,
+0x82, 0x01, 0x43, 0x91,
+0x07, 0x09, 0x8A, 0x81,
+0x26, 0xC8, 0xD5, 0xFC,
+0xF7, 0xFF, 0x4F, 0x06,
+0x28, 0x00, 0xFB, 0xEF,
+0x80, 0x3E, 0xD1, 0xFB,
+0xF7, 0xFF, 0x80, 0x6C,
+0xE7, 0xF6, 0xFF, 0xAB,
+0x50, 0x00, 0x00, 0x00,
+0x50, 0x00, 0x33, 0x00,
+0x50, 0x00, 0x31, 0x00,
+0x20, 0x01, 0xB5, 0x3E,
+0x02, 0x2D, 0x25, 0x03,
+0x90, 0x00, 0x21, 0x00,
+0x46, 0x2A, 0x23, 0x08,
+0xF7, 0xFF, 0x46, 0x08,
+0x24, 0x00, 0xFF, 0x60,
+0x46, 0x2A, 0x23, 0x07,
+0x46, 0x20, 0x21, 0x05,
+0xF7, 0xFF, 0x94, 0x00,
+0x23, 0x06, 0xFF, 0x58,
+0x21, 0x04, 0x46, 0x2A,
+0x94, 0x00, 0x20, 0x00,
+0xFF, 0x51, 0xF7, 0xFF,
+0x23, 0x05, 0x22, 0x00,
+0x46, 0x10, 0x21, 0x07,
+0xF7, 0xFF, 0x94, 0x00,
+0x48, 0x2A, 0xFF, 0x4A,
+0x70, 0x44, 0x21, 0xFF,
+0x31, 0x01, 0x70, 0x04,
+0xF7, 0xFF, 0x02, 0x48,
+0x20, 0x02, 0xFC, 0x0D,
+0x90, 0x02, 0x23, 0x00,
+0x46, 0x1A, 0x94, 0x00,
+0x94, 0x01, 0x46, 0x19,
+0xF7, 0xFF, 0x48, 0x22,
+0xBD, 0x3E, 0xFE, 0x81,
+0xF7, 0xFF, 0xB5, 0x10,
+0x49, 0x20, 0xFD, 0x42,
+0x18, 0x42, 0xB2, 0x80,
+0x49, 0x20, 0x48, 0x1F,
+0x2A, 0x01, 0xD0, 0x02,
+0x00, 0x40, 0xD1, 0x00,
+0xFB, 0xF4, 0xF7, 0xFF,
+0x49, 0x1D, 0xBD, 0x10,
+0x88, 0x08, 0x80, 0x48,
+0xD5, 0xFC, 0x04, 0x80,
+0x80, 0xC8, 0x20, 0x01,
+0x47, 0x70, 0x88, 0x48,
+0x46, 0x15, 0xB5, 0x70,
+0x46, 0x06, 0x46, 0x0C,
+0xFE, 0x54, 0xF7, 0xFF,
+0xF7, 0xFF, 0x20, 0x03,
+0x02, 0x20, 0xFF, 0xEE,
+0xF7, 0xFF, 0x0E, 0x00,
+0x04, 0x20, 0xFF, 0xEA,
+0xF7, 0xFF, 0x0E, 0x00,
+0xB2, 0xE0, 0xFF, 0xE6,
+0xFF, 0xE3, 0xF7, 0xFF,
+0x20, 0x00, 0x4A, 0x0E,
+0xBF, 0x00, 0x80, 0x50,
+0x21, 0x00, 0xBF, 0x00,
+0x80, 0x50, 0xE0, 0x09,
+0xBF, 0x00, 0xBF, 0x00,
+0xBF, 0x00, 0xBF, 0x00,
+0xBF, 0x00, 0xBF, 0x00,
+0x54, 0x73, 0x88, 0x53,
+0x42, 0xA9, 0x1C, 0x49,
+0xF7, 0xFF, 0xD3, 0xF3,
+0xBD, 0x70, 0xFE, 0x38,
+0x00, 0x08, 0x16, 0x88,
+0xFF, 0xFF, 0x10, 0xF0,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x50, 0x00, 0x12, 0x00,
+0x43, 0xC0, 0xB5, 0x10,
+0xE0, 0x07, 0x4B, 0x06,
+0x40, 0x44, 0x78, 0x0C,
+0x0D, 0xA4, 0x06, 0x24,
+0x0A, 0x00, 0x59, 0x1C,
+0x1C, 0x49, 0x40, 0x60,
+0xD2, 0xF5, 0x1E, 0x52,
+0xBD, 0x10, 0x43, 0xC0,
+0x00, 0x08, 0x10, 0x48,
+0xB0, 0x83, 0xB5, 0xFF,
+0xD0, 0x4A, 0x2B, 0x00,
+0xD1, 0x7D, 0x2B, 0x01,
+0x25, 0x08, 0x20, 0x0E,
+0x80, 0x10, 0x9A, 0x03,
+0x80, 0x45, 0x98, 0x03,
+0x20, 0x00, 0x9F, 0x03,
+0x2D, 0x00, 0x1D, 0x3F,
+0x78, 0x0B, 0xDD, 0x27,
+0x46, 0x1A, 0x00, 0x84,
+0x1C, 0x80, 0x78, 0x4B,
+0x43, 0x1A, 0x02, 0x1B,
+0x04, 0x1B, 0x78, 0x8B,
+0x78, 0xCB, 0x43, 0x1A,
+0x43, 0x1A, 0x06, 0x1B,
+0x0A, 0x12, 0xBA, 0x12,
+0x02, 0x12, 0x78, 0xCB,
+0x51, 0x3A, 0x43, 0x1A,
+0x46, 0x1A, 0x79, 0x0B,
+0x02, 0x1B, 0x79, 0x4B,
+0x79, 0x8B, 0x43, 0x1A,
+0x43, 0x1A, 0x04, 0x1B,
+0x06, 0x1B, 0x79, 0xCB,
+0xBA, 0x12, 0x43, 0x1A,
+0x79, 0xCB, 0x0A, 0x12,
+0x43, 0x1A, 0x02, 0x12,
+0x31, 0x08, 0x19, 0xE3,
+0x42, 0xA8, 0x60, 0x5A,
+0x48, 0xF1, 0xDB, 0xD7,
+0x98, 0x03, 0x90, 0x00,
+0x88, 0x00, 0x46, 0x2E,
+0x1D, 0x00, 0x00, 0x80,
+0x42, 0x85, 0x90, 0x01,
+0x00, 0xB0, 0xDA, 0x47,
+0x19, 0xC0, 0x90, 0x02,
+0x6F, 0xC4, 0x38, 0x80,
+0x46, 0x30, 0x46, 0x29,
+0xF9, 0xF2, 0xF0, 0x00,
+0xD0, 0x03, 0x00, 0x0B,
+0x20, 0x0A, 0xE0, 0x1A,
+0xE7, 0xB5, 0x25, 0x04,
+0xB2, 0xE1, 0x48, 0xE5,
+0x02, 0x0A, 0x5C, 0x41,
+0x0E, 0x09, 0x04, 0x21,
+0x04, 0x09, 0x5C, 0x41,
+0x02, 0x22, 0x43, 0x11,
+0x5C, 0x82, 0x0E, 0x12,
+0x43, 0x0A, 0x06, 0x12,
+0x5C, 0x40, 0x0E, 0x21,
+0x43, 0x10, 0x99, 0x00,
+0x06, 0x0C, 0x78, 0x09,
+0x98, 0x00, 0x40, 0x44,
+0x90, 0x00, 0x1C, 0x40,
+0xD1, 0x12, 0x2D, 0x08,
+0xD1, 0x10, 0x2B, 0x04,
+0xB2, 0xE1, 0x48, 0xD7,
+0x04, 0x21, 0x5C, 0x42,
+0x5C, 0x41, 0x0E, 0x09,
+0x43, 0x11, 0x02, 0x09,
+0x0E, 0x12, 0x02, 0x22,
+0x04, 0x12, 0x5C, 0x82,
+0x0E, 0x21, 0x43, 0x0A,
+0x06, 0x04, 0x5C, 0x40,
+0x1B, 0x70, 0x43, 0x14,
+0x58, 0x38, 0x00, 0x80,
+0xE0, 0x00, 0x40, 0x60,
+0x99, 0x02, 0xE0, 0x0C,
+0x50, 0x78, 0x1C, 0x76,
+0x42, 0x86, 0x98, 0x01,
+0x98, 0x03, 0xDB, 0xB7,
+0x30, 0xFF, 0x22, 0x10,
+0x99, 0x05, 0x30, 0xE5,
+0xF9, 0xC0, 0xF0, 0x00,
+0xBD, 0xF0, 0xB0, 0x07,
+0x46, 0x05, 0xB4, 0xF0,
+0x35, 0x14, 0x88, 0x00,
+0x28, 0x04, 0x00, 0x80,
+0x68, 0x2C, 0xDD, 0x33,
+0x4B, 0xC2, 0x49, 0xC1,
+0x40, 0x0A, 0x46, 0x22,
+0x43, 0xDF, 0x09, 0xE6,
+0x1B, 0x92, 0x40, 0x3E,
+0x00, 0x61, 0x4E, 0xBF,
+0x40, 0x32, 0x40, 0x19,
+0x01, 0xFA, 0x40, 0x51,
+0x40, 0x16, 0x46, 0x0E,
+0x1B, 0xF6, 0x09, 0xF7,
+0x00, 0x4A, 0x4F, 0xBA,
+0x40, 0x3E, 0x40, 0x1A,
+0x4E, 0xB6, 0x40, 0x72,
+0x40, 0x16, 0x00, 0x57,
+0x09, 0xF3, 0x40, 0x1F,
+0x4E, 0xB5, 0x1A, 0xF3,
+0x40, 0x5F, 0x40, 0x33,
+0x40, 0x7C, 0x46, 0x0B,
+0x40, 0x61, 0x40, 0x53,
+0x40, 0x7B, 0x26, 0x18,
+0x40, 0x59, 0x41, 0xF1,
+0x23, 0x10, 0x40, 0x62,
+0x40, 0x4A, 0x41, 0xDA,
+0x41, 0xCC, 0x21, 0x08,
+0xC5, 0x10, 0x40, 0x54,
+0x28, 0x04, 0x1E, 0x40,
+0xBC, 0xF0, 0xDC, 0xCB,
+0xB5, 0xF0, 0x47, 0x70,
+0x88, 0x02, 0xB0, 0x95,
+0x01, 0x12, 0x92, 0x08,
+0x20, 0x00, 0x18, 0x12,
+0x32, 0x14, 0x25, 0x02,
+0x00, 0x84, 0x23, 0x03,
+0x1B, 0x14, 0x1A, 0x1B,
+0x3C, 0x80, 0x00, 0x9B,
+0x6F, 0xE7, 0x58, 0xCE,
+0x50, 0xCE, 0x40, 0x7E,
+0x1A, 0x1E, 0x23, 0x02,
+0x59, 0x8F, 0x00, 0xB6,
+0x1C, 0x80, 0x6F, 0xA4,
+0x51, 0x8F, 0x40, 0x67,
+0xD1, 0xEB, 0x1E, 0x6D,
+0x20, 0x00, 0x3A, 0x10,
+0x90, 0x05, 0x92, 0x12,
+0x28, 0x00, 0x98, 0x08,
+0x1E, 0x40, 0xDD, 0x7E,
+0x22, 0x04, 0x90, 0x09,
+0x07, 0xA4, 0x1C, 0x94,
+0x59, 0x0C, 0x0F, 0x24,
+0x02, 0x24, 0x4B, 0x94,
+0x5D, 0x1D, 0x0E, 0x24,
+0x1C, 0xD0, 0x1C, 0x54,
+0x07, 0x80, 0x07, 0xA4,
+0x0F, 0x00, 0x0F, 0x24,
+0x58, 0x08, 0x5B, 0x0C,
+0x04, 0x24, 0x07, 0x96,
+0x0E, 0x00, 0x0F, 0x36,
+0x5D, 0x8E, 0x0E, 0x24,
+0x5D, 0x1C, 0x5C, 0x18,
+0x9F, 0x05, 0x5D, 0x9B,
+0x42, 0xB7, 0x9E, 0x09,
+0x46, 0x06, 0xDA, 0x79,
+0x96, 0x03, 0x40, 0x6E,
+0xD5, 0x03, 0x06, 0x37,
+0x27, 0x1B, 0x00, 0x76,
+0xE0, 0x00, 0x40, 0x7E,
+0xB2, 0xF6, 0x00, 0x76,
+0x96, 0x07, 0x40, 0x65,
+0x06, 0x2E, 0x46, 0x2F,
+0x00, 0x7D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x7D, 0xE0, 0x00,
+0x95, 0x04, 0xB2, 0xED,
+0x40, 0x5D, 0x46, 0x25,
+0xD5, 0x03, 0x06, 0x2E,
+0x26, 0x1B, 0x00, 0x6D,
+0xE0, 0x00, 0x40, 0x75,
+0xB2, 0xED, 0x00, 0x6D,
+0x46, 0x1D, 0x95, 0x0E,
+0x06, 0x2E, 0x40, 0x45,
+0x00, 0x6D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x6D, 0xE0, 0x00,
+0x95, 0x13, 0xB2, 0xED,
+0x9D, 0x07, 0x9E, 0x04,
+0x06, 0x2E, 0x40, 0x75,
+0x00, 0x6D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x6D, 0xE0, 0x00,
+0x46, 0xAC, 0xB2, 0xED,
+0x9D, 0x04, 0x9E, 0x0E,
+0x06, 0x2E, 0x40, 0x75,
+0x00, 0x6D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x6D, 0xE0, 0x00,
+0x46, 0x66, 0xB2, 0xED,
+0x40, 0x6E, 0x46, 0xAE,
+0xD5, 0x03, 0x06, 0x35,
+0x26, 0x1B, 0x00, 0x75,
+0xE0, 0x00, 0x40, 0x75,
+0xB2, 0xEE, 0x00, 0x75,
+0x40, 0x5D, 0x46, 0x3D,
+0x40, 0x7D, 0x46, 0x67,
+0x40, 0x75, 0x9F, 0x07,
+0x40, 0x60, 0x40, 0x7D,
+0x46, 0x77, 0x40, 0x58,
+0x9F, 0x04, 0x40, 0x78,
+0x40, 0x78, 0x40, 0x70,
+0xE0, 0x00, 0x9F, 0x03,
+0x40, 0x5F, 0xE0, 0x49,
+0x40, 0x5F, 0x46, 0x63,
+0x40, 0x77, 0x9B, 0x0E,
+0x9B, 0x03, 0x40, 0x5F,
+0x40, 0x63, 0x04, 0x00,
+0x40, 0x63, 0x46, 0x74,
+0x40, 0x73, 0x9C, 0x13,
+0x06, 0x2C, 0x40, 0x63,
+0x02, 0x38, 0x43, 0x04,
+0x43, 0x1C, 0x43, 0x04,
+0xA8, 0x0A, 0x00, 0x93,
+0x38, 0x80, 0x18, 0x18,
+0xE0, 0x0B, 0x67, 0xC4,
+0x06, 0x00, 0xE7, 0xFF,
+0x43, 0x28, 0x04, 0x2D,
+0x43, 0x20, 0x02, 0x24,
+0x00, 0x94, 0x43, 0x18,
+0x18, 0xE3, 0xAB, 0x0A,
+0x67, 0xD8, 0x3B, 0x80,
+0xD0, 0x00, 0x1E, 0x52,
+0x20, 0x00, 0xE7, 0x5A,
+0x22, 0x03, 0x24, 0x02,
+0x00, 0x95, 0x1A, 0x12,
+0x00, 0x87, 0x9A, 0x12,
+0xAB, 0x0A, 0x1B, 0xD2,
+0x59, 0x5E, 0x3A, 0x80,
+0x40, 0x7E, 0x6F, 0xD7,
+0x25, 0x02, 0x51, 0x4E,
+0x00, 0xAD, 0x1A, 0x2D,
+0x6F, 0x92, 0x59, 0x5B,
+0x40, 0x53, 0x1C, 0x80,
+0x1E, 0x64, 0x51, 0x4B,
+0x98, 0x12, 0xD1, 0xE9,
+0x90, 0x12, 0x38, 0x10,
+0x9A, 0x08, 0x98, 0x05,
+0x90, 0x05, 0x1C, 0x40,
+0xDA, 0x00, 0x42, 0x90,
+0xB0, 0x15, 0xE7, 0x37,
+0xB5, 0xFF, 0xBD, 0xF0,
+0x98, 0x1B, 0xB0, 0x9B,
+0x30, 0x81, 0x30, 0xFF,
+0x6E, 0x44, 0x90, 0x00,
+0x6E, 0xC1, 0x6E, 0x82,
+0xBA, 0x25, 0x6F, 0x00,
+0x46, 0x1C, 0xBA, 0x00,
+0xBA, 0x0F, 0xBA, 0x16,
+0x3C, 0x10, 0x90, 0x03,
+0x22, 0x10, 0xD4, 0x3B,
+0x99, 0x1C, 0xA8, 0x12,
+0xF8, 0x7A, 0xF0, 0x00,
+0x30, 0x10, 0x98, 0x1C,
+0x98, 0x12, 0x90, 0x1C,
+0x90, 0x16, 0xBA, 0x00,
+0x98, 0x13, 0x90, 0x0A,
+0x98, 0x14, 0xBA, 0x01,
+0x91, 0x0B, 0x91, 0x02,
+0x98, 0x15, 0xBA, 0x01,
+0xBA, 0x00, 0x91, 0x18,
+0x90, 0x04, 0x91, 0x0C,
+0xA9, 0x0A, 0x90, 0x0D,
+0xF7, 0xFF, 0x98, 0x1B,
+0x98, 0x0A, 0xFE, 0xE2,
+0x40, 0x68, 0x99, 0x0D,
+0x90, 0x0E, 0xBA, 0x00,
+0x9D, 0x16, 0x98, 0x0B,
+0xBA, 0x00, 0x40, 0x70,
+0x98, 0x0C, 0x90, 0x0F,
+0x40, 0x78, 0x9E, 0x02,
+0x90, 0x10, 0xBA, 0x00,
+0x9F, 0x18, 0x98, 0x03,
+0x98, 0x04, 0x40, 0x41,
+0xBA, 0x08, 0x90, 0x03,
+0x22, 0x10, 0x90, 0x11,
+0x98, 0x1D, 0xA9, 0x0E,
+0xF8, 0x48, 0xF0, 0x00,
+0x30, 0x10, 0x98, 0x1D,
+0x3C, 0x10, 0x90, 0x1D,
+0x9A, 0x03, 0xD5, 0xC3,
+0xBA, 0x3B, 0x9C, 0x00,
+0x66, 0xE3, 0xBA, 0x12,
+0x67, 0x22, 0xBA, 0x31,
+0x66, 0xA1, 0xBA, 0x28,
+0xB0, 0x1F, 0x66, 0x60,
+0x00, 0x00, 0xBD, 0xF0,
+0x00, 0x08, 0x16, 0x48,
+0x00, 0x08, 0x14, 0x48,
+0x80, 0x80, 0x80, 0x80,
+0xFE, 0xFE, 0xFE, 0xFE,
+0x1B, 0x1B, 0x1B, 0x1B,
+0x00, 0x08, 0x15, 0x48,
+0x46, 0x0B, 0xB5, 0x30,
+0x20, 0x00, 0x46, 0x01,
+0x24, 0x01, 0x22, 0x20,
+0x46, 0x0D, 0xE0, 0x09,
+0x42, 0x9D, 0x40, 0xD5,
+0x46, 0x1D, 0xD3, 0x05,
+0x1B, 0x49, 0x40, 0x95,
+0x40, 0x95, 0x46, 0x25,
+0x46, 0x15, 0x19, 0x40,
+0x2D, 0x00, 0x1E, 0x52,
+0xBD, 0x30, 0xDC, 0xF1,
+0x24, 0x00, 0xB5, 0x70,
+0x28, 0x00, 0x46, 0x25,
+0x24, 0x01, 0xDA, 0x01,
+0x29, 0x00, 0x42, 0x40,
+0x25, 0x01, 0xDA, 0x01,
+0xF7, 0xFF, 0x42, 0x49,
+0x42, 0xAC, 0xFF, 0xDD,
+0x42, 0x40, 0xD0, 0x00,
+0xD0, 0x00, 0x2C, 0x00,
+0xBD, 0x70, 0x42, 0x49,
+0x43, 0x0B, 0x46, 0x03,
+0xD0, 0x03, 0x07, 0x9B,
+0xC9, 0x08, 0xE0, 0x09,
+0xC0, 0x08, 0x1F, 0x12,
+0xD2, 0xFA, 0x2A, 0x04,
+0x78, 0x0B, 0xE0, 0x03,
+0x1C, 0x40, 0x70, 0x03,
+0x1E, 0x52, 0x1C, 0x49,
+0x47, 0x70, 0xD2, 0xF9,
+0x40, 0x21, 0xA9, 0x06,
+0x5B, 0xA1, 0xB8, 0x36,
+0xD5, 0x03, 0x2E, 0x51,
+0x06, 0x00, 0x12, 0x34,
+0x42, 0xBA, 0xAF, 0x3D,
+0x30, 0xB4, 0x9E, 0x9D,
+0x80, 0xDA, 0x22, 0xB4,
+0x41, 0xAC, 0x9F, 0x2C,
+0x00, 0xEF, 0x30, 0x11,
+0x00, 0xFF, 0xFF, 0xFF,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x2C,
+0x00, 0xEF, 0x30, 0x12,
+0x00, 0xFF, 0xFF, 0xFF,
+0x00, 0x04, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x2C,
+0x00, 0x1F, 0x42, 0x00,
+0x00, 0xFF, 0xFF, 0x00,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x04,
+0x00, 0xC2, 0x20, 0x11,
+0x00, 0xFF, 0xFF, 0xFF,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x0C,
+0x00, 0x00, 0x00, 0x00,
+0x77, 0x07, 0x30, 0x96,
+0xEE, 0x0E, 0x61, 0x2C,
+0x99, 0x09, 0x51, 0xBA,
+0x07, 0x6D, 0xC4, 0x19,
+0x70, 0x6A, 0xF4, 0x8F,
+0xE9, 0x63, 0xA5, 0x35,
+0x9E, 0x64, 0x95, 0xA3,
+0x0E, 0xDB, 0x88, 0x32,
+0x79, 0xDC, 0xB8, 0xA4,
+0xE0, 0xD5, 0xE9, 0x1E,
+0x97, 0xD2, 0xD9, 0x88,
+0x09, 0xB6, 0x4C, 0x2B,
+0x7E, 0xB1, 0x7C, 0xBD,
+0xE7, 0xB8, 0x2D, 0x07,
+0x90, 0xBF, 0x1D, 0x91,
+0x1D, 0xB7, 0x10, 0x64,
+0x6A, 0xB0, 0x20, 0xF2,
+0xF3, 0xB9, 0x71, 0x48,
+0x84, 0xBE, 0x41, 0xDE,
+0x1A, 0xDA, 0xD4, 0x7D,
+0x6D, 0xDD, 0xE4, 0xEB,
+0xF4, 0xD4, 0xB5, 0x51,
+0x83, 0xD3, 0x85, 0xC7,
+0x13, 0x6C, 0x98, 0x56,
+0x64, 0x6B, 0xA8, 0xC0,
+0xFD, 0x62, 0xF9, 0x7A,
+0x8A, 0x65, 0xC9, 0xEC,
+0x14, 0x01, 0x5C, 0x4F,
+0x63, 0x06, 0x6C, 0xD9,
+0xFA, 0x0F, 0x3D, 0x63,
+0x8D, 0x08, 0x0D, 0xF5,
+0x3B, 0x6E, 0x20, 0xC8,
+0x4C, 0x69, 0x10, 0x5E,
+0xD5, 0x60, 0x41, 0xE4,
+0xA2, 0x67, 0x71, 0x72,
+0x3C, 0x03, 0xE4, 0xD1,
+0x4B, 0x04, 0xD4, 0x47,
+0xD2, 0x0D, 0x85, 0xFD,
+0xA5, 0x0A, 0xB5, 0x6B,
+0x35, 0xB5, 0xA8, 0xFA,
+0x42, 0xB2, 0x98, 0x6C,
+0xDB, 0xBB, 0xC9, 0xD6,
+0xAC, 0xBC, 0xF9, 0x40,
+0x32, 0xD8, 0x6C, 0xE3,
+0x45, 0xDF, 0x5C, 0x75,
+0xDC, 0xD6, 0x0D, 0xCF,
+0xAB, 0xD1, 0x3D, 0x59,
+0x26, 0xD9, 0x30, 0xAC,
+0x51, 0xDE, 0x00, 0x3A,
+0xC8, 0xD7, 0x51, 0x80,
+0xBF, 0xD0, 0x61, 0x16,
+0x21, 0xB4, 0xF4, 0xB5,
+0x56, 0xB3, 0xC4, 0x23,
+0xCF, 0xBA, 0x95, 0x99,
+0xB8, 0xBD, 0xA5, 0x0F,
+0x28, 0x02, 0xB8, 0x9E,
+0x5F, 0x05, 0x88, 0x08,
+0xC6, 0x0C, 0xD9, 0xB2,
+0xB1, 0x0B, 0xE9, 0x24,
+0x2F, 0x6F, 0x7C, 0x87,
+0x58, 0x68, 0x4C, 0x11,
+0xC1, 0x61, 0x1D, 0xAB,
+0xB6, 0x66, 0x2D, 0x3D,
+0x76, 0xDC, 0x41, 0x90,
+0x01, 0xDB, 0x71, 0x06,
+0x98, 0xD2, 0x20, 0xBC,
+0xEF, 0xD5, 0x10, 0x2A,
+0x71, 0xB1, 0x85, 0x89,
+0x06, 0xB6, 0xB5, 0x1F,
+0x9F, 0xBF, 0xE4, 0xA5,
+0xE8, 0xB8, 0xD4, 0x33,
+0x78, 0x07, 0xC9, 0xA2,
+0x0F, 0x00, 0xF9, 0x34,
+0x96, 0x09, 0xA8, 0x8E,
+0xE1, 0x0E, 0x98, 0x18,
+0x7F, 0x6A, 0x0D, 0xBB,
+0x08, 0x6D, 0x3D, 0x2D,
+0x91, 0x64, 0x6C, 0x97,
+0xE6, 0x63, 0x5C, 0x01,
+0x6B, 0x6B, 0x51, 0xF4,
+0x1C, 0x6C, 0x61, 0x62,
+0x85, 0x65, 0x30, 0xD8,
+0xF2, 0x62, 0x00, 0x4E,
+0x6C, 0x06, 0x95, 0xED,
+0x1B, 0x01, 0xA5, 0x7B,
+0x82, 0x08, 0xF4, 0xC1,
+0xF5, 0x0F, 0xC4, 0x57,
+0x65, 0xB0, 0xD9, 0xC6,
+0x12, 0xB7, 0xE9, 0x50,
+0x8B, 0xBE, 0xB8, 0xEA,
+0xFC, 0xB9, 0x88, 0x7C,
+0x62, 0xDD, 0x1D, 0xDF,
+0x15, 0xDA, 0x2D, 0x49,
+0x8C, 0xD3, 0x7C, 0xF3,
+0xFB, 0xD4, 0x4C, 0x65,
+0x4D, 0xB2, 0x61, 0x58,
+0x3A, 0xB5, 0x51, 0xCE,
+0xA3, 0xBC, 0x00, 0x74,
+0xD4, 0xBB, 0x30, 0xE2,
+0x4A, 0xDF, 0xA5, 0x41,
+0x3D, 0xD8, 0x95, 0xD7,
+0xA4, 0xD1, 0xC4, 0x6D,
+0xD3, 0xD6, 0xF4, 0xFB,
+0x43, 0x69, 0xE9, 0x6A,
+0x34, 0x6E, 0xD9, 0xFC,
+0xAD, 0x67, 0x88, 0x46,
+0xDA, 0x60, 0xB8, 0xD0,
+0x44, 0x04, 0x2D, 0x73,
+0x33, 0x03, 0x1D, 0xE5,
+0xAA, 0x0A, 0x4C, 0x5F,
+0xDD, 0x0D, 0x7C, 0xC9,
+0x50, 0x05, 0x71, 0x3C,
+0x27, 0x02, 0x41, 0xAA,
+0xBE, 0x0B, 0x10, 0x10,
+0xC9, 0x0C, 0x20, 0x86,
+0x57, 0x68, 0xB5, 0x25,
+0x20, 0x6F, 0x85, 0xB3,
+0xB9, 0x66, 0xD4, 0x09,
+0xCE, 0x61, 0xE4, 0x9F,
+0x5E, 0xDE, 0xF9, 0x0E,
+0x29, 0xD9, 0xC9, 0x98,
+0xB0, 0xD0, 0x98, 0x22,
+0xC7, 0xD7, 0xA8, 0xB4,
+0x59, 0xB3, 0x3D, 0x17,
+0x2E, 0xB4, 0x0D, 0x81,
+0xB7, 0xBD, 0x5C, 0x3B,
+0xC0, 0xBA, 0x6C, 0xAD,
+0xED, 0xB8, 0x83, 0x20,
+0x9A, 0xBF, 0xB3, 0xB6,
+0x03, 0xB6, 0xE2, 0x0C,
+0x74, 0xB1, 0xD2, 0x9A,
+0xEA, 0xD5, 0x47, 0x39,
+0x9D, 0xD2, 0x77, 0xAF,
+0x04, 0xDB, 0x26, 0x15,
+0x73, 0xDC, 0x16, 0x83,
+0xE3, 0x63, 0x0B, 0x12,
+0x94, 0x64, 0x3B, 0x84,
+0x0D, 0x6D, 0x6A, 0x3E,
+0x7A, 0x6A, 0x5A, 0xA8,
+0xE4, 0x0E, 0xCF, 0x0B,
+0x93, 0x09, 0xFF, 0x9D,
+0x0A, 0x00, 0xAE, 0x27,
+0x7D, 0x07, 0x9E, 0xB1,
+0xF0, 0x0F, 0x93, 0x44,
+0x87, 0x08, 0xA3, 0xD2,
+0x1E, 0x01, 0xF2, 0x68,
+0x69, 0x06, 0xC2, 0xFE,
+0xF7, 0x62, 0x57, 0x5D,
+0x80, 0x65, 0x67, 0xCB,
+0x19, 0x6C, 0x36, 0x71,
+0x6E, 0x6B, 0x06, 0xE7,
+0xFE, 0xD4, 0x1B, 0x76,
+0x89, 0xD3, 0x2B, 0xE0,
+0x10, 0xDA, 0x7A, 0x5A,
+0x67, 0xDD, 0x4A, 0xCC,
+0xF9, 0xB9, 0xDF, 0x6F,
+0x8E, 0xBE, 0xEF, 0xF9,
+0x17, 0xB7, 0xBE, 0x43,
+0x60, 0xB0, 0x8E, 0xD5,
+0xD6, 0xD6, 0xA3, 0xE8,
+0xA1, 0xD1, 0x93, 0x7E,
+0x38, 0xD8, 0xC2, 0xC4,
+0x4F, 0xDF, 0xF2, 0x52,
+0xD1, 0xBB, 0x67, 0xF1,
+0xA6, 0xBC, 0x57, 0x67,
+0x3F, 0xB5, 0x06, 0xDD,
+0x48, 0xB2, 0x36, 0x4B,
+0xD8, 0x0D, 0x2B, 0xDA,
+0xAF, 0x0A, 0x1B, 0x4C,
+0x36, 0x03, 0x4A, 0xF6,
+0x41, 0x04, 0x7A, 0x60,
+0xDF, 0x60, 0xEF, 0xC3,
+0xA8, 0x67, 0xDF, 0x55,
+0x31, 0x6E, 0x8E, 0xEF,
+0x46, 0x69, 0xBE, 0x79,
+0xCB, 0x61, 0xB3, 0x8C,
+0xBC, 0x66, 0x83, 0x1A,
+0x25, 0x6F, 0xD2, 0xA0,
+0x52, 0x68, 0xE2, 0x36,
+0xCC, 0x0C, 0x77, 0x95,
+0xBB, 0x0B, 0x47, 0x03,
+0x22, 0x02, 0x16, 0xB9,
+0x55, 0x05, 0x26, 0x2F,
+0xC5, 0xBA, 0x3B, 0xBE,
+0xB2, 0xBD, 0x0B, 0x28,
+0x2B, 0xB4, 0x5A, 0x92,
+0x5C, 0xB3, 0x6A, 0x04,
+0xC2, 0xD7, 0xFF, 0xA7,
+0xB5, 0xD0, 0xCF, 0x31,
+0x2C, 0xD9, 0x9E, 0x8B,
+0x5B, 0xDE, 0xAE, 0x1D,
+0x9B, 0x64, 0xC2, 0xB0,
+0xEC, 0x63, 0xF2, 0x26,
+0x75, 0x6A, 0xA3, 0x9C,
+0x02, 0x6D, 0x93, 0x0A,
+0x9C, 0x09, 0x06, 0xA9,
+0xEB, 0x0E, 0x36, 0x3F,
+0x72, 0x07, 0x67, 0x85,
+0x05, 0x00, 0x57, 0x13,
+0x95, 0xBF, 0x4A, 0x82,
+0xE2, 0xB8, 0x7A, 0x14,
+0x7B, 0xB1, 0x2B, 0xAE,
+0x0C, 0xB6, 0x1B, 0x38,
+0x92, 0xD2, 0x8E, 0x9B,
+0xE5, 0xD5, 0xBE, 0x0D,
+0x7C, 0xDC, 0xEF, 0xB7,
+0x0B, 0xDB, 0xDF, 0x21,
+0x86, 0xD3, 0xD2, 0xD4,
+0xF1, 0xD4, 0xE2, 0x42,
+0x68, 0xDD, 0xB3, 0xF8,
+0x1F, 0xDA, 0x83, 0x6E,
+0x81, 0xBE, 0x16, 0xCD,
+0xF6, 0xB9, 0x26, 0x5B,
+0x6F, 0xB0, 0x77, 0xE1,
+0x18, 0xB7, 0x47, 0x77,
+0x88, 0x08, 0x5A, 0xE6,
+0xFF, 0x0F, 0x6A, 0x70,
+0x66, 0x06, 0x3B, 0xCA,
+0x11, 0x01, 0x0B, 0x5C,
+0x8F, 0x65, 0x9E, 0xFF,
+0xF8, 0x62, 0xAE, 0x69,
+0x61, 0x6B, 0xFF, 0xD3,
+0x16, 0x6C, 0xCF, 0x45,
+0xA0, 0x0A, 0xE2, 0x78,
+0xD7, 0x0D, 0xD2, 0xEE,
+0x4E, 0x04, 0x83, 0x54,
+0x39, 0x03, 0xB3, 0xC2,
+0xA7, 0x67, 0x26, 0x61,
+0xD0, 0x60, 0x16, 0xF7,
+0x49, 0x69, 0x47, 0x4D,
+0x3E, 0x6E, 0x77, 0xDB,
+0xAE, 0xD1, 0x6A, 0x4A,
+0xD9, 0xD6, 0x5A, 0xDC,
+0x40, 0xDF, 0x0B, 0x66,
+0x37, 0xD8, 0x3B, 0xF0,
+0xA9, 0xBC, 0xAE, 0x53,
+0xDE, 0xBB, 0x9E, 0xC5,
+0x47, 0xB2, 0xCF, 0x7F,
+0x30, 0xB5, 0xFF, 0xE9,
+0xBD, 0xBD, 0xF2, 0x1C,
+0xCA, 0xBA, 0xC2, 0x8A,
+0x53, 0xB3, 0x93, 0x30,
+0x24, 0xB4, 0xA3, 0xA6,
+0xBA, 0xD0, 0x36, 0x05,
+0xCD, 0xD7, 0x06, 0x93,
+0x54, 0xDE, 0x57, 0x29,
+0x23, 0xD9, 0x67, 0xBF,
+0xB3, 0x66, 0x7A, 0x2E,
+0xC4, 0x61, 0x4A, 0xB8,
+0x5D, 0x68, 0x1B, 0x02,
+0x2A, 0x6F, 0x2B, 0x94,
+0xB4, 0x0B, 0xBE, 0x37,
+0xC3, 0x0C, 0x8E, 0xA1,
+0x5A, 0x05, 0xDF, 0x1B,
+0x2D, 0x02, 0xEF, 0x8D,
+0x7B, 0x77, 0x7C, 0x63,
+0xC5, 0x6F, 0x6B, 0xF2,
+0x2B, 0x67, 0x01, 0x30,
+0x76, 0xAB, 0xD7, 0xFE,
+0x7D, 0xC9, 0x82, 0xCA,
+0xF0, 0x47, 0x59, 0xFA,
+0xAF, 0xA2, 0xD4, 0xAD,
+0xC0, 0x72, 0xA4, 0x9C,
+0x26, 0x93, 0xFD, 0xB7,
+0xCC, 0xF7, 0x3F, 0x36,
+0xF1, 0xE5, 0xA5, 0x34,
+0x15, 0x31, 0xD8, 0x71,
+0xC3, 0x23, 0xC7, 0x04,
+0x9A, 0x05, 0x96, 0x18,
+0xE2, 0x80, 0x12, 0x07,
+0x75, 0xB2, 0x27, 0xEB,
+0x1A, 0x2C, 0x83, 0x09,
+0xA0, 0x5A, 0x6E, 0x1B,
+0xB3, 0xD6, 0x3B, 0x52,
+0x84, 0x2F, 0xE3, 0x29,
+0xED, 0x00, 0xD1, 0x53,
+0x5B, 0xB1, 0xFC, 0x20,
+0x39, 0xBE, 0xCB, 0x6A,
+0xCF, 0x58, 0x4C, 0x4A,
+0xFB, 0xAA, 0xEF, 0xD0,
+0x85, 0x33, 0x4D, 0x43,
+0x7F, 0x02, 0xF9, 0x45,
+0xA8, 0x9F, 0x3C, 0x50,
+0x8F, 0x40, 0xA3, 0x51,
+0xF5, 0x38, 0x9D, 0x92,
+0x21, 0xDA, 0xB6, 0xBC,
+0xD2, 0xF3, 0xFF, 0x10,
+0xEC, 0x13, 0x0C, 0xCD,
+0x17, 0x44, 0x97, 0x5F,
+0x3D, 0x7E, 0xA7, 0xC4,
+0x73, 0x19, 0x5D, 0x64,
+0xDC, 0x4F, 0x81, 0x60,
+0x88, 0x90, 0x2A, 0x22,
+0x14, 0xB8, 0xEE, 0x46,
+0xDB, 0x0B, 0x5E, 0xDE,
+0x0A, 0x3A, 0x32, 0xE0,
+0x5C, 0x24, 0x06, 0x49,
+0x62, 0xAC, 0xD3, 0xC2,
+0x79, 0xE4, 0x95, 0x91,
+0x6D, 0x37, 0xC8, 0xE7,
+0xA9, 0x4E, 0xD5, 0x8D,
+0xEA, 0xF4, 0x56, 0x6C,
+0x08, 0xAE, 0x7A, 0x65,
+0x2E, 0x25, 0x78, 0xBA,
+0xC6, 0xB4, 0xA6, 0x1C,
+0x1F, 0x74, 0xDD, 0xE8,
+0x8A, 0x8B, 0xBD, 0x4B,
+0x66, 0xB5, 0x3E, 0x70,
+0x0E, 0xF6, 0x03, 0x48,
+0xB9, 0x57, 0x35, 0x61,
+0x9E, 0x1D, 0xC1, 0x86,
+0x11, 0x98, 0xF8, 0xE1,
+0x94, 0x8E, 0xD9, 0x69,
+0xE9, 0x87, 0x1E, 0x9B,
+0xDF, 0x28, 0x55, 0xCE,
+0x0D, 0x89, 0xA1, 0x8C,
+0x68, 0x42, 0xE6, 0xBF,
+0x0F, 0x2D, 0x99, 0x41,
+0x16, 0xBB, 0x54, 0xB0,
+0xD5, 0x6A, 0x09, 0x52,
+0x38, 0xA5, 0x36, 0x30,
+0x9E, 0xA3, 0x40, 0xBF,
+0xFB, 0xD7, 0xF3, 0x81,
+0x82, 0x39, 0xE3, 0x7C,
+0x87, 0xFF, 0x2F, 0x9B,
+0x44, 0x43, 0x8E, 0x34,
+0xCB, 0xE9, 0xDE, 0xC4,
+0x32, 0x94, 0x7B, 0x54,
+0x3D, 0x23, 0xC2, 0xA6,
+0x0B, 0x95, 0x4C, 0xEE,
+0x4E, 0xC3, 0xFA, 0x42,
+0x66, 0xA1, 0x2E, 0x08,
+0xB2, 0x24, 0xD9, 0x28,
+0x49, 0xA2, 0x5B, 0x76,
+0x25, 0xD1, 0x8B, 0x6D,
+0x64, 0xF6, 0xF8, 0x72,
+0x16, 0x98, 0x68, 0x86,
+0xCC, 0x5C, 0xA4, 0xD4,
+0x92, 0xB6, 0x65, 0x5D,
+0x50, 0x48, 0x70, 0x6C,
+0xDA, 0xB9, 0xED, 0xFD,
+0x57, 0x46, 0x15, 0x5E,
+0x84, 0x9D, 0x8D, 0xA7,
+0x00, 0xAB, 0xD8, 0x90,
+0x0A, 0xD3, 0xBC, 0x8C,
+0x05, 0x58, 0xE4, 0xF7,
+0x06, 0x45, 0xB3, 0xB8,
+0x8F, 0x1E, 0x2C, 0xD0,
+0x02, 0x0F, 0x3F, 0xCA,
+0x03, 0xBD, 0xAF, 0xC1,
+0x6B, 0x8A, 0x13, 0x01,
+0x41, 0x11, 0x91, 0x3A,
+0xEA, 0xDC, 0x67, 0x4F,
+0xCE, 0xCF, 0xF2, 0x97,
+0x73, 0xE6, 0xB4, 0xF0,
+0x22, 0x74, 0xAC, 0x96,
+0x85, 0x35, 0xAD, 0xE7,
+0xE8, 0x37, 0xF9, 0xE2,
+0x6E, 0xDF, 0x75, 0x1C,
+0x71, 0x1A, 0xF1, 0x47,
+0x89, 0xC5, 0x29, 0x1D,
+0x0E, 0x62, 0xB7, 0x6F,
+0x1B, 0xBE, 0x18, 0xAA,
+0x4B, 0x3E, 0x56, 0xFC,
+0x20, 0x79, 0xD2, 0xC6,
+0xFE, 0xC0, 0xDB, 0x9A,
+0xF4, 0x5A, 0xCD, 0x78,
+0x33, 0xA8, 0xDD, 0x1F,
+0x31, 0xC7, 0x07, 0x88,
+0x59, 0x10, 0x12, 0xB1,
+0x5F, 0xEC, 0x80, 0x27,
+0xA9, 0x7F, 0x51, 0x60,
+0x0D, 0x4A, 0xB5, 0x19,
+0x9F, 0x7A, 0xE5, 0x2D,
+0xEF, 0x9C, 0xC9, 0x93,
+0x4D, 0x3B, 0xE0, 0xA0,
+0xB0, 0xF5, 0x2A, 0xAE,
+0x3C, 0xBB, 0xEB, 0xC8,
+0x61, 0x99, 0x53, 0x83,
+0x7E, 0x04, 0x2B, 0x17,
+0x26, 0xD6, 0x77, 0xBA,
+0x63, 0x14, 0x69, 0xE1,
+0x7D, 0x0C, 0x21, 0x55,
+0x08, 0x04, 0x02, 0x01,
+0x80, 0x40, 0x20, 0x10,
+0xD8, 0x6C, 0x36, 0x1B,
+0x2F, 0x9A, 0x4D, 0xAB,
+0xC6, 0x63, 0xBC, 0x5E,
+0xD4, 0x6A, 0x35, 0x97,
+0xEF, 0xFA, 0x7D, 0xB3,
+0x00, 0x00, 0x91, 0xC5,
+0x00, 0xF4, 0x24, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00
+};
\ No newline at end of file
--- a/main.cpp Sat Sep 19 10:48:38 2015 +0000
+++ b/main.cpp Fri Mar 04 10:34:25 2016 +0000
@@ -4,52 +4,89 @@
#include "BaseDAP.h"
#include "USB_HID.h"
#include "DA14580.h"
-
-#include "at45db161d.h"
-
-#undef PAGE_SIZE
-//#define PAGE_SIZE 264 // AT45DB081D (1MB)
-#define PAGE_SIZE 256 // AT25XE011 (1Mbit)
-//#define PAGE_SIZE 528 // AT45DB321D (4MB)
+#include "W25X40BV.h"
+#include "loader.h"
+/**
+- UART -
+TX = P0_19
+RX = P0_18
+- SWD -
+SWDIO = P0_4
+SWCLK = P0_5
+NSRST = P0_21
+TGT_RST = P1_19
+- SD -
+MOSI = P0_8
+MISO = P0_10
+SCK = P0_9
+CS = P0_7
+DETECT2 = P0_22
+- 580 -
+MOSI = P0_15
+MISO = P0_13
+SCK = P0_14
+CS = P0_16
+DETECT1 = P0_11
+- LED -
+GREEN = P0_20
+YELLOW = P0_2
+*BL = P0_14*
+*/
+/** r0.1
+- UART -
+TX = P0_19
+RX = P0_18
+- SWD -
+SWDIO = P0_4
+SWCLK = P0_5
+NSRST = P0_21
+- SD -
+MOSI = P0_8
+MISO = P0_10
+SCK = P0_9
+CS = P0_7
+- 580/SPI Flash -
+MOSI = P0_15
+MISO = P0_13
+SCK = P0_14
+CS = P0_16
+- LED -
+GREEN = P0_20
+YELLOW = P0_2
+*/
-//#define PAGE_NUM 4095 // AT45DB081D (1MB)
-#define PAGE_NUM 512 // AT25XE011 (1Mbit)
-//#define PAGE_NUM 8192 // AT45DB321D (4MB)
+#undef LOADER_FILE
+#define LOADER_FILE "/local/loader.bin"
-#define WRITE_BUFFER 1
-#define READ_BUFFER 2
-
-#define LOADER_FILE "/local/loader.bin"
+#undef TARGET_FILE
#define TARGET_FILE "/local/target.bin"
-#if defined(TARGET_LPC1768)
-//SWD swd(p25,p24,p23); // SWDIO,SWCLK,nRESET
-SWD swd(p24, p23, p22); // SWDIO,SWCLK,nRESET
-DigitalOut connected(LED1);
-DigitalOut running(LED4);
-
-SWSPI spi(p5, p7, p6); // mosi, miso, sclk
+//SWD swd(P0_4, P0_5, P0_21); // SWDIO,SWCLK,nRESET
-ATD45DB161D memory(spi, p8);
-RawSerial ble(p5, p6);
-DA14580 BLE(ble, p26);
-
-#elif defined(TARGET_LPC11U35_501)
-//SWD swd(p25,p24,p23); // SWDIO,SWCLK,nRESET
-SWD swd(P0_5,P0_4,P0_21); // SWDIO,SWCLK,nRESET
DigitalOut connected(P0_20);
DigitalOut running(P0_2);
-SWSPI spi(P0_9,P0_8,P0_10); // mosi, miso, sclk
-ATD45DB161D memory(spi, P0_7);
-RawSerial ble(P0_19,P0_18);
-DA14580 BLE(ble, P0_1);
-#endif
+InterruptIn BL(P1_19);
+volatile bool isISP = false;
+void BL_int();
+
+W25X40BV memory(P0_15, P0_13, P0_14, P0_16); // mosi, miso, sclk, cs
+uint8_t Headerbuffer[8]={0x70,0x50,0x00,0x00,0x00,0x00,0x00,0x00};
+/*
+header[0] | 0x70 | 'p'
+header[1] | 0x50 | 'P'
+header[2] | 0x00 | dummy[3]
+header[3] | 0x00 | dummy[2]
+header[4] | 0x00 | dummy[1]
+header[5] | 0x00 | dummy[0]
+header[6] | 0x00 | binary size MSB <- to be replaced to actual size
+header[7] | 0x00 | binary size LSB <- to be replaced to actual size
+*/
+DA14580 BLE(P0_19, P0_18, P0_21); // TX, RX, RESET
int file_size( FILE *fp );
-void flash_write (int addr, char *buf, int len);
-void flash_read (int addr, char *buf, int len);
+/*
class myDAP : public BaseDAP
{
public:
@@ -67,61 +104,127 @@
}
}
};
+*/
-
+MyStorage flash(P0_15, P0_13, P0_14, P0_16);
int main()
{
-// USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_9, P0_8, P0_10, P0_7,"local"); // RamDisk(64KB)
- USBLocalFileSystem* usb_local = new USBLocalFileSystem(p17, p15, p16, p18,"local"); // SD
-// USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_14, P0_15, P0_16, P0_32,"local"); // SD
- usb_local->lock(true);
- myDAP* dap = new myDAP(&swd);
+// USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_8, P0_10, P0_9, P0_7, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name
+ USBLocalFileSystem* usb_local = new USBLocalFileSystem(&flash, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name
+ running.write(1);
+ BL.mode(PullUp);
+ char hex[]="0123456789ABCDEF"; //DEBUG
+
+// usb_local->lock(true);
// uint8_t recieve;
-// uint8_t read;
-// int filesize=0;
+// uint8_t read=0;
+ int read = 0;
+ int loadersize = sizeof(loader)/sizeof(loader[0]);
+ int targetsize = 0;
FILE* fp;
-// ble.baud(57600);
+// BLE.baud(57600);
// int crc=0x00;
+// myDAP* dap = new myDAP(&swd);
int result=0;
+ BL.mode(PullUp);
+ BL.fall(&BL_int);
+
+/*
+ fp = fopen(LOADER_FILE, "rb");
+ loadersize = file_size(fp);
+ fclose(fp);
+#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
+#warning "free(fp)"
+ free(fp);
+#endif
+*/
+/*
+ fp = fopen(TARGET_FILE, "rb");
+ targetsize = file_size(fp);
+ fclose(fp);
+#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
+#warning "free(fp)"
+ free(fp);
+#endif
+*/
+
+ bool _hidresult;
+
while(1) {
usb_local->lock(true);
usb_local->remount();
+ connected.write(1);
char filename[32];
- usb_local->puts("Try BLE.load(): ");
- result = BLE.load();
- usb_local->putc(result);
- usb_local->puts("\n\r");
-
- if (usb_local->find(filename, sizeof(filename), "*.TXT")) {
- fp = fopen(filename, "r");
- if (fp) {
- int c;
- while((c = fgetc(fp)) != EOF) {
- usb_local->putc(c);
- }
- fclose(fp);
-#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
-#warning "free(fp)"
- free(fp);
-#endif
+ if(isISP) {
+ usb_local->puts("\n\r");
+ usb_local->puts("Writing "TARGET_FILE" into SPI flash");
+ usb_local->puts("\n\r");
+ usb_local->puts("Try BLE.load(): ");
+ running.write(0);
+ result = BLE.load();
+ running.write(1);
+ usb_local->putc(result);
+ usb_local->puts("\n\r");
+ isISP = false;
+ } else {
+ if(BLE._ble.readable()){
+ usb_local->putc(BLE._ble.getc());
+ }else{
+ usb_local->putc('.');
}
}
+ /*
+ usb_local->puts("loadersize: ");
+ read= 0x0f& (loadersize>>12);
+ usb_local->putc(hex[read]);
+ read= 0x0f& (loadersize>>8);
+ usb_local->putc(hex[read]);
+ read= 0x0f& (loadersize>>4);
+ usb_local->putc(hex[read]);
+ read= 0x0f& (loadersize);
+ usb_local->putc(hex[read]);
+ usb_local->puts("\n\r");
+ */
+ /*
+ if (usb_local->find(filename, sizeof(filename), "*.TXT")) {
+ fp = fopen(filename, "r");
+ if (fp) {
+ int c;
+ while((c = fgetc(fp)) != EOF) {
+ usb_local->putc(c);
+ }
+ fclose(fp);
+ #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
+ #warning "free(fp)"
+ free(fp);
+ #endif
+ }
+ }
+ */
- USBStorage2* _usb = usb_local->getUsb();
- USB_HID* _hid = _usb->getHID();
+// USBStorage2* _usb = usb_local->getUsb();
+/*
HID_REPORT recv_report;
- if( _usb->readNB(&recv_report) ) {
+
+ USB_HID* _hid = usb_local->getUsb()->getHID();
+ _hidresult = _hid->readNB(&recv_report);
+ if( _hidresult ) {
HID_REPORT send_report;
+ usb_local->puts("T\n\r");
dap->Command(recv_report.data, send_report.data);
send_report.length = 64;
- _usb->send(&send_report);
+ _hid->send(&send_report);
+ } else {
+ usb_local->puts("F\n\r");
}
+*/
usb_local->lock(false);
- wait_ms(1000*5);
+ connected = 0;
+ wait_ms(1000);
}
}
@@ -136,24 +239,7 @@
return size;
}
-
-void flash_write (int addr, char *buf, int len)
+void BL_int()
{
- int i;
- memory.BufferWrite(WRITE_BUFFER, addr % PAGE_SIZE);
- for (i = 0; i < len; i ++) {
- spi.write(buf[i]);
- }
- memory.BufferToPage(WRITE_BUFFER, addr / PAGE_SIZE, 1);
+ isISP = true;
}
-
-void flash_read (int addr, char *buf, int len)
-{
- int i;
- memory.PageToBuffer(addr / PAGE_SIZE, READ_BUFFER);
- memory.BufferRead(READ_BUFFER, addr % PAGE_SIZE, 1);
- for (i = 0; i < len; i ++) {
- buf[i] = spi.write(0xff);
- }
-}
-
--- a/mbed.bld Sat Sep 19 10:48:38 2015 +0000 +++ b/mbed.bld Fri Mar 04 10:34:25 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/4f6c30876dfa \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/f141b2784e32 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mystorage.cpp Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,49 @@
+#include "mbed.h"
+#include "mystorage.h"
+#include "W25X40BV.h"
+
+// MyStorage(PinName mosi, PinName miso, PinName sclk, PinName cs);
+MyStorage::MyStorage(PinName mosi, PinName miso, PinName sclk, PinName cs) :
+ _flash(mosi, miso, sclk, cs) {
+
+ //storage_initialize();
+ }
+
+// virtual int storage_read(uint8_t* data, uint32_t block);
+int MyStorage::storage_read(uint8_t *buffer, uint32_t block_number) {
+ report_read_count++;
+
+ // receive the data
+// _read(buffer, 512);
+// _flash.readStream(uint32_t addr, uint8_t* buf, uint32_t count);
+ _flash.readStream(block_number*256, buffer, 512);
+ return 0;
+}
+
+// virtual int storage_write(const uint8_t* data, uint32_t block);
+int MyStorage::storage_write(const uint8_t *buffer, uint32_t block_number) {
+ report_write_count++;
+
+ // send the data block
+// _write(buffer, 512);
+// writeStream(uint32_t addr, uint8_t* buf, uint32_t count);
+// void pageErase(uint8_t page);
+ _flash.pageErase(block_number);
+ _flash.pageErase(block_number + 1);
+ _flash.writeStream(block_number * 256, (uint8_t*)buffer, 256);
+ _flash.writeStream(block_number * 256 + 256, (uint8_t*)(buffer + 256), 256);
+ return 0;
+}
+
+// virtual uint32_t storage_sectors();
+uint32_t MyStorage::storage_sectors() {
+ report_sectors_count++;
+ return 256; //256*512
+}
+
+// virtual uint32_t storage_size();
+uint32_t MyStorage::storage_size()
+{
+ report_size_count++;
+ return 128*1024; //256*512
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mystorage.h Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,23 @@
+/** MyStorage: a StorageInterface class to interface SPI flash memory and USBLocalFilesystem
+*/
+#include "mbed.h"
+#include "StorageInterface.h"
+#include "W25X40BV.h"
+/** MyStorage: a StorageInterface class to interface SPI flash memory and USBLocalFilesystem
+It uses W25X40BV library also hints from Sissors/code/S25FL216K_USBFileSystem
+- USBLocalFileSystem by va009039/USBLocalFileSystem
+- W25X40BV by k4zuki/code/W25X40BV forked from jyam/code/W25X40BV
+*/
+class MyStorage : public StorageInterface {
+public:
+ MyStorage(PinName mosi, PinName miso, PinName sclk, PinName cs);
+
+ virtual int storage_read(uint8_t* data, uint32_t block);
+ virtual int storage_write(const uint8_t* data, uint32_t block);
+ virtual uint32_t storage_sectors();
+ virtual uint32_t storage_size();
+
+private:
+ W25X40BV _flash;
+ uint64_t _sectors;
+};