Jump to content

Joel Bodenmann

Administrators
  • Posts

    2,619
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Joel Bodenmann

  1. Hello goeck, Thank you very much for sharing you driver. I took a look and these are the points I have to mention: I see that you have the ChibiOS/RT logo in the framebuffer per default. Since this project is now completely separated from ChibiOS, it's a big no-go. I recommend you using an empty frame buffer. In the source file, what is this? /* Fulfill Adafruit license.*/ gfxSleepMilliseconds(1000); The driver source must be as generic as possible and really just LCD controller dependent - not LCD panel or LCD module (adafruit) dependent. In the source file, after the scroll implementation which ends at line 534, you start giving an interface to control several things such as the LCD controllers power states and start addresses. These are things that need to be declared as static and only usable inside your drivers source file. Things like backlight and contrast changes are meant to be made through the gdisp_lld_control() routine. Here's an example. I'd recommend to name the BLACK and WHITE macros in the SSD1306.h a different way, such as SSD1306_BLACK and SSD1306_WHITE so there are no confusions between the rest of the library. The board file mess has been cleaned up in the meantime. All the #ifdef stuff in line 43 of the source file became obsolet. It's now appropriate to just #include gdisp_lld_board.g there. Beside these things, your driver works seems to be very solid and consistent. Good work! ~ Tectu
  2. Hey goeck, First of all: Thanks for sharing. Could you please do me a favor and open a new thread in the Hardware sub forum about this (driver name in the thread title)? It helps to keep things clean and I am sure that there will be some discussions going on ~ Tectu
  3. It works - that was the goal. Everything else is learning by doing. ~ Tectu
  4. Good to see that it finally worked out I assume it works with the correct FSMC address now? What was the issue that it didn't work in the first place today? ~ Tectu
  5. You have to take a look at your microcontrollers datasheet to learn how to use your FSMC interface in 8-bit mode. The driver itself does not have to be modified because it does not care how you actually talk to the display controller. The driver itself calls the read and write routines from the board file (gdisp_lld_board.h). Inside your board file, you just implement all the write_xxx() calls so it works with FSMC in 8-bit mode. The current board files that can be found inside that directory show how to use FSMC in 16-bit mode. There are currently no examples available that show how to use FSMC in 8-bit mode. I'd appreciate it when you'd share your work after you got everything successfully working. ~ Tectu
  6. If the driver has been written correctly, you just have to create a board file (gdisp_lld_board.h) which talks to the display in 8- instead of 16-bit mode. ~ Tectu
  7. Ah, if you have those hardware buttons, then you will be fine. Most widgets such the buttons, sliders, lists and so on do support the toggle input, as you mentioned correctly. The big widget demo shows how to use that. Yes, please open a new thread with an appropriate subject for future questions (It's not meant to be rude, but a clear structure helps other users to find the answers they are searching for). ~ Tectu
  8. What means "plenty"? - I'd be interested. GWIN is not the thing you need then. You have to do all the widget drawing yourself. GWIN can only be used together with at least one input source. ~ Tectu
  9. Good to hear that you got it working. I hope that you can show us at some point what you're doing, we really need more stuff from users to show off with ;-) About the driver: Make sure you got the config right. For testing, set everything to false so it just uses the pixel draw routine. Then start by implementing window filling etc. Keep stuff like vertical scrolling etc. for the rest. If you have any problems, feel free to open up a new thread related to that driver. ~ Tectu
  10. This will take quite some time. I search you not to use the ASYNC mode of GDISP and use the MULTITHREAD instead. The other issue about the undefined reference has been fixed. ~ Tectu
  11. I am working on it. The GQueue module has been reworked but we didn't bother with testing all the possible configurations in the gfxconf.h so now the API is outdated ;-) ~ Tectu
  12. There's definitely something broken. I am currently looking into it. To compile successfully, please set GDISP_NEED_ASYNC to FALSE. You should then also be able to successfully compile with GWIN and different widgets. ~ Tectu
  13. The config you showed still has GFX_USE_GQUEUE and GQUEUE_NEED_ASYNC set to FALSE. Please set them to true, issue a make clean and try to compile again. ~ Tectu
  14. First of all, it's correct that you have to include gfx.h everywhere. Anything else is "linked" through that file depending on your needs. About your actual problem: It looks like there are some rules missing that should automatically turn on stuff in the config file for you. Please try to enable GFX_USE_GQUEUE and GQUEUE_NEED_ASYNC in your gfxconf.h. If this works, please let me know which features you're using (paste your gfxconf.h here) so I can take a look at what went wrong. About the driver: It is ALWAYS nice to add new drivers to the project because this really increases the value of it. However, the driver needs to be in the same architecture as the current ones and it should be as clean and complete as possible. If features are not implemented, they need to be handle correctly. Often people just copy another driver and features they don't implement keep being the same as for the original driver - this can lead to a lot of trouble. If you don't think it's good enough, you can also just send it to me and I'll take a look and clean it up - then you just have to do a final test to confirm that it's still working. ~ Tectu
  15. The font stuff is in the progress of a complete rework right now. Please stay tight, all your issues will be resolved soon... ~ Tectu
  16. I found some time to write a demo for you. The following is just an extension of the demo you can find in the repository and on the web page. main.c #include "gfx.h" #include "image_buttons.h" static GListener gl; static GHandle ghButton1; static gdispImage buttons; static void createWidgets(void) { GWidgetInit wi; // Apply some default values for GWIN wi.customDraw = 0; wi.customParam = 0; wi.customStyle = 0; wi.g.show = TRUE; // Prepare the images for the button gdispImageSetMemoryReader(&buttons, image_buttons); gdispImageOpen(&buttons); // Apply the button parameters wi.g.width = 79; wi.g.height = 32; wi.g.y = 10; wi.g.x = 10; wi.text = ""; // Create the actual button ghButton1 = gwinButtonCreate(NULL, &wi); // Apply the image gwinSetCustomDraw(ghButton1, gwinButtonDraw_Image, &buttons); } int main(void) { GEvent* pe; // Initialize the display gfxInit(); // Set the widget defaults gwinSetDefaultFont(gdispOpenFont("UI2")); gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); gdispClear(White); // Attach the mouse input gwinAttachMouse(0); // create the widget createWidgets(); // We want to listen for widget events geventListenerInit(&gl); gwinAttachListener(&gl); while(1) { // Get an Event pe = geventEventWait(&gl, TIME_INFINITE); switch(pe->type) { case GEVENT_GWIN_BUTTON: if (((GEventGWinButton*)pe)->button == ghButton1) { // Our button has been pressed printf("Button clicked\r\n"); } break; default: break; } } return 0; } image_buttons.h static const unsigned char image_buttons[] = { 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x4F, 0x00, 0x60, 0x00, 0xE7, 0xF1, 0x00, 0x18, 0x19, 0x17, 0x19, 0x1B, 0x18, 0x1A, 0x1C, 0x19, 0x1B, 0x1C, 0x1A, 0x1C, 0x1D, 0x1B, 0x1D, 0x1F, 0x1C, 0x1E, 0x1F, 0x1D, 0x1F, 0x20, 0x1E, 0x20, 0x21, 0x1F, 0x21, 0x23, 0x20, 0x22, 0x24, 0x21, 0x23, 0x24, 0x22, 0x24, 0x25, 0x23, 0x25, 0x27, 0x24, 0x26, 0x28, 0x25, 0x27, 0x28, 0x26, 0x28, 0x29, 0x27, 0x29, 0x2B, 0x28, 0x2A, 0x2C, 0x29, 0x2B, 0x2D, 0x2A, 0x2C, 0x2D, 0x2B, 0x2D, 0x2E, 0x2C, 0x2E, 0x2F, 0x2D, 0x2F, 0x31, 0x2E, 0x30, 0x32, 0x2F, 0x31, 0x33, 0x30, 0x32, 0x33, 0x31, 0x33, 0x34, 0x32, 0x34, 0x36, 0x33, 0x35, 0x37, 0x34, 0x36, 0x38, 0x35, 0x37, 0x39, 0x36, 0x38, 0x39, 0x37, 0x39, 0x3A, 0x38, 0x3A, 0x3B, 0x39, 0x3B, 0x3D, 0x3A, 0x3C, 0x3E, 0x3B, 0x3D, 0x3F, 0x3C, 0x3E, 0x40, 0x3D, 0x3F, 0x40, 0x3E, 0x40, 0x41, 0x3F, 0x41, 0x42, 0x40, 0x41, 0x43, 0x41, 0x43, 0x45, 0x42, 0x44, 0x46, 0x43, 0x45, 0x47, 0x44, 0x46, 0x48, 0x45, 0x47, 0x49, 0x46, 0x48, 0x49, 0x47, 0x49, 0x4A, 0x48, 0x4A, 0x4B, 0x49, 0x4A, 0x4C, 0x4A, 0x4C, 0x4E, 0x4B, 0x4D, 0x4F, 0x4C, 0x4E, 0x50, 0x4D, 0x4F, 0x51, 0x4E, 0x50, 0x52, 0x4F, 0x51, 0x53, 0x50, 0x52, 0x54, 0x51, 0x53, 0x54, 0x52, 0x54, 0x55, 0x53, 0x55, 0x56, 0x54, 0x56, 0x57, 0x55, 0x56, 0x58, 0x55, 0x57, 0x59, 0x56, 0x59, 0x5B, 0x58, 0x5A, 0x5C, 0x59, 0x5B, 0x5D, 0x5A, 0x5C, 0x5E, 0x5B, 0x5D, 0x5F, 0x5C, 0x5E, 0x60, 0x5D, 0x5F, 0x61, 0x5E, 0x60, 0x62, 0x5F, 0x61, 0x63, 0x60, 0x62, 0x64, 0x61, 0x63, 0x65, 0x62, 0x64, 0x65, 0x63, 0x65, 0x66, 0x64, 0x66, 0x67, 0x65, 0x67, 0x68, 0x66, 0x68, 0x69, 0x67, 0x68, 0x6A, 0x67, 0x69, 0x6B, 0x68, 0x6A, 0x6C, 0x69, 0x6B, 0x6D, 0x6A, 0x6C, 0x6E, 0x6B, 0x6D, 0x6F, 0x6C, 0x6E, 0x70, 0x6D, 0x6F, 0x71, 0x6E, 0x71, 0x73, 0x70, 0x72, 0x74, 0x71, 0x73, 0x75, 0x72, 0x74, 0x76, 0x73, 0x75, 0x77, 0x74, 0x76, 0x78, 0x75, 0x77, 0x79, 0x76, 0x78, 0x7A, 0x77, 0x79, 0x7B, 0x78, 0x7A, 0x7C, 0x79, 0x7B, 0x7D, 0x7A, 0x7C, 0x7E, 0x7B, 0x7D, 0x7F, 0x7C, 0x7E, 0x80, 0x7D, 0x7F, 0x81, 0x7E, 0x80, 0x82, 0x7F, 0x81, 0x83, 0x80, 0x82, 0x84, 0x81, 0x83, 0x85, 0x82, 0x84, 0x86, 0x83, 0x85, 0x87, 0x84, 0x86, 0x88, 0x85, 0x87, 0x89, 0x86, 0x88, 0x8A, 0x87, 0x89, 0x8B, 0x88, 0x8A, 0x8C, 0x89, 0x8B, 0x8D, 0x8A, 0x8C, 0x8E, 0x8B, 0x8D, 0x8F, 0x8C, 0x8E, 0x90, 0x8D, 0x8F, 0x91, 0x8E, 0x90, 0x92, 0x8F, 0x91, 0x93, 0x90, 0x92, 0x94, 0x91, 0x93, 0x95, 0x92, 0x94, 0x96, 0x93, 0x95, 0x97, 0x94, 0x96, 0x98, 0x95, 0x97, 0x99, 0x96, 0x98, 0x9A, 0x97, 0x9A, 0x9B, 0x98, 0x9B, 0x9D, 0x99, 0x9C, 0x9E, 0x9B, 0x9D, 0x9F, 0x9C, 0x9E, 0xA0, 0x9D, 0x9F, 0xA1, 0x9E, 0xA0, 0xA2, 0x9F, 0xA1, 0xA3, 0xA0, 0xA2, 0xA4, 0xA1, 0xA3, 0xA5, 0xA2, 0xA4, 0xA6, 0xA3, 0xA5, 0xA7, 0xA4, 0xA7, 0xA9, 0xA6, 0xA8, 0xAA, 0xA7, 0xA9, 0xAB, 0xA8, 0xAA, 0xAC, 0xA9, 0xAB, 0xAD, 0xAA, 0xAC, 0xAE, 0xAB, 0xAD, 0xAF, 0xAC, 0xAE, 0xB0, 0xAD, 0xB0, 0xB2, 0xAE, 0xB1, 0xB3, 0xAF, 0xB2, 0xB4, 0xB1, 0xB3, 0xB5, 0xB2, 0xB4, 0xB6, 0xB3, 0xB5, 0xB7, 0xB4, 0xB6, 0xB8, 0xB5, 0xB7, 0xB9, 0xB6, 0xB8, 0xBA, 0xB7, 0xB9, 0xBB, 0xB8, 0xBA, 0xBC, 0xB9, 0xBD, 0xBB, 0xBF, 0xBC, 0xBE, 0xBB, 0xB9, 0xBF, 0xC1, 0xC2, 0xBD, 0xBB, 0xBD, 0xBF, 0xBC, 0xC0, 0xBE, 0xC2, 0xC1, 0xBF, 0xC3, 0xBE, 0xC1, 0xBD, 0xBC, 0xC1, 0xC3, 0xC0, 0xC2, 0xBE, 0xC1, 0xC3, 0xBF, 0xC5, 0xC2, 0xC7, 0xC2, 0xC4, 0xC1, 0xC8, 0xC3, 0xC2, 0xC3, 0xC5, 0xC2, 0xC4, 0xC6, 0xC3, 0xC5, 0xC7, 0xC4, 0xC6, 0xC8, 0xC5, 0xC7, 0xC9, 0xC6, 0xC8, 0xCA, 0xC7, 0xC9, 0xCB, 0xC8, 0xCF, 0xCA, 0xC8, 0xCA, 0xCC, 0xC9, 0xC7, 0xCD, 0xCF, 0xCB, 0xCE, 0xCA, 0xC9, 0xCE, 0xD0, 0xCD, 0xCF, 0xCB, 0xCE, 0xD0, 0xCC, 0xCF, 0xD1, 0xCE, 0xD3, 0xD0, 0xD5, 0xD0, 0xD2, 0xCF, 0xD4, 0xD1, 0xD6, 0xCE, 0xD3, 0xD6, 0xD1, 0xD3, 0xD0, 0xD8, 0xD2, 0xD1, 0xD2, 0xD4, 0xD1, 0xD0, 0xD5, 0xD8, 0xD3, 0xD5, 0xD2, 0xD4, 0xD6, 0xD3, 0xD5, 0xD7, 0xD4, 0xD6, 0xD8, 0xD5, 0xD8, 0xDA, 0xD6, 0xD9, 0xDB, 0xD7, 0xDA, 0xDC, 0xD9, 0xD8, 0xDD, 0xE0, 0xDC, 0xDE, 0xDB, 0xDD, 0xDF, 0xDC, 0xDE, 0xE0, 0xDD, 0xDF, 0xE1, 0xDE, 0xE1, 0xE4, 0xE0, 0xE3, 0xE5, 0xE1, 0xE4, 0xE6, 0xE3, 0xE5, 0xE7, 0xE4, 0xE9, 0xE6, 0xEB, 0xE6, 0xE8, 0xE5, 0xED, 0xE7, 0xE6, 0xE7, 0xE9, 0xE6, 0xDF, 0xEC, 0xED, 0xE8, 0xEA, 0xE7, 0xE9, 0xEB, 0xE8, 0xEA, 0xEC, 0xE9, 0xEB, 0xEE, 0xEA, 0xED, 0xEF, 0xEB, 0xF4, 0xEE, 0xED, 0xEE, 0xF0, 0xED, 0xE8, 0xF2, 0xEC, 0xF1, 0xF0, 0xE6, 0xEF, 0xF1, 0xEE, 0xF0, 0xF2, 0xEF, 0xF1, 0xF3, 0xF0, 0xF2, 0xF4, 0xF1, 0xF3, 0xF5, 0xF2, 0xF4, 0xF7, 0xF3, 0xF6, 0xF8, 0xF4, 0xF7, 0xF9, 0xF6, 0xF8, 0xFA, 0xF7, 0xF9, 0xFB, 0xF8, 0xFA, 0xFC, 0xF9, 0xFB, 0xFD, 0xFA, 0xFC, 0xFF, 0xFB, 0xFE, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x60, 0x00, 0x00, 0x08, 0xFE, 0x00, 0xC3, 0x09, 0x43, 0xE5, 0xA9, 0xA0, 0xC1, 0x83, 0x08, 0x13, 0x2A, 0x5C, 0xC8, 0xB0, 0xA1, 0x43, 0x85, 0xA6, 0x8A, 0x8D, 0x1B, 0x96, 0x4C, 0x1D, 0xBC, 0x8B, 0x18, 0x33, 0x6A, 0xDC, 0xC8, 0xB1, 0xA3, 0xC7, 0x8F, 0x20, 0x39, 0xAA, 0x4B, 0xD6, 0xEB, 0xD4, 0xBA, 0x90, 0x28, 0x53, 0xAA, 0x5C, 0xA9, 0x71, 0x1D, 0x29, 0x4F, 0x2C, 0x63, 0xCA, 0x9C, 0x89, 0xB1, 0x20, 0xCD, 0x9B, 0x38, 0x41, 0xDA, 0xCC, 0xC9, 0xB3, 0x27, 0x3C, 0x9B, 0xEE, 0x82, 0x0A, 0x1D, 0x4A, 0xB4, 0xA8, 0xD1, 0xA3, 0x48, 0x93, 0x2A, 0x45, 0xFA, 0x13, 0xE6, 0xD2, 0xA7, 0x50, 0xA3, 0x4A, 0x25, 0xDA, 0x14, 0xDE, 0xD4, 0xAB, 0x58, 0xB3, 0xBA, 0xAB, 0xAA, 0xB5, 0xAB, 0x57, 0xA6, 0x36, 0xDB, 0x89, 0x1D, 0x4B, 0x56, 0xEC, 0xAB, 0x3A, 0x68, 0xD1, 0x0E, 0x2B, 0xCB, 0xB6, 0xAD, 0xDB, 0xB7, 0x70, 0xE3, 0x56, 0x8D, 0xDB, 0xAE, 0x4E, 0x83, 0x08, 0x12, 0xF2, 0x46, 0x78, 0x44, 0x57, 0xEC, 0xB0, 0x67, 0x64, 0xBD, 0xBD, 0xEA, 0x4B, 0x98, 0xED, 0xDC, 0xB8, 0x77, 0x3C, 0x74, 0x71, 0x57, 0xEE, 0x8E, 0x8C, 0x18, 0x7D, 0x7D, 0x20, 0xB0, 0x33, 0xF6, 0xD5, 0x81, 0x04, 0x85, 0x33, 0x8B, 0xAD, 0xCA, 0xAE, 0xB3, 0xE7, 0xCF, 0x9D, 0xF3, 0xBC, 0x90, 0x13, 0xB4, 0x18, 0x13, 0x29, 0xED, 0xD8, 0x35, 0xA2, 0xE3, 0xAA, 0xF3, 0x33, 0x3A, 0x74, 0x3A, 0x37, 0x32, 0x71, 0x01, 0x0A, 0x9F, 0x67, 0xCF, 0xB4, 0x40, 0xF0, 0x10, 0x08, 0x92, 0x67, 0x4D, 0x59, 0x7A, 0x2C, 0x09, 0xF4, 0x19, 0xF6, 0x33, 0x57, 0x4B, 0x7A, 0x10, 0x07, 0xCD, 0x9C, 0x33, 0x73, 0xD0, 0x79, 0x6A, 0xDC, 0x71, 0xD7, 0x6E, 0x8C, 0x90, 0x4D, 0xD4, 0x7F, 0x38, 0xC0, 0xD3, 0xD9, 0xD5, 0x02, 0x08, 0x9D, 0x7F, 0xFE, 0x64, 0xB8, 0x51, 0x44, 0x86, 0xAC, 0x57, 0x0F, 0x4C, 0x10, 0x09, 0x22, 0xA5, 0x73, 0x16, 0x04, 0x0E, 0x90, 0x90, 0xB0, 0x80, 0xA3, 0x5B, 0xE7, 0x04, 0x0F, 0xBE, 0x30, 0x70, 0x40, 0xC1, 0x42, 0xA1, 0xE7, 0x9F, 0x39, 0x07, 0x60, 0x68, 0x35, 0x6C, 0xA1, 0x86, 0x09, 0x2C, 0x28, 0x12, 0x54, 0x3B, 0x44, 0x90, 0x70, 0x48, 0x6A, 0xAF, 0x60, 0xC0, 0x42, 0x6A, 0xEC, 0x6C, 0xF1, 0x44, 0x27, 0xD4, 0xB5, 0x43, 0x8B, 0x0F, 0x5B, 0x58, 0xD5, 0x0E, 0x2C, 0x0A, 0x5C, 0x90, 0x0C, 0x63, 0x4E, 0xBC, 0xE0, 0x47, 0x67, 0x12, 0xA4, 0xA0, 0x83, 0x2D, 0xED, 0xBC, 0xC1, 0xC3, 0x16, 0x14, 0x02, 0x28, 0xE0, 0x80, 0xD1, 0x71, 0xF1, 0x86, 0x0C, 0x24, 0xE8, 0x51, 0x4E, 0x6A, 0x49, 0xE4, 0x40, 0x49, 0x6A, 0xAE, 0x94, 0x90, 0x04, 0x85, 0x5E, 0x4C, 0xE1, 0x09, 0x75, 0xEC, 0xD0, 0x32, 0x84, 0x17, 0x41, 0xB1, 0x13, 0xC6, 0x05, 0x76, 0x2C, 0xA8, 0x0A, 0x13, 0x51, 0x74, 0xB6, 0x01, 0x11, 0xB0, 0x88, 0x45, 0x89, 0x14, 0x72, 0xC4, 0xF8, 0x5C, 0x55, 0xE9, 0x84, 0x29, 0xE6, 0x98, 0x61, 0xDE, 0x41, 0xC3, 0x1D, 0xA9, 0x05, 0xD2, 0x44, 0x19, 0xEA, 0xA4, 0x93, 0xC4, 0x0F, 0x97, 0xB0, 0xA3, 0x8E, 0x2A, 0x29, 0x54, 0xB9, 0x4E, 0x3A, 0x51, 0x1C, 0x91, 0x09, 0x3B, 0xEB, 0xA8, 0xF3, 0x8A, 0x0C, 0x55, 0xA4, 0xA6, 0x0E, 0x11, 0x28, 0xFC, 0x28, 0x27, 0x2D, 0x46, 0x3C, 0x21, 0x67, 0x07, 0x4B, 0x28, 0xD3, 0x59, 0x21, 0x44, 0xDC, 0x21, 0x27, 0x99, 0x63, 0x56, 0x75, 0xCE, 0xA5, 0x98, 0x66, 0x7A, 0xA9, 0x1D, 0x32, 0xD8, 0xD1, 0xD9, 0x38, 0x4D, 0xF8, 0x30, 0xCC, 0x39, 0x6F, 0x5A, 0xB2, 0x0E, 0x3A, 0xA9, 0xA0, 0x00, 0x05, 0x3B, 0xE9, 0x90, 0xFA, 0x83, 0xA9, 0xFE, 0xE8, 0x9C, 0x93, 0xEA, 0xAA, 0xAD, 0x1A, 0x61, 0x83, 0x25, 0xEC, 0xC4, 0xCA, 0x8A, 0x0C, 0x55, 0xA6, 0xD3, 0x81, 0x12, 0xC9, 0x9C, 0x7A, 0x47, 0x0D, 0x75, 0xE4, 0xAA, 0x69, 0xA6, 0x96, 0x1E, 0xAB, 0x29, 0xA7, 0xC5, 0xAA, 0xF3, 0x8C, 0x0E, 0x4B, 0xEC, 0x82, 0x4E, 0xA9, 0xA7, 0x36, 0xA1, 0x2A, 0xAB, 0xAE, 0xC2, 0x2A, 0xEB, 0xB5, 0xAD, 0x16, 0xD2, 0x83, 0x18, 0xA7, 0x9E, 0xB3, 0x45, 0x0A, 0x7D, 0xB0, 0xFA, 0xEB, 0x31, 0xEA, 0xA0, 0xC3, 0xAC, 0xB1, 0xCA, 0x9E, 0x93, 0x6C, 0xBB, 0x9B, 0xCA, 0x20, 0x86, 0x23, 0x79, 0x90, 0x70, 0x42, 0x18, 0xAC, 0x92, 0xF1, 0x43, 0x16, 0x89, 0x10, 0xB1, 0x41, 0x0B, 0xED, 0xB5, 0x2A, 0xC6, 0x0F, 0x62, 0xE8, 0xB2, 0xCB, 0x39, 0xCA, 0xA8, 0x3A, 0x89, 0x27, 0xE7, 0x60, 0x53, 0x04, 0x14, 0x6C, 0xB0, 0x12, 0x47, 0x03, 0x2C, 0x18, 0x63, 0xAE, 0x12, 0xC6, 0xA8, 0x73, 0xCE, 0xBA, 0xB1, 0xB6, 0xFB, 0x2E, 0xBC, 0x9C, 0x46, 0x31, 0x04, 0x08, 0x15, 0x94, 0xF1, 0x0C, 0xAB, 0xC1, 0x1C, 0x21, 0xC5, 0x0E, 0x4E, 0x78, 0xE2, 0x43, 0x16, 0xD8, 0xEE, 0x22, 0x45, 0x14, 0x39, 0xE4, 0x71, 0x0E, 0x3A, 0x77, 0x3C, 0xD1, 0x04, 0x09, 0xE8, 0xA0, 0x73, 0xCC, 0x1A, 0x45, 0x84, 0xF0, 0xC0, 0x09, 0xB0, 0xF0, 0x89, 0xCE, 0xAF, 0x19, 0x6F, 0x2C, 0x43, 0xB1, 0x1D, 0x2B, 0xFB, 0x71, 0xBB, 0xE8, 0xAC, 0xD3, 0xD9, 0x3A, 0x52, 0x77, 0x96, 0x4E, 0xD4, 0xC7, 0x9C, 0x2C, 0x75, 0x6A, 0xAD, 0x62, 0x5D, 0x4C, 0x9B, 0xE8, 0xA4, 0x63, 0xCD, 0x31, 0xD2, 0x5C, 0x9D, 0x0E, 0x3B, 0xD8, 0xEC, 0x72, 0x4C, 0xD5, 0xE9, 0x9E, 0x2D, 0xE7, 0xCD, 0x55, 0x37, 0x7D, 0xEC, 0xD3, 0xCA, 0xA2, 0xA3, 0x0E, 0x68, 0x77, 0xC6, 0xEA, 0x36, 0xFE, 0x9F, 0x52, 0x87, 0x7B, 0x8E, 0xDB, 0x79, 0xDB, 0x3D, 0x75, 0xCF, 0xEA, 0x54, 0xDD, 0x59, 0xBA, 0x70, 0x63, 0x2B, 0x38, 0xE2, 0x1E, 0xDB, 0x04, 0x6F, 0xA6, 0x61, 0x8F, 0xD9, 0xF3, 0xA5, 0x61, 0x83, 0x1D, 0x76, 0xD3, 0x95, 0x5F, 0x4D, 0x79, 0x3A, 0x60, 0xDF, 0x9C, 0xB9, 0xE6, 0x9B, 0x77, 0x7C, 0xF9, 0xE3, 0x74, 0x3F, 0x6E, 0xFA, 0xE9, 0xA8, 0xA7, 0x0E, 0x6F, 0xE9, 0xAA, 0xB7, 0xEE, 0xFA, 0xEB, 0x97, 0xB2, 0x0E, 0xFB, 0xEC, 0xB4, 0x3B, 0xED, 0x78, 0xED, 0xB8, 0xE7, 0xAE, 0xE9, 0x4F, 0xA4, 0x48, 0xAD, 0xFB, 0xEF, 0xB5, 0x53, 0x1D, 0x4A, 0x30, 0xC1, 0xFA, 0x64, 0x7C, 0x4C, 0xEB, 0x24, 0x63, 0x4B, 0x35, 0xB9, 0xBC, 0xF4, 0xD0, 0xF3, 0xD0, 0x47, 0x2F, 0x7D, 0x41, 0xA5, 0xD8, 0xD2, 0x0C, 0x37, 0xBF, 0x98, 0x32, 0xFD, 0xF6, 0xDC, 0x73, 0x7F, 0x0A, 0x31, 0xDF, 0x00, 0x53, 0xD1, 0xF1, 0xE4, 0xA7, 0x34, 0x52, 0x30, 0xBD, 0xB3, 0xDA, 0xF3, 0xFA, 0xEC, 0xB7, 0xEF, 0xFE, 0xFB, 0xF0, 0xC7, 0x2F, 0xFF, 0xFC, 0xEF, 0xF3, 0xF9, 0x12, 0x3C, 0xE8, 0x98, 0xA3, 0xFF, 0xFE, 0xFC, 0xF7, 0xEF, 0xFF, 0xFF, 0x00, 0x0C, 0xA0, 0x00, 0x07, 0x08, 0xC0, 0xAA, 0x94, 0xE3, 0x80, 0x08, 0x4C, 0xA0, 0x02, 0x17, 0xC8, 0xC0, 0x06, 0x3A, 0xF0, 0x81, 0x10, 0x74, 0xA0, 0x01, 0x23, 0x48, 0xC1, 0x0A, 0x5A, 0xF0, 0x82, 0x09, 0x9C, 0x20, 0x06, 0x37, 0xC8, 0x41, 0x0E, 0x56, 0x85, 0x1C, 0x20, 0x0C, 0xA1, 0x08, 0x47, 0x48, 0xC2, 0x12, 0x9A, 0xF0, 0x84, 0x28, 0x4C, 0xE1, 0x09, 0xAB, 0x32, 0x8E, 0x16, 0xBA, 0xF0, 0x85, 0x30, 0x8C, 0xA1, 0x0C, 0x67, 0x48, 0xC3, 0x1A, 0xDA, 0x90, 0x86, 0x2C, 0xBC, 0xA1, 0x0E, 0x77, 0xC8, 0xC3, 0x1E, 0xBE, 0xB0, 0x2A, 0xFE, 0xE0, 0x08, 0xA2, 0x10, 0x87, 0x18, 0x44, 0x4F, 0xB8, 0xE1, 0x88, 0x47, 0x94, 0x05, 0x11, 0x97, 0xC8, 0xC4, 0x26, 0x3A, 0xF1, 0x89, 0x50, 0xAC, 0x8A, 0x37, 0xA6, 0x48, 0xC5, 0x2A, 0x4E, 0xD1, 0x0D, 0x0A, 0x78, 0x00, 0x04, 0xB6, 0xE8, 0x00, 0x44, 0x58, 0xF1, 0x8B, 0x54, 0x8C, 0x45, 0x31, 0xAA, 0x08, 0x0D, 0x4F, 0x80, 0xF1, 0x8C, 0x68, 0x44, 0xA3, 0x14, 0xD3, 0xE8, 0x0D, 0x38, 0x6C, 0x00, 0x0B, 0xE6, 0xC0, 0x46, 0x1C, 0x5C, 0xD0, 0x82, 0x71, 0xB0, 0xD1, 0x1B, 0x39, 0x30, 0xC0, 0x1B, 0xA8, 0xE8, 0x89, 0x02, 0x1C, 0xE0, 0x8E, 0x80, 0x3C, 0x63, 0x55, 0xBA, 0x41, 0xC8, 0x42, 0x1A, 0x92, 0x90, 0x72, 0x58, 0x41, 0x1B, 0xD2, 0xB5, 0x8B, 0x23, 0x30, 0xA1, 0x1C, 0xDE, 0x28, 0x44, 0x1B, 0x3A, 0x41, 0xC8, 0x61, 0xB4, 0xA1, 0x0D, 0x84, 0x2C, 0xC4, 0x08, 0x28, 0xB0, 0x84, 0x3A, 0x14, 0x63, 0x18, 0x54, 0x68, 0xC0, 0x06, 0xF0, 0x90, 0x88, 0x42, 0x42, 0x62, 0x0A, 0x39, 0x30, 0x02, 0x1E, 0x0C, 0x79, 0xC9, 0x61, 0x74, 0xC2, 0x08, 0x39, 0x58, 0xE5, 0x21, 0x67, 0x59, 0x15, 0x6E, 0xD8, 0xF2, 0x96, 0xB8, 0xB4, 0xE5, 0x1C, 0x62, 0x20, 0x07, 0x74, 0x94, 0xA3, 0x0B, 0x3D, 0xA8, 0xC4, 0x39, 0xC0, 0x91, 0x03, 0x06, 0xC4, 0xA1, 0x1B, 0xDC, 0xE0, 0x44, 0x02, 0x1A, 0x80, 0xCC, 0x1C, 0x58, 0x40, 0x06, 0x3F, 0x68, 0xC1, 0x4B, 0x1A, 0x30, 0x02, 0x1F, 0xF0, 0x80, 0x09, 0xC8, 0x9C, 0x82, 0x01, 0x18, 0x30, 0xB2, 0x09, 0xC8, 0xE0, 0x19, 0xB6, 0x3C, 0x40, 0x03, 0xB0, 0xA0, 0x00, 0x06, 0x48, 0x60, 0x02, 0x7C, 0xC8, 0xA5, 0x3A, 0x6B, 0xA9, 0xCE, 0x5C, 0xEE, 0xB2, 0x0A, 0x64, 0x10, 0x01, 0x0A, 0x08, 0xA1, 0x31, 0x70, 0xFC, 0x00, 0x04, 0x81, 0xFE, 0x18, 0x47, 0x37, 0x3A, 0x51, 0x01, 0x14, 0x90, 0xC3, 0x1B, 0xDD, 0xA8, 0x82, 0x12, 0x30, 0x91, 0x8E, 0x72, 0x80, 0x23, 0x15, 0x39, 0xA8, 0x82, 0x3A, 0xCC, 0x31, 0x0E, 0x4F, 0x20, 0x80, 0x02, 0xBB, 0x28, 0x87, 0x36, 0x94, 0xB0, 0x82, 0x3B, 0x20, 0x13, 0x02, 0x25, 0xB0, 0x01, 0x2B, 0xCA, 0x91, 0x06, 0x1C, 0x58, 0xC1, 0x1B, 0xED, 0xBC, 0x65, 0x55, 0xB6, 0x41, 0xD2, 0x92, 0x9A, 0x94, 0xA4, 0x72, 0x80, 0x41, 0x15, 0xD0, 0xE0, 0x02, 0x10, 0xD4, 0x81, 0x1B, 0xE5, 0xE8, 0xC6, 0x10, 0x68, 0xE0, 0x88, 0x98, 0x76, 0x22, 0x04, 0x43, 0x38, 0x07, 0x40, 0xB1, 0xC0, 0x04, 0x82, 0x1A, 0x34, 0x15, 0x3D, 0xB0, 0xC2, 0x3A, 0xCE, 0x41, 0x0E, 0x2D, 0x50, 0x00, 0x0E, 0xB1, 0x32, 0x87, 0x27, 0x8C, 0xB0, 0x04, 0x70, 0x70, 0x03, 0x03, 0x3E, 0x38, 0xC5, 0x39, 0xCC, 0xE1, 0x88, 0x25, 0xB0, 0x81, 0x1C, 0xDC, 0x38, 0xA9, 0x49, 0xAB, 0x82, 0x8D, 0xAE, 0x7A, 0xF5, 0xAB, 0x5D, 0x85, 0xC3, 0x68, 0xF2, 0xB7, 0x87, 0x23, 0x7C, 0x81, 0x1B, 0xD8, 0x20, 0x82, 0x0E, 0x22, 0x41, 0x0E, 0x6D, 0x6C, 0xA2, 0x04, 0x4B, 0x38, 0x07, 0x5A, 0x99, 0x10, 0x04, 0x4A, 0xC4, 0x54, 0x1B, 0x9E, 0x70, 0xC1, 0x13, 0xD0, 0x01, 0x8E, 0x6D, 0xFC, 0x80, 0x04, 0x8F, 0x38, 0xC7, 0x38, 0xB8, 0xA1, 0x8A, 0x20, 0x24, 0x61, 0x1C, 0xDA, 0xD0, 0x40, 0x11, 0x8A, 0x61, 0x0E, 0x70, 0xF8, 0xC1, 0x07, 0x72, 0x28, 0xC7, 0x36, 0xC0, 0xFA, 0xD5, 0xAA, 0x58, 0xE3, 0xB2, 0x98, 0xCD, 0xEC, 0x65, 0xDF, 0xF0, 0x82, 0x38, 0xF8, 0x12, 0x1B, 0x48, 0xC8, 0x81, 0x2C, 0xAC, 0x31, 0x04, 0x1D, 0x40, 0x02, 0x1C, 0xD8, 0xD0, 0x04, 0x09, 0x94, 0x60, 0x8E, 0x6D, 0x90, 0xD6, 0xB4, 0xA8, 0xB5, 0xFE, 0x86, 0x6A, 0x59, 0xEB, 0x5A, 0x20, 0xC4, 0x00, 0x12, 0x6D, 0xB5, 0x06, 0x27, 0x5C, 0xB0, 0x04, 0x89, 0x6A, 0x80, 0x08, 0xC1, 0x18, 0x87, 0x1C, 0x63, 0xF0, 0x06, 0x89, 0x6A, 0x36, 0xB3, 0x96, 0x3D, 0xAE, 0x66, 0x39, 0x5B, 0xDC, 0x6E, 0x14, 0xA3, 0x06, 0x45, 0x88, 0x45, 0x5A, 0x61, 0x8B, 0x8D, 0x23, 0xAC, 0xB6, 0xB5, 0xAF, 0x3D, 0x2D, 0x36, 0x64, 0x7B, 0x5D, 0xD7, 0xF2, 0x01, 0x07, 0x5C, 0x10, 0xAE, 0x35, 0xA8, 0x60, 0x82, 0x3B, 0xB4, 0xF6, 0xB7, 0xBB, 0xE8, 0x86, 0x35, 0x98, 0x6B, 0x5C, 0xE5, 0x5A, 0x23, 0xB9, 0xEE, 0xDD, 0xEC, 0x0B, 0xB8, 0x90, 0x88, 0x39, 0x84, 0x60, 0x04, 0x5B, 0x30, 0x07, 0x37, 0xBA, 0xA0, 0x83, 0x29, 0x04, 0xE2, 0x07, 0x18, 0x48, 0x01, 0x13, 0xB0, 0xBB, 0x05, 0x1D, 0x70, 0xE1, 0x15, 0xAE, 0xB0, 0x86, 0x2E, 0x56, 0xEB, 0x88, 0x4A, 0x58, 0xA3, 0x19, 0x40, 0x50, 0x82, 0x19, 0x3A, 0x91, 0x86, 0x05, 0xA0, 0x20, 0xA2, 0x89, 0x25, 0x42, 0x7A, 0xD7, 0xFB, 0x82, 0xE2, 0x6A, 0x23, 0xBE, 0xF0, 0x8D, 0x2F, 0x67, 0x97, 0xE0, 0x83, 0x0E, 0x48, 0xE0, 0x0B, 0xCA, 0x90, 0x6B, 0x2C, 0x84, 0xC0, 0x04, 0x1B, 0x20, 0xC1, 0x12, 0x39, 0x90, 0x02, 0x76, 0x5F, 0xC1, 0x84, 0x25, 0xD0, 0x60, 0x0E, 0x97, 0x8D, 0x43, 0x12, 0x8E, 0x10, 0x02, 0x6B, 0xA4, 0xAD, 0x0C, 0x40, 0xF0, 0x40, 0x03, 0x48, 0x10, 0x0A, 0xA2, 0x62, 0x03, 0xBD, 0xEA, 0x65, 0xEF, 0x87, 0xDD, 0x1B, 0x62, 0xF7, 0x62, 0x03, 0x1C, 0xB1, 0x22, 0xC7, 0x38, 0xCA, 0x41, 0x54, 0x6D, 0x60, 0x63, 0x1C, 0xC4, 0x03, 0xA1, 0x39, 0xD2, 0x81, 0xDD, 0x2B, 0xEF, 0x42, 0x17, 0xDE, 0xB0, 0xF2, 0x36, 0xA0, 0x11, 0x8C, 0xEB, 0x61, 0x63, 0x1B, 0xE5, 0x88, 0xC6, 0xFE, 0x2C, 0x76, 0x41, 0x8E, 0x73, 0xC4, 0xD4, 0x1A, 0xDB, 0x30, 0xC7, 0x39, 0xD4, 0xFB, 0x64, 0x37, 0x2F, 0x59, 0xB9, 0x4D, 0x56, 0x2E, 0x36, 0xBA, 0xA1, 0xC0, 0xC1, 0x5E, 0x16, 0xA6, 0xE6, 0x28, 0x47, 0x0B, 0x05, 0xBD, 0x64, 0x6E, 0x90, 0xA3, 0x1C, 0x58, 0xED, 0x2A, 0x38, 0x0E, 0x88, 0x5A, 0x6C, 0x18, 0x3A, 0x81, 0xDD, 0xD8, 0xAE, 0x36, 0xC6, 0x41, 0x0E, 0xD7, 0xEE, 0x99, 0x1C, 0xB1, 0x65, 0xB2, 0x4D, 0xE2, 0x9B, 0x59, 0x6C, 0x68, 0xA3, 0xA4, 0x56, 0xC6, 0xAC, 0xA7, 0x6D, 0x69, 0x65, 0x6D, 0xDC, 0xD9, 0x1A, 0xDA, 0xB0, 0xE5, 0x76, 0x7D, 0xBC, 0x8D, 0xAC, 0x62, 0x36, 0xD5, 0xC8, 0x0C, 0xF5, 0x65, 0x4D, 0xBD, 0x6A, 0x4F, 0xAF, 0x5A, 0xD3, 0x30, 0xE1, 0xB4, 0xAE, 0x77, 0xCD, 0xEB, 0x5E, 0xFB, 0x3A, 0xCF, 0xBE, 0x0E, 0xB6, 0xB0, 0x87, 0x8D, 0x59, 0x60, 0x13, 0xFB, 0xD8, 0xC8, 0xC6, 0x35, 0x3C, 0x92, 0xCD, 0xEC, 0x66, 0x1F, 0x97, 0x77, 0xEB, 0x28, 0x87, 0xB3, 0xA7, 0x9D, 0x6C, 0x72, 0xAC, 0x63, 0x78, 0xC5, 0x2B, 0x9F, 0xB6, 0x3D, 0x92, 0xBC, 0x5B, 0x5C, 0x23, 0x17, 0xA3, 0xE8, 0x9E, 0xB8, 0xC7, 0xDD, 0x10, 0x51, 0xD4, 0x82, 0x19, 0xE2, 0x78, 0xC5, 0x22, 0x06, 0xC1, 0xEE, 0x76, 0xBB, 0xFB, 0xDD, 0xF0, 0x8E, 0xB7, 0xBC, 0xE7, 0x4D, 0xEF, 0x7A, 0xC7, 0x9B, 0x11, 0xAD, 0xC8, 0xC6, 0x2A, 0x52, 0x21, 0x8D, 0x5B, 0x53, 0xFB, 0xDF, 0xBD, 0x7E, 0x46, 0x28, 0x4C, 0xA1, 0x88, 0x68, 0x34, 0x23, 0x18, 0x5F, 0xD6, 0x85, 0xC2, 0x17, 0xCE, 0xF0, 0x86, 0x3B, 0xFC, 0xE1, 0x10, 0x8F, 0xB8, 0xC4, 0x27, 0xCE, 0xF0, 0x5D, 0xEC, 0x22, 0x11, 0x83, 0x70, 0x86, 0x2D, 0x5E, 0xC1, 0x8A, 0x8E, 0x7B, 0xFC, 0xE3, 0x20, 0x0F, 0xB9, 0xC8, 0xFE, 0x47, 0x4E, 0xF2, 0x92, 0x9B, 0x5C, 0xE4, 0xB3, 0x60, 0xB7, 0x31, 0x38, 0x7E, 0xF2, 0x96, 0xBB, 0xFC, 0xE5, 0x30, 0xF7, 0xB8, 0x2C, 0xD8, 0x3D, 0x8C, 0x98, 0xDB, 0xFC, 0xE6, 0x38, 0x67, 0xC5, 0xCC, 0x07, 0x11, 0x8C, 0x9C, 0xFB, 0xFC, 0xE7, 0x24, 0xDF, 0x79, 0xCF, 0x4B, 0xEE, 0x8A, 0xA2, 0x1B, 0x1D, 0xE8, 0x48, 0x0F, 0x3A, 0xBB, 0x87, 0x3E, 0x72, 0x57, 0xBC, 0x22, 0x16, 0xB2, 0x88, 0x7A, 0x2C, 0x60, 0xE1, 0x8A, 0xA4, 0x5B, 0x5D, 0xE6, 0x4B, 0x27, 0x7A, 0x2C, 0x66, 0x41, 0x8B, 0x59, 0xC8, 0x62, 0x16, 0xB3, 0x88, 0x45, 0xD5, 0x4D, 0xFE, 0x0A, 0x58, 0xB0, 0x9C, 0x15, 0x4E, 0xA7, 0xFA, 0xD5, 0x41, 0x2E, 0x74, 0xA2, 0xCB, 0x82, 0x10, 0x58, 0xB8, 0xC2, 0x15, 0xB0, 0x90, 0x85, 0x46, 0x70, 0xFC, 0xE8, 0x1D, 0x2F, 0x7A, 0xC7, 0x5F, 0x21, 0xF5, 0xBB, 0xC3, 0x22, 0xEA, 0x6A, 0xCF, 0xBB, 0xD3, 0x11, 0xFC, 0x71, 0xA3, 0x17, 0x9D, 0xF0, 0x27, 0x6F, 0x3B, 0xC9, 0x5D, 0x21, 0x8B, 0x2C, 0x10, 0xE0, 0x00, 0x08, 0x88, 0xFC, 0x01, 0xD8, 0xE0, 0x0A, 0x58, 0xC4, 0x82, 0xF0, 0x4F, 0x17, 0xBB, 0x2B, 0x62, 0x41, 0x0B, 0x5B, 0x34, 0xA2, 0x12, 0xAF, 0xE0, 0xBB, 0x2D, 0x4E, 0x31, 0x08, 0xB5, 0x3F, 0x3D, 0xEA, 0xB2, 0xB8, 0x7C, 0xDE, 0x63, 0x31, 0x75, 0xA8, 0xA7, 0xFE, 0xEC, 0x4A, 0xE7, 0xB9, 0xDB, 0xB7, 0x20, 0x81, 0x21, 0xC0, 0xE2, 0x14, 0x58, 0x08, 0x01, 0x08, 0xF8, 0x1E, 0xF6, 0xAA, 0xC3, 0xC2, 0xEB, 0x08, 0xE6, 0x3C, 0x0B, 0x00, 0x90, 0x05, 0x58, 0xFC, 0xBD, 0x10, 0x00, 0x08, 0x80, 0xD8, 0x79, 0xEF, 0x75, 0xB0, 0x9F, 0x87, 0x15, 0x7C, 0xA7, 0x45, 0xD4, 0xB9, 0xDE, 0x7B, 0x93, 0x2B, 0xBE, 0xE9, 0xB2, 0xE8, 0xC2, 0x07, 0xAA, 0xFE, 0xC0, 0x75, 0x47, 0xD8, 0x40, 0x07, 0x7C, 0x7F, 0xC3, 0x15, 0xFE, 0xB0, 0xF9, 0x4C, 0x60, 0xC1, 0x0A, 0xAC, 0x80, 0x85, 0x1B, 0x32, 0xC0, 0x00, 0x03, 0x4F, 0xC2, 0x12, 0x43, 0x38, 0xC0, 0x89, 0xDB, 0xB0, 0xF5, 0x59, 0xD8, 0x01, 0x08, 0x2B, 0xB8, 0xC1, 0x18, 0x64, 0xE1, 0xF4, 0x59, 0x64, 0x01, 0x0B, 0x95, 0x10, 0x08, 0x37, 0xC0, 0x02, 0x62, 0x00, 0x7B, 0x22, 0x77, 0x7D, 0x22, 0xC7, 0x78, 0x5D, 0x30, 0x02, 0x59, 0xC0, 0x75, 0x49, 0xD0, 0x02, 0x74, 0xC0, 0x77, 0x2D, 0x50, 0x00, 0x59, 0xB0, 0x79, 0x84, 0x30, 0x00, 0x07, 0x00, 0x7D, 0x2D, 0xD0, 0x00, 0x25, 0x00, 0x03, 0x21, 0x10, 0x08, 0x81, 0x60, 0x00, 0x18, 0xF0, 0x02, 0x2D, 0xA0, 0x03, 0xB2, 0x40, 0x0B, 0x42, 0x10, 0x00, 0x05, 0x20, 0x03, 0x16, 0xB0, 0x00, 0x27, 0xE0, 0x09, 0xAF, 0x30, 0x0B, 0x02, 0x60, 0x00, 0x45, 0x40, 0x00, 0x05, 0xA0, 0x00, 0x0B, 0x40, 0x06, 0xD6, 0xC7, 0x6E, 0xC5, 0x60, 0x7C, 0x3E, 0xF8, 0x83, 0x96, 0x37, 0x0B, 0x5F, 0x50, 0x02, 0x43, 0xF0, 0x04, 0x18, 0xE0, 0x01, 0x6B, 0x10, 0x75, 0xB6, 0x20, 0x03, 0x17, 0x60, 0x06, 0x50, 0x67, 0x08, 0x0E, 0xE0, 0x01, 0x7F, 0x67, 0x0B, 0x6A, 0x85, 0x07, 0x96, 0x27, 0x0B, 0x8A, 0xC0, 0x02, 0xB6, 0x27, 0x0B, 0xB6, 0x80, 0x08, 0x03, 0xD0, 0x00, 0x8F, 0x10, 0x0B, 0xAA, 0xA0, 0x03, 0x20, 0x00, 0x06, 0xB2, 0x80, 0x0B, 0x09, 0xB0, 0x01, 0x29, 0x70, 0x08, 0xB3, 0x40, 0x05, 0x2B, 0x60, 0x7B, 0x40, 0x08, 0x84, 0xB4, 0xC0, 0x6E, 0xC9, 0x00, 0x76, 0x76, 0x78, 0x87, 0x5C, 0xA7, 0x0B, 0x61, 0x60, 0x02, 0x46, 0x40, 0x05, 0x25, 0x90, 0x01, 0x61, 0xF0, 0x0A, 0xB6, 0xB0, 0x0B, 0x38, 0x90, 0x02, 0x74, 0x40, 0x0B, 0xFE, 0xBA, 0xA0, 0x08, 0x19, 0x60, 0x03, 0xB3, 0x30, 0x88, 0x48, 0xF0, 0x03, 0x7C, 0xC0, 0x75, 0xB8, 0xE0, 0x08, 0x31, 0x70, 0x04, 0x5C, 0xB7, 0x0B, 0x4C, 0xD0, 0x00, 0x5B, 0x90, 0x87, 0x85, 0x90, 0x03, 0x3D, 0x30, 0x88, 0x11, 0x20, 0x03, 0x85, 0x80, 0x88, 0x76, 0xE0, 0x03, 0x58, 0x80, 0x87, 0xA8, 0xB8, 0x0B, 0x74, 0x88, 0x8A, 0x77, 0x88, 0x88, 0x7B, 0xE8, 0x05, 0x88, 0x78, 0x06, 0x2C, 0x33, 0x88, 0x39, 0xF0, 0x02, 0x78, 0x30, 0x88, 0x8B, 0xD0, 0x01, 0x3E, 0x70, 0x89, 0x3F, 0x50, 0x03, 0x79, 0x20, 0x89, 0x8C, 0x50, 0x02, 0x41, 0x40, 0x0B, 0x88, 0x58, 0x03, 0x1C, 0x60, 0x07, 0x9D, 0xB7, 0x0B, 0x8F, 0x50, 0x03, 0x3C, 0x30, 0x88, 0x13, 0xE0, 0x23, 0x88, 0xB8, 0x06, 0x32, 0xE0, 0x05, 0xAC, 0x78, 0x87, 0xAA, 0x38, 0x08, 0x75, 0x58, 0x8D, 0x79, 0xF8, 0x8A, 0x16, 0x27, 0x0B, 0x3C, 0xF0, 0x02, 0x92, 0xA0, 0x0B, 0xB5, 0x98, 0x07, 0x16, 0x97, 0x8B, 0xBB, 0x88, 0x88, 0xE3, 0x68, 0x0B, 0x9D, 0x97, 0x08, 0xBA, 0x88, 0x0B, 0x9D, 0x67, 0x03, 0x28, 0x90, 0x07, 0x06, 0xB3, 0x0B, 0x8B, 0x60, 0x02, 0x3F, 0xE0, 0x8C, 0x39, 0x30, 0x09, 0x88, 0x28, 0x06, 0x28, 0xC0, 0x05, 0xDA, 0x08, 0x76, 0xD7, 0x98, 0x0C, 0xC4, 0x38, 0x90, 0x04, 0xD9, 0x79, 0x7A, 0x68, 0x02, 0x5D, 0x60, 0x71, 0x9F, 0xC0, 0x02, 0x3A, 0xF0, 0x08, 0xE2, 0xF8, 0x02, 0x7A, 0x60, 0x71, 0x3D, 0xA0, 0x8B, 0x9D, 0x87, 0x0B, 0xB5, 0xA8, 0x07, 0xBA, 0x60, 0x0B, 0xB6, 0xC0, 0x8E, 0x3E, 0xB0, 0x0B, 0x1A, 0xC9, 0x06, 0x2E, 0xD0, 0x04, 0x16, 0xD7, 0x48, 0x1E, 0x20, 0x06, 0xB8, 0xB0, 0x0B, 0xCF, 0x28, 0x09, 0xB6, 0x70, 0x90, 0x5B, 0x50, 0x90, 0x2E, 0x19, 0x90, 0x2E, 0x59, 0xFE, 0x90, 0xB6, 0xF0, 0x05, 0x26, 0xD0, 0x04, 0x72, 0x20, 0x06, 0x1A, 0xC0, 0x01, 0x4B, 0xD0, 0x79, 0x25, 0x52, 0x04, 0x6D, 0x40, 0x03, 0x12, 0x10, 0x02, 0x40, 0x40, 0x8C, 0xB6, 0xD0, 0x04, 0x2F, 0xD0, 0x04, 0x8E, 0xF0, 0x08, 0xB4, 0xA0, 0x09, 0xBA, 0x68, 0x07, 0x81, 0x40, 0x0B, 0xAA, 0x50, 0x03, 0x3E, 0x60, 0x05, 0x89, 0xA0, 0x05, 0x07, 0x00, 0x02, 0x2A, 0x89, 0x0B, 0x29, 0xD9, 0x79, 0x34, 0xD9, 0x92, 0x31, 0x39, 0x90, 0x30, 0xF9, 0x95, 0x03, 0xE9, 0x05, 0xF6, 0xC8, 0x82, 0x0D, 0xE0, 0x04, 0x99, 0x40, 0x8C, 0x91, 0x60, 0x03, 0xD1, 0xC4, 0x03, 0x81, 0xF0, 0x02, 0x45, 0x30, 0x90, 0x90, 0xF0, 0x03, 0x3F, 0xB0, 0x02, 0x61, 0x40, 0x8C, 0x5E, 0xD0, 0x03, 0x3B, 0xA0, 0x01, 0xC4, 0x48, 0x09, 0x53, 0x50, 0x03, 0x17, 0x80, 0x00, 0x1C, 0x70, 0x08, 0x03, 0xB9, 0x95, 0xB4, 0x40, 0x96, 0x5E, 0x29, 0x96, 0x61, 0x29, 0x96, 0x8C, 0x39, 0x90, 0x92, 0x90, 0x96, 0x5F, 0x29, 0x09, 0x91, 0x40, 0x90, 0x9F, 0xB0, 0x30, 0x94, 0xF9, 0x08, 0x94, 0xD0, 0x98, 0x9A, 0x49, 0x0B, 0x8B, 0xB9, 0x99, 0x9E, 0xF9, 0x99, 0xA0, 0xE9, 0x99, 0x9D, 0x19, 0x9A, 0xA4, 0x59, 0x9A, 0xA1, 0x39, 0x9A, 0xA6, 0x99, 0x9A, 0xAA, 0x19, 0x93, 0xA8, 0xB9, 0x9A, 0xAE, 0xA9, 0x9A, 0xAD, 0xF9, 0x9A, 0xB2, 0x79, 0x9A, 0x74, 0x38, 0x9B, 0xB6, 0x69, 0x9A, 0xAA, 0x98, 0x08, 0xC5, 0xE0, 0x8E, 0xB7, 0xD9, 0x9B, 0x9B, 0x89, 0x0B, 0x1B, 0x69, 0x0A, 0x9B, 0xC0, 0x99, 0x23, 0x59, 0x9C, 0xC6, 0x79, 0x9C, 0xC8, 0x99, 0x9C, 0xCA, 0xB9, 0x9C, 0xCC, 0xA9, 0x9C, 0xB4, 0x70, 0x09, 0xA1, 0x50, 0x0D, 0xA1, 0x80, 0x71, 0xF6, 0x56, 0x9D, 0xD6, 0x79, 0x9D, 0xD8, 0xC9, 0x6E, 0x8A, 0x05, 0x00, 0x0A, 0xCF, 0x10, 0x10, 0x00, 0x3B, }; The image is a *.gif so make sure you got that format enabled in your gfxconf.h. I hope that helps, ~ Tectu
  17. Hello TechNet, The documentation describes the process as following: * @note The image custom draw function @p gwinButtonDraw_Image() uses param to pass in the gdispImage pointer. * The image must be already opened before calling @p gwinSetCustomDraw(). The image should be 3 * times the height of the button. The button image is repeated 3 times vertically, the first (top) for * the "up" image, the 2nd for the "down" image, and the third (bottom) image for the disabled state. If * the disabled state is never going to be used then the image can be just 2 times the button height. * No checking is done to compare the size of the button to the size of the image. * Note text is drawn on top of the image. If you have any problem getting it running anyway, please post some code so we can take a look and tell you what might be of a problem. ~ Tectu
  18. Since the registers of your LCDs are "selected" through the databus and not the address bus, this makes sense. Please try 0x60000000 and 0x60000001 for your GDISP_REG and GDISP_RAM values. ~ Tectu
  19. Meh, I just packed out my hardware, plugged everything in and flashed the demo project to start debugging what you're talking about... now I hit F5 and the issue is gone Anyway, the issue is resolved, that's a good thing. Sorry that I couldn't help better. Happy hacking! ~ Tectu
  20. Hey goeck and welcome to the new forum I'm sorry but I'm trying really hard to understand what you're saying... Is something not working for you or are you asking why it's implemented that way? Or is maybe something broken? I would have tried it out before this post but I'm currently not able to. ~ Tectu
  21. I didn't take a look at the datasheet nor your complete code but what I see directly is that this: #define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */ #define GDISP_RAM (*((volatile uint16_t *) 0x08000000)) /* RS = 1 */ seems to be wrong. The FSMC Bank you're using starts at 0x60000000 and therefore the address of your RS pin cannot be below that. How did you get to 0x08000000 anyway? That's actually the start address of the flash. ~ Tectu
  22. Thanks for finding and fixing that error. I took a look and I can verify that the GQUEUE_NEED_ASYNC macro gets set to TRUE as it should. ~ Tectu
  23. Hello David, Can you please give some more information about what your troubles are and what you already tried to do? ~ Tectu
×
×
  • Create New...