diff --git a/Arduino/epd2in36g/epd2in36g.cpp b/Arduino/epd2in36g/epd2in36g.cpp new file mode 100644 index 0000000..d95e208 --- /dev/null +++ b/Arduino/epd2in36g/epd2in36g.cpp @@ -0,0 +1,267 @@ +/** + * @filename : epd2in36g.cpp + * @brief : Implements for e-paper library + * @author : Waveshare + * + * Copyright (C) Waveshare 2022/08/17 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include "epd2in36g.h" + +Epd::~Epd() { +}; + +Epd::Epd() { + reset_pin = RST_PIN; + dc_pin = DC_PIN; + cs_pin = CS_PIN; + busy_pin = BUSY_PIN; + WIDTH = EPD_WIDTH; + HEIGHT = EPD_HEIGHT; +}; + +int Epd::Init() { + /* this calls the peripheral hardware interface, see epdif */ + if (IfInit() != 0) { + return -1; + } + Reset(); + + SendCommand(0x66); + SendData(0x49); + SendData(0x55); + SendData(0x13); + SendData(0x5D); + + SendCommand(0x66); + SendData(0x49); + SendData(0x55); + + SendCommand(0xB0); + SendData(0x03);//1 boost 20211113 + + SendCommand(0x00); + SendData(0x4F); + SendData(0x69); + + SendCommand(0x03); + SendData(0x00); + + SendCommand(0xF0); + SendData(0xF6); + SendData(0x0D); + SendData(0x00); + SendData(0x00); + SendData(0x00); + + SendCommand(0x06); //20211113 + SendData(0xCF); + SendData(0xDE); + SendData(0x0F); + + SendCommand(0x41); + SendData(0x00); + + SendCommand(0x50); + SendData(0x30); + + SendCommand(0x60); + SendData(0x0C); + SendData(0x05); + + SendCommand(0x61); + SendData(0xA8); + SendData(0x01); + SendData(0x28); + + SendCommand(0x84); + SendData(0x01); + return 0; +} + +/** + * @brief: basic function for sending commands + */ +void Epd::SendCommand(unsigned char command) { + DigitalWrite(dc_pin, LOW); + SpiTransfer(command); +} + +/** + * @brief: basic function for sending data + */ +void Epd::SendData(unsigned char data) { + DigitalWrite(dc_pin, HIGH); + SpiTransfer(data); +} + +/** + * @brief: Wait until the busy_pin goes LOW + */ +void Epd::ReadBusyH(void) { + Serial.print("e-Paper busy H\r\n "); + while(DigitalRead(busy_pin) == LOW) { //LOW: busy, HIGH: idle + DelayMs(5); + } + Serial.print("e-Paper busy release H\r\n "); +} + +void Epd::ReadBusyL(void) { + Serial.print("e-Paper busy L\r\n "); + while(DigitalRead(busy_pin) == HIGH) { //LOW: idle, HIGH: busy + DelayMs(5); + } + Serial.print("e-Paper busy release L\r\n "); +} + +/** + * @brief: module reset. + * often used to awaken the module in deep sleep, + * see Epd::Sleep(); + */ +void Epd::Reset(void) { + DigitalWrite(reset_pin, HIGH); + DelayMs(20); + DigitalWrite(reset_pin, LOW); //module reset + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +void Epd::TurnOnDisplay(void) +{ + SendCommand(0x12); // DISPLAY_REFRESH + SendData(0x00); + ReadBusyH(); + + SendCommand(0x02); // POWER_OFF + SendData(0X00); + ReadBusyH(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void Epd::Clear(UBYTE color) +{ + UWORD Width, Height; + Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1); + Height = HEIGHT; + + SendCommand(0x68); // POWER_OFF + SendData(0X01); + + SendCommand(0x04); + ReadBusyH(); + + SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + SendData((color<<6) | (color<<4) | (color<<2) | color); + } + } + + SendCommand(0x68); // POWER_OFF + SendData(0X00); + + TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void Epd::Display(UBYTE *Image) +{ + UWORD Width, Height; + Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1); + Height = HEIGHT; + + SendCommand(0x68); // POWER_OFF + SendData(0X01); + + SendCommand(0x04); + ReadBusyH(); + + SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + SendData(pgm_read_byte(&Image[i + j * Width])); + } + } + + SendCommand(0x68); // POWER_OFF + SendData(0X00); + + TurnOnDisplay(); +} + +void Epd::Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height) +{ + UWORD Width, Height, i, j; + Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1); + Height = HEIGHT; + + SendCommand(0x68); // POWER_OFF + SendData(0X01); + + SendCommand(0x04); + ReadBusyH(); + + SendCommand(0x10); + for(i=0; i=ystart && j<(image_width+xstart)/4 && j>=xstart/4) { + SendData(pgm_read_byte(&Image[(j-xstart/4) + (image_width/4*(i-ystart))])); + } + else { + SendData(0x55); + } + } + } + + SendCommand(0x68); // POWER_OFF + SendData(0X00); + + TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void Epd::Sleep(void) +{ + SendCommand(0x02); // POWER_OFF + SendData(0X00); + SendCommand(0x07); // DEEP_SLEEP + SendData(0XA5); +} + +/* END OF FILE */ + + diff --git a/Arduino/epd2in36g/epd2in36g.h b/Arduino/epd2in36g/epd2in36g.h new file mode 100644 index 0000000..900cd1d --- /dev/null +++ b/Arduino/epd2in36g/epd2in36g.h @@ -0,0 +1,74 @@ +/** + * @filename : epd2in36g.h + * @brief : Header file for e-paper display library epd4in37g.cpp + * @author : Waveshare + * + * Copyright (C) Waveshare 2022/08/17 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef EPD2IN36G_H +#define EPD2IN36G_H + +#include "epdif.h" + +// Display resolution +#define EPD_WIDTH 168 +#define EPD_HEIGHT 296 + +// Color +#define black 0x0 +#define white 0x1 +#define yellow 0x2 +#define red 0x3 + +#define UWORD unsigned int +#define UBYTE unsigned char +#define UDOUBLE unsigned long + +class Epd : EpdIf { +public: + unsigned long WIDTH; + unsigned long HEIGHT; + + Epd(); + ~Epd(); + int Init(); + void SendCommand(unsigned char command); + void SendData(unsigned char data); + void Reset(void); + void ReadBusyH(void); + void ReadBusyL(void); + void TurnOnDisplay(void); + void Clear(UBYTE color); + void Display(UBYTE *Image); + void Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height); + void Sleep(void); + +private: + unsigned int reset_pin; + unsigned int dc_pin; + unsigned int cs_pin; + unsigned int busy_pin; +}; + +#endif /* EPD4IN37_H */ + +/* END OF FILE */ diff --git a/Arduino/epd2in36g/epd2in36g.ino b/Arduino/epd2in36g/epd2in36g.ino new file mode 100644 index 0000000..1080029 --- /dev/null +++ b/Arduino/epd2in36g/epd2in36g.ino @@ -0,0 +1,60 @@ +/** + * @filename : epd2in36g-demo.ino + * @brief : 2.36inch e-Paper (G) display demo + * @author : Waveshare + * + * Copyright (C) Waveshare 2022/08/17 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include "epd2in36g.h" +#include "imagedata.h" + +Epd epd; + +void setup() { + // put your setup code here, to run once: + Serial.begin(115200); + Serial.print("e-Paper init \r\n"); + if (epd.Init() != 0) { + Serial.print("e-Paper init failed"); + return; + } + + Serial.print("White \r\n"); + epd.Clear(white); + delay(2000); + + Serial.print("Small Image \r\n"); + epd.Display_part(Image4color, 0, 64, 168, 168); + delay(2000); + + Serial.print("Clear...\r\n"); + epd.Clear(white); + delay(2000); + + Serial.print("Goto Sleep...\r\n"); + epd.Sleep(); +} + +void loop() { + +} diff --git a/Arduino/epd2in36g/epdif.cpp b/Arduino/epd2in36g/epdif.cpp new file mode 100644 index 0000000..ac9b77c --- /dev/null +++ b/Arduino/epd2in36g/epdif.cpp @@ -0,0 +1,64 @@ +/** + * @filename : epdif.cpp + * @brief : Implements EPD interface functions + * Users have to implement all the functions in epdif.cpp + * @author : Yehui from Waveshare + * + * Copyright (C) Waveshare August 10 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "epdif.h" +#include + +EpdIf::EpdIf() { +}; + +EpdIf::~EpdIf() { +}; + +void EpdIf::DigitalWrite(int pin, int value) { + digitalWrite(pin, value); +} + +int EpdIf::DigitalRead(int pin) { + return digitalRead(pin); +} + +void EpdIf::DelayMs(unsigned int delaytime) { + delay(delaytime); +} + +void EpdIf::SpiTransfer(unsigned char data) { + digitalWrite(CS_PIN, LOW); + SPI.transfer(data); + digitalWrite(CS_PIN, HIGH); +} + +int EpdIf::IfInit(void) { + pinMode(CS_PIN, OUTPUT); + pinMode(RST_PIN, OUTPUT); + pinMode(DC_PIN, OUTPUT); + pinMode(BUSY_PIN, INPUT); + + SPI.begin(); + SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); + return 0; +} \ No newline at end of file diff --git a/Arduino/epd2in36g/epdif.h b/Arduino/epd2in36g/epdif.h new file mode 100644 index 0000000..3c55313 --- /dev/null +++ b/Arduino/epd2in36g/epdif.h @@ -0,0 +1,51 @@ +/** + * @filename : epdif.h + * @brief : Header file of epdif.cpp providing EPD interface functions + * Users have to implement all the functions in epdif.cpp + * @author : Yehui from Waveshare + * + * Copyright (C) Waveshare August 10 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef EPDIF_H +#define EPDIF_H + +#include + +// Pin definition +#define RST_PIN 8 +#define DC_PIN 9 +#define CS_PIN 10 +#define BUSY_PIN 7 + +class EpdIf { +public: + EpdIf(void); + ~EpdIf(void); + + static int IfInit(void); + static void DigitalWrite(int pin, int value); + static int DigitalRead(int pin); + static void DelayMs(unsigned int delaytime); + static void SpiTransfer(unsigned char data); +}; + +#endif diff --git a/Arduino/epd2in36g/imagedata.cpp b/Arduino/epd2in36g/imagedata.cpp new file mode 100644 index 0000000..2a1593e --- /dev/null +++ b/Arduino/epd2in36g/imagedata.cpp @@ -0,0 +1,474 @@ +/** + * @filename : imagedata.cpp + * @brief : data file for epd demo + * + * Copyright (C) Waveshare 2022/08/16 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "imagedata.h" +#include + +// 4 Color Image Data 168*168 +const unsigned char Image4color[7056] PROGMEM = { +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF, +0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, +0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F, +0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF, +0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF, +0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F, +0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF, +0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x80,0x00, +0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC, +0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0x80,0x0A,0xAA,0x80,0x00,0x00,0x00,0x00, +0x00,0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, +0x0A,0xAA,0x80,0x0A,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57, +0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0x80,0x0A,0xAA,0xA0, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x02,0xAA,0x80,0x02,0x8A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A, +0x80,0x00,0x02,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,0x0A,0xA8,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x2A,0x80,0x00,0x3A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00, +0x2A,0xA0,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x00,0x00,0x00, +0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,0xAA,0x80,0x00,0x00,0x00,0x00, +0x15,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x57,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00, +0x00,0x2A,0x80,0x02,0xAA,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x3F, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF, +0xF0,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x0A,0xAB,0x00, +0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x15,0x55, +0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x2A,0xA8,0x00,0x00,0x00,0x00,0x01,0x55,0x50, +0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x2A, +0x80,0x2A,0xAA,0xA8,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x3F,0xFF, +0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00, +0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x2A,0x80,0x2A,0xAA,0xA8,0x00,0x00, +0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00, +0x00,0x00,0x00,0x2A,0x80,0x2A,0xAA,0xA8,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00, +0x00,0x00,0x0F,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF, +0xFF,0xC0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x2A, +0xAA,0xA8,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF5, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55, +0x54,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00, +0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00, +0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x15, +0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x57, +0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55, +0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x50,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF, +0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,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,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55, +0x55,0xFF,0xFF,0xC0,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,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,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,0xFF,0xFF,0xD5, +0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,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,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF, +0xFC,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,0x3F,0xFF,0xF5,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x04,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0xC0,0x00, +0x01,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x03, +0xFF,0xFD,0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x01,0x55,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55, +0xFF,0xFF,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15, +0x55,0x40,0x00,0x00,0xFF,0xFF,0x55,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x15,0x55, +0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0xFF,0xFF, +0xD5,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x05,0x55,0x55,0x50,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x15,0x55,0x55,0x40,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x5F,0xFF,0xFC, +0x00,0x00,0x01,0x55,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x00, +0x00,0x00,0x3F,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xFC,0x00,0x00,0x00,0x15,0x55,0x55, +0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x50,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x55, +0x55,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15, +0x55,0x55,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00, +0x00,0x00,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x54,0x00,0x00,0x00,0x00, +0x0F,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x05,0x55,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0x7F, +0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x54,0x00, +0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00, +0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x03,0xFF, +0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55, +0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55, +0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF, +0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x5F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x50,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F, +0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x35,0x55,0x55,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF5, +0x55,0x55,0x5F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF5,0x55,0x55,0x5F,0xF0,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5, +0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x3F,0xF5,0x55,0x55,0x5F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xD5,0x55,0x55, +0x57,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xD5,0x55,0x55,0x57,0xFF,0xC0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x7F,0xFF, +0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0xFF,0xD5,0x55,0x55,0x57,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0xAA,0x80, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xD5,0x55,0x55,0x57,0xFF, +0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0x00,0x00,0x00,0x03, +0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x3F,0xFF,0x55,0x55,0x55,0x55,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x2A,0xAA,0x80,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00, +0x00,0x0A,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x55, +0x55,0x55,0x55,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA, +0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0xA0,0xA8,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFC,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD, +0x7F,0xFF,0xC0,0x00,0x00,0x0A,0x80,0xAB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x02,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A, +0x80,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55, +0x55,0x5F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xA0,0x00, +0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0x80,0xAA,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF, +0xC0,0x00,0x00,0x0A,0xA2,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, +0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0xAA,0xAA, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F, +0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x80,0x00,0x00,0x03, +0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x02,0xAA,0xAB,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5B,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00, +0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55, +0x55,0x55,0x55,0x55,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA, +0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x02,0xA8,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x7F,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD, +0x7F,0xFF,0xC0,0x00,0x00,0x00,0x0E,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3F,0xFD,0x55,0x55,0x55,0x55,0x55,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x02,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00, +0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF5,0x55,0x55,0x55, +0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00, +0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0xAA,0x80,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3F,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF, +0xC0,0x00,0x00,0x00,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x2A,0xAA,0x80,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x80,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x00,0x00,0x00,0x0F, +0xFF,0xFD,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x15,0x55,0x57,0xD5,0x57,0xF5,0x55,0x55,0x55,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x5F, +0xFF,0xFF,0xFF,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xF5,0x55,0x55, +0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5, +0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x05,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xF1,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x53,0xFF,0xFF,0xFF, +0xFF,0xC0,0x15,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x3F,0xFF,0xFF,0xFC,0x00,0x01,0x55,0x55,0x50, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF, +0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x54, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x15,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F, +0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x15,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x50,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFC,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x54,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5, +0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55, +0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, +0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x05,0x54,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF, +0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x40,0x01,0x54,0x00, +0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00, +0x05,0x55,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x03,0xFF, +0xFD,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x00,0x00,0x55, +0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0x54,0x05,0x55,0x54,0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xF0, +0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x55,0x55,0x00,0x00, +0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x15,0x55,0x55, +0x40,0x00,0x05,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x45,0x55,0x55,0x50,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x55, +0x55,0x5F,0xFF,0xFC,0x00,0x00,0x01,0x55,0x55,0x54,0x00,0x00,0x15,0x50,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, +0x55,0x55,0x55,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xFC,0x00,0x00, +0x05,0x55,0x55,0x50,0x00,0x00,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x55,0x40,0x00,0x00, +0x3F,0xFF,0xF5,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x15,0x55,0x55,0x00,0x00,0x01, +0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x57, +0xFF,0xFF,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x15,0x50,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15, +0x55,0x40,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x55,0xFF,0xFF,0x00,0x00,0x01,0x55, +0x00,0x00,0x00,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0xFF,0xFF, +0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x01,0x54,0x00,0x00,0x01,0x54,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xC0,0x00,0x00,0x40,0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00, +0x00,0x03,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00, +0x15,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,0x0F,0xFF,0xFD,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x54,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,0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFC,0x00, +0x00,0x00,0x00,0x01,0x50,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,0x3F, +0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x05,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,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55, +0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x14,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,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x00, +0x00,0x50,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,0x03,0xFF,0xFF,0x55, +0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x7F, +0xFF,0xF0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55, +0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00, +0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55, +0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00, +0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00, +0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x55, +0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00, +0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x5F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00, +0x02,0xA8,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x03,0xFF, +0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF0,0x00,0x00, +0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x2A,0xA8,0x00,0x00,0x00,0x00, +0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00, +0x00,0x00,0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00, +0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F, +0xFF,0xFC,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0xA0, +0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00, +0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x55,0x54,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00, +0x00,0x02,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x0F, +0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF, +0xFC,0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xA8,0x00,0x00, +0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40, +0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00, +0x00,0x00,0x00,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, +0xAA,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x80,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0xA8,0x2A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0x2A, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0xAA,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x02,0xAA,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x0A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF5,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF, +0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xC0,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF, +0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF, +0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F, +0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF, +0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, +0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF, +0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +}; + + diff --git a/Arduino/epd2in36g/imagedata.h b/Arduino/epd2in36g/imagedata.h new file mode 100644 index 0000000..ac66d7f --- /dev/null +++ b/Arduino/epd2in36g/imagedata.h @@ -0,0 +1,30 @@ +/** + * @filename : imagedata.h + * @brief : head file for imagedata.cpp + * + * Copyright (C) Waveshare 2022/08/16 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +extern const unsigned char Image4color[]; + +/* FILE END */ + + diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c new file mode 100644 index 0000000..4627f22 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c @@ -0,0 +1,165 @@ +/***************************************************************************** +* | File : EPD_2in36g_test.c +* | Author : Waveshare team +* | Function : 2.36inch e-Paper (G) test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2022-08-18 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in36g.h" +#include "time.h" + +int EPD_2in36g_test(void) +{ + printf("EPD_2IN36G_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_2IN36G_Init(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME, &start); + EPD_2IN36G_Clear(EPD_2IN36G_WHITE); // White + clock_gettime(CLOCK_REALTIME, &finish); + printf("%ld S\r\n", finish.tv_sec-start.tv_sec); + DEV_Delay_ms(2000); + + //Create a new image cache + UBYTE *BlackImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1)) * EPD_2IN36G_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2IN36G_WIDTH, EPD_2IN36G_HEIGHT, 0, WHITE); + Paint_SetScale(4); + +#if 1 // show bmp + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp_RGB_4Color("./pic/2.36inch-1.bmp", 0, 0); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(2000); + + printf("show bmp------------------------\r\n"); + Paint_SelectImage(BlackImage); + GUI_ReadBmp_RGB_4Color("./pic/2.36inch-2.bmp", 0, 0); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(EPD_2IN36G_WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, EPD_2IN36G_WHITE, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, EPD_2IN36G_RED, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(45, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_2IN36G_BLACK, EPD_2IN36G_WHITE); + Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_2IN36G_WHITE, EPD_2IN36G_RED); + Paint_DrawString_CN(10, 125, "΢ѩ����", &Font24CN, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW); + Paint_DrawNum(10, 50, 123456, &Font12, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW); + + printf("EPD_Display\r\n"); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(EPD_2IN36G_WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawRectangle(1, 1, 168, 86, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawRectangle(1, 210, 167, 295, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawRectangle(59, 1, 109, 295, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + printf("EPD_Display\r\n"); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(EPD_2IN36G_WHITE); + + int hNumber, hWidth, vNumber, vWidth; + hNumber = 16; + hWidth = EPD_2IN36G_HEIGHT/hNumber; // 368/16=23 + vNumber = 16; + vWidth = EPD_2IN36G_WIDTH/vNumber; // 512/16=32 + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + for(int i=0; i // malloc() free() int EPD_1in64g_test(void); +int EPD_2in36g_test(void); int EPD_3in0g_test(void); +int EPD_4in37g_test(void); int EPD_7in3g_test(void); int EPD_1in54_DES_test(void); diff --git a/RaspberryPi_JetsonNano/c/examples/main.c b/RaspberryPi_JetsonNano/c/examples/main.c index ecc33b8..6e07f6a 100644 --- a/RaspberryPi_JetsonNano/c/examples/main.c +++ b/RaspberryPi_JetsonNano/c/examples/main.c @@ -17,6 +17,7 @@ int main(void) signal(SIGINT, Handler); // EPD_1in64g_test(); + // EPD_2in36g_test(); // EPD_3in0g_test(); // EPD_4in37g_test(); // EPD_7in3g_test(); diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c new file mode 100644 index 0000000..cc3f757 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c @@ -0,0 +1,238 @@ +/***************************************************************************** +* | File : EPD_2in36g.c +* | Author : Waveshare team +* | Function : 2.36inch e-Paper (G) +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2022-08-17 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_2in36g.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_2IN36G_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_2IN36G_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_2IN36G_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +static void EPD_2IN36G_ReadBusyH(void) +{ + Debug("e-Paper busy H\r\n"); + while(!DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: idle, HIGH: busy + DEV_Delay_ms(5); + } + Debug("e-Paper busy H release\r\n"); +} +static void EPD_2IN36G_ReadBusyL(void) +{ + Debug("e-Paper busy L\r\n"); + while(DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: idle, HIGH: busy + DEV_Delay_ms(5); + } + Debug("e-Paper busy L release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_2IN36G_TurnOnDisplay(void) +{ + EPD_2IN36G_SendCommand(0x12); // DISPLAY_REFRESH + EPD_2IN36G_SendData(0x01); + EPD_2IN36G_ReadBusyH(); + + EPD_2IN36G_SendCommand(0x02); // POWER_OFF + EPD_2IN36G_SendData(0X00); + EPD_2IN36G_ReadBusyH(); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_2IN36G_Init(void) +{ + EPD_2IN36G_Reset(); + + EPD_2IN36G_SendCommand(0x66); + EPD_2IN36G_SendData(0x49); + EPD_2IN36G_SendData(0x55); + EPD_2IN36G_SendData(0x13); + EPD_2IN36G_SendData(0x5D); + + EPD_2IN36G_SendCommand(0x66); + EPD_2IN36G_SendData(0x49); + EPD_2IN36G_SendData(0x55); + + EPD_2IN36G_SendCommand(0xB0); + EPD_2IN36G_SendData(0x03);//1 boost 20211113 + + EPD_2IN36G_SendCommand(0x00); + EPD_2IN36G_SendData(0x4F); + EPD_2IN36G_SendData(0x69); + + EPD_2IN36G_SendCommand(0x03); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_SendCommand(0xF0); + EPD_2IN36G_SendData(0xF6); + EPD_2IN36G_SendData(0x0D); + EPD_2IN36G_SendData(0x00); + EPD_2IN36G_SendData(0x00); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_SendCommand(0x06); //20211113 + EPD_2IN36G_SendData(0xCF); + EPD_2IN36G_SendData(0xDE); + EPD_2IN36G_SendData(0x0F); + + EPD_2IN36G_SendCommand(0x41); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_SendCommand(0x50); + EPD_2IN36G_SendData(0x30); + + EPD_2IN36G_SendCommand(0x60); + EPD_2IN36G_SendData(0x0C); + EPD_2IN36G_SendData(0x05); + + EPD_2IN36G_SendCommand(0x61); + EPD_2IN36G_SendData(0xA8); + EPD_2IN36G_SendData(0x01); + EPD_2IN36G_SendData(0x28); + + EPD_2IN36G_SendCommand(0x84); + EPD_2IN36G_SendData(0x01); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_2IN36G_Clear(UBYTE color) +{ + UWORD Width, Height; + Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1); + Height = EPD_2IN36G_HEIGHT; + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x01); + + EPD_2IN36G_SendCommand(0x04); + EPD_2IN36G_ReadBusyH(); + + EPD_2IN36G_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2IN36G_SendData((color << 6) | (color << 4) | (color << 2) | color); + } + } + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_2IN36G_Display(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1); + Height = EPD_2IN36G_HEIGHT; + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x01); + + EPD_2IN36G_SendCommand(0x04); + EPD_2IN36G_ReadBusyH(); + + EPD_2IN36G_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2IN36G_SendData(Image[i + j * Width]); + } + } + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_2IN36G_Sleep(void) +{ + EPD_2IN36G_SendCommand(0x02); // POWER_OFF + EPD_2IN36G_SendData(0X00); + EPD_2IN36G_SendCommand(0x07); // DEEP_SLEEP + EPD_2IN36G_SendData(0XA5); +} + diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h new file mode 100644 index 0000000..87725a8 --- /dev/null +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h @@ -0,0 +1,51 @@ +/***************************************************************************** +* | File : EPD_2in36g.h +* | Author : Waveshare team +* | Function : 2.36inch e-Paper (G) +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2022-08-17 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_2IN36G_H_ +#define __EPD_2IN36G_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_2IN36G_WIDTH 168 +#define EPD_2IN36G_HEIGHT 296 + +// Color +#define EPD_2IN36G_BLACK 0x0 +#define EPD_2IN36G_WHITE 0x1 +#define EPD_2IN36G_YELLOW 0x2 +#define EPD_2IN36G_RED 0x3 + +void EPD_2IN36G_Init(void); +void EPD_2IN36G_Clear(UBYTE color); +void EPD_2IN36G_Display(UBYTE *Image); +void EPD_2IN36G_Sleep(void); + +#endif diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c index 86c77ab..9aa6e6d 100755 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c @@ -1,5 +1,5 @@ /***************************************************************************** -* | File : EPD_4in37g.h +* | File : EPD_4in37g.c * | Author : Waveshare team * | Function : 4.37inch e-Paper (G) * | Info : diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h index 5777dd7..e63b9b1 100755 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h @@ -1,5 +1,5 @@ /***************************************************************************** -* | File : EPD_4in37g.c +* | File : EPD_4in37g.h * | Author : Waveshare team * | Function : 4.37inch e-Paper (G) * | Info : diff --git a/RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp b/RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp new file mode 100644 index 0000000..215ca81 Binary files /dev/null and b/RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp differ diff --git a/RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp b/RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp new file mode 100644 index 0000000..61be00a Binary files /dev/null and b/RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp differ diff --git a/RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py b/RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py index e591a47..4b925b9 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py @@ -45,7 +45,7 @@ try: # time.sleep(3) # # read bmp file - # logging.info("3.read bmp file") + # logging.info("2.read bmp file") # Himage = Image.open(os.path.join(picdir, '1.64inch-1.bmp')) # epd.display(epd.getbuffer(Himage)) # time.sleep(3) diff --git a/RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py b/RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py new file mode 100644 index 0000000..ba25138 --- /dev/null +++ b/RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +# -*- coding:utf-8 -*- +import sys +import os +picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic') +libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib') +if os.path.exists(libdir): + sys.path.append(libdir) + +import logging +from waveshare_epd import epd2in36g +import time +from PIL import Image,ImageDraw,ImageFont +import traceback + +logging.basicConfig(level=logging.DEBUG) + +try: + logging.info("epd2in36g Demo") + + epd = epd2in36g.EPD() + logging.info("init and Clear") + epd.init() + epd.Clear() + font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) + font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) + font40 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 40) + + # Drawing on the image + logging.info("1.Drawing on the image...") + Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE) + draw = ImageDraw.Draw(Himage) + draw.text((5, 0), 'hello world', font = font18, fill = epd.RED) + draw.text((5, 20), '2.36inch e-Paper', font = font18, fill = epd.YELLOW) + draw.text((5, 40), u'微雪电子', font = font40, fill = epd.BLACK) + draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW) + draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED) + + draw.line((5, 175, 45, 245), fill = epd.RED) + draw.line((45, 175, 5, 245), fill = epd.YELLOW) + draw.rectangle((5, 175, 45, 245), outline = epd.BLACK) + draw.rectangle((55, 175, 95, 245), fill = epd.BLACK) + draw.arc((115, 175, 150, 210), 0, 360, fill = epd.BLACK) + draw.chord((115, 215, 150, 250), 0, 360, fill = epd.BLACK) + draw.chord((10, 252, 50, 295), 0, 360, fill = epd.YELLOW) + draw.chord((110, 252, 150, 295), 0, 360, fill = epd.RED) + epd.display(epd.getbuffer(Himage)) + time.sleep(3) + + # read bmp file + logging.info("2.read bmp file") + Himage = Image.open(os.path.join(picdir, '2.36inch-1.bmp')) + epd.display(epd.getbuffer(Himage)) + time.sleep(3) + + logging.info("3.read bmp file") + Himage = Image.open(os.path.join(picdir, '2.36inch-2.bmp')) + epd.display(epd.getbuffer(Himage)) + time.sleep(3) + + logging.info("Clear...") + epd.Clear() + + logging.info("Goto Sleep...") + epd.sleep() + +except IOError as e: + logging.info(e) + +except KeyboardInterrupt: + logging.info("ctrl + c:") + epd2in36g.epdconfig.module_exit() + exit() diff --git a/RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py b/RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py index 4d34c0b..a7184e2 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py @@ -47,7 +47,7 @@ try: # Switch width and height for landscape display epd.init() - logging.info("1.Drawing on the image...") + logging.info("2.Drawing on the image...") Himage = Image.new('RGB', (epd.height, epd.width), epd.WHITE) draw = ImageDraw.Draw(Himage) draw.text((5, 0), 'hello world', font = font18, fill = epd.RED) @@ -72,13 +72,13 @@ try: time.sleep(3) epd.init() - logging.info("3.read bmp file") + logging.info("4.read bmp file") Himage = Image.open(os.path.join(picdir, '3inch-2.bmp')) epd.display(epd.getbuffer(Himage)) time.sleep(3) epd.init() - logging.info("3.read bmp file") + logging.info("5.read bmp file") Himage = Image.open(os.path.join(picdir, '3inch-3.bmp')) epd.display(epd.getbuffer(Himage)) time.sleep(3) diff --git a/RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py b/RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py index 69543fa..61b3fd8 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py @@ -31,7 +31,7 @@ try: Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE) # 255: clear the frame draw = ImageDraw.Draw(Himage) draw.text((5, 0), 'hello world', font = font18, fill = epd.RED) - draw.text((5, 20), '7.3inch e-Paper', font = font24, fill = epd.YELLOW) + draw.text((5, 20), '4.37inch e-Paper', font = font24, fill = epd.YELLOW) draw.text((5, 45), u'微雪电子', font = font40, fill = epd.BLACK) draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW) draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED) @@ -46,7 +46,7 @@ try: time.sleep(3) # read bmp file - logging.info("3.read image file") + logging.info("2.read image file") Himage = Image.open(os.path.join(picdir, '4in37g0.jpg')) epd.display(epd.getbuffer(Himage)) time.sleep(3) @@ -56,7 +56,7 @@ try: epd.display(epd.getbuffer(Himage)) time.sleep(3) - logging.info("3.read image file") + logging.info("4.read image file") Himage = Image.open(os.path.join(picdir, '4in37g2.jpg')) epd.display(epd.getbuffer(Himage)) time.sleep(3) diff --git a/RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py b/RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py index dcf2ca6..e70cc92 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py @@ -46,7 +46,7 @@ try: time.sleep(3) # read bmp file - logging.info("3.read bmp file") + logging.info("2.read bmp file") Himage = Image.open(os.path.join(picdir, '7.3inch-1.bmp')) epd.display(epd.getbuffer(Himage)) time.sleep(3) @@ -56,7 +56,7 @@ try: epd.display(epd.getbuffer(Himage)) time.sleep(3) - logging.info("3.read bmp file") + logging.info("4.read bmp file") Himage = Image.open(os.path.join(picdir, '7.3inch-3.bmp')) epd.display(epd.getbuffer(Himage)) time.sleep(3) diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py new file mode 100644 index 0000000..6dcc420 --- /dev/null +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py @@ -0,0 +1,240 @@ +# ***************************************************************************** +# * | File : epd2in36g.py +# * | Author : Waveshare team +# * | Function : Electronic paper driver +# * | Info : +# *---------------- +# * | This version: V1.0 +# * | Date : 2022-08-17 +# # | Info : python demo +# ----------------------------------------------------------------------------- +# ******************************************************************************/ +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +import logging +from . import epdconfig + +import PIL +from PIL import Image +import io + +# Display resolution +EPD_WIDTH = 168 +EPD_HEIGHT = 296 + +logger = logging.getLogger(__name__) + +class EPD: + def __init__(self): + self.reset_pin = epdconfig.RST_PIN + self.dc_pin = epdconfig.DC_PIN + self.busy_pin = epdconfig.BUSY_PIN + self.cs_pin = epdconfig.CS_PIN + self.width = EPD_WIDTH + self.height = EPD_HEIGHT + self.BLACK = 0x000000 # 00 BGR + self.WHITE = 0xffffff # 01 + self.YELLOW = 0x00ffff # 10 + self.RED = 0x0000ff # 11 + + # Hardware reset + def reset(self): + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(200) + epdconfig.digital_write(self.reset_pin, 0) # module reset + epdconfig.delay_ms(2) + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(200) + + def send_command(self, command): + epdconfig.digital_write(self.dc_pin, 0) + epdconfig.digital_write(self.cs_pin, 0) + epdconfig.spi_writebyte([command]) + epdconfig.digital_write(self.cs_pin, 1) + + def send_data(self, data): + epdconfig.digital_write(self.dc_pin, 1) + epdconfig.digital_write(self.cs_pin, 0) + epdconfig.spi_writebyte([data]) + epdconfig.digital_write(self.cs_pin, 1) + + def ReadBusyH(self): + logger.debug("e-Paper busy H") + while(epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy + epdconfig.delay_ms(5) + logger.debug("e-Paper busy H release") + + def ReadBusyL(self): + logger.debug("e-Paper busy L") + while(epdconfig.digital_read(self.busy_pin) == 1): # 0: busy, 1: idle + epdconfig.delay_ms(5) + logger.debug("e-Paper busy L release") + + def TurnOnDisplay(self): + self.send_command(0x12) # DISPLAY_REFRESH + self.send_data(0x01) + self.ReadBusyH() + + self.send_command(0x02) # POWER_OFF + self.send_data(0X00) + self.ReadBusyH() + + def init(self): + if (epdconfig.module_init() != 0): + return -1 + # EPD hardware init start + + self.reset() + + self.send_command(0x66) + self.send_data(0x49) + self.send_data(0x55) + self.send_data(0x13) + self.send_data(0x5D) + + self.send_command(0x66) + self.send_data(0x49) + self.send_data(0x55) + + self.send_command(0xB0) + self.send_data(0x03) + + self.send_command(0x00) + self.send_data(0x4F) + self.send_data(0x69) + + self.send_command(0x03) + self.send_data(0x00) + + self.send_command(0xF0) + self.send_data(0xF6) + self.send_data(0x0D) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x00) + + self.send_command(0x06) + self.send_data(0xCF) + self.send_data(0xDE) + self.send_data(0x0F) + + self.send_command(0x41) + self.send_data(0x00) + + self.send_command(0x50) + self.send_data(0x30) + + self.send_command(0x60) + self.send_data(0x0C) + self.send_data(0x05) + + self.send_command(0x61) + self.send_data(0xA8) + self.send_data(0x01) + self.send_data(0x28) + + self.send_command(0x84) + self.send_data(0x01) + return 0 + + def getbuffer(self, image): + # Create a pallette with the 4 colors supported by the panel + pal_image = Image.new("P", (1,1)) + pal_image.putpalette( (0,0,0, 255,255,255, 255,255,0, 255,0,0) + (0,0,0)*252) + + # Check if we need to rotate the image + imwidth, imheight = image.size + if(imwidth == self.width and imheight == self.height): + image_temp = image + elif(imwidth == self.height and imheight == self.width): + image_temp = image.rotate(90, expand=True) + else: + logger.warning("Invalid image dimensions: %d x %d, expected %d x %d" % (imwidth, imheight, self.width, self.height)) + + # Convert the soruce image to the 4 colors, dithering if needed + image_4color = image_temp.convert("RGB").quantize(palette=pal_image) + buf_4color = bytearray(image_4color.tobytes('raw')) + + # into a single byte to transfer to the panel + buf = [0x00] * int(self.width * self.height / 4) + idx = 0 + for i in range(0, len(buf_4color), 4): + buf[idx] = (buf_4color[i] << 6) + (buf_4color[i+1] << 4) + (buf_4color[i+2] << 2) + buf_4color[i+3] + idx += 1 + + return buf + + def display(self, image): + if self.width % 4 == 0 : + Width = self.width // 4 + else : + Width = self.width // 4 + 1 + Height = self.height + + self.send_command(0x68) + self.send_data(0x01) + + self.send_command(0x04) + self.ReadBusyH() + + self.send_command(0x10) + for j in range(0, Height): + for i in range(0, Width): + self.send_data(image[i + j * Width]) + + self.send_command(0x68) + self.send_data(0x00) + + self.TurnOnDisplay() + + def Clear(self, color=0x55): + if self.width % 4 == 0 : + Width = self.width // 4 + else : + Width = self.width // 4 + 1 + Height = self.height + + self.send_command(0x68) + self.send_data(0x01) + + self.send_command(0x04) + self.ReadBusyH() + + self.send_command(0x10) + for j in range(0, Height): + for i in range(0, Width): + self.send_data(color) + + self.send_command(0x68) + self.send_data(0x00) + + self.TurnOnDisplay() + + def sleep(self): + self.send_command(0x02) # POWER_OFF + self.send_data(0x00) + + self.send_command(0x07) # DEEP_SLEEP + self.send_data(0XA5) + + epdconfig.delay_ms(2000) + epdconfig.module_exit() +### END OF FILE ### + diff --git a/RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp b/RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp new file mode 100644 index 0000000..215ca81 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp b/RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp new file mode 100644 index 0000000..61be00a Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp differ diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian index 1c575ac..729593a 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian @@ -89,8 +89,8 @@ 2 3 - -1 - -1 + -32000 + -32000 -1 @@ -106,8 +106,8 @@ 0 - 60 - 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + 1270 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A000000030000000100000041453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF51453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C496D61676544617461322E63000000000C496D61676544617461322E6300000000FFDC7800FFFFFFFF50453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C496D616765446174612E68000000000B496D616765446174612E6800000000BECEA100FFFFFFFF56453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F32696E3336675F746573742E6300000000114550445F32696E3336675F746573742E6300000000F0A0A100FFFFFFFF50453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F32696E3336672E63000000000C4550445F32696E3336672E6300000000BCA8E100FFFFFFFF50453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F32696E3336672E68000000000C4550445F32696E3336672E68000000009CC1B600FFFFFFFF50453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F34696E3337672E63000000000C4550445F34696E3337672E6300000000F7B88600FFFFFFFF50453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F34696E3337672E68000000000C4550445F34696E3337672E6800000000D9ADC200FFFFFFFF56453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F34696E3337675F746573742E6300000000114550445F34696E3337675F746573742E6300000000A5C2D700FFFFFFFF4F453A5CCFEEC4BF5C652D50617065725C436F64655C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F546573742E68000000000A4550445F546573742E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A00009B040000 @@ -1802,7 +1802,7 @@ File 2551 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000040000000000000000000000000000000000000100000001000000960000000200205000000000144550445F31494E3634475F52656164427573794C96000000000000001300144550445F31494E3634475F52656164427573794C0A4465765F4261636B7570074465765F4E6F77124550445F33494E35325F646973706C617931114550445F33494E35325F646973706C6179114550445F33494E35325F72656672657368104550445F33494E35325F6C75745F4743085350495F444154410B5350495F434F4D4D414E440E463146345F436C6561725F4E495212736C6176655F616464726573735F64617461076F6C6444617461076C75745F626231036C75740B4550445F7374616E646279046C7574310D6C63645F63686B737461747573054465627567114153373334315F436F6E74726F6C4C656400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000144550445F31494E3634475F52656164427573794C96000000000000001300144550445F31494E3634475F52656164427573794C0A4465765F4261636B7570074465765F4E6F77124550445F33494E35325F646973706C617931114550445F33494E35325F646973706C6179114550445F33494E35325F72656672657368104550445F33494E35325F6C75745F4743085350495F444154410B5350495F434F4D4D414E440E463146345F436C6561725F4E495212736C6176655F616464726573735F64617461076F6C6444617461076C75745F626231036C75740B4550445F7374616E646279046C7574310D6C63645F63686B737461747573054465627567114153373334315F436F6E74726F6C4C656400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 1423 @@ -1818,7 +1818,7 @@ Build 976 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000086570642D64656D6F96000000000000000100086570642D64656D6F000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000086570642D64656D6F96000000000000000100086570642D64656D6F000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1834,7 +1834,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1853,4 +1853,103 @@ + + 1 + 0 + + 100 + 3 + + ../Src/main.c + 2 + 61 + 98 + 1 + + 0 + + + ..\User\Examples\ImageData2.c + 33 + 1 + 8822 + 1 + 34,287,540,984,1764,2817 + 0 + + + ..\User\Examples\ImageData.h + 40 + 4 + 43 + 1 + + 0 + + + ..\User\Examples\EPD_2in36g_test.c + 37 + 52 + 77 + 1 + + 0 + + + ..\User\e-Paper\EPD_2in36g.c + 1 + 34 + 29 + 1 + + 0 + + + ..\User\e-Paper\EPD_2in36g.h + 0 + 1 + 1 + 1 + + 0 + + + ..\User\e-Paper\EPD_4in37g.c + 75 + 28 + 15 + 1 + + 0 + + + ..\User\e-Paper\EPD_4in37g.h + 0 + 1 + 1 + 1 + + 0 + + + ..\User\Examples\EPD_4in37g_test.c + 77 + 40 + 76 + 1 + + 0 + + + ..\User\Examples\EPD_Test.h + 19 + 4 + 40 + 1 + + 0 + + + + diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx index fdbc02b..2af7783 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx @@ -145,7 +145,7 @@ 0 ST-LINKIII-KEIL_SWO - -U50FF6E066675545724371487 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) + -U49FF6F066572485414310687 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) @@ -234,6 +234,7 @@ 1 + 0 0 2 10000000 @@ -263,7 +264,7 @@ Application/User - 0 + 1 0 0 0 @@ -343,7 +344,7 @@ Examples - 0 + 1 0 0 0 @@ -899,17 +900,29 @@ 0 0 + + 3 + 54 + 1 + 0 + 0 + 0 + ..\User\Examples\EPD_2in36g_test.c + EPD_2in36g_test.c + 0 + 0 + e-Paper - 0 + 1 0 0 0 4 - 54 + 55 1 0 0 @@ -921,7 +934,7 @@ 4 - 55 + 56 1 0 0 @@ -933,7 +946,7 @@ 4 - 56 + 57 1 0 0 @@ -945,7 +958,7 @@ 4 - 57 + 58 1 0 0 @@ -957,7 +970,7 @@ 4 - 58 + 59 1 0 0 @@ -969,7 +982,7 @@ 4 - 59 + 60 1 0 0 @@ -981,7 +994,7 @@ 4 - 60 + 61 1 0 0 @@ -993,7 +1006,7 @@ 4 - 61 + 62 1 0 0 @@ -1005,7 +1018,7 @@ 4 - 62 + 63 1 0 0 @@ -1017,7 +1030,7 @@ 4 - 63 + 64 1 0 0 @@ -1029,7 +1042,7 @@ 4 - 64 + 65 1 0 0 @@ -1041,7 +1054,7 @@ 4 - 65 + 66 1 0 0 @@ -1053,7 +1066,7 @@ 4 - 66 + 67 1 0 0 @@ -1065,7 +1078,7 @@ 4 - 67 + 68 1 0 0 @@ -1077,7 +1090,7 @@ 4 - 68 + 69 1 0 0 @@ -1089,7 +1102,7 @@ 4 - 69 + 70 1 0 0 @@ -1101,7 +1114,7 @@ 4 - 70 + 71 1 0 0 @@ -1113,7 +1126,7 @@ 4 - 71 + 72 1 0 0 @@ -1125,7 +1138,7 @@ 4 - 72 + 73 1 0 0 @@ -1137,7 +1150,7 @@ 4 - 73 + 74 1 0 0 @@ -1149,7 +1162,7 @@ 4 - 74 + 75 1 0 0 @@ -1161,7 +1174,7 @@ 4 - 75 + 76 1 0 0 @@ -1173,7 +1186,7 @@ 4 - 76 + 77 1 0 0 @@ -1185,7 +1198,7 @@ 4 - 77 + 78 1 0 0 @@ -1197,7 +1210,7 @@ 4 - 78 + 79 1 0 0 @@ -1209,7 +1222,7 @@ 4 - 79 + 80 1 0 0 @@ -1221,7 +1234,7 @@ 4 - 80 + 81 1 0 0 @@ -1233,7 +1246,7 @@ 4 - 81 + 82 1 0 0 @@ -1245,7 +1258,7 @@ 4 - 82 + 83 1 0 0 @@ -1257,7 +1270,7 @@ 4 - 83 + 84 1 0 0 @@ -1269,7 +1282,7 @@ 4 - 84 + 85 1 0 0 @@ -1281,7 +1294,7 @@ 4 - 85 + 86 1 0 0 @@ -1293,7 +1306,7 @@ 4 - 86 + 87 1 0 0 @@ -1305,7 +1318,7 @@ 4 - 87 + 88 1 0 0 @@ -1317,7 +1330,7 @@ 4 - 88 + 89 1 0 0 @@ -1329,7 +1342,7 @@ 4 - 89 + 90 1 0 0 @@ -1341,7 +1354,7 @@ 4 - 90 + 91 1 0 0 @@ -1353,7 +1366,7 @@ 4 - 91 + 92 1 0 0 @@ -1365,7 +1378,7 @@ 4 - 92 + 93 1 0 0 @@ -1377,7 +1390,7 @@ 4 - 93 + 94 1 0 0 @@ -1389,7 +1402,7 @@ 4 - 94 + 95 1 0 0 @@ -1401,7 +1414,7 @@ 4 - 95 + 96 1 0 0 @@ -1413,7 +1426,7 @@ 4 - 96 + 97 1 0 0 @@ -1425,7 +1438,7 @@ 4 - 97 + 98 1 0 0 @@ -1435,6 +1448,18 @@ 0 0 + + 4 + 99 + 1 + 0 + 0 + 0 + ..\User\e-Paper\EPD_2in36g.c + EPD_2in36g.c + 0 + 0 + @@ -1445,7 +1470,7 @@ 0 5 - 98 + 100 1 0 0 @@ -1465,7 +1490,7 @@ 0 6 - 99 + 101 1 0 0 @@ -1485,7 +1510,7 @@ 0 7 - 100 + 102 1 0 0 @@ -1497,7 +1522,7 @@ 7 - 101 + 103 1 0 0 @@ -1509,7 +1534,7 @@ 7 - 102 + 104 1 0 0 @@ -1521,7 +1546,7 @@ 7 - 103 + 105 1 0 0 @@ -1533,7 +1558,7 @@ 7 - 104 + 106 1 0 0 @@ -1545,7 +1570,7 @@ 7 - 105 + 107 1 0 0 @@ -1557,7 +1582,7 @@ 7 - 106 + 108 1 0 0 @@ -1577,7 +1602,7 @@ 0 8 - 107 + 109 5 0 0 @@ -1589,7 +1614,7 @@ 8 - 108 + 110 5 0 0 @@ -1609,7 +1634,7 @@ 0 9 - 109 + 111 1 0 0 @@ -1629,7 +1654,7 @@ 0 10 - 110 + 112 1 0 0 @@ -1641,7 +1666,7 @@ 10 - 111 + 113 1 0 0 @@ -1653,7 +1678,7 @@ 10 - 112 + 114 1 0 0 @@ -1665,7 +1690,7 @@ 10 - 113 + 115 1 0 0 @@ -1677,7 +1702,7 @@ 10 - 114 + 116 1 0 0 @@ -1689,7 +1714,7 @@ 10 - 115 + 117 1 0 0 @@ -1701,7 +1726,7 @@ 10 - 116 + 118 1 0 0 @@ -1713,7 +1738,7 @@ 10 - 117 + 119 1 0 0 @@ -1725,7 +1750,7 @@ 10 - 118 + 120 1 0 0 @@ -1737,7 +1762,7 @@ 10 - 119 + 121 1 0 0 @@ -1749,7 +1774,7 @@ 10 - 120 + 122 1 0 0 @@ -1761,7 +1786,7 @@ 10 - 121 + 123 1 0 0 @@ -1773,7 +1798,7 @@ 10 - 122 + 124 1 0 0 @@ -1785,7 +1810,7 @@ 10 - 123 + 125 1 0 0 @@ -1797,7 +1822,7 @@ 10 - 124 + 126 1 0 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx index 065e7d9..019f806 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx @@ -16,7 +16,7 @@ STM32F103ZE STMicroelectronics - Keil.STM32F1xx_DFP.2.3.0 + Keil.STM32F1xx_DFP.2.1.0 http://www.keil.com/pack/ IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") @@ -184,6 +184,7 @@ 0 0 0 + 0 0 0 8 @@ -656,6 +657,11 @@ 1 ..\User\Examples\EPD_7in3g_test.c + + EPD_2in36g_test.c + 1 + ..\User\Examples\EPD_2in36g_test.c + @@ -881,6 +887,11 @@ 1 ..\User\e-Paper\EPD_7in3g.c + + EPD_2in36g.c + 1 + ..\User\e-Paper\EPD_2in36g.c + diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm index 1d782a4..3e1ca69 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm @@ -3,58 +3,202 @@
 

