-
Posts
2,639 -
Joined
-
Last visited
-
Days Won
2
Content Type
Forums
Store
Downloads
Blogs
Everything posted by Joel Bodenmann
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
So does it work now? ~ Tectu
-
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
-
The font stuff is in the progress of a complete rework right now. Please stay tight, all your issues will be resolved soon... ~ Tectu
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
Unable to get ILI9320 display driver working on STM32F
Joel Bodenmann replied to uweng14's topic in Support
Good to hear that you got it working! ~ Tectu -
Hello David, Can you please give some more information about what your troubles are and what you already tried to do? ~ Tectu
-
Yes, that for sure, I also meant that you won't notice any visible color quality differences ~ Tectu
-
Well, it can be done with GPIO without any problem. Since he uses ChibiOS/RT it's fairly easy because it offers to build a bus structure out of several GPIO pins. However, I don't really see the reason to use this display in 18- instead of 16-bit mode too. I don't think that you'll notice any difference at all. ~ Tectu
-
Because the FSMC has per definition only a 16-bit data width. You'd have to bitbang your stuff using GPIO then. @ mobyfab: There are an awful lot of people having issues with the SSD1963 driver. Can you confirm that the driver itself is fine the way it is and that it's only a problem with the panel configuration? We have to find a solution for this. Maybe some more documentation will help there. ~ Tectu
-
One more issue fixed - excellent! I will try to come up with a better solution for custom initialization routines. When you want to use your display in 18-bit mode, you have to create a copy of the driver and modify it that it matches the 18-bit stuff. The current SSD1963 driver runs in RGB565 format. You have to make sure that you handle all the colors and data writing correctly inside the driver. You will also have to redefine the color_t type since it's a uint16_t by default. ~ Tectu
-
Unable to get ILI9320 display driver working on STM32F
Joel Bodenmann replied to uweng14's topic in Support
Hello David, Just leave it blank so your line would look like this: palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL Why exactly are you modifying the SPI config registers in your SPI struct? I cannot remember the default values provided by ChibiOS/RT but experience says that it will work for 99% sure if you leave it as it is. Just set a higher prescaler to be sure that your LCD controller can handle it. I know that distributors often write «SPI Freq = 10MHz» in their example codes but those are very often just copied and copied and copied and copied so the comments are not up to date. static const SPIConfig spi2cfg1 = { NULL, /* HW dependent part.*/ GPIOB, 12, SPI_CR1_BR_2 | SPI_CR1_BR_1 }; Furthermore I can see that you seem to directly access your registers in the board file. Why do you do this? I advice you to do everything through the SPI driver provided by the ChibiOS/RT HAL because the spiSend() command already handles the busy flag and so on. One more thing: How long are your wires? ~ Tectu