Jump to content

Joel Bodenmann

Administrators
  • Posts

    2,620
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Joel Bodenmann

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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 :D

    Anyway, the issue is resolved, that's a good thing. Sorry that I couldn't help better.

    Happy hacking!

    ~ Tectu

  8. Hey goeck and welcome to the new forum :D

    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

  9. 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

  10. Forget about anything more than 16 bits as the FSMC and GPIO buses are 16 bits on STM32.

    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

  11. 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

  12. 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

×
×
  • Create New...