Vision Build Log

Tool Versions:

-IDE-Version: Vision V5.25.2.0 +IDE-Version: Vision V5.26.2.0 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved. -License Information: ass ass, ass, LIC=JL2UH-W872P-CJR6Z-JYZTW-ESB48-R6YF4 +License Information: , , LIC=RC93N-YLJYL-JJH6S-LI3Z1-D1AV2-99PL8 Tool Versions: -Toolchain: MDK-ARM Plus Version: 5.25.2.0 -Toolchain Path: D:\Program Files\keil5\ARM\ARMCC\Bin +Toolchain: MDK-ARM Plus Version: 5.26.2.0 +Toolchain Path: D:\KEIL\azwz\ARM\ARMCC\Bin C Compiler: Armcc.exe V5.06 update 6 (build 750) Assembler: Armasm.exe V5.06 update 6 (build 750) Linker/Locator: ArmLink.exe V5.06 update 6 (build 750) Library Manager: ArmAr.exe V5.06 update 6 (build 750) Hex Converter: FromElf.exe V5.06 update 6 (build 750) -CPU DLL: SARMCM3.DLL V5.25.2.0 -Dialog DLL: DCM.DLL V1.17.1.0 -Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0 -Dialog DLL: TCM.DLL V1.35.1.0 +CPU DLL: SARMCM3.DLL V5.26.2.0 +Dialog DLL: DCM.DLL V1.17.2.0 +Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.5.0 +Dialog DLL: TCM.DLL V1.36.1.0

Project:

-E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx -Project File Date: 08/16/2022 +E:\Ŀ\e-Paper\Code\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx +Project File Date: 08/17/2022

Output:

-*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin' +*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\KEIL\azwz\ARM\ARMCC\Bin' Build target 'epd-demo' +assembling startup_stm32f103xe.s... +compiling gpio.c... +compiling usart.c... +compiling spi.c... +compiling main.c... +compiling stm32f1xx_it.c... +compiling ImageData2.c... +..\User\Examples\ImageData2.c(11767): warning: #1-D: last line of file ends without a newline + }; +..\User\Examples\ImageData2.c: 1 warning, 0 errors +compiling ImageData.c... +compiling stm32f1xx_hal_msp.c... +compiling EPD_1in54_V2_test.c... +compiling EPD_1in02_test.c... +compiling EPD_1in54_test.c... +compiling EPD_1in54b_test.c... +compiling EPD_2in7b_V2_test.c... +compiling EPD_1in54b_V2_test.c... +compiling EPD_2in7b_test.c... +compiling EPD_1in54c_test.c... +compiling EPD_2in7_test.c... +compiling EPD_2in9d_test.c... +compiling EPD_2in9bc_test.c... +compiling EPD_2in9b_V3_test.c... +compiling EPD_2in9_V2_test.c... +compiling EPD_2in9_test.c... +compiling EPD_2in13_test.c... +compiling EPD_2in13_V3_test.c... +compiling EPD_2in13_V2_test.c... +compiling EPD_2in13b_V3_test.c... +compiling EPD_2in13b_V4_test.c... +compiling EPD_3in52_test.c... +compiling EPD_2in13d_test.c... +compiling EPD_2in13bc_test.c... +compiling EPD_2in66_test.c... +compiling EPD_2in66b_test.c... +compiling EPD_3in7_test.c... +compiling EPD_4in2bc_test.c... +compiling EPD_4in2b_V2_test.c... +compiling EPD_4in2_test.c... +compiling EPD_4in01f_test.c... +compiling EPD_5in83_V2_test.c... +compiling EPD_5in83_test.c... +compiling EPD_5in65f_test.c... +compiling EPD_5in83b_V2_test.c... +compiling EPD_5in83bc_test.c... +compiling EPD_7in5b_V2_test.c... +compiling EPD_7in5_V2_test.c... +compiling EPD_7in5bc_test.c... +compiling EPD_7in5_test.c... +compiling EPD_7in5b_HD_test.c... +compiling EPD_7in5_HD_test.c... +compiling EPD_7in3g_test.c... +compiling EPD_3in0g_test.c... +compiling EPD_1in64g_test.c... compiling EPD_4in37g_test.c... +compiling EPD_1in02d.c... +compiling EPD_1in54b.c... +compiling EPD_1in54.c... +compiling EPD_1in54_V2.c... +compiling EPD_2in36g_test.c... +compiling EPD_2in7.c... +compiling EPD_2in7b_V2.c... +compiling EPD_2in7b.c... +compiling EPD_1in54b_V2.c... +compiling EPD_1in54c.c... +compiling EPD_2in9.c... +compiling EPD_2in9d.c... +compiling EPD_2in9bc.c... +compiling EPD_2in9_V2.c... +compiling EPD_2in9b_V3.c... +compiling EPD_2in13_V2.c... +compiling EPD_2in13.c... +compiling EPD_2in13bc.c... +compiling EPD_2in13b_V3.c... +compiling EPD_2in13_V3.c... +compiling EPD_2in13b_V4.c... +compiling EPD_2in13d.c... +compiling EPD_2in66b.c... +compiling EPD_2in66.c... +compiling EPD_3in52.c... +compiling EPD_3in7.c... +compiling EPD_4in2.c... +..\User\e-Paper\EPD_4in2.c(612): warning: #550-D: variable "Height" was set but never used + UWORD Width, Height; +..\User\e-Paper\EPD_4in2.c: 1 warning, 0 errors +compiling EPD_4in2bc.c... +compiling EPD_4in2b_V2.c... +compiling EPD_4in01f.c... +compiling EPD_5in83bc.c... +compiling EPD_5in83b_V2.c... +compiling EPD_5in65f.c... +compiling EPD_5in83_V2.c... +compiling EPD_5in83.c... +compiling EPD_7in5_V2.c... +compiling EPD_7in5bc.c... +compiling EPD_7in5b_V2.c... +compiling EPD_7in5_HD.c... +compiling EPD_7in5.c... +compiling EPD_1in64g.c... +..\User\e-Paper\EPD_1in64g.c(86): warning: #177-D: function "EPD_1IN64G_ReadBusyL" was declared but never referenced + static void EPD_1IN64G_ReadBusyL(void) +..\User\e-Paper\EPD_1in64g.c: 1 warning, 0 errors +compiling EPD_7in5b_HD.c... +compiling EPD_3in0g.c... +..\User\e-Paper\EPD_3in0g.c(86): warning: #177-D: function "EPD_3IN0G_ReadBusyL" was declared but never referenced + static void EPD_3IN0G_ReadBusyL(void) +..\User\e-Paper\EPD_3in0g.c: 1 warning, 0 errors +compiling EPD_7in3g.c... +..\User\e-Paper\EPD_7in3g.c(86): warning: #177-D: function "EPD_7IN3G_ReadBusyL" was declared but never referenced + static void EPD_7IN3G_ReadBusyL(void) +..\User\e-Paper\EPD_7in3g.c: 1 warning, 0 errors +compiling EPD_4in37g.c... +..\User\e-Paper\EPD_4in37g.c(86): warning: #177-D: function "EPD_4IN37G_ReadBusyL" was declared but never referenced + static void EPD_4IN37G_ReadBusyL(void) +..\User\e-Paper\EPD_4in37g.c: 1 warning, 0 errors +compiling font8.c... +compiling font12.c... +compiling font12CN.c... +compiling font16.c... +compiling font20.c... +compiling font24.c... +compiling font24CN.c... +compiling DEV_Config.c... +compiling stm32f1xx_hal_gpio_ex.c... +compiling EPD_2in36g.c... +..\User\e-Paper\EPD_2in36g.c(86): warning: #177-D: function "EPD_2IN36G_ReadBusyL" was declared but never referenced + static void EPD_2IN36G_ReadBusyL(void) +..\User\e-Paper\EPD_2in36g.c: 1 warning, 0 errors +compiling system_stm32f1xx.c... +compiling GUI_Paint.c... +compiling stm32f1xx_hal.c... +compiling stm32f1xx_hal_gpio.c... +compiling stm32f1xx_hal_rcc_ex.c... +compiling stm32f1xx_hal_rcc.c... +compiling stm32f1xx_hal_spi.c... +compiling stm32f1xx_hal_flash.c... +compiling stm32f1xx_hal_cortex.c... +compiling stm32f1xx_hal_flash_ex.c... +compiling stm32f1xx_hal_pwr.c... +compiling stm32f1xx_hal_dma.c... +compiling stm32f1xx_hal_tim.c... +compiling stm32f1xx_hal_exti.c... +compiling stm32f1xx_hal_tim_ex.c... +compiling stm32f1xx_hal_uart.c... linking... -Program Size: Code=24416 RO-data=57124 RW-data=56 ZI-data=53424 +Program Size: Code=24680 RO-data=21692 RW-data=56 ZI-data=53424 FromELF: creating hex file... -"epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s). +"epd-demo\epd-demo.axf" - 0 Error(s), 7 Warning(s).

Software Packages used:

Package Vendor: ARM - http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack - ARM.CMSIS.5.7.0 - CMSIS (Cortex Microcontroller Software Interface Standard) - * Component: CORE Version: 5.4.0 + http://www.keil.com/pack/ARM.CMSIS.5.9.0.pack + ARM.CMSIS.5.9.0 + CMSIS (Common Microcontroller Software Interface Standard) + * Component: CORE Version: 5.6.0 Package Vendor: Keil - http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack - Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.1.0.pack + Keil.STM32F1xx_DFP.2.1.0 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples

Collection of Component include folders:

.\RTE\_epd-demo - D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include - D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include + D:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include + D:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include

Collection of Component Files used:

- * Component: ARM::CMSIS:CORE:5.4.0 -Build Time Elapsed: 00:00:02 + * Component: ARM::CMSIS:CORE:5.6.0 +Build Time Elapsed: 00:00:56
diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm index 2351e8c..482202b 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm @@ -3,11 +3,11 @@ Static Call Graph - [epd-demo\epd-demo.axf]

Static Call Graph for image epd-demo\epd-demo.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Tue Aug 16 16:55:17 2022 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Wed Aug 17 17:17:30 2022

Maximum Stack Usage = 760 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-main ⇒ EPD_4in37g_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +main ⇒ EPD_2in36g_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf

Mutually Recursive functions @@ -365,14 +365,14 @@ Global Symbols

main (Thumb, 36 bytes, Stack size 0 bytes, main.o(.text)) -

[Stack]

  • Max Depth = 760
  • Call Chain = main ⇒ EPD_4in37g_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +

    [Stack]
    • Max Depth = 760
    • Call Chain = main ⇒ EPD_2in36g_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf

    [Calls]
    • >>   MX_USART1_UART_Init
    • >>   MX_SPI1_Init
    • >>   MX_GPIO_Init
    • >>   HAL_Init
    • >>   HAL_Delay -
    • >>   EPD_4in37g_test +
    • >>   EPD_2in36g_test
    • >>   SystemClock_Config

    [Address Reference Count : 1]
    • entry9a.o(.ARM.Collect$$$$0000000B) @@ -493,11 +493,11 @@ Global Symbols
      [Called By]
      • >>   HAL_Init
      -

      EPD_4in37g_test (Thumb, 688 bytes, Stack size 56 bytes, epd_4in37g_test.o(.text)) -

      [Stack]

      • Max Depth = 760
      • Call Chain = EPD_4in37g_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +

        EPD_2in36g_test (Thumb, 966 bytes, Stack size 56 bytes, epd_2in36g_test.o(.text)) +

        [Stack]

        • Max Depth = 760
        • Call Chain = EPD_2in36g_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf

        [Calls]
        • >>   Paint_SetScale -
        • >>   Paint_DrawBitMap +
        • >>   Paint_DrawBitMap
        • >>   Paint_SelectImage
        • >>   Paint_NewImage
        • >>   Paint_DrawString_EN @@ -507,14 +507,14 @@ Global Symbols
        • >>   Paint_DrawNum
        • >>   Paint_DrawLine
        • >>   Paint_DrawCircle -
        • >>   Paint_Clear +
        • >>   Paint_Clear
        • >>   DEV_Module_Init
        • >>   DEV_Module_Exit
        • >>   HAL_Delay -
        • >>   EPD_4IN37G_Sleep -
        • >>   EPD_4IN37G_Init -
        • >>   EPD_4IN37G_Display -
        • >>   EPD_4IN37G_Clear +
        • >>   EPD_2IN36G_Sleep +
        • >>   EPD_2IN36G_Init +
        • >>   EPD_2IN36G_Display +
        • >>   EPD_2IN36G_Clear
        • >>   malloc
        • >>   free
        • >>   __2printf @@ -522,46 +522,46 @@ Global Symbols
          [Called By]
          • >>   main
          -

          EPD_4IN37G_Init (Thumb, 344 bytes, Stack size 8 bytes, epd_4in37g.o(.text)) -

          [Stack]

          • Max Depth = 120
          • Call Chain = EPD_4IN37G_Init ⇒ EPD_4IN37G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

            EPD_2IN36G_Init (Thumb, 284 bytes, Stack size 8 bytes, epd_2in36g.o(.text)) +

            [Stack]

            • Max Depth = 120
            • Call Chain = EPD_2IN36G_Init ⇒ EPD_2IN36G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout

            [Calls]
            • >>   HAL_GPIO_WritePin
            • >>   HAL_Delay -
            • >>   EPD_4IN37G_SendData -
            • >>   EPD_4IN37G_SendCommand +
            • >>   EPD_2IN36G_SendData +
            • >>   EPD_2IN36G_SendCommand
            -
            [Called By]
            • >>   EPD_4in37g_test +
              [Called By]
              • >>   EPD_2in36g_test
              -

              EPD_4IN37G_Clear (Thumb, 74 bytes, Stack size 24 bytes, epd_4in37g.o(.text)) -

              [Stack]

              • Max Depth = 144
              • Call Chain = EPD_4IN37G_Clear ⇒ EPD_4IN37G_TurnOnDisplay ⇒ EPD_4IN37G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

                EPD_2IN36G_Clear (Thumb, 98 bytes, Stack size 24 bytes, epd_2in36g.o(.text)) +

                [Stack]

                • Max Depth = 144
                • Call Chain = EPD_2IN36G_Clear ⇒ EPD_2IN36G_TurnOnDisplay ⇒ EPD_2IN36G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                -
                [Calls]
                • >>   EPD_4IN37G_TurnOnDisplay -
                • >>   EPD_4IN37G_SendData -
                • >>   EPD_4IN37G_SendCommand -
                • >>   EPD_4IN37G_ReadBusyH +
                  [Calls]
                  • >>   EPD_2IN36G_TurnOnDisplay +
                  • >>   EPD_2IN36G_SendData +
                  • >>   EPD_2IN36G_SendCommand +
                  • >>   EPD_2IN36G_ReadBusyH
                  -
                  [Called By]
                  • >>   EPD_4in37g_test +
                    [Called By]
                    • >>   EPD_2in36g_test
                    -

                    EPD_4IN37G_Display (Thumb, 72 bytes, Stack size 32 bytes, epd_4in37g.o(.text)) -

                    [Stack]

                    • Max Depth = 152
                    • Call Chain = EPD_4IN37G_Display ⇒ EPD_4IN37G_TurnOnDisplay ⇒ EPD_4IN37G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

                      EPD_2IN36G_Display (Thumb, 84 bytes, Stack size 32 bytes, epd_2in36g.o(.text)) +

                      [Stack]

                      • Max Depth = 152
                      • Call Chain = EPD_2IN36G_Display ⇒ EPD_2IN36G_TurnOnDisplay ⇒ EPD_2IN36G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                      -
                      [Calls]
                      • >>   EPD_4IN37G_TurnOnDisplay -
                      • >>   EPD_4IN37G_SendData -
                      • >>   EPD_4IN37G_SendCommand -
                      • >>   EPD_4IN37G_ReadBusyH +
                        [Calls]
                        • >>   EPD_2IN36G_TurnOnDisplay +
                        • >>   EPD_2IN36G_SendData +
                        • >>   EPD_2IN36G_SendCommand +
                        • >>   EPD_2IN36G_ReadBusyH
                        -
                        [Called By]
                        • >>   EPD_4in37g_test +
                          [Called By]
                          • >>   EPD_2in36g_test
                          -

                          EPD_4IN37G_Sleep (Thumb, 30 bytes, Stack size 8 bytes, epd_4in37g.o(.text)) -

                          [Stack]

                          • Max Depth = 120
                          • Call Chain = EPD_4IN37G_Sleep ⇒ EPD_4IN37G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

                            EPD_2IN36G_Sleep (Thumb, 30 bytes, Stack size 8 bytes, epd_2in36g.o(.text)) +

                            [Stack]

                            • Max Depth = 120
                            • Call Chain = EPD_2IN36G_Sleep ⇒ EPD_2IN36G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                            -
                            [Calls]
                            • >>   EPD_4IN37G_SendData -
                            • >>   EPD_4IN37G_SendCommand +
                              [Calls]
                              • >>   EPD_2IN36G_SendData +
                              • >>   EPD_2IN36G_SendCommand
                              -
                              [Called By]
                              • >>   EPD_4in37g_test +
                                [Called By]
                                • >>   EPD_2in36g_test

                                DEV_SPI_WriteByte (Thumb, 18 bytes, Stack size 8 bytes, dev_config.o(.text)) @@ -569,8 +569,8 @@ Global Symbols


                              [Calls]
                              • >>   HAL_SPI_Transmit
                              -
                              [Called By]
                              • >>   EPD_4IN37G_SendData -
                              • >>   EPD_4IN37G_SendCommand +
                                [Called By]
                                • >>   EPD_2IN36G_SendData +
                                • >>   EPD_2IN36G_SendCommand

                                DEV_Module_Init (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text)) @@ -578,7 +578,7 @@ Global Symbols


                              [Calls]
                              • >>   HAL_GPIO_WritePin
                              -
                              [Called By]
                              • >>   EPD_4in37g_test +
                                [Called By]
                                • >>   EPD_2in36g_test

                                DEV_Module_Exit (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text)) @@ -586,17 +586,17 @@ Global Symbols


                              [Calls]
                              • >>   HAL_GPIO_WritePin
                              -
                              [Called By]
                              • >>   EPD_4in37g_test +
                                [Called By]
                                • >>   EPD_2in36g_test

                                Paint_NewImage (Thumb, 56 bytes, Stack size 16 bytes, gui_paint.o(.text))

                                [Stack]

                                • Max Depth = 16
                                • Call Chain = Paint_NewImage
                                -
                                [Called By]
                                • >>   EPD_4in37g_test +
                                  [Called By]
                                  • >>   EPD_2in36g_test

                                  Paint_SelectImage (Thumb, 6 bytes, Stack size 0 bytes, gui_paint.o(.text)) -

                                  [Called By]

                                  • >>   EPD_4in37g_test +

                                    [Called By]
                                    • >>   EPD_2in36g_test

                                    Paint_SetRotate (Thumb, 44 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED) @@ -608,7 +608,7 @@ Global Symbols


                                  [Calls]
                                  • >>   __2printf
                                  -
                                  [Called By]
                                  • >>   EPD_4in37g_test +
                                    [Called By]
                                    • >>   EPD_2in36g_test

                                    Paint_SetMirroring (Thumb, 62 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED) @@ -627,10 +627,10 @@ Global Symbols

                                  • >>   Paint_DrawChar
                                  -

                                  Paint_Clear (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text)) +

                                  Paint_Clear (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text))

                                  [Stack]

                                  • Max Depth = 12
                                  • Call Chain = Paint_Clear
                                  -
                                  [Called By]
                                  • >>   EPD_4in37g_test +
                                    [Called By]
                                    • >>   EPD_2in36g_test

                                    Paint_ClearWindows (Thumb, 52 bytes, Stack size 32 bytes, gui_paint.o(.text), UNUSED) @@ -645,7 +645,7 @@ Global Symbols


                                  [Called By]
                                  • >>   Paint_DrawLine
                                  • >>   Paint_DrawCircle -
                                  • >>   EPD_4in37g_test +
                                  • >>   EPD_2in36g_test

                                  Paint_DrawLine (Thumb, 662 bytes, Stack size 48 bytes, gui_paint.o(.text)) @@ -655,7 +655,7 @@ Global Symbols

                                • >>   __2printf

                                [Called By]
                                • >>   Paint_DrawRectangle -
                                • >>   EPD_4in37g_test +
                                • >>   EPD_2in36g_test

                                Paint_DrawRectangle (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text)) @@ -664,7 +664,7 @@ Global Symbols
                                [Calls]

                                • >>   Paint_DrawLine
                                • >>   __2printf
                                -
                                [Called By]
                                • >>   EPD_4in37g_test +
                                  [Called By]
                                  • >>   EPD_2in36g_test

                                  Paint_DrawCircle (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text)) @@ -673,7 +673,7 @@ Global Symbols
                                  [Calls]

                                  • >>   Paint_DrawPoint
                                  • >>   __2printf
                                  -
                                  [Called By]
                                  • >>   EPD_4in37g_test +
                                    [Called By]
                                    • >>   EPD_2in36g_test

                                    Paint_DrawChar (Thumb, 172 bytes, Stack size 40 bytes, gui_paint.o(.text)) @@ -693,7 +693,7 @@ Global Symbols

                                  • >>   __2printf

                                  [Called By]
                                  • >>   Paint_DrawNum -
                                  • >>   EPD_4in37g_test +
                                  • >>   EPD_2in36g_test

                                  Paint_DrawString_CN (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text)) @@ -701,7 +701,7 @@ Global Symbols


                                [Calls]
                                • >>   Paint_SetPixel
                                -
                                [Called By]
                                • >>   EPD_4in37g_test +
                                  [Called By]
                                  • >>   EPD_2in36g_test

                                  Paint_DrawNum (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text)) @@ -711,17 +711,17 @@ Global Symbols

                                • >>   __2printf
                                • >>   __aeabi_memclr4
                                -
                                [Called By]
                                • >>   EPD_4in37g_test +
                                  [Called By]
                                  • >>   EPD_2in36g_test

                                  Paint_DrawTime (Thumb, 282 bytes, Stack size 72 bytes, gui_paint.o(.text), UNUSED)

                                  [Calls]

                                  • >>   Paint_DrawChar
                                  -

                                  Paint_DrawBitMap (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text)) +

                                  Paint_DrawBitMap (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text))

                                  [Stack]

                                  • Max Depth = 16
                                  • Call Chain = Paint_DrawBitMap
                                  -
                                  [Called By]
                                  • >>   EPD_4in37g_test +
                                    [Called By]
                                    • >>   EPD_2in36g_test

                                    Paint_DrawBitMap_Paste (Thumb, 110 bytes, Stack size 56 bytes, gui_paint.o(.text), UNUSED) @@ -935,10 +935,10 @@ Global Symbols


                                  [Calls]
                                  • >>   HAL_GetTick
                                  -
                                  [Called By]
                                  • >>   EPD_4in37g_test +
                                    [Called By]
                                    • >>   EPD_2in36g_test
                                    • >>   main -
                                    • >>   EPD_4IN37G_Init -
                                    • >>   EPD_4IN37G_ReadBusyH +
                                    • >>   EPD_2IN36G_Init +
                                    • >>   EPD_2IN36G_ReadBusyH

                                    HAL_SuspendTick (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) @@ -1055,16 +1055,16 @@ Global Symbols

                                  HAL_GPIO_ReadPin (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text)) -

                                  [Called By]

                                  • >>   EPD_4IN37G_ReadBusyH +

                                    [Called By]
                                    • >>   EPD_2IN36G_ReadBusyH

                                    HAL_GPIO_WritePin (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))

                                    [Called By]

                                    • >>   DEV_Module_Init
                                    • >>   DEV_Module_Exit
                                    • >>   MX_GPIO_Init -
                                    • >>   EPD_4IN37G_Init -
                                    • >>   EPD_4IN37G_SendData -
                                    • >>   EPD_4IN37G_SendCommand +
                                    • >>   EPD_2IN36G_Init +
                                    • >>   EPD_2IN36G_SendData +
                                    • >>   EPD_2IN36G_SendCommand

                                    HAL_GPIO_TogglePin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) @@ -1387,13 +1387,13 @@ Global Symbols

                                  • >>   Paint_DrawLine
                                  • >>   Paint_DrawCircle
                                  • >>   HardFault_Handler -
                                  • >>   EPD_4in37g_test +
                                  • >>   EPD_2in36g_test
                                  • >>   Error_Handler
                                  • >>   Paint_SetMirroring
                                  • >>   Paint_DrawChar
                                  • >>   Paint_SetPixel
                                  • >>   Paint_SetRotate -
                                  • >>   EPD_4IN37G_ReadBusyH +
                                  • >>   EPD_2IN36G_ReadBusyH

                                  __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) @@ -1405,65 +1405,65 @@ Global Symbols

                                  free (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))

                                  [Stack]

                                  • Max Depth = 8
                                  • Call Chain = free
                                  -
                                  [Called By]
                                  • >>   EPD_4in37g_test +
                                    [Called By]
                                    • >>   EPD_2in36g_test

                                    malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))

                                    [Stack]

                                    • Max Depth = 20
                                    • Call Chain = malloc
                                    -
                                    [Called By]
                                    • >>   EPD_4in37g_test +
                                      [Called By]
                                      • >>   EPD_2in36g_test

                                      Local Symbols

                                      -

                                      EPD_4IN37G_ReadBusyH (Thumb, 40 bytes, Stack size 8 bytes, epd_4in37g.o(.text)) -

                                      [Stack]

                                      • Max Depth = 32
                                      • Call Chain = EPD_4IN37G_ReadBusyH ⇒ __2printf +

                                        EPD_2IN36G_ReadBusyH (Thumb, 40 bytes, Stack size 8 bytes, epd_2in36g.o(.text)) +

                                        [Stack]

                                        • Max Depth = 32
                                        • Call Chain = EPD_2IN36G_ReadBusyH ⇒ __2printf

                                        [Calls]
                                        • >>   HAL_Delay
                                        • >>   HAL_GPIO_ReadPin
                                        • >>   __2printf
                                        -
                                        [Called By]
                                        • >>   EPD_4IN37G_Display -
                                        • >>   EPD_4IN37G_Clear -
                                        • >>   EPD_4IN37G_TurnOnDisplay +
                                          [Called By]
                                          • >>   EPD_2IN36G_Display +
                                          • >>   EPD_2IN36G_Clear +
                                          • >>   EPD_2IN36G_TurnOnDisplay
                                          -

                                          EPD_4IN37G_SendCommand (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text)) -

                                          [Stack]

                                          • Max Depth = 112
                                          • Call Chain = EPD_4IN37G_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

                                            EPD_2IN36G_SendCommand (Thumb, 46 bytes, Stack size 16 bytes, epd_2in36g.o(.text)) +

                                            [Stack]

                                            • Max Depth = 112
                                            • Call Chain = EPD_2IN36G_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout

                                            [Calls]
                                            • >>   HAL_GPIO_WritePin
                                            • >>   DEV_SPI_WriteByte
                                            -
                                            [Called By]
                                            • >>   EPD_4IN37G_Sleep -
                                            • >>   EPD_4IN37G_Init -
                                            • >>   EPD_4IN37G_Display -
                                            • >>   EPD_4IN37G_Clear -
                                            • >>   EPD_4IN37G_TurnOnDisplay +
                                              [Called By]
                                              • >>   EPD_2IN36G_Sleep +
                                              • >>   EPD_2IN36G_Init +
                                              • >>   EPD_2IN36G_Display +
                                              • >>   EPD_2IN36G_Clear +
                                              • >>   EPD_2IN36G_TurnOnDisplay
                                              -

                                              EPD_4IN37G_SendData (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text)) -

                                              [Stack]

                                              • Max Depth = 112
                                              • Call Chain = EPD_4IN37G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

                                                EPD_2IN36G_SendData (Thumb, 46 bytes, Stack size 16 bytes, epd_2in36g.o(.text)) +

                                                [Stack]

                                                • Max Depth = 112
                                                • Call Chain = EPD_2IN36G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout

                                                [Calls]
                                                • >>   HAL_GPIO_WritePin
                                                • >>   DEV_SPI_WriteByte
                                                -
                                                [Called By]
                                                • >>   EPD_4IN37G_Sleep -
                                                • >>   EPD_4IN37G_Init -
                                                • >>   EPD_4IN37G_Display -
                                                • >>   EPD_4IN37G_Clear -
                                                • >>   EPD_4IN37G_TurnOnDisplay +
                                                  [Called By]
                                                  • >>   EPD_2IN36G_Sleep +
                                                  • >>   EPD_2IN36G_Init +
                                                  • >>   EPD_2IN36G_Display +
                                                  • >>   EPD_2IN36G_Clear +
                                                  • >>   EPD_2IN36G_TurnOnDisplay
                                                  -

                                                  EPD_4IN37G_TurnOnDisplay (Thumb, 36 bytes, Stack size 8 bytes, epd_4in37g.o(.text)) -

                                                  [Stack]

                                                  • Max Depth = 120
                                                  • Call Chain = EPD_4IN37G_TurnOnDisplay ⇒ EPD_4IN37G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +

                                                    EPD_2IN36G_TurnOnDisplay (Thumb, 36 bytes, Stack size 8 bytes, epd_2in36g.o(.text)) +

                                                    [Stack]

                                                    • Max Depth = 120
                                                    • Call Chain = EPD_2IN36G_TurnOnDisplay ⇒ EPD_2IN36G_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                    -
                                                    [Calls]
                                                    • >>   EPD_4IN37G_SendData -
                                                    • >>   EPD_4IN37G_SendCommand -
                                                    • >>   EPD_4IN37G_ReadBusyH +
                                                      [Calls]
                                                      • >>   EPD_2IN36G_SendData +
                                                      • >>   EPD_2IN36G_SendCommand +
                                                      • >>   EPD_2IN36G_ReadBusyH
                                                      -
                                                      [Called By]
                                                      • >>   EPD_4IN37G_Display -
                                                      • >>   EPD_4IN37G_Clear +
                                                        [Called By]
                                                        • >>   EPD_2IN36G_Display +
                                                        • >>   EPD_2IN36G_Clear

                                                        SPI_WaitFlagStateUntilTimeout (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text)) diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map index ff14f89..c5b893f 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map @@ -16,7 +16,7 @@ Section Cross References main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init main.o(.text) refers to spi.o(.text) for MX_SPI1_Init - main.o(.text) refers to epd_4in37g_test.o(.text) for EPD_4in37g_test + main.o(.text) refers to epd_2in36g_test.o(.text) for EPD_2in36g_test gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init spi.o(.text) refers to main.o(.text) for Error_Handler @@ -569,6 +569,17 @@ Section Cross References epd_7in3g_test.o(.text) refers to font16.o(.data) for Font16 epd_7in3g_test.o(.text) refers to font12.o(.data) for Font12 epd_7in3g_test.o(.text) refers to font24cn.o(.data) for Font24CN + epd_2in36g_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf + epd_2in36g_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init + epd_2in36g_test.o(.text) refers to epd_2in36g.o(.text) for EPD_2IN36G_Init + epd_2in36g_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay + epd_2in36g_test.o(.text) refers to malloc.o(i.malloc) for malloc + epd_2in36g_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage + epd_2in36g_test.o(.text) refers to malloc.o(i.free) for free + epd_2in36g_test.o(.text) refers to imagedata2.o(.constdata) for gImage_2in36g + epd_2in36g_test.o(.text) refers to font16.o(.data) for Font16 + epd_2in36g_test.o(.text) refers to font12.o(.data) for Font12 + epd_2in36g_test.o(.text) refers to font24cn.o(.data) for Font24CN epd_1in02d.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin epd_1in02d.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_1in02d.o(.text) refers to printf3.o(i.__0printf$3) for __2printf @@ -762,6 +773,10 @@ Section Cross References epd_7in3g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_7in3g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin epd_7in3g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte + epd_2in36g.o(.text) refers to printf3.o(i.__0printf$3) for __2printf + epd_2in36g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay + epd_2in36g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin + epd_2in36g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin dev_config.o(.text) refers to spi.o(.bss) for hspi1 @@ -1174,6 +1189,7 @@ Removing Unused input sections from the image. Removing imagedata2.o(.constdata), (7056 bytes). Removing imagedata2.o(.constdata), (16800 bytes). Removing imagedata2.o(.constdata), (96000 bytes). + Removing imagedata2.o(.constdata), (47104 bytes). Removing epd_1in02_test.o(.rev16_text), (4 bytes). Removing epd_1in02_test.o(.revsh_text), (4 bytes). Removing epd_1in02_test.o(.rrx_text), (6 bytes). @@ -1346,10 +1362,14 @@ Removing Unused input sections from the image. Removing epd_4in37g_test.o(.rev16_text), (4 bytes). Removing epd_4in37g_test.o(.revsh_text), (4 bytes). Removing epd_4in37g_test.o(.rrx_text), (6 bytes). + Removing epd_4in37g_test.o(.text), (1052 bytes). Removing epd_7in3g_test.o(.rev16_text), (4 bytes). Removing epd_7in3g_test.o(.revsh_text), (4 bytes). Removing epd_7in3g_test.o(.rrx_text), (6 bytes). Removing epd_7in3g_test.o(.text), (924 bytes). + Removing epd_2in36g_test.o(.rev16_text), (4 bytes). + Removing epd_2in36g_test.o(.revsh_text), (4 bytes). + Removing epd_2in36g_test.o(.rrx_text), (6 bytes). Removing epd_1in02d.o(.rev16_text), (4 bytes). Removing epd_1in02d.o(.revsh_text), (4 bytes). Removing epd_1in02d.o(.rrx_text), (6 bytes). @@ -1541,10 +1561,14 @@ Removing Unused input sections from the image. Removing epd_4in37g.o(.rev16_text), (4 bytes). Removing epd_4in37g.o(.revsh_text), (4 bytes). Removing epd_4in37g.o(.rrx_text), (6 bytes). + Removing epd_4in37g.o(.text), (748 bytes). Removing epd_7in3g.o(.rev16_text), (4 bytes). Removing epd_7in3g.o(.revsh_text), (4 bytes). Removing epd_7in3g.o(.rrx_text), (6 bytes). Removing epd_7in3g.o(.text), (884 bytes). + Removing epd_2in36g.o(.rev16_text), (4 bytes). + Removing epd_2in36g.o(.revsh_text), (4 bytes). + Removing epd_2in36g.o(.rrx_text), (6 bytes). Removing dev_config.o(.rev16_text), (4 bytes). Removing dev_config.o(.revsh_text), (4 bytes). Removing dev_config.o(.rrx_text), (6 bytes). @@ -1555,8 +1579,8 @@ Removing Unused input sections from the image. Removing font8.o(.data), (8 bytes). Removing font12cn.o(.constdata), (1494 bytes). Removing font12cn.o(.data), (12 bytes). - Removing font16.o(.constdata), (3040 bytes). - Removing font16.o(.data), (8 bytes). + Removing font20.o(.constdata), (3800 bytes). + Removing font20.o(.data), (8 bytes). Removing font24.o(.constdata), (6840 bytes). Removing font24.o(.data), (8 bytes). Removing system_stm32f1xx.o(.rev16_text), (4 bytes). @@ -1621,7 +1645,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -514 unused section(s) (total 1075618 bytes) removed from the image. +523 unused section(s) (total 1125310 bytes) removed from the image. ============================================================================== @@ -1653,44 +1677,44 @@ Image Symbol Table ../Src/stm32f1xx_it.c 0x00000000 Number 0 stm32f1xx_it.o ABSOLUTE ../Src/system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE ../Src/usart.c 0x00000000 Number 0 usart.o ABSOLUTE - ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE - ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE - ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE ../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE @@ -1735,6 +1759,7 @@ Image Symbol Table ..\User\Examples\EPD_2in13b_V4_test.c 0x00000000 Number 0 epd_2in13b_v4_test.o ABSOLUTE ..\User\Examples\EPD_2in13bc_test.c 0x00000000 Number 0 epd_2in13bc_test.o ABSOLUTE ..\User\Examples\EPD_2in13d_test.c 0x00000000 Number 0 epd_2in13d_test.o ABSOLUTE + ..\User\Examples\EPD_2in36g_test.c 0x00000000 Number 0 epd_2in36g_test.o ABSOLUTE ..\User\Examples\EPD_2in66_test.c 0x00000000 Number 0 epd_2in66_test.o ABSOLUTE ..\User\Examples\EPD_2in66b_test.c 0x00000000 Number 0 epd_2in66b_test.o ABSOLUTE ..\User\Examples\EPD_2in7_test.c 0x00000000 Number 0 epd_2in7_test.o ABSOLUTE @@ -1789,6 +1814,7 @@ Image Symbol Table ..\User\e-Paper\EPD_2in13b_V4.c 0x00000000 Number 0 epd_2in13b_v4.o ABSOLUTE ..\User\e-Paper\EPD_2in13bc.c 0x00000000 Number 0 epd_2in13bc.o ABSOLUTE ..\User\e-Paper\EPD_2in13d.c 0x00000000 Number 0 epd_2in13d.o ABSOLUTE + ..\User\e-Paper\EPD_2in36g.c 0x00000000 Number 0 epd_2in36g.o ABSOLUTE ..\User\e-Paper\EPD_2in66.c 0x00000000 Number 0 epd_2in66.o ABSOLUTE ..\User\e-Paper\EPD_2in66b.c 0x00000000 Number 0 epd_2in66b.o ABSOLUTE ..\User\e-Paper\EPD_2in7.c 0x00000000 Number 0 epd_2in7.o ABSOLUTE @@ -1834,6 +1860,7 @@ Image Symbol Table ..\\User\\Examples\\EPD_2in13b_V4_test.c 0x00000000 Number 0 epd_2in13b_v4_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in13bc_test.c 0x00000000 Number 0 epd_2in13bc_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in13d_test.c 0x00000000 Number 0 epd_2in13d_test.o ABSOLUTE + ..\\User\\Examples\\EPD_2in36g_test.c 0x00000000 Number 0 epd_2in36g_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in66_test.c 0x00000000 Number 0 epd_2in66_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in66b_test.c 0x00000000 Number 0 epd_2in66b_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in7_test.c 0x00000000 Number 0 epd_2in7_test.o ABSOLUTE @@ -1879,6 +1906,7 @@ Image Symbol Table ..\\User\\e-Paper\\EPD_2in13b_V4.c 0x00000000 Number 0 epd_2in13b_v4.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13bc.c 0x00000000 Number 0 epd_2in13bc.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13d.c 0x00000000 Number 0 epd_2in13d.o ABSOLUTE + ..\\User\\e-Paper\\EPD_2in36g.c 0x00000000 Number 0 epd_2in36g.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in66.c 0x00000000 Number 0 epd_2in66.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in66b.c 0x00000000 Number 0 epd_2in66b.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in7.c 0x00000000 Number 0 epd_2in7.o ABSOLUTE @@ -1932,87 +1960,87 @@ Image Symbol Table .text 0x0800031c Section 0 usart.o(.text) .text 0x080003f4 Section 0 stm32f1xx_it.o(.text) .text 0x08000424 Section 0 stm32f1xx_hal_msp.o(.text) - .text 0x08000460 Section 0 epd_4in37g_test.o(.text) - .text 0x08000890 Section 0 epd_4in37g.o(.text) - EPD_4IN37G_ReadBusyH 0x08000891 Thumb Code 40 epd_4in37g.o(.text) - EPD_4IN37G_SendCommand 0x08000ac1 Thumb Code 46 epd_4in37g.o(.text) - EPD_4IN37G_SendData 0x08000aef Thumb Code 46 epd_4in37g.o(.text) - EPD_4IN37G_TurnOnDisplay 0x08000b1d Thumb Code 36 epd_4in37g.o(.text) - .text 0x08000b7c Section 0 dev_config.o(.text) - .text 0x08000be4 Section 0 gui_paint.o(.text) - .text 0x08001a90 Section 0 system_stm32f1xx.o(.text) - .text 0x08001b54 Section 0 stm32f1xx_hal_spi.o(.text) - SPI_WaitFlagStateUntilTimeout 0x08001c3d Thumb Code 210 stm32f1xx_hal_spi.o(.text) - SPI_EndRxTxTransaction 0x08001d0f Thumb Code 36 stm32f1xx_hal_spi.o(.text) - SPI_EndRxTransaction 0x08001ecf Thumb Code 112 stm32f1xx_hal_spi.o(.text) - SPI_CloseTx_ISR 0x080022af Thumb Code 130 stm32f1xx_hal_spi.o(.text) - SPI_TxISR_8BIT 0x08002331 Thumb Code 30 stm32f1xx_hal_spi.o(.text) - SPI_TxISR_16BIT 0x0800234f Thumb Code 30 stm32f1xx_hal_spi.o(.text) - SPI_CloseRx_ISR 0x08002411 Thumb Code 76 stm32f1xx_hal_spi.o(.text) - SPI_RxISR_8BIT 0x0800245d Thumb Code 30 stm32f1xx_hal_spi.o(.text) - SPI_RxISR_16BIT 0x0800247b Thumb Code 30 stm32f1xx_hal_spi.o(.text) - SPI_CloseRxTx_ISR 0x0800249b Thumb Code 158 stm32f1xx_hal_spi.o(.text) - SPI_2linesTxISR_8BIT 0x08002539 Thumb Code 46 stm32f1xx_hal_spi.o(.text) - SPI_2linesRxISR_8BIT 0x08002567 Thumb Code 46 stm32f1xx_hal_spi.o(.text) - SPI_2linesTxISR_16BIT 0x08002595 Thumb Code 46 stm32f1xx_hal_spi.o(.text) - SPI_2linesRxISR_16BIT 0x080025c3 Thumb Code 46 stm32f1xx_hal_spi.o(.text) - SPI_DMAError 0x0800275d Thumb Code 34 stm32f1xx_hal_spi.o(.text) - SPI_DMATransmitCplt 0x0800277f Thumb Code 102 stm32f1xx_hal_spi.o(.text) - SPI_DMAHalfTransmitCplt 0x080027e7 Thumb Code 10 stm32f1xx_hal_spi.o(.text) - SPI_DMAReceiveCplt 0x080028c1 Thumb Code 110 stm32f1xx_hal_spi.o(.text) - SPI_DMAHalfReceiveCplt 0x08002931 Thumb Code 10 stm32f1xx_hal_spi.o(.text) - SPI_DMATransmitReceiveCplt 0x0800293b Thumb Code 92 stm32f1xx_hal_spi.o(.text) - SPI_DMAHalfTransmitReceiveCplt 0x08002999 Thumb Code 10 stm32f1xx_hal_spi.o(.text) - SPI_AbortRx_ISR 0x08002be7 Thumb Code 82 stm32f1xx_hal_spi.o(.text) - SPI_AbortTx_ISR 0x08002c39 Thumb Code 28 stm32f1xx_hal_spi.o(.text) - SPI_DMARxAbortCallback 0x08002d79 Thumb Code 98 stm32f1xx_hal_spi.o(.text) - SPI_DMATxAbortCallback 0x08002ddb Thumb Code 114 stm32f1xx_hal_spi.o(.text) - SPI_DMAAbortOnError 0x08003025 Thumb Code 16 stm32f1xx_hal_spi.o(.text) - .text 0x0800313c Section 0 stm32f1xx_hal.o(.text) - .text 0x080032c4 Section 0 stm32f1xx_hal_rcc.o(.text) - RCC_Delay 0x080033bf Thumb Code 32 stm32f1xx_hal_rcc.o(.text) - .text 0x08003b8c Section 0 stm32f1xx_hal_gpio.o(.text) - .text 0x08003f60 Section 0 stm32f1xx_hal_dma.o(.text) - DMA_SetConfig 0x0800406f Thumb Code 56 stm32f1xx_hal_dma.o(.text) - .text 0x08004ba8 Section 0 stm32f1xx_hal_cortex.o(.text) - .text 0x08004dcc Section 0 stm32f1xx_hal_uart.o(.text) - UART_SetConfig 0x08004dcd Thumb Code 194 stm32f1xx_hal_uart.o(.text) - UART_WaitOnFlagUntilTimeout 0x080050ad Thumb Code 120 stm32f1xx_hal_uart.o(.text) - UART_EndRxTransfer 0x0800535d Thumb Code 28 stm32f1xx_hal_uart.o(.text) - UART_EndTxTransfer 0x08005379 Thumb Code 18 stm32f1xx_hal_uart.o(.text) - UART_DMAError 0x0800538b Thumb Code 74 stm32f1xx_hal_uart.o(.text) - UART_DMATxHalfCplt 0x080053d7 Thumb Code 10 stm32f1xx_hal_uart.o(.text) - UART_DMATransmitCplt 0x080053e3 Thumb Code 48 stm32f1xx_hal_uart.o(.text) - UART_DMARxHalfCplt 0x0800549f Thumb Code 10 stm32f1xx_hal_uart.o(.text) - UART_DMAReceiveCplt 0x080054ab Thumb Code 62 stm32f1xx_hal_uart.o(.text) - UART_DMARxAbortCallback 0x080057df Thumb Code 44 stm32f1xx_hal_uart.o(.text) - UART_DMATxAbortCallback 0x0800580b Thumb Code 66 stm32f1xx_hal_uart.o(.text) - UART_DMATxOnlyAbortCallback 0x08005901 Thumb Code 20 stm32f1xx_hal_uart.o(.text) - UART_DMARxOnlyAbortCallback 0x08005975 Thumb Code 20 stm32f1xx_hal_uart.o(.text) - UART_EndTransmit_IT 0x080059f1 Thumb Code 26 stm32f1xx_hal_uart.o(.text) - UART_Transmit_IT 0x08005a0b Thumb Code 94 stm32f1xx_hal_uart.o(.text) - UART_DMAAbortOnError 0x08005a69 Thumb Code 16 stm32f1xx_hal_uart.o(.text) - UART_Receive_IT 0x08005a79 Thumb Code 146 stm32f1xx_hal_uart.o(.text) - .text 0x08005d68 Section 0 memseta.o(.text) - .text 0x08005d8c Section 0 uidiv.o(.text) - .text 0x08005db8 Section 36 init.o(.text) - i.__0printf$3 0x08005ddc Section 0 printf3.o(i.__0printf$3) - i.__scatterload_copy 0x08005dfc Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08005e0a Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08005e0c Section 14 handlers.o(i.__scatterload_zeroinit) - i._printf_core 0x08005e1c Section 0 printf3.o(i._printf_core) - _printf_core 0x08005e1d Thumb Code 436 printf3.o(i._printf_core) - i.free 0x08005fd4 Section 0 malloc.o(i.free) - i.malloc 0x08006024 Section 0 malloc.o(i.malloc) - .constdata 0x08006090 Section 47104 imagedata2.o(.constdata) - .constdata 0x08011890 Section 1140 font12.o(.constdata) - .constdata 0x08011d04 Section 3800 font20.o(.constdata) - .constdata 0x08012bdc Section 4482 font24cn.o(.constdata) - .constdata 0x08013d5e Section 16 system_stm32f1xx.o(.constdata) - .constdata 0x08013d6e Section 8 system_stm32f1xx.o(.constdata) - .conststring 0x08013d78 Section 233 gui_paint.o(.conststring) + .text 0x08000460 Section 0 epd_2in36g_test.o(.text) + .text 0x080009b0 Section 0 epd_2in36g.o(.text) + EPD_2IN36G_ReadBusyH 0x080009b1 Thumb Code 40 epd_2in36g.o(.text) + EPD_2IN36G_SendCommand 0x08000bc9 Thumb Code 46 epd_2in36g.o(.text) + EPD_2IN36G_SendData 0x08000bf7 Thumb Code 46 epd_2in36g.o(.text) + EPD_2IN36G_TurnOnDisplay 0x08000c25 Thumb Code 36 epd_2in36g.o(.text) + .text 0x08000c84 Section 0 dev_config.o(.text) + .text 0x08000cec Section 0 gui_paint.o(.text) + .text 0x08001b98 Section 0 system_stm32f1xx.o(.text) + .text 0x08001c5c Section 0 stm32f1xx_hal_spi.o(.text) + SPI_WaitFlagStateUntilTimeout 0x08001d45 Thumb Code 210 stm32f1xx_hal_spi.o(.text) + SPI_EndRxTxTransaction 0x08001e17 Thumb Code 36 stm32f1xx_hal_spi.o(.text) + SPI_EndRxTransaction 0x08001fd7 Thumb Code 112 stm32f1xx_hal_spi.o(.text) + SPI_CloseTx_ISR 0x080023b7 Thumb Code 130 stm32f1xx_hal_spi.o(.text) + SPI_TxISR_8BIT 0x08002439 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_TxISR_16BIT 0x08002457 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_CloseRx_ISR 0x08002519 Thumb Code 76 stm32f1xx_hal_spi.o(.text) + SPI_RxISR_8BIT 0x08002565 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_RxISR_16BIT 0x08002583 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_CloseRxTx_ISR 0x080025a3 Thumb Code 158 stm32f1xx_hal_spi.o(.text) + SPI_2linesTxISR_8BIT 0x08002641 Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_2linesRxISR_8BIT 0x0800266f Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_2linesTxISR_16BIT 0x0800269d Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_2linesRxISR_16BIT 0x080026cb Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_DMAError 0x08002865 Thumb Code 34 stm32f1xx_hal_spi.o(.text) + SPI_DMATransmitCplt 0x08002887 Thumb Code 102 stm32f1xx_hal_spi.o(.text) + SPI_DMAHalfTransmitCplt 0x080028ef Thumb Code 10 stm32f1xx_hal_spi.o(.text) + SPI_DMAReceiveCplt 0x080029c9 Thumb Code 110 stm32f1xx_hal_spi.o(.text) + SPI_DMAHalfReceiveCplt 0x08002a39 Thumb Code 10 stm32f1xx_hal_spi.o(.text) + SPI_DMATransmitReceiveCplt 0x08002a43 Thumb Code 92 stm32f1xx_hal_spi.o(.text) + SPI_DMAHalfTransmitReceiveCplt 0x08002aa1 Thumb Code 10 stm32f1xx_hal_spi.o(.text) + SPI_AbortRx_ISR 0x08002cef Thumb Code 82 stm32f1xx_hal_spi.o(.text) + SPI_AbortTx_ISR 0x08002d41 Thumb Code 28 stm32f1xx_hal_spi.o(.text) + SPI_DMARxAbortCallback 0x08002e81 Thumb Code 98 stm32f1xx_hal_spi.o(.text) + SPI_DMATxAbortCallback 0x08002ee3 Thumb Code 114 stm32f1xx_hal_spi.o(.text) + SPI_DMAAbortOnError 0x0800312d Thumb Code 16 stm32f1xx_hal_spi.o(.text) + .text 0x08003244 Section 0 stm32f1xx_hal.o(.text) + .text 0x080033cc Section 0 stm32f1xx_hal_rcc.o(.text) + RCC_Delay 0x080034c7 Thumb Code 32 stm32f1xx_hal_rcc.o(.text) + .text 0x08003c94 Section 0 stm32f1xx_hal_gpio.o(.text) + .text 0x08004068 Section 0 stm32f1xx_hal_dma.o(.text) + DMA_SetConfig 0x08004177 Thumb Code 56 stm32f1xx_hal_dma.o(.text) + .text 0x08004cb0 Section 0 stm32f1xx_hal_cortex.o(.text) + .text 0x08004ed4 Section 0 stm32f1xx_hal_uart.o(.text) + UART_SetConfig 0x08004ed5 Thumb Code 194 stm32f1xx_hal_uart.o(.text) + UART_WaitOnFlagUntilTimeout 0x080051b5 Thumb Code 120 stm32f1xx_hal_uart.o(.text) + UART_EndRxTransfer 0x08005465 Thumb Code 28 stm32f1xx_hal_uart.o(.text) + UART_EndTxTransfer 0x08005481 Thumb Code 18 stm32f1xx_hal_uart.o(.text) + UART_DMAError 0x08005493 Thumb Code 74 stm32f1xx_hal_uart.o(.text) + UART_DMATxHalfCplt 0x080054df Thumb Code 10 stm32f1xx_hal_uart.o(.text) + UART_DMATransmitCplt 0x080054eb Thumb Code 48 stm32f1xx_hal_uart.o(.text) + UART_DMARxHalfCplt 0x080055a7 Thumb Code 10 stm32f1xx_hal_uart.o(.text) + UART_DMAReceiveCplt 0x080055b3 Thumb Code 62 stm32f1xx_hal_uart.o(.text) + UART_DMARxAbortCallback 0x080058e7 Thumb Code 44 stm32f1xx_hal_uart.o(.text) + UART_DMATxAbortCallback 0x08005913 Thumb Code 66 stm32f1xx_hal_uart.o(.text) + UART_DMATxOnlyAbortCallback 0x08005a09 Thumb Code 20 stm32f1xx_hal_uart.o(.text) + UART_DMARxOnlyAbortCallback 0x08005a7d Thumb Code 20 stm32f1xx_hal_uart.o(.text) + UART_EndTransmit_IT 0x08005af9 Thumb Code 26 stm32f1xx_hal_uart.o(.text) + UART_Transmit_IT 0x08005b13 Thumb Code 94 stm32f1xx_hal_uart.o(.text) + UART_DMAAbortOnError 0x08005b71 Thumb Code 16 stm32f1xx_hal_uart.o(.text) + UART_Receive_IT 0x08005b81 Thumb Code 146 stm32f1xx_hal_uart.o(.text) + .text 0x08005e70 Section 0 memseta.o(.text) + .text 0x08005e94 Section 0 uidiv.o(.text) + .text 0x08005ec0 Section 36 init.o(.text) + i.__0printf$3 0x08005ee4 Section 0 printf3.o(i.__0printf$3) + i.__scatterload_copy 0x08005f04 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x08005f12 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x08005f14 Section 14 handlers.o(i.__scatterload_zeroinit) + i._printf_core 0x08005f24 Section 0 printf3.o(i._printf_core) + _printf_core 0x08005f25 Thumb Code 436 printf3.o(i._printf_core) + i.free 0x080060dc Section 0 malloc.o(i.free) + i.malloc 0x0800612c Section 0 malloc.o(i.malloc) + .constdata 0x08006198 Section 12432 imagedata2.o(.constdata) + .constdata 0x08009228 Section 1140 font12.o(.constdata) + .constdata 0x0800969c Section 3040 font16.o(.constdata) + .constdata 0x0800a27c Section 4482 font24cn.o(.constdata) + .constdata 0x0800b3fe Section 16 system_stm32f1xx.o(.constdata) + .constdata 0x0800b40e Section 8 system_stm32f1xx.o(.constdata) + .conststring 0x0800b418 Section 233 gui_paint.o(.conststring) .data 0x20000000 Section 8 font12.o(.data) - .data 0x20000008 Section 8 font20.o(.data) + .data 0x20000008 Section 8 font16.o(.data) .data 0x20000010 Section 12 font24cn.o(.data) .data 0x2000001c Section 4 system_stm32f1xx.o(.data) .data 0x20000020 Section 12 stm32f1xx_hal.o(.data) @@ -2171,201 +2199,201 @@ Image Symbol Table PendSV_Handler 0x08000409 Thumb Code 2 stm32f1xx_it.o(.text) SysTick_Handler 0x0800040b Thumb Code 4 stm32f1xx_it.o(.text) HAL_MspInit 0x08000425 Thumb Code 52 stm32f1xx_hal_msp.o(.text) - EPD_4in37g_test 0x08000461 Thumb Code 688 epd_4in37g_test.o(.text) - EPD_4IN37G_Init 0x080008b9 Thumb Code 344 epd_4in37g.o(.text) - EPD_4IN37G_Clear 0x08000a11 Thumb Code 74 epd_4in37g.o(.text) - EPD_4IN37G_Display 0x08000a5b Thumb Code 72 epd_4in37g.o(.text) - EPD_4IN37G_Sleep 0x08000aa3 Thumb Code 30 epd_4in37g.o(.text) - DEV_SPI_WriteByte 0x08000b7d Thumb Code 18 dev_config.o(.text) - DEV_Module_Init 0x08000b8f Thumb Code 38 dev_config.o(.text) - DEV_Module_Exit 0x08000bb5 Thumb Code 38 dev_config.o(.text) - Paint_NewImage 0x08000be5 Thumb Code 56 gui_paint.o(.text) - Paint_SelectImage 0x08000c1d Thumb Code 6 gui_paint.o(.text) - Paint_SetRotate 0x08000c23 Thumb Code 44 gui_paint.o(.text) - Paint_SetScale 0x08000c4f Thumb Code 80 gui_paint.o(.text) - Paint_SetMirroring 0x08000c9f Thumb Code 62 gui_paint.o(.text) - Paint_SetPixel 0x08000cdd Thumb Code 238 gui_paint.o(.text) - Paint_Clear 0x08000dcb Thumb Code 156 gui_paint.o(.text) - Paint_ClearWindows 0x08000e67 Thumb Code 52 gui_paint.o(.text) - Paint_DrawPoint 0x08000e9b Thumb Code 180 gui_paint.o(.text) - Paint_DrawLine 0x08000f4f Thumb Code 662 gui_paint.o(.text) - Paint_DrawRectangle 0x080011e5 Thumb Code 170 gui_paint.o(.text) - Paint_DrawCircle 0x0800128f Thumb Code 528 gui_paint.o(.text) - Paint_DrawChar 0x0800149f Thumb Code 172 gui_paint.o(.text) - Paint_DrawString_EN 0x0800154b Thumb Code 116 gui_paint.o(.text) - Paint_DrawString_CN 0x080015bf Thumb Code 518 gui_paint.o(.text) - Paint_DrawNum 0x080017c5 Thumb Code 140 gui_paint.o(.text) - Paint_DrawTime 0x08001851 Thumb Code 282 gui_paint.o(.text) - Paint_DrawBitMap 0x0800196b Thumb Code 46 gui_paint.o(.text) - Paint_DrawBitMap_Paste 0x08001999 Thumb Code 110 gui_paint.o(.text) - Paint_DrawBitMap_Block 0x08001a07 Thumb Code 54 gui_paint.o(.text) - SystemInit 0x08001a91 Thumb Code 60 system_stm32f1xx.o(.text) - SystemCoreClockUpdate 0x08001acd Thumb Code 108 system_stm32f1xx.o(.text) - HAL_SPI_Init 0x08001b57 Thumb Code 180 stm32f1xx_hal_spi.o(.text) - HAL_SPI_DeInit 0x08001c0d Thumb Code 48 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Transmit 0x08001d33 Thumb Code 412 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TransmitReceive 0x08001f3f Thumb Code 510 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Receive 0x0800213d Thumb Code 366 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TxCpltCallback 0x080022ab Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_ErrorCallback 0x080022ad Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Transmit_IT 0x0800236d Thumb Code 162 stm32f1xx_hal_spi.o(.text) - HAL_SPI_RxCpltCallback 0x0800240f Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TxRxCpltCallback 0x08002499 Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TransmitReceive_IT 0x080025f1 Thumb Code 188 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Receive_IT 0x080026ad Thumb Code 176 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TxHalfCpltCallback 0x080027e5 Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Transmit_DMA 0x080027f1 Thumb Code 208 stm32f1xx_hal_spi.o(.text) - HAL_SPI_RxHalfCpltCallback 0x0800292f Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TxRxHalfCpltCallback 0x08002997 Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_TransmitReceive_DMA 0x080029a3 Thumb Code 302 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Receive_DMA 0x08002ad1 Thumb Code 278 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Abort 0x08002c55 Thumb Code 290 stm32f1xx_hal_spi.o(.text) - HAL_SPI_AbortCpltCallback 0x08002d77 Thumb Code 2 stm32f1xx_hal_spi.o(.text) - HAL_SPI_Abort_IT 0x08002e4d Thumb Code 328 stm32f1xx_hal_spi.o(.text) - HAL_SPI_DMAPause 0x08002f95 Thumb Code 38 stm32f1xx_hal_spi.o(.text) - HAL_SPI_DMAResume 0x08002fbb Thumb Code 38 stm32f1xx_hal_spi.o(.text) - HAL_SPI_DMAStop 0x08002fe1 Thumb Code 68 stm32f1xx_hal_spi.o(.text) - HAL_SPI_IRQHandler 0x08003035 Thumb Code 250 stm32f1xx_hal_spi.o(.text) - HAL_SPI_GetState 0x0800312f Thumb Code 6 stm32f1xx_hal_spi.o(.text) - HAL_SPI_GetError 0x08003135 Thumb Code 4 stm32f1xx_hal_spi.o(.text) - HAL_InitTick 0x0800313f Thumb Code 58 stm32f1xx_hal.o(.text) - HAL_Init 0x08003179 Thumb Code 32 stm32f1xx_hal.o(.text) - HAL_MspDeInit 0x08003199 Thumb Code 2 stm32f1xx_hal.o(.text) - HAL_DeInit 0x0800319b Thumb Code 26 stm32f1xx_hal.o(.text) - HAL_IncTick 0x080031b5 Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_GetTick 0x080031c1 Thumb Code 6 stm32f1xx_hal.o(.text) - HAL_GetTickPrio 0x080031c7 Thumb Code 6 stm32f1xx_hal.o(.text) - HAL_SetTickFreq 0x080031cd Thumb Code 30 stm32f1xx_hal.o(.text) - HAL_GetTickFreq 0x080031eb Thumb Code 6 stm32f1xx_hal.o(.text) - HAL_Delay 0x080031f1 Thumb Code 34 stm32f1xx_hal.o(.text) - HAL_SuspendTick 0x08003213 Thumb Code 14 stm32f1xx_hal.o(.text) - HAL_ResumeTick 0x08003221 Thumb Code 14 stm32f1xx_hal.o(.text) - HAL_GetHalVersion 0x0800322f Thumb Code 4 stm32f1xx_hal.o(.text) - HAL_GetREVID 0x08003233 Thumb Code 8 stm32f1xx_hal.o(.text) - HAL_GetDEVID 0x0800323b Thumb Code 10 stm32f1xx_hal.o(.text) - HAL_GetUIDw0 0x08003245 Thumb Code 6 stm32f1xx_hal.o(.text) - HAL_GetUIDw1 0x0800324b Thumb Code 6 stm32f1xx_hal.o(.text) - HAL_GetUIDw2 0x08003251 Thumb Code 6 stm32f1xx_hal.o(.text) - HAL_DBGMCU_EnableDBGSleepMode 0x08003257 Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_DBGMCU_DisableDBGSleepMode 0x08003263 Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_DBGMCU_EnableDBGStopMode 0x0800326f Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_DBGMCU_DisableDBGStopMode 0x0800327b Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_DBGMCU_EnableDBGStandbyMode 0x08003287 Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_DBGMCU_DisableDBGStandbyMode 0x08003293 Thumb Code 12 stm32f1xx_hal.o(.text) - HAL_RCC_DeInit 0x080032c5 Thumb Code 250 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_OscConfig 0x080033df Thumb Code 1080 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_GetSysClockFreq 0x08003817 Thumb Code 88 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_ClockConfig 0x0800386f Thumb Code 364 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_MCOConfig 0x080039db Thumb Code 64 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_EnableCSS 0x08003a1b Thumb Code 8 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_DisableCSS 0x08003a23 Thumb Code 8 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_GetHCLKFreq 0x08003a2b Thumb Code 6 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_GetPCLK1Freq 0x08003a31 Thumb Code 22 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_GetPCLK2Freq 0x08003a47 Thumb Code 22 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_GetOscConfig 0x08003a5d Thumb Code 168 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_GetClockConfig 0x08003b05 Thumb Code 52 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_CSSCallback 0x08003b39 Thumb Code 2 stm32f1xx_hal_rcc.o(.text) - HAL_RCC_NMI_IRQHandler 0x08003b3b Thumb Code 22 stm32f1xx_hal_rcc.o(.text) - HAL_GPIO_Init 0x08003b8d Thumb Code 524 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_DeInit 0x08003d99 Thumb Code 320 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_ReadPin 0x08003ed9 Thumb Code 14 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_WritePin 0x08003ee7 Thumb Code 14 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_TogglePin 0x08003ef5 Thumb Code 16 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_LockPin 0x08003f05 Thumb Code 42 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_EXTI_Callback 0x08003f2f Thumb Code 2 stm32f1xx_hal_gpio.o(.text) - HAL_GPIO_EXTI_IRQHandler 0x08003f31 Thumb Code 18 stm32f1xx_hal_gpio.o(.text) - HAL_DMA_Init 0x08003f61 Thumb Code 144 stm32f1xx_hal_dma.o(.text) - HAL_DMA_DeInit 0x08003ff1 Thumb Code 126 stm32f1xx_hal_dma.o(.text) - HAL_DMA_Start 0x080040a7 Thumb Code 88 stm32f1xx_hal_dma.o(.text) - HAL_DMA_Start_IT 0x080040ff Thumb Code 124 stm32f1xx_hal_dma.o(.text) - HAL_DMA_Abort 0x0800417b Thumb Code 72 stm32f1xx_hal_dma.o(.text) - HAL_DMA_Abort_IT 0x080041c3 Thumb Code 318 stm32f1xx_hal_dma.o(.text) - HAL_DMA_PollForTransfer 0x08004301 Thumb Code 1316 stm32f1xx_hal_dma.o(.text) - HAL_DMA_IRQHandler 0x08004825 Thumb Code 672 stm32f1xx_hal_dma.o(.text) - HAL_DMA_RegisterCallback 0x08004ac5 Thumb Code 80 stm32f1xx_hal_dma.o(.text) - HAL_DMA_UnRegisterCallback 0x08004b15 Thumb Code 86 stm32f1xx_hal_dma.o(.text) - HAL_DMA_GetState 0x08004b6b Thumb Code 6 stm32f1xx_hal_dma.o(.text) - HAL_DMA_GetError 0x08004b71 Thumb Code 4 stm32f1xx_hal_dma.o(.text) - HAL_NVIC_SetPriorityGrouping 0x08004ba9 Thumb Code 30 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_SetPriority 0x08004bc7 Thumb Code 98 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_EnableIRQ 0x08004c29 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_DisableIRQ 0x08004c45 Thumb Code 36 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_SystemReset 0x08004c69 Thumb Code 26 stm32f1xx_hal_cortex.o(.text) - HAL_SYSTICK_Config 0x08004c83 Thumb Code 36 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_GetPriorityGrouping 0x08004ca7 Thumb Code 10 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_GetPriority 0x08004cb1 Thumb Code 94 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_SetPendingIRQ 0x08004d0f Thumb Code 28 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_GetPendingIRQ 0x08004d2b Thumb Code 42 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_ClearPendingIRQ 0x08004d55 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) - HAL_NVIC_GetActive 0x08004d71 Thumb Code 42 stm32f1xx_hal_cortex.o(.text) - HAL_SYSTICK_CLKSourceConfig 0x08004d9b Thumb Code 28 stm32f1xx_hal_cortex.o(.text) - HAL_SYSTICK_Callback 0x08004db7 Thumb Code 2 stm32f1xx_hal_cortex.o(.text) - HAL_SYSTICK_IRQHandler 0x08004db9 Thumb Code 8 stm32f1xx_hal_cortex.o(.text) - HAL_UART_Init 0x08004e91 Thumb Code 100 stm32f1xx_hal_uart.o(.text) - HAL_HalfDuplex_Init 0x08004ef5 Thumb Code 110 stm32f1xx_hal_uart.o(.text) - HAL_LIN_Init 0x08004f63 Thumb Code 130 stm32f1xx_hal_uart.o(.text) - HAL_MultiProcessor_Init 0x08004fe5 Thumb Code 146 stm32f1xx_hal_uart.o(.text) - HAL_UART_DeInit 0x08005079 Thumb Code 52 stm32f1xx_hal_uart.o(.text) - HAL_UART_Transmit 0x08005125 Thumb Code 202 stm32f1xx_hal_uart.o(.text) - HAL_UART_Receive 0x080051ef Thumb Code 212 stm32f1xx_hal_uart.o(.text) - HAL_UART_Transmit_IT 0x080052c3 Thumb Code 66 stm32f1xx_hal_uart.o(.text) - HAL_UART_Receive_IT 0x08005305 Thumb Code 86 stm32f1xx_hal_uart.o(.text) - HAL_UART_ErrorCallback 0x0800535b Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_TxHalfCpltCallback 0x080053d5 Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_TxCpltCallback 0x080053e1 Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_Transmit_DMA 0x08005413 Thumb Code 138 stm32f1xx_hal_uart.o(.text) - HAL_UART_RxHalfCpltCallback 0x0800549d Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_RxCpltCallback 0x080054a9 Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_Receive_DMA 0x080054e9 Thumb Code 150 stm32f1xx_hal_uart.o(.text) - HAL_UART_DMAPause 0x0800557f Thumb Code 102 stm32f1xx_hal_uart.o(.text) - HAL_UART_DMAResume 0x080055e5 Thumb Code 98 stm32f1xx_hal_uart.o(.text) - HAL_UART_DMAStop 0x08005647 Thumb Code 88 stm32f1xx_hal_uart.o(.text) - HAL_UART_Abort 0x0800569f Thumb Code 148 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortTransmit 0x08005733 Thumb Code 80 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortReceive 0x08005783 Thumb Code 90 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortCpltCallback 0x080057dd Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_Abort_IT 0x0800584d Thumb Code 178 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortTransmitCpltCallback 0x080058ff Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortTransmit_IT 0x08005915 Thumb Code 94 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortReceiveCpltCallback 0x08005973 Thumb Code 2 stm32f1xx_hal_uart.o(.text) - HAL_UART_AbortReceive_IT 0x08005989 Thumb Code 104 stm32f1xx_hal_uart.o(.text) - HAL_UART_IRQHandler 0x08005b0b Thumb Code 312 stm32f1xx_hal_uart.o(.text) - HAL_LIN_SendBreak 0x08005c43 Thumb Code 70 stm32f1xx_hal_uart.o(.text) - HAL_MultiProcessor_EnterMuteMode 0x08005c89 Thumb Code 50 stm32f1xx_hal_uart.o(.text) - HAL_MultiProcessor_ExitMuteMode 0x08005cbb Thumb Code 50 stm32f1xx_hal_uart.o(.text) - HAL_HalfDuplex_EnableTransmitter 0x08005ced Thumb Code 54 stm32f1xx_hal_uart.o(.text) - HAL_HalfDuplex_EnableReceiver 0x08005d23 Thumb Code 54 stm32f1xx_hal_uart.o(.text) - HAL_UART_GetState 0x08005d59 Thumb Code 12 stm32f1xx_hal_uart.o(.text) - HAL_UART_GetError 0x08005d65 Thumb Code 4 stm32f1xx_hal_uart.o(.text) - __aeabi_memset 0x08005d69 Thumb Code 14 memseta.o(.text) - __aeabi_memset4 0x08005d69 Thumb Code 0 memseta.o(.text) - __aeabi_memset8 0x08005d69 Thumb Code 0 memseta.o(.text) - __aeabi_memclr 0x08005d77 Thumb Code 4 memseta.o(.text) - __aeabi_memclr4 0x08005d77 Thumb Code 0 memseta.o(.text) - __aeabi_memclr8 0x08005d77 Thumb Code 0 memseta.o(.text) - _memset$wrapper 0x08005d7b Thumb Code 18 memseta.o(.text) - __aeabi_uidiv 0x08005d8d Thumb Code 0 uidiv.o(.text) - __aeabi_uidivmod 0x08005d8d Thumb Code 44 uidiv.o(.text) - __scatterload 0x08005db9 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08005db9 Thumb Code 0 init.o(.text) - __0printf$3 0x08005ddd Thumb Code 22 printf3.o(i.__0printf$3) - __1printf$3 0x08005ddd Thumb Code 0 printf3.o(i.__0printf$3) - __2printf 0x08005ddd Thumb Code 0 printf3.o(i.__0printf$3) - __scatterload_copy 0x08005dfd Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08005e0b Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08005e0d Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - free 0x08005fd5 Thumb Code 76 malloc.o(i.free) - malloc 0x08006025 Thumb Code 92 malloc.o(i.malloc) - Image4color 0x08006090 Data 47104 imagedata2.o(.constdata) - Font12_Table 0x08011890 Data 1140 font12.o(.constdata) - Font20_Table 0x08011d04 Data 3800 font20.o(.constdata) - Font24CN_Table 0x08012bdc Data 4482 font24cn.o(.constdata) - AHBPrescTable 0x08013d5e Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x08013d6e Data 8 system_stm32f1xx.o(.constdata) - Region$$Table$$Base 0x08013e64 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08013e84 Number 0 anon$$obj.o(Region$$Table) + EPD_2in36g_test 0x08000461 Thumb Code 966 epd_2in36g_test.o(.text) + EPD_2IN36G_Init 0x080009d9 Thumb Code 284 epd_2in36g.o(.text) + EPD_2IN36G_Clear 0x08000af5 Thumb Code 98 epd_2in36g.o(.text) + EPD_2IN36G_Display 0x08000b57 Thumb Code 84 epd_2in36g.o(.text) + EPD_2IN36G_Sleep 0x08000bab Thumb Code 30 epd_2in36g.o(.text) + DEV_SPI_WriteByte 0x08000c85 Thumb Code 18 dev_config.o(.text) + DEV_Module_Init 0x08000c97 Thumb Code 38 dev_config.o(.text) + DEV_Module_Exit 0x08000cbd Thumb Code 38 dev_config.o(.text) + Paint_NewImage 0x08000ced Thumb Code 56 gui_paint.o(.text) + Paint_SelectImage 0x08000d25 Thumb Code 6 gui_paint.o(.text) + Paint_SetRotate 0x08000d2b Thumb Code 44 gui_paint.o(.text) + Paint_SetScale 0x08000d57 Thumb Code 80 gui_paint.o(.text) + Paint_SetMirroring 0x08000da7 Thumb Code 62 gui_paint.o(.text) + Paint_SetPixel 0x08000de5 Thumb Code 238 gui_paint.o(.text) + Paint_Clear 0x08000ed3 Thumb Code 156 gui_paint.o(.text) + Paint_ClearWindows 0x08000f6f Thumb Code 52 gui_paint.o(.text) + Paint_DrawPoint 0x08000fa3 Thumb Code 180 gui_paint.o(.text) + Paint_DrawLine 0x08001057 Thumb Code 662 gui_paint.o(.text) + Paint_DrawRectangle 0x080012ed Thumb Code 170 gui_paint.o(.text) + Paint_DrawCircle 0x08001397 Thumb Code 528 gui_paint.o(.text) + Paint_DrawChar 0x080015a7 Thumb Code 172 gui_paint.o(.text) + Paint_DrawString_EN 0x08001653 Thumb Code 116 gui_paint.o(.text) + Paint_DrawString_CN 0x080016c7 Thumb Code 518 gui_paint.o(.text) + Paint_DrawNum 0x080018cd Thumb Code 140 gui_paint.o(.text) + Paint_DrawTime 0x08001959 Thumb Code 282 gui_paint.o(.text) + Paint_DrawBitMap 0x08001a73 Thumb Code 46 gui_paint.o(.text) + Paint_DrawBitMap_Paste 0x08001aa1 Thumb Code 110 gui_paint.o(.text) + Paint_DrawBitMap_Block 0x08001b0f Thumb Code 54 gui_paint.o(.text) + SystemInit 0x08001b99 Thumb Code 60 system_stm32f1xx.o(.text) + SystemCoreClockUpdate 0x08001bd5 Thumb Code 108 system_stm32f1xx.o(.text) + HAL_SPI_Init 0x08001c5f Thumb Code 180 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DeInit 0x08001d15 Thumb Code 48 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Transmit 0x08001e3b Thumb Code 412 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TransmitReceive 0x08002047 Thumb Code 510 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Receive 0x08002245 Thumb Code 366 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxCpltCallback 0x080023b3 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_ErrorCallback 0x080023b5 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Transmit_IT 0x08002475 Thumb Code 162 stm32f1xx_hal_spi.o(.text) + HAL_SPI_RxCpltCallback 0x08002517 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxRxCpltCallback 0x080025a1 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TransmitReceive_IT 0x080026f9 Thumb Code 188 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Receive_IT 0x080027b5 Thumb Code 176 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxHalfCpltCallback 0x080028ed Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Transmit_DMA 0x080028f9 Thumb Code 208 stm32f1xx_hal_spi.o(.text) + HAL_SPI_RxHalfCpltCallback 0x08002a37 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxRxHalfCpltCallback 0x08002a9f Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TransmitReceive_DMA 0x08002aab Thumb Code 302 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Receive_DMA 0x08002bd9 Thumb Code 278 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Abort 0x08002d5d Thumb Code 290 stm32f1xx_hal_spi.o(.text) + HAL_SPI_AbortCpltCallback 0x08002e7f Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Abort_IT 0x08002f55 Thumb Code 328 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DMAPause 0x0800309d Thumb Code 38 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DMAResume 0x080030c3 Thumb Code 38 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DMAStop 0x080030e9 Thumb Code 68 stm32f1xx_hal_spi.o(.text) + HAL_SPI_IRQHandler 0x0800313d Thumb Code 250 stm32f1xx_hal_spi.o(.text) + HAL_SPI_GetState 0x08003237 Thumb Code 6 stm32f1xx_hal_spi.o(.text) + HAL_SPI_GetError 0x0800323d Thumb Code 4 stm32f1xx_hal_spi.o(.text) + HAL_InitTick 0x08003247 Thumb Code 58 stm32f1xx_hal.o(.text) + HAL_Init 0x08003281 Thumb Code 32 stm32f1xx_hal.o(.text) + HAL_MspDeInit 0x080032a1 Thumb Code 2 stm32f1xx_hal.o(.text) + HAL_DeInit 0x080032a3 Thumb Code 26 stm32f1xx_hal.o(.text) + HAL_IncTick 0x080032bd Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_GetTick 0x080032c9 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_GetTickPrio 0x080032cf Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_SetTickFreq 0x080032d5 Thumb Code 30 stm32f1xx_hal.o(.text) + HAL_GetTickFreq 0x080032f3 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_Delay 0x080032f9 Thumb Code 34 stm32f1xx_hal.o(.text) + HAL_SuspendTick 0x0800331b Thumb Code 14 stm32f1xx_hal.o(.text) + HAL_ResumeTick 0x08003329 Thumb Code 14 stm32f1xx_hal.o(.text) + HAL_GetHalVersion 0x08003337 Thumb Code 4 stm32f1xx_hal.o(.text) + HAL_GetREVID 0x0800333b Thumb Code 8 stm32f1xx_hal.o(.text) + HAL_GetDEVID 0x08003343 Thumb Code 10 stm32f1xx_hal.o(.text) + HAL_GetUIDw0 0x0800334d Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_GetUIDw1 0x08003353 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_GetUIDw2 0x08003359 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_DBGMCU_EnableDBGSleepMode 0x0800335f Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_DisableDBGSleepMode 0x0800336b Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_EnableDBGStopMode 0x08003377 Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_DisableDBGStopMode 0x08003383 Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_EnableDBGStandbyMode 0x0800338f Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_DisableDBGStandbyMode 0x0800339b Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_RCC_DeInit 0x080033cd Thumb Code 250 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_OscConfig 0x080034e7 Thumb Code 1080 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetSysClockFreq 0x0800391f Thumb Code 88 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_ClockConfig 0x08003977 Thumb Code 364 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_MCOConfig 0x08003ae3 Thumb Code 64 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_EnableCSS 0x08003b23 Thumb Code 8 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_DisableCSS 0x08003b2b Thumb Code 8 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetHCLKFreq 0x08003b33 Thumb Code 6 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetPCLK1Freq 0x08003b39 Thumb Code 22 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetPCLK2Freq 0x08003b4f Thumb Code 22 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetOscConfig 0x08003b65 Thumb Code 168 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetClockConfig 0x08003c0d Thumb Code 52 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_CSSCallback 0x08003c41 Thumb Code 2 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_NMI_IRQHandler 0x08003c43 Thumb Code 22 stm32f1xx_hal_rcc.o(.text) + HAL_GPIO_Init 0x08003c95 Thumb Code 524 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_DeInit 0x08003ea1 Thumb Code 320 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_ReadPin 0x08003fe1 Thumb Code 14 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_WritePin 0x08003fef Thumb Code 14 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_TogglePin 0x08003ffd Thumb Code 16 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_LockPin 0x0800400d Thumb Code 42 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_EXTI_Callback 0x08004037 Thumb Code 2 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_EXTI_IRQHandler 0x08004039 Thumb Code 18 stm32f1xx_hal_gpio.o(.text) + HAL_DMA_Init 0x08004069 Thumb Code 144 stm32f1xx_hal_dma.o(.text) + HAL_DMA_DeInit 0x080040f9 Thumb Code 126 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Start 0x080041af Thumb Code 88 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Start_IT 0x08004207 Thumb Code 124 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Abort 0x08004283 Thumb Code 72 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Abort_IT 0x080042cb Thumb Code 318 stm32f1xx_hal_dma.o(.text) + HAL_DMA_PollForTransfer 0x08004409 Thumb Code 1316 stm32f1xx_hal_dma.o(.text) + HAL_DMA_IRQHandler 0x0800492d Thumb Code 672 stm32f1xx_hal_dma.o(.text) + HAL_DMA_RegisterCallback 0x08004bcd Thumb Code 80 stm32f1xx_hal_dma.o(.text) + HAL_DMA_UnRegisterCallback 0x08004c1d Thumb Code 86 stm32f1xx_hal_dma.o(.text) + HAL_DMA_GetState 0x08004c73 Thumb Code 6 stm32f1xx_hal_dma.o(.text) + HAL_DMA_GetError 0x08004c79 Thumb Code 4 stm32f1xx_hal_dma.o(.text) + HAL_NVIC_SetPriorityGrouping 0x08004cb1 Thumb Code 30 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_SetPriority 0x08004ccf Thumb Code 98 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_EnableIRQ 0x08004d31 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_DisableIRQ 0x08004d4d Thumb Code 36 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_SystemReset 0x08004d71 Thumb Code 26 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_Config 0x08004d8b Thumb Code 36 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetPriorityGrouping 0x08004daf Thumb Code 10 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetPriority 0x08004db9 Thumb Code 94 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_SetPendingIRQ 0x08004e17 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetPendingIRQ 0x08004e33 Thumb Code 42 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_ClearPendingIRQ 0x08004e5d Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetActive 0x08004e79 Thumb Code 42 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_CLKSourceConfig 0x08004ea3 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_Callback 0x08004ebf Thumb Code 2 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_IRQHandler 0x08004ec1 Thumb Code 8 stm32f1xx_hal_cortex.o(.text) + HAL_UART_Init 0x08004f99 Thumb Code 100 stm32f1xx_hal_uart.o(.text) + HAL_HalfDuplex_Init 0x08004ffd Thumb Code 110 stm32f1xx_hal_uart.o(.text) + HAL_LIN_Init 0x0800506b Thumb Code 130 stm32f1xx_hal_uart.o(.text) + HAL_MultiProcessor_Init 0x080050ed Thumb Code 146 stm32f1xx_hal_uart.o(.text) + HAL_UART_DeInit 0x08005181 Thumb Code 52 stm32f1xx_hal_uart.o(.text) + HAL_UART_Transmit 0x0800522d Thumb Code 202 stm32f1xx_hal_uart.o(.text) + HAL_UART_Receive 0x080052f7 Thumb Code 212 stm32f1xx_hal_uart.o(.text) + HAL_UART_Transmit_IT 0x080053cb Thumb Code 66 stm32f1xx_hal_uart.o(.text) + HAL_UART_Receive_IT 0x0800540d Thumb Code 86 stm32f1xx_hal_uart.o(.text) + HAL_UART_ErrorCallback 0x08005463 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_TxHalfCpltCallback 0x080054dd Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_TxCpltCallback 0x080054e9 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_Transmit_DMA 0x0800551b Thumb Code 138 stm32f1xx_hal_uart.o(.text) + HAL_UART_RxHalfCpltCallback 0x080055a5 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_RxCpltCallback 0x080055b1 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_Receive_DMA 0x080055f1 Thumb Code 150 stm32f1xx_hal_uart.o(.text) + HAL_UART_DMAPause 0x08005687 Thumb Code 102 stm32f1xx_hal_uart.o(.text) + HAL_UART_DMAResume 0x080056ed Thumb Code 98 stm32f1xx_hal_uart.o(.text) + HAL_UART_DMAStop 0x0800574f Thumb Code 88 stm32f1xx_hal_uart.o(.text) + HAL_UART_Abort 0x080057a7 Thumb Code 148 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortTransmit 0x0800583b Thumb Code 80 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortReceive 0x0800588b Thumb Code 90 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortCpltCallback 0x080058e5 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_Abort_IT 0x08005955 Thumb Code 178 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortTransmitCpltCallback 0x08005a07 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortTransmit_IT 0x08005a1d Thumb Code 94 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortReceiveCpltCallback 0x08005a7b Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortReceive_IT 0x08005a91 Thumb Code 104 stm32f1xx_hal_uart.o(.text) + HAL_UART_IRQHandler 0x08005c13 Thumb Code 312 stm32f1xx_hal_uart.o(.text) + HAL_LIN_SendBreak 0x08005d4b Thumb Code 70 stm32f1xx_hal_uart.o(.text) + HAL_MultiProcessor_EnterMuteMode 0x08005d91 Thumb Code 50 stm32f1xx_hal_uart.o(.text) + HAL_MultiProcessor_ExitMuteMode 0x08005dc3 Thumb Code 50 stm32f1xx_hal_uart.o(.text) + HAL_HalfDuplex_EnableTransmitter 0x08005df5 Thumb Code 54 stm32f1xx_hal_uart.o(.text) + HAL_HalfDuplex_EnableReceiver 0x08005e2b Thumb Code 54 stm32f1xx_hal_uart.o(.text) + HAL_UART_GetState 0x08005e61 Thumb Code 12 stm32f1xx_hal_uart.o(.text) + HAL_UART_GetError 0x08005e6d Thumb Code 4 stm32f1xx_hal_uart.o(.text) + __aeabi_memset 0x08005e71 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x08005e71 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x08005e71 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x08005e7f Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x08005e7f Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x08005e7f Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x08005e83 Thumb Code 18 memseta.o(.text) + __aeabi_uidiv 0x08005e95 Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x08005e95 Thumb Code 44 uidiv.o(.text) + __scatterload 0x08005ec1 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x08005ec1 Thumb Code 0 init.o(.text) + __0printf$3 0x08005ee5 Thumb Code 22 printf3.o(i.__0printf$3) + __1printf$3 0x08005ee5 Thumb Code 0 printf3.o(i.__0printf$3) + __2printf 0x08005ee5 Thumb Code 0 printf3.o(i.__0printf$3) + __scatterload_copy 0x08005f05 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x08005f13 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x08005f15 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + free 0x080060dd Thumb Code 76 malloc.o(i.free) + malloc 0x0800612d Thumb Code 92 malloc.o(i.malloc) + gImage_2in36g 0x08006198 Data 12432 imagedata2.o(.constdata) + Font12_Table 0x08009228 Data 1140 font12.o(.constdata) + Font16_Table 0x0800969c Data 3040 font16.o(.constdata) + Font24CN_Table 0x0800a27c Data 4482 font24cn.o(.constdata) + AHBPrescTable 0x0800b3fe Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x0800b40e Data 8 system_stm32f1xx.o(.constdata) + Region$$Table$$Base 0x0800b504 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x0800b524 Number 0 anon$$obj.o(Region$$Table) Font12 0x20000000 Data 8 font12.o(.data) - Font20 0x20000008 Data 8 font20.o(.data) + Font16 0x20000008 Data 8 font16.o(.data) Font24CN 0x20000010 Data 12 font24cn.o(.data) SystemCoreClock 0x2000001c Data 4 system_stm32f1xx.o(.data) uwTickFreq 0x20000020 Data 1 stm32f1xx_hal.o(.data) @@ -2389,22 +2417,22 @@ Memory Map of the image Image Entry point : 0x08000131 - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00013ebc, Max: 0x00080000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000b55c, Max: 0x00080000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00013e84, Max: 0x00080000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000b524, Max: 0x00080000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x00000130 Data RO 3 RESET startup_stm32f103xe.o - 0x08000130 0x08000130 0x00000000 Code RO 3251 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x08000130 0x08000130 0x00000004 Code RO 3551 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x08000134 0x08000134 0x00000004 Code RO 3554 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x08000138 0x08000138 0x00000000 Code RO 3556 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x08000138 0x08000138 0x00000000 Code RO 3558 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x08000138 0x08000138 0x00000008 Code RO 3559 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x08000140 0x08000140 0x00000000 Code RO 3561 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x08000140 0x08000140 0x00000000 Code RO 3563 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x08000140 0x08000140 0x00000004 Code RO 3552 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x08000130 0x08000130 0x00000000 Code RO 3303 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x08000130 0x08000130 0x00000004 Code RO 3603 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x08000134 0x08000134 0x00000004 Code RO 3606 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x08000138 0x08000138 0x00000000 Code RO 3608 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x08000138 0x08000138 0x00000000 Code RO 3610 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x08000138 0x08000138 0x00000008 Code RO 3611 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x08000140 0x08000140 0x00000000 Code RO 3613 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) + 0x08000140 0x08000140 0x00000000 Code RO 3615 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) + 0x08000140 0x08000140 0x00000004 Code RO 3604 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x08000144 0x08000144 0x00000024 Code RO 4 .text startup_stm32f103xe.o 0x08000168 0x08000168 0x00000098 Code RO 13 .text main.o 0x08000200 0x08000200 0x00000060 Code RO 162 .text gpio.o @@ -2412,56 +2440,56 @@ Memory Map of the image 0x0800031c 0x0800031c 0x000000d8 Code RO 216 .text usart.o 0x080003f4 0x080003f4 0x00000030 Code RO 246 .text stm32f1xx_it.o 0x08000424 0x08000424 0x0000003c Code RO 273 .text stm32f1xx_hal_msp.o - 0x08000460 0x08000460 0x00000430 Code RO 1514 .text epd_4in37g_test.o - 0x08000890 0x08000890 0x000002ec Code RO 2653 .text epd_4in37g.o - 0x08000b7c 0x08000b7c 0x00000068 Code RO 2701 .text dev_config.o - 0x08000be4 0x08000be4 0x00000eac Code RO 2726 .text gui_paint.o - 0x08001a90 0x08001a90 0x000000c4 Code RO 2860 .text system_stm32f1xx.o - 0x08001b54 0x08001b54 0x000015e8 Code RO 2916 .text stm32f1xx_hal_spi.o - 0x0800313c 0x0800313c 0x00000188 Code RO 2940 .text stm32f1xx_hal.o - 0x080032c4 0x080032c4 0x000008c8 Code RO 2970 .text stm32f1xx_hal_rcc.o - 0x08003b8c 0x08003b8c 0x000003d4 Code RO 3018 .text stm32f1xx_hal_gpio.o - 0x08003f60 0x08003f60 0x00000c48 Code RO 3042 .text stm32f1xx_hal_dma.o - 0x08004ba8 0x08004ba8 0x00000224 Code RO 3066 .text stm32f1xx_hal_cortex.o - 0x08004dcc 0x08004dcc 0x00000f9c Code RO 3230 .text stm32f1xx_hal_uart.o - 0x08005d68 0x08005d68 0x00000024 Code RO 3258 .text mc_w.l(memseta.o) - 0x08005d8c 0x08005d8c 0x0000002c Code RO 3566 .text mc_w.l(uidiv.o) - 0x08005db8 0x08005db8 0x00000024 Code RO 3583 .text mc_w.l(init.o) - 0x08005ddc 0x08005ddc 0x00000020 Code RO 3351 i.__0printf$3 mc_w.l(printf3.o) - 0x08005dfc 0x08005dfc 0x0000000e Code RO 3593 i.__scatterload_copy mc_w.l(handlers.o) - 0x08005e0a 0x08005e0a 0x00000002 Code RO 3594 i.__scatterload_null mc_w.l(handlers.o) - 0x08005e0c 0x08005e0c 0x0000000e Code RO 3595 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x08005e1a 0x08005e1a 0x00000002 PAD - 0x08005e1c 0x08005e1c 0x000001b8 Code RO 3358 i._printf_core mc_w.l(printf3.o) - 0x08005fd4 0x08005fd4 0x00000050 Code RO 3523 i.free mc_w.l(malloc.o) - 0x08006024 0x08006024 0x0000006c Code RO 3524 i.malloc mc_w.l(malloc.o) - 0x08006090 0x08006090 0x0000b800 Data RO 356 .constdata imagedata2.o - 0x08011890 0x08011890 0x00000474 Data RO 2773 .constdata font12.o - 0x08011d04 0x08011d04 0x00000ed8 Data RO 2815 .constdata font20.o - 0x08012bdc 0x08012bdc 0x00001182 Data RO 2843 .constdata font24cn.o - 0x08013d5e 0x08013d5e 0x00000010 Data RO 2861 .constdata system_stm32f1xx.o - 0x08013d6e 0x08013d6e 0x00000008 Data RO 2862 .constdata system_stm32f1xx.o - 0x08013d76 0x08013d76 0x00000002 PAD - 0x08013d78 0x08013d78 0x000000e9 Data RO 2728 .conststring gui_paint.o - 0x08013e61 0x08013e61 0x00000003 PAD - 0x08013e64 0x08013e64 0x00000020 Data RO 3591 Region$$Table anon$$obj.o + 0x08000460 0x08000460 0x00000550 Code RO 1569 .text epd_2in36g_test.o + 0x080009b0 0x080009b0 0x000002d4 Code RO 2729 .text epd_2in36g.o + 0x08000c84 0x08000c84 0x00000068 Code RO 2753 .text dev_config.o + 0x08000cec 0x08000cec 0x00000eac Code RO 2778 .text gui_paint.o + 0x08001b98 0x08001b98 0x000000c4 Code RO 2912 .text system_stm32f1xx.o + 0x08001c5c 0x08001c5c 0x000015e8 Code RO 2968 .text stm32f1xx_hal_spi.o + 0x08003244 0x08003244 0x00000188 Code RO 2992 .text stm32f1xx_hal.o + 0x080033cc 0x080033cc 0x000008c8 Code RO 3022 .text stm32f1xx_hal_rcc.o + 0x08003c94 0x08003c94 0x000003d4 Code RO 3070 .text stm32f1xx_hal_gpio.o + 0x08004068 0x08004068 0x00000c48 Code RO 3094 .text stm32f1xx_hal_dma.o + 0x08004cb0 0x08004cb0 0x00000224 Code RO 3118 .text stm32f1xx_hal_cortex.o + 0x08004ed4 0x08004ed4 0x00000f9c Code RO 3282 .text stm32f1xx_hal_uart.o + 0x08005e70 0x08005e70 0x00000024 Code RO 3310 .text mc_w.l(memseta.o) + 0x08005e94 0x08005e94 0x0000002c Code RO 3618 .text mc_w.l(uidiv.o) + 0x08005ec0 0x08005ec0 0x00000024 Code RO 3635 .text mc_w.l(init.o) + 0x08005ee4 0x08005ee4 0x00000020 Code RO 3403 i.__0printf$3 mc_w.l(printf3.o) + 0x08005f04 0x08005f04 0x0000000e Code RO 3645 i.__scatterload_copy mc_w.l(handlers.o) + 0x08005f12 0x08005f12 0x00000002 Code RO 3646 i.__scatterload_null mc_w.l(handlers.o) + 0x08005f14 0x08005f14 0x0000000e Code RO 3647 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08005f22 0x08005f22 0x00000002 PAD + 0x08005f24 0x08005f24 0x000001b8 Code RO 3410 i._printf_core mc_w.l(printf3.o) + 0x080060dc 0x080060dc 0x00000050 Code RO 3575 i.free mc_w.l(malloc.o) + 0x0800612c 0x0800612c 0x0000006c Code RO 3576 i.malloc mc_w.l(malloc.o) + 0x08006198 0x08006198 0x00003090 Data RO 354 .constdata imagedata2.o + 0x08009228 0x08009228 0x00000474 Data RO 2825 .constdata font12.o + 0x0800969c 0x0800969c 0x00000be0 Data RO 2853 .constdata font16.o + 0x0800a27c 0x0800a27c 0x00001182 Data RO 2895 .constdata font24cn.o + 0x0800b3fe 0x0800b3fe 0x00000010 Data RO 2913 .constdata system_stm32f1xx.o + 0x0800b40e 0x0800b40e 0x00000008 Data RO 2914 .constdata system_stm32f1xx.o + 0x0800b416 0x0800b416 0x00000002 PAD + 0x0800b418 0x0800b418 0x000000e9 Data RO 2780 .conststring gui_paint.o + 0x0800b501 0x0800b501 0x00000003 PAD + 0x0800b504 0x0800b504 0x00000020 Data RO 3643 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08013e84, Size: 0x0000d0e8, Max: 0x00010000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800b524, Size: 0x0000d0e8, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08013e84 0x00000008 Data RW 2774 .data font12.o - 0x20000008 0x08013e8c 0x00000008 Data RW 2816 .data font20.o - 0x20000010 0x08013e94 0x0000000c Data RW 2844 .data font24cn.o - 0x2000001c 0x08013ea0 0x00000004 Data RW 2863 .data system_stm32f1xx.o - 0x20000020 0x08013ea4 0x0000000c Data RW 2941 .data stm32f1xx_hal.o - 0x2000002c 0x08013eb0 0x00000004 Data RW 3565 .data mc_w.l(stdout.o) - 0x20000030 0x08013eb4 0x00000004 Data RW 3570 .data mc_w.l(mvars.o) - 0x20000034 0x08013eb8 0x00000004 Data RW 3571 .data mc_w.l(mvars.o) + 0x20000000 0x0800b524 0x00000008 Data RW 2826 .data font12.o + 0x20000008 0x0800b52c 0x00000008 Data RW 2854 .data font16.o + 0x20000010 0x0800b534 0x0000000c Data RW 2896 .data font24cn.o + 0x2000001c 0x0800b540 0x00000004 Data RW 2915 .data system_stm32f1xx.o + 0x20000020 0x0800b544 0x0000000c Data RW 2993 .data stm32f1xx_hal.o + 0x2000002c 0x0800b550 0x00000004 Data RW 3617 .data mc_w.l(stdout.o) + 0x20000030 0x0800b554 0x00000004 Data RW 3622 .data mc_w.l(mvars.o) + 0x20000034 0x0800b558 0x00000004 Data RW 3623 .data mc_w.l(mvars.o) 0x20000038 - 0x00000058 Zero RW 187 .bss spi.o 0x20000090 - 0x00000040 Zero RW 217 .bss usart.o - 0x200000d0 - 0x00000018 Zero RW 2727 .bss gui_paint.o + 0x200000d0 - 0x00000018 Zero RW 2779 .bss gui_paint.o 0x200000e8 - 0x0000c000 Zero RW 2 HEAP startup_stm32f103xe.o 0x2000c0e8 - 0x00001000 Zero RW 1 STACK startup_stm32f103xe.o @@ -2473,32 +2501,32 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 104 10 0 0 0 780 dev_config.o - 748 60 0 0 0 2703 epd_4in37g.o - 1072 384 0 0 0 1478 epd_4in37g_test.o - 0 0 1140 8 0 1353 font12.o - 0 0 3800 8 0 1353 font20.o - 0 0 4482 12 0 1363 font24cn.o - 96 10 0 0 0 803 gpio.o - 3756 662 233 0 24 14608 gui_paint.o - 0 0 47104 0 0 842 imagedata2.o - 152 20 0 0 0 461928 main.o - 188 18 0 0 88 1429 spi.o - 36 8 304 0 53248 796 startup_stm32f103xe.o - 392 38 0 12 0 7649 stm32f1xx_hal.o - 548 12 0 0 0 30674 stm32f1xx_hal_cortex.o - 3144 164 0 0 0 7109 stm32f1xx_hal_dma.o - 980 30 0 0 0 4391 stm32f1xx_hal_gpio.o - 60 8 0 0 0 826 stm32f1xx_hal_msp.o - 2248 88 0 0 0 6559 stm32f1xx_hal_rcc.o - 5608 106 0 0 0 19625 stm32f1xx_hal_spi.o - 3996 46 0 0 0 17432 stm32f1xx_hal_uart.o - 48 22 0 0 0 1246 stm32f1xx_it.o - 196 28 24 4 0 1509 system_stm32f1xx.o - 216 18 0 0 64 1753 usart.o + 104 10 0 0 0 792 dev_config.o + 724 60 0 0 0 2711 epd_2in36g.o + 1360 394 0 0 0 1718 epd_2in36g_test.o + 0 0 1140 8 0 1389 font12.o + 0 0 3040 8 0 1389 font16.o + 0 0 4482 12 0 1391 font24cn.o + 96 10 0 0 0 827 gpio.o + 3756 662 233 0 24 14644 gui_paint.o + 0 0 12432 0 0 920 imagedata2.o + 152 20 0 0 0 462020 main.o + 188 18 0 0 88 1473 spi.o + 36 8 304 0 53248 804 startup_stm32f103xe.o + 392 38 0 12 0 7697 stm32f1xx_hal.o + 548 12 0 0 0 30706 stm32f1xx_hal_cortex.o + 3144 164 0 0 0 7133 stm32f1xx_hal_dma.o + 980 30 0 0 0 4415 stm32f1xx_hal_gpio.o + 60 8 0 0 0 854 stm32f1xx_hal_msp.o + 2248 88 0 0 0 6583 stm32f1xx_hal_rcc.o + 5608 106 0 0 0 19649 stm32f1xx_hal_spi.o + 3996 46 0 0 0 17460 stm32f1xx_hal_uart.o + 48 22 0 0 0 1258 stm32f1xx_it.o + 196 28 24 4 0 1553 system_stm32f1xx.o + 216 18 0 0 64 1777 usart.o ---------------------------------------------------------------------- - 23588 1732 57124 44 53424 588209 Object Totals + 23852 1742 21692 44 53424 589163 Object Totals 0 0 32 0 0 0 (incl. Generated) 0 0 5 0 0 0 (incl. Padding) @@ -2543,15 +2571,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 24416 1782 57124 56 53424 587089 Grand Totals - 24416 1782 57124 56 53424 587089 ELF Image Totals - 24416 1782 57124 56 0 0 ROM Totals + 24680 1792 21692 56 53424 588043 Grand Totals + 24680 1792 21692 56 53424 588043 ELF Image Totals + 24680 1792 21692 56 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 81540 ( 79.63kB) + Total RO Size (Code + RO Data) 46372 ( 45.29kB) Total RW Size (RW Data + ZI Data) 53480 ( 52.23kB) - Total ROM Size (Code + RO Data + RW Data) 81596 ( 79.68kB) + Total ROM Size (Code + RO Data + RW Data) 46428 ( 45.34kB) ============================================================================== diff --git a/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst b/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst index 6221f22..f3a5f23 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst +++ b/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst @@ -580,17 +580,17 @@ ARM Macro Assembler Page 9 00000000 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I -.\RTE\_epd-demo -I"D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\I -nclude" -I"D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Incl -ude" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" - +.\RTE\_epd-demo -ID:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include -ID: +\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICR +OLIB SETA 1" --predefine="__UVISION_VERSION SETA 526" --predefine="_RTE_ SETA 1 ARM Macro Assembler Page 10 --predefine="_RTE_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm3 -2f103xe.lst startup_stm32f103xe.s +" --predefine="STM32F10X_HD SETA 1" --list=startup_stm32f103xe.lst startup_stm3 +2f103xe.s diff --git a/STM32/STM32-F103ZET6/Src/main.c b/STM32/STM32-F103ZET6/Src/main.c index 901029e..3d4c6ac 100644 --- a/STM32/STM32-F103ZET6/Src/main.c +++ b/STM32/STM32-F103ZET6/Src/main.c @@ -95,6 +95,7 @@ int main(void) /* USER CODE BEGIN 2 */ // EPD_1in64g_test(); + // EPD_2in36g_test(); // EPD_3in0g_test(); // EPD_4in37g_test(); // EPD_7in3g_test(); diff --git a/STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c b/STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c new file mode 100644 index 0000000..390f032 --- /dev/null +++ b/STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c @@ -0,0 +1,154 @@ +/***************************************************************************** +* | File : EPD_2in36g_test.c +* | Author : Waveshare team +* | Function : 2.36inch e-Paper (G) test demo +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2022-08-18 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in36g.h" +#include "time.h" + +int EPD_2in36g_test(void) +{ + printf("EPD_2IN36G_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + printf("e-Paper Init and Clear...\r\n"); + EPD_2IN36G_Init(); + EPD_2IN36G_Clear(EPD_2IN36G_WHITE); // White + DEV_Delay_ms(2000); + + //Create a new image cache + UBYTE *BlackImage; + /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ + UWORD Imagesize = ((EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1)) * EPD_2IN36G_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } + printf("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2IN36G_WIDTH, EPD_2IN36G_HEIGHT, 0, WHITE); + Paint_SetScale(4); + +#if 1 // show bmp + printf("show window BMP-----------------\r\n"); + Paint_SelectImage(BlackImage); + Paint_DrawBitMap(gImage_2in36g); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(EPD_2IN36G_WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawPoint(10, 80, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(10, 90, EPD_2IN36G_WHITE, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, EPD_2IN36G_RED, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(45, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_2IN36G_BLACK, EPD_2IN36G_WHITE); + Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_2IN36G_WHITE, EPD_2IN36G_RED); + Paint_DrawString_CN(10, 125, "΢ѩ����", &Font24CN, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW); + Paint_DrawNum(10, 50, 123456, &Font12, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW); + + printf("EPD_Display\r\n"); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(EPD_2IN36G_WHITE); + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + Paint_DrawRectangle(1, 1, 168, 86, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawRectangle(1, 210, 167, 295, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawRectangle(59, 1, 109, 295, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + printf("EPD_Display\r\n"); + EPD_2IN36G_Display(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 // Drawing on the image + //1.Select Image + printf("SelectImage:BlackImage\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(EPD_2IN36G_WHITE); + + int hNumber, hWidth, vNumber, vWidth; + hNumber = 16; + hWidth = EPD_2IN36G_HEIGHT/hNumber; // 368/16=23 + vNumber = 16; + vWidth = EPD_2IN36G_WIDTH/vNumber; // 512/16=32 + + // 2.Drawing on the image + printf("Drawing:BlackImage\r\n"); + for(int i=0; i // malloc() free() int EPD_1in64g_test(void); +int EPD_2in36g_test(void); int EPD_3in0g_test(void); int EPD_4in37g_test(void); int EPD_7in3g_test(void); diff --git a/STM32/STM32-F103ZET6/User/Examples/ImageData.h b/STM32/STM32-F103ZET6/User/Examples/ImageData.h index 896d282..6afb334 100644 --- a/STM32/STM32-F103ZET6/User/Examples/ImageData.h +++ b/STM32/STM32-F103ZET6/User/Examples/ImageData.h @@ -38,8 +38,9 @@ extern const unsigned char gImage_2in13b_V4b[]; extern const unsigned char gImage_2in13b_V4r[]; extern const unsigned char gImage_1in64g[]; +extern const unsigned char gImage_2in36g[]; extern const unsigned char gImage_3in0g[]; -extern const unsigned char Image4color[]; +extern const unsigned char gImage_4in37g[]; extern const unsigned char gImage_7in3g[]; /* --------------------------------------- */ diff --git a/STM32/STM32-F103ZET6/User/Examples/ImageData2.c b/STM32/STM32-F103ZET6/User/Examples/ImageData2.c index 5c17fff..fade666 100644 --- a/STM32/STM32-F103ZET6/User/Examples/ImageData2.c +++ b/STM32/STM32-F103ZET6/User/Examples/ImageData2.c @@ -982,6 +982,786 @@ const unsigned char gImage_1in64g[7056] = { 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, }; +const unsigned char gImage_2in36g[12432] = { +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFE,0xAA, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAF,0xFA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFA,0xAF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xEA,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xAA,0xBA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x05,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBF, +0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAA,0xFE,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xEA,0xFF,0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBE,0xAB,0xFE, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAB,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xAA,0xAF,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xEA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05, +0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA, +0xFF,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x40,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x04,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x10,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA, +0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05, +0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA, +0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x50,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x00,0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54, +0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFE,0xAA,0xAB,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xEA,0xBF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF, +0xAB,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x51,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x50,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x40,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x01,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAB,0xFE, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x05,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xBF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x15,0x55,0x00,0x15,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xAB,0xFA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55, +0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA, +0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x40,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x54,0x01,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEF,0xFF,0xFF,0xFF,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB, +0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x05,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x40,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40, +0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x00,0x14,0x04,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xBA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x54,0x05, +0x40,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA, +0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x54,0x05,0x40,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xFF,0xEA,0xAF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x01,0x54,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xEA,0xBF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x54,0x05,0x40,0x15, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEB,0xFF,0xFF,0xFE, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x54,0x01,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40, +0x14,0x00,0x00,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x50,0x00,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x00,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x50,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x51,0x55,0x40,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xEA,0xAA, +0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xAB,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x05, +0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xEA,0xAA,0xAA,0xAA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x01,0x00,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x01,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00, +0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x54,0x00,0x54,0x00,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x55,0x00,0x15, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xBF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x50,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55, +0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA, +0xFF,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x15,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA, +0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA, +0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54, +0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x15, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x00,0x05,0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x01,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40, +0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x10,0x05,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x00,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05, +0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xBF,0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x50,0x05,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xBF,0xFE,0xAA,0xAA,0xAB, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAA,0xAF,0xFA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40, +0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB, +0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF, +0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFE,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB, +0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xEA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFA, +0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xEA,0xAA,0xFF, +0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFF,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA, +0xAA,0xAA,0xAA,0xAF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB, +0xEA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAF,0xFA,0xAA,0xAA,0xAA,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xEA,0xAA,0xBF,0xFE,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x01,0x01,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFF,0xEA, +0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x40,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x45,0x40,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x50,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA, +0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x15,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x54,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAB,0xFF,0xFF,0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x50,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xFF,0xFF,0xAA, +0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x55,0x15,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x01,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x50,0x15,0x55,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xAA,0xAA,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x15,0x54, +0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBF,0xAA,0xAF,0xFF, +0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x05,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x00,0x15,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA, +0xAA,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x00,0x15, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xEA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x51,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA, +0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x54, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x00,0x15,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05,0x50, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA, +0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA, +0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x01,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x15,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x40,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x45,0x40,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA, +0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA, +0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA, +0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x54,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00, +0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x40,0x15,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x40, +0x05,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x50,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x05,0x00,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xBF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x40,0x15,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBF, +0xFF,0xFA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFA,0xAA,0xAB,0xFF,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFE,0xAA, +0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x54,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xBF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x51,0x55,0x50,0x00,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x50, +0x05,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA, +0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54, +0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x50,0x05,0x55,0x40,0x15,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,0x04,0x15,0x55,0x55,0x55,0x55, +0x55,0x50,0x00,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x54,0x05,0x45,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x10,0x05,0x55, +0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x15,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x40,0x00,0x01,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBA,0xAA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFE,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB, +0xFF,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x15,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xBF,0xFF,0xFA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x00,0x05,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x50,0x01,0x55,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x54, +0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x15, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x14,0x01,0x55,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x50,0x00,0x04,0x01,0x55,0x00,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x05,0x55, +0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA, +0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x04,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x05,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x40,0x01,0x55,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x50,0x05,0x50,0x15,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAB,0xFF,0xFF,0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x54, +0x55,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xFF,0xFF,0xAA, +0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x55,0x54,0x01,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x50,0x05,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xAA,0xAA,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBF,0xAA,0xAF,0xFF, +0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA, +0xAA,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xEA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA, +0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA, +0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x50,0x05,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00, +0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x04, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x54,0x00,0x00,0x01,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x54,0x00,0x15,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50, +0x05,0x55,0x00,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA, +0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x01,0x00,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55, +0x55,0x55,0x55,0x50,0x05,0x55,0x54,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55, +0x55,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA, +0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x55,0x55,0x40,0x00,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x54,0x00,0x15,0x55,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xAA,0xAB,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x55,0x55,0x54, +0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xAA,0xAA, +0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x50,0x00,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55, +0x50,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF, +0xFF,0xFF,0xEA,0xAF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x54,0x00,0x14,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFA,0xAA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x45,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF, +0xEA,0xAB,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFE,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAF,0xEA,0xAA,0xAF, +0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA, +0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA, +0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54, +0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xD5,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,0x04,0x15,0x55,0x55,0x55,0x55, +0x55,0x5F,0xFF,0xFF,0x55,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x55,0x54,0x05,0x45,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF5,0x55,0x5F, +0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0x55,0x55,0x55,0x5F,0xFF,0xD5,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF, +0xF5,0x55,0x5D,0x55,0x5F,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40, +0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xD5,0x55,0xFF,0xF5,0x57,0xFF, +0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0x5F,0xFF,0xD5,0x55,0xFF,0xF5,0x55,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFE,0xAA,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF5,0x55, +0x5F,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAB, +0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55, +0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xFF,0xD5,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xAA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55, +0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0xFD,0x55,0x5F,0xFF,0x55,0x5F, +0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xFF, +0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55, +0x55,0x55,0x55,0x55,0xFF,0x55,0x57,0xFF,0xF5,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xD5, +0x55,0x5F,0xFD,0x7F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA, +0xAA,0xAA,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xF5,0x55,0x57,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFF,0xEA,0xAA,0xAB,0xFF,0xAA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0xFF,0xFD,0xF5,0x55,0x5F,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xAA,0xAB,0xFF,0xFE,0xAA,0xAA,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x55, +0x55,0x7F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF, +0xAA,0xAA,0xBF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x05, +0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAA,0xAF,0xAA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x04,0x05,0x55,0x55,0x55,0x55,0x55, +0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xAA,0xAF,0xFF,0xFF,0xFA,0xAA,0xAB,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFD,0x55,0x55,0x7F, +0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xAA, +0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55, +0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x57,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF, +0xD5,0x55,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB, +0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0xFF,0xFF,0xFF,0xFF, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA, +0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55, +0x55,0x55,0xFF,0xFF,0xFD,0x55,0x55,0xFF,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF5, +0x55,0x5F,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xFF, +0xFF,0xFF,0xEA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF1,0x55,0x5F,0xFF,0xFD,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55, +0xFF,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xF5,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x50,0x00,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x55,0xFF, +0xFF,0xD5,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBF,0xFF,0xFF,0xFF, +0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x10,0x05,0x55, +0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x40,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF, +0xD5,0x5F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x41, +0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD7,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x41,0x54,0x15,0x55,0x55,0x55,0x55, +0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xD5,0x55,0x55,0x41,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF, +0xFF,0xD5,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00, +0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55, +0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55, +0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, +}; + const unsigned char gImage_3in0g[16800] = { 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55, @@ -8039,7 +8819,7 @@ const unsigned char gImage_7in3g[96000] = { }; // 4 Color Image Data 512*368 -const unsigned char Image4color[47104] = { +const unsigned char gImage_4in37g[47104] = { 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c new file mode 100644 index 0000000..1ea6a71 --- /dev/null +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c @@ -0,0 +1,238 @@ +/***************************************************************************** +* | File : EPD_2in36g.c +* | Author : Waveshare team +* | Function : 2.36inch e-Paper (G) +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2022-08-17 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_2in36g.h" +#include "Debug.h" + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_2IN36G_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_2IN36G_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_2IN36G_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +static void EPD_2IN36G_ReadBusyH(void) +{ + Debug("e-Paper busy H\r\n"); + while(!DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: idle, HIGH: busy + DEV_Delay_ms(5); + } + Debug("e-Paper busy H release\r\n"); +} +static void EPD_2IN36G_ReadBusyL(void) +{ + Debug("e-Paper busy L\r\n"); + while(DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: idle, HIGH: busy + DEV_Delay_ms(5); + } + Debug("e-Paper busy L release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_2IN36G_TurnOnDisplay(void) +{ + EPD_2IN36G_SendCommand(0x12); // DISPLAY_REFRESH + EPD_2IN36G_SendData(0x01); + EPD_2IN36G_ReadBusyH(); + + EPD_2IN36G_SendCommand(0x02); // POWER_OFF + EPD_2IN36G_SendData(0X00); + EPD_2IN36G_ReadBusyH(); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_2IN36G_Init(void) +{ + EPD_2IN36G_Reset(); + + EPD_2IN36G_SendCommand(0x66); + EPD_2IN36G_SendData(0x49); + EPD_2IN36G_SendData(0x55); + EPD_2IN36G_SendData(0x13); + EPD_2IN36G_SendData(0x5D); + + EPD_2IN36G_SendCommand(0x66); + EPD_2IN36G_SendData(0x49); + EPD_2IN36G_SendData(0x55); + + EPD_2IN36G_SendCommand(0xB0); + EPD_2IN36G_SendData(0x03);//1 boost 20211113 + + EPD_2IN36G_SendCommand(0x00); + EPD_2IN36G_SendData(0x4F); + EPD_2IN36G_SendData(0x69); + + EPD_2IN36G_SendCommand(0x03); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_SendCommand(0xF0); + EPD_2IN36G_SendData(0xF6); + EPD_2IN36G_SendData(0x0D); + EPD_2IN36G_SendData(0x00); + EPD_2IN36G_SendData(0x00); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_SendCommand(0x06); //20211113 + EPD_2IN36G_SendData(0xCF); + EPD_2IN36G_SendData(0xDE); + EPD_2IN36G_SendData(0x0F); + + EPD_2IN36G_SendCommand(0x41); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_SendCommand(0x50); + EPD_2IN36G_SendData(0x30); + + EPD_2IN36G_SendCommand(0x60); + EPD_2IN36G_SendData(0x0C); + EPD_2IN36G_SendData(0x05); + + EPD_2IN36G_SendCommand(0x61); + EPD_2IN36G_SendData(0xA8); + EPD_2IN36G_SendData(0x01); + EPD_2IN36G_SendData(0x28); + + EPD_2IN36G_SendCommand(0x84); + EPD_2IN36G_SendData(0x01); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_2IN36G_Clear(UBYTE color) +{ + UWORD Width, Height; + Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1); + Height = EPD_2IN36G_HEIGHT; + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x01); + + EPD_2IN36G_SendCommand(0x04); + EPD_2IN36G_ReadBusyH(); + + EPD_2IN36G_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2IN36G_SendData((color << 6) | (color << 4) | (color << 2) | color); + } + } + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: +******************************************************************************/ +void EPD_2IN36G_Display(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1); + Height = EPD_2IN36G_HEIGHT; + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x01); + + EPD_2IN36G_SendCommand(0x04); + EPD_2IN36G_ReadBusyH(); + + EPD_2IN36G_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2IN36G_SendData(Image[i + j * Width]); + } + } + + EPD_2IN36G_SendCommand(0x68); + EPD_2IN36G_SendData(0x00); + + EPD_2IN36G_TurnOnDisplay(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_2IN36G_Sleep(void) +{ + EPD_2IN36G_SendCommand(0x02); // POWER_OFF + EPD_2IN36G_SendData(0X00); + EPD_2IN36G_SendCommand(0x07); // DEEP_SLEEP + EPD_2IN36G_SendData(0XA5); +} + diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h new file mode 100644 index 0000000..87725a8 --- /dev/null +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h @@ -0,0 +1,51 @@ +/***************************************************************************** +* | File : EPD_2in36g.h +* | Author : Waveshare team +* | Function : 2.36inch e-Paper (G) +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2022-08-17 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_2IN36G_H_ +#define __EPD_2IN36G_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_2IN36G_WIDTH 168 +#define EPD_2IN36G_HEIGHT 296 + +// Color +#define EPD_2IN36G_BLACK 0x0 +#define EPD_2IN36G_WHITE 0x1 +#define EPD_2IN36G_YELLOW 0x2 +#define EPD_2IN36G_RED 0x3 + +void EPD_2IN36G_Init(void); +void EPD_2IN36G_Clear(UBYTE color); +void EPD_2IN36G_Display(UBYTE *Image); +void EPD_2IN36G_Sleep(void); + +#endif diff --git a/Version_CN.txt b/Version_CN.txt index e7e3a49..df56e8e 100644 --- a/Version_CN.txt +++ b/Version_CN.txt @@ -31,4 +31,5 @@ 2022-07-22:添加新程序3inch e-Paper (G)例程。 2022-07-22:添加新程序7.3inch e-Paper (G)例程。 2022-07-22:添加新程序3.52inch e-Paper例程。 -2022-08-16:添加新程序4.37inch e-Paper (G)例程。 \ No newline at end of file +2022-08-16:添加新程序4.37inch e-Paper (G)例程。 +2022-08-17:添加新程序2.36inch e-Paper (G)例程。 \ No newline at end of file diff --git a/Version_EN.txt b/Version_EN.txt index 7df0ed3..2280b0c 100644 --- a/Version_EN.txt +++ b/Version_EN.txt @@ -30,4 +30,5 @@ 2022-07-22: Added new programs 3inch e-Paper (G) routine. 2022-07-22: Added new programs 7.3inch e-Paper (G) routine. 2022-07-22: Added new programs 3.52inch e-Paper routine. -2022-08-16: Added new programs 4.37inch e-Paper (G) routine. \ No newline at end of file +2022-08-16: Added new programs 4.37inch e-Paper (G) routine. +2022-08-17: Added new programs 2.36inch e-Paper (G) routine. \ No newline at end of file