int main ( void ) { printf("Game!\n"); // Init devices ButtonInit(); LedInit(); Screen screen = ScreenNew(320, 240); Canvas canvas = CanvasNew( &screen ); // Init game Controller ctrl = ControllerNew( &canvas ); onGameInit( &ctrl ); // Main loop static tick_delay = 0; while(ctrl.running) { if ( tick_delay++ == 20000 ) { tick_delay = 0; onTick( &ctrl ); } ButtonPoll(); } onGameExit( &ctrl ); ButtonDestroy(); LedDestroy(); ScreenDestroy( &screen ); return 0; }
int SFDestroyScreen(lua_State* l) { ScreenDestroy(); return 0; }
int ModeHandler(int mode, char *textIn, int argc, char **argv) { LcdSpi *lcd; Spi *spiBus0; ScreenData *screenBg; int result = 0; Fonts font; iconv_t ic; size_t res; char text[MAX_ISO8859_LEN] = ""; memset(&font, 0, sizeof(Fonts)); spiBus0 = SpiCreate(0); if (spiBus0 == NULL) { printf("SPI-Error\n"); exit(EXITCODE_ERROR); } lcd = LcdOpen(spiBus0); if (!lcd) { printf("LCD-Error\n"); exit(EXITCODE_ERROR); } if (gConfig.mIsInit == 1) { LcdInit(lcd); } else if (gConfig.mIsInit == 2) { LcdUninit(lcd); exit(EXITCODE_OK); } if (gConfig.mIsBgLight) { LcdSetBgLight(lcd, gConfig.mBgLight & 1, gConfig.mBgLight & 2, gConfig.mBgLight & 4); } screenBg = ScreenInit(LCD_X, LCD_Y); if (!screenBg) { printf("Screen-Error\n"); exit(EXITCODE_ERROR); } ScreenClear(screenBg); if (gConfig.mBgFilename) { if (ScreenLoadImage(screenBg, gConfig.mBgFilename, gConfig.mBgOffX, gConfig.mBgOffY) != 0) { ScreenClear(screenBg); } } if (textIn) { int testInLen = strlen(textIn); char **inPtr = &textIn; char *outPtr = &text[0]; ic = iconv_open("ISO-8859-1", "UTF-8"); if (ic != (iconv_t)(-1)) { size_t inBytesLeft = testInLen; size_t outBytesLeft = sizeof(text) - 1; res = iconv(ic, inPtr, &inBytesLeft, &outPtr, &outBytesLeft); if ((int)res != -1 && outBytesLeft) { outPtr[0] = 0; } else { strncpy(text, textIn, sizeof(text) - 1); text[sizeof(text) - 1] = 0; } iconv_close(ic); } } //printf("Mode: %i\n", mode); switch (mode) { case OPT_YESNO: LoadFonts(&font); result = YesNo(lcd, &font, text, screenBg); break; case OPT_OK: LoadFonts(&font); result = Ok(lcd, &font, text, screenBg); break; case OPT_MENU: LoadFonts(&font); result = Menu(lcd, &font, screenBg, optind, argc, argv); break; case OPT_IPV4: LoadFonts(&font); result = Ipv4(lcd, &font, text, screenBg, optind, argc, argv); break; case OPT_SUBNETMASK: LoadFonts(&font); result = Subnetmask(lcd, &font, text, screenBg, optind, argc, argv); break; case OPT_INFO: LoadFonts(&font); result = Info(lcd, &font, text, screenBg); break; case OPT_BUTTONWAIT: result = ButtonWait(); break; case OPT_INTINPUT: LoadFonts(&font); result = IntInput(lcd, &font, text, screenBg, optind, argc, argv); break; case OPT_PROGRESS: LoadFonts(&font); result = Progress(lcd, &font, text, screenBg, optind, argc, argv); break; case OPT_PERCENT: LoadFonts(&font); result = Percent(lcd, &font, text, screenBg, optind, argc, argv); break; default: break; } if (font.mSystem) { //FontDestroy(font.mSystem); } if (font.mInternal) { //FontDestroy(font.mInternal); } if (gConfig.mIsClear) { LcdCls(lcd); } ScreenDestroy(screenBg); LcdCleanup(lcd); SpiDestroy(spiBus0); return result; }
SQInteger SFDestroyScreen(HSQUIRRELVM v) { ScreenDestroy(); return 0; }
int ButtonGetCursor(LcdSpi *lcd, ScreenData *screen, CursorData cur) { int ret; int fd1; int fd2; int fd3; uint8_t val1; uint8_t val2; uint8_t val3; uint8_t val1_old = 0; uint8_t val2_old = 0; uint8_t val3_old = 0; int result = 0; int counter = COUNTER_MAX; ScreenData *screenOut; long int start; long int end; ret = 0; ret += GpioFdOpen(PIN_KEY_1, &fd1); ret += GpioFdOpen(PIN_KEY_2, &fd2); ret += GpioFdOpen(PIN_KEY_3, &fd3); if (ret != 3) { return -1; } if (!screen) { return 0; } screenOut = ScreenInit(screen->mX, screen->mY); ScreenCopy(screenOut, screen); start = GetTime(); while (!gEnde) { if (gConfig.mTimeout) { end = GetTime(); if (end - start >= gConfig.mTimeout) { result = ASCII_CAN; break; } } counter++; if (counter > COUNTER_MAX) { ScreenBlink(screenOut, cur); LcdWriteImageScreen(lcd, screenOut); counter = 0; } GpioGetValue(PIN_KEY_1, &val1); GpioGetValue(PIN_KEY_2, &val2); GpioGetValue(PIN_KEY_3, &val3); if (val1 != val1_old && val1 == 0) { usleep(DEBOUNCE * 1000); result = '1'; break; } if (val2 != val2_old && val2 == 0) { usleep(DEBOUNCE * 1000); result = '2'; break; } if (val3 != val3_old && val3 == 0) { usleep(DEBOUNCE * 1000); result = '3'; break; } val1_old = val1; val2_old = val2; val3_old = val3; usleep(50 * 1000); } ScreenDestroy(screenOut); return result; }