这篇教程C++ EVT_KEY_FIRST函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中EVT_KEY_FIRST函数的典型用法代码示例。如果您正苦于以下问题:C++ EVT_KEY_FIRST函数的具体用法?C++ EVT_KEY_FIRST怎么用?C++ EVT_KEY_FIRST使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了EVT_KEY_FIRST函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: menuProcArduPilot5void menuProcArduPilot5(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot4); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot6); break; case EVT_KEY_FIRST(KEY_MENU): break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_POS, WPN); initval (1, PACK_POS, DST); title ('5'); lcd_puts_P (1*FW, 1*FH, PSTR(" Way Point # ")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" Distance ")); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:25,
示例2: menuProcArduPilot7void menuProcArduPilot7(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot6); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot8); break; case EVT_KEY_FIRST(KEY_MENU): break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_ATT, RLL); initval (1, PACK_ATT, PCH); title ('7'); lcd_puts_P (1*FW, 1*FH, PSTR(" Roll Angle")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" Pitch Angle")); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:25,
示例3: menuProcArduPilot6void menuProcArduPilot6(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot5); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot7); break; case EVT_KEY_FIRST(KEY_MENU): break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_ATT, ASP); initval (1, PACK_ATT, THH); title ('6'); lcd_puts_P (1*FW, 1*FH, PSTR(" Air Speed ")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" Climb Rate ")); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:25,
示例4: menuStatisticsViewvoid menuStatisticsView(uint8_t event){ TITLE(STR_MENUSTAT); switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuStatisticsDebug); break; case EVT_KEY_LONG(KEY_MENU): g_eeGeneral.globalTimer = 0; eeDirty(EE_GENERAL); sessionTimer = 0; break; case EVT_KEY_FIRST(KEY_EXIT): chainMenu(menuMainView); break; } // Session and Total timers lcd_putsAtt(STATS_1ST_COLUMN, FH*1+1, "SES", BOLD); putsTimer(STATS_1ST_COLUMN + STATS_LABEL_WIDTH, FH*1+1, sessionTimer, 0, 0); lcd_putsAtt(STATS_1ST_COLUMN, FH*2+1, "TOT", BOLD); putsTimer(STATS_1ST_COLUMN + STATS_LABEL_WIDTH, FH*2+1, g_eeGeneral.globalTimer + sessionTimer, TIMEHOUR, 0); // Throttle special timers lcd_putsAtt(STATS_2ND_COLUMN, FH*0+1, "THR", BOLD); putsTimer(STATS_2ND_COLUMN + STATS_LABEL_WIDTH, FH*0+1, s_timeCumThr, 0, 0); lcd_putsAtt(STATS_2ND_COLUMN, FH*1+1, "TH%", BOLD); putsTimer(STATS_2ND_COLUMN + STATS_LABEL_WIDTH, FH*1+1, s_timeCum16ThrP/16, 0, 0); // Timers for (int i=0; i<TIMERS; i++) { putsStrIdx(STATS_3RD_COLUMN, FH*i+1, "TM", i+1, BOLD); if (timersStates[i].val > 3600) putsTimer(STATS_3RD_COLUMN + STATS_LABEL_WIDTH, FH*i+1, timersStates[i].val, TIMEHOUR, 0); else putsTimer(STATS_3RD_COLUMN + STATS_LABEL_WIDTH, FH*i+1, timersStates[i].val, 0, 0); }#if defined(THRTRACE) coord_t traceRd = (s_traceCnt < 0 ? s_traceWr : 0); const coord_t x = 5; const coord_t y = 60; lcd_hline(x-3, y, MAXTRACE+3+3); lcd_vline(x, y-32, 32+3); for (coord_t i=0; i<MAXTRACE; i+=6) { lcd_vline(x+i+6, y-1, 3); } for (coord_t i=1; i<=MAXTRACE; i++) { lcd_vline(x+i, y-s_traceBuf[traceRd], s_traceBuf[traceRd]); traceRd++; if (traceRd>=MAXTRACE) traceRd = 0; if (traceRd==s_traceWr) break; }#endif}
开发者ID:BenZoFly,项目名称:opentx,代码行数:60,
示例5: menuProcArduPilot8void menuProcArduPilot8(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot7); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot1); break; case EVT_KEY_FIRST(KEY_MENU): break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_MOD, MOD); initval (1, PACK_WPC, WPC); title ('8'); lcd_puts_P (1*FW, 1*FH, PSTR(" ArduPilot Mode")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" RTL Distance")); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:25,
示例6: interrupt10msvoid interrupt10ms(void){ Tenms |= 1; // 10 mS has passed uint8_t enuk = KEY_MENU; uint8_t in = readKeys(); for (uint8_t i = 1; i != uint8_t(1 << TRM_BASE); i <<= 1) { uint8_t value = (in & i); keys[enuk].input(value); ++enuk; }#if defined(REV9E) checkRotaryEncoder(); static rotenc_t rePreviousValue; rotenc_t reNewValue = (x9de_rotenc / 2); int8_t scrollRE = reNewValue - rePreviousValue; if (scrollRE) { rePreviousValue = reNewValue; if (scrollRE < 0) { putEvent(EVT_KEY_FIRST(KEY_MINUS)); } else { putEvent(EVT_KEY_FIRST(KEY_PLUS)); } }#endif}
开发者ID:BenZoFly,项目名称:opentx,代码行数:28,
示例7: menuTelemetryMavlink/*! /brief Top Mavlink Menu definition * /details Registers button events and handles that info. Buttons select menus, * these are launched from the MAVLINK_menu switch statement. Setup menu is * lanuched by the menu button. On exit (with exit button) the mavlink * extension is reinitialized. */void menuTelemetryMavlink(uint8_t event) { switch (event) // new event received, branch accordingly { case EVT_ENTRY: MAVLINK_menu = MENU_INFO; break; case EVT_KEY_FIRST(KEY_UP): if (MAVLINK_menu > 0) { MAVLINK_menu--; break; } else { chainMenu(menuMainView); return; } case EVT_KEY_FIRST(KEY_DOWN): if (MAVLINK_menu < MAX_MAVLINK_MENU - 1) MAVLINK_menu++; break; case EVT_KEY_FIRST(KEY_MENU): return; case EVT_KEY_FIRST(KEY_EXIT): chainMenu(menuMainView); return; } switch (MAVLINK_menu) { case MENU_INFO: menuTelemetryMavlinkInfos(); break; case MENU_MODE: menuTelemetryMavlinkFlightMode(); break; case MENU_BATT: menuTelemetryMavlinkBattery(); break; case MENU_NAV: menuTelemetryMavlinkNavigation(); break; case MENU_GPS: menuTelemetryMavlinkGPS(); break;#ifdef DUMP_RX_TX case MENU_DUMP_TX: case MENU_DUMP_RX: menuTelemetryMavlinkDump(event); break;#endif default: break; }}
开发者ID:4408,项目名称:opentx,代码行数:63,
示例8: menuTelemetryFrskyvoid menuTelemetryFrsky(uint8_t event){ enum NavigationDirection direction = none; switch (event) { case EVT_KEY_FIRST(KEY_EXIT): case EVT_KEY_LONG(KEY_EXIT): killEvents(event); chainMenu(menuMainView); break; case EVT_KEY_LONG(KEY_PAGE): killEvents(event); // no break; case EVT_KEY_FIRST(KEY_UP): decrTelemetryScreen(); break; case EVT_KEY_BREAK(KEY_PAGE): case EVT_KEY_FIRST(KEY_DOWN): incrTelemetryScreen(); break; case EVT_KEY_LONG(KEY_ENTER): killEvents(event); POPUP_MENU_ADD_ITEM(STR_RESET_TELEMETRY); POPUP_MENU_ADD_ITEM(STR_RESET_FLIGHT); popupMenuHandler = onMainViewMenu; break; } for (int i=0; i<=TELEMETRY_SCREEN_TYPE_MAX; i++) { if (direction == up) { if (s_frsky_view-- == 0) s_frsky_view = TELEMETRY_VIEW_MAX; } else if (direction == down) { if (s_frsky_view++ == TELEMETRY_VIEW_MAX) s_frsky_view = 0; } else { direction = down; } if (displayTelemetryScreen()) { return; } } lcdDrawTelemetryTopBar(); lcd_puts(8*FW, 3*FH, "No Telemetry Screens"); displayRssiLine();}
开发者ID:cody82,项目名称:opentx,代码行数:53,
示例9: menuStatisticsViewvoid menuStatisticsView(uint8_t event){ TITLE(STR_MENUSTAT); switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuStatisticsDebug); return;#if defined(CPUARM) case EVT_KEY_LONG(KEY_MENU): g_eeGeneral.globalTimer = 0; eeDirty(EE_GENERAL); sessionTimer = 0; break;#endif case EVT_KEY_FIRST(KEY_EXIT): chainMenu(menuMainView); return; } lcd_puts( 1*FW, FH*0, STR_TOTTM1TM2THRTHP); putsTimer( 5*FW+5*FWNUM+1, FH*1, timersStates[0].val, 0, 0); putsTimer( 12*FW+5*FWNUM+1, FH*1, timersStates[1].val, 0, 0); putsTimer( 5*FW+5*FWNUM+1, FH*2, s_timeCumThr, 0, 0); putsTimer( 12*FW+5*FWNUM+1, FH*2, s_timeCum16ThrP/16, 0, 0); putsTimer( 12*FW+5*FWNUM+1, FH*0, sessionTimer, 0, 0); #if defined(CPUARM) putsTimer(21*FW+5*FWNUM+1, 0*FH, g_eeGeneral.globalTimer + sessionTimer, TIMEHOUR, 0);#endif#if defined(THRTRACE) uint8_t traceRd = (s_traceCnt < 0 ? s_traceWr : 0); const uint8_t x=5; const uint8_t y=60; lcd_hline(x-3,y,MAXTRACE+3+3); lcd_vline(x,y-32,32+3); for (uint8_t i=0; i<MAXTRACE; i+=6) { lcd_vline(x+i+6,y-1,3); } for (uint8_t i=1; i<=MAXTRACE; i++) { lcd_vline(x+i, y-s_traceBuf[traceRd], s_traceBuf[traceRd]); traceRd++; if (traceRd>=MAXTRACE) traceRd = 0; if (traceRd==s_traceWr) break; }#endif}
开发者ID:geofrancis,项目名称:opentx,代码行数:53,
示例10: menuProcStatisticvoid menuProcStatistic(uint8_t event){ TITLE("STAT"); switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcStatistic2); break; case EVT_KEY_FIRST(KEY_DOWN): case EVT_KEY_FIRST(KEY_EXIT): chainMenu(menuMainView); break; } lcd_puts_P( 1*FW, FH*1, PSTR("TME")); putsTime( 5*FW, FH*1, s_timeCumAbs, 0, 0); lcd_puts_P( 17*FW, FH*1, PSTR("TSW")); putsTime( 11*FW, FH*1, s_timeCumSw, 0, 0); lcd_puts_P( 1*FW, FH*2, PSTR("STK")); putsTime( 5*FW, FH*2, s_timeCumThr, 0, 0); lcd_puts_P( 17*FW, FH*2, PSTR("ST%")); putsTime( 11*FW, FH*2, s_timeCum16ThrP/16, 0, 0); lcd_puts_P( 17*FW, FH*0, PSTR("TOT")); putsTime( 11*FW, FH*0, s_timeCumTot, 0, 0); uint16_t traceRd = s_traceCnt>MAXTRACE ? s_traceWr : 0; uint8_t x=5; uint8_t y=60; lcd_hline(x-3,y,120+3+3); lcd_vline(x,y-32,32+3); for(uint8_t i=0; i<120; i+=6) { lcd_vline(x+i+6,y-1,3); } for(uint8_t i=1; i<=120; i++) { lcd_vline(x+i,y-s_traceBuf[traceRd],s_traceBuf[traceRd]); traceRd++; if(traceRd>=MAXTRACE) traceRd=0; if(traceRd==s_traceWr) break; }}
开发者ID:banditniu,项目名称:gruvin9x,代码行数:45,
示例11: menuProcArduPilot3void menuProcArduPilot3(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot2); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot4); break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_POS, ALT); initval (1, PACK_POS, ALH); title ('3'); lcd_puts_P (1*FW, 1*FH, PSTR(" Altitude")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" Altitude Hold") ); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:23,
示例12: menuProcArduPilot4void menuProcArduPilot4(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot3); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot5); break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_POS, CRS); initval (1, PACK_POS, BER); title ('4'); lcd_puts_P (1*FW, 1*FH, PSTR(" Course")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" Bearing")); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:23,
示例13: menuProcArduPilot2void menuProcArduPilot2(uint8_t event){ switch(event) { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot1); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot3); break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; } initval (0, PACK_POS, SPD); initval (1, PACK_POS, CRT); title ('2'); lcd_puts_P (1*FW, 1*FH, PSTR(" Ground speed")); lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (1*FW, 4*FH, PSTR(" Climb rate") ); lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:23,
示例14: menuProcStatistic2void menuProcStatistic2(uint8_t event){ TITLE("STAT2"); switch(event) { case EVT_KEY_FIRST(KEY_MENU): g_tmr1Latency_min = 0xff; g_tmr1Latency_max = 0; g_timeMain = 0;// g_time_per10 = 0; beepKey(); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcStatistic); break; case EVT_KEY_FIRST(KEY_UP): case EVT_KEY_FIRST(KEY_EXIT): chainMenu(menuMainView); break; } lcd_puts_P( 0*FW, 1*FH, PSTR("tmr1Lat max us")); lcd_outdez8(15*FW , 1*FH, g_tmr1Latency_max/2 ); lcd_puts_P( 0*FW, 2*FH, PSTR("tmr1Lat min us")); lcd_outdez8(15*FW , 2*FH, g_tmr1Latency_min/2 ); lcd_puts_P( 0*FW, 3*FH, PSTR("tmr1 Jitter us")); lcd_outdez8(15*FW , 3*FH, (g_tmr1Latency_max - g_tmr1Latency_min) /2 ); lcd_puts_P( 0*FW, 4*FH, PSTR("tmain max ms")); lcd_outdezAtt(15*FW, 4*FH, (g_timeMain*100)/16, PREC2); lcd_puts_P( 0*FW, 5*FH, PSTR("t10ms us")); lcd_outdez8(15*FW , 5*FH, g_time_per10/2 );#ifndef SIMU lcd_puts_P( 0*FW, 6*FH, PSTR("Free Stack min b")); lcd_outdezAtt(18*FW-1, 6*FH, stack_free() ) ;#endif lcd_puts_P( 3*FW, 7*FH, PSTR("[MENU] to reset"));}
开发者ID:banditniu,项目名称:gruvin9x,代码行数:36,
示例15: menuTelemetryJetivoid menuTelemetryJeti(uint8_t event){ lcdDrawTelemetryTopBar(); for (uint8_t i=0; i<16; i++) { lcd_putcAtt((i+2)*FW, 3*FH, jetiRxBuffer[i], BSS); lcd_putcAtt((i+2)*FW, 4*FH, jetiRxBuffer[i+16], BSS); } if (event == EVT_KEY_FIRST(KEY_EXIT)) { JETI_DisableRXD(); jetiReady = 0; chainMenu(menuMainView); }}
开发者ID:4408,项目名称:opentx,代码行数:15,
示例16: menuFlashFileint menuFlashFile(uint32_t index, uint8_t event){ FRESULT fr; lcd_putsLeft(4*FH, "/012Hold [ENT] to start writing"); if (Valid == 0) { // Validate file here if ((fr = openBinaryFile(index))) { Valid = 2; } else { if ((fr = f_close(&FlashFile))) { Valid = 2; } else { Valid = 1; } if (!isValidBufferStart(Block_buffer)) { Valid = 2; } } } if (Valid == 2) { if (memoryType == MEM_FLASH) lcd_putsLeft(4*FH, "/011Not a valid firmware file! "); else lcd_putsLeft(4*FH, "/011Not a valid EEPROM file! "); if (event == EVT_KEY_BREAK(BOOT_KEY_EXIT) || event == EVT_KEY_BREAK(BOOT_KEY_MENU)) { return 0; } return -1; } if (event == EVT_KEY_LONG(BOOT_KEY_MENU)) { fr = openBinaryFile(index); return (fr == FR_OK && isValidBufferStart(Block_buffer)); } else if (event == EVT_KEY_FIRST(BOOT_KEY_EXIT)) { return 0; } return -1;}
开发者ID:andyjenkinson,项目名称:opentx,代码行数:45,
示例17: menuProcJetivoid menuProcJeti(uint8_t event){ TITLE("JETI"); switch(event) { //case EVT_KEY_FIRST(KEY_MENU): // break; case EVT_KEY_FIRST(KEY_EXIT): JETI_DisableRXD(); chainMenu(menuProc0); break; } for (uint8_t i = 0; i < 16; i++) { lcd_putcAtt((i+2)*FW, 3*FH, JetiBuffer[i], BSS); lcd_putcAtt((i+2)*FW, 4*FH, JetiBuffer[i+16], BSS); } if (JetiBufferReady) { JETI_EnableTXD(); if (keyState((EnumKeys)(KEY_UP))) jeti_keys &= JETI_KEY_UP; if (keyState((EnumKeys)(KEY_DOWN))) jeti_keys &= JETI_KEY_DOWN; if (keyState((EnumKeys)(KEY_LEFT))) jeti_keys &= JETI_KEY_LEFT; if (keyState((EnumKeys)(KEY_RIGHT))) jeti_keys &= JETI_KEY_RIGHT; JetiBufferReady = 0; // invalidate buffer JETI_putw((uint16_t) jeti_keys); _delay_ms (1); JETI_DisableTXD(); jeti_keys = JETI_KEY_NOCHANGE; }}
开发者ID:banditniu,项目名称:gruvin9x,代码行数:37,
示例18: menuUp1//.........这里部分代码省略......... if ( fr == FR_OK ) { state = UPDATE_NO_FILES ; fc->index = 0 ; fr = f_opendir( &Dj, (TCHAR *) "." ) ; if ( fr == FR_OK ) { if ( (UpdateItem > 1 ) ) { fc->ext[0] = 'F' ; fc->ext[1] = 'R' ; fc->ext[2] = 'K' ; } else { fc->ext[0] = 'B' ; fc->ext[1] = 'I' ; fc->ext[2] = 'N' ; } fc->ext[3] = 0 ; fc->index = 0 ; fc->nameCount = fillNames( 0, fc ) ; fc->hpos = 0 ; fc->vpos = 0 ; if ( fc->nameCount ) { state = UPDATE_FILE_LIST ; } } } } break ; case EVT_KEY_FIRST(KEY_EXIT): if ( state < UPDATE_ACTION ) { chainMenu(menuUpdate) ; killEvents(event) ; } break ; } switch ( state ) { case UPDATE_NO_FILES : lcd_puts_Pleft( 4*FH, "/005No Files" ) ; lcd_outdez( 21*FW, 4*FH, mounted ) ; break ; case UPDATE_FILE_LIST : SportVerValid = 0 ; if ( fileList( event, &FileControl ) == 1 ) { state = UPDATE_CONFIRM ; } break ; case UPDATE_CONFIRM : if ( (UpdateItem > UPDATE_TYPE_BOOTLOADER ) ) {#ifdef PCBX9D if ( (UpdateItem == UPDATE_TYPE_SPORT_INT ) ) { lcd_puts_Pleft( 2*FH, "Flash Int. XJT from" ) ; } else {
开发者ID:Weanuts,项目名称:ersky9x,代码行数:67,
示例19: ifvoid Key::input(bool val, EnumKeys enuk){ // uint8_t old=m_vals; m_vals <<= 1; if(val) m_vals |= 1; //portbit einschieben m_cnt++; if(m_state && m_vals==0){ //gerade eben sprung auf 0 if(m_state!=KSTATE_KILLED) { putEvent(EVT_KEY_BREAK(enuk)); if(!( m_state == 16 && m_cnt<16)){ m_dblcnt=0; } // } } m_cnt = 0; m_state = KSTATE_OFF; } switch(m_state){ case KSTATE_OFF: if(m_vals==FFVAL){ //gerade eben sprung auf ff m_state = KSTATE_START; if(m_cnt>16) m_dblcnt=0; //pause zu lang fuer double m_cnt = 0; } break; //fallthrough case KSTATE_START: putEvent(EVT_KEY_FIRST(enuk)); m_dblcnt++;#ifdef KSTATE_RPTDELAY m_state = KSTATE_RPTDELAY;#else m_state = 16;#endif m_cnt = 0; break;#ifdef KSTATE_RPTDELAY case KSTATE_RPTDELAY: // gruvin: longer delay before first key repeat if(m_cnt == 24) putEvent(EVT_KEY_LONG(enuk)); // need to catch this inside RPTDELAY time if (m_cnt == 40) { m_state = 16; m_cnt = 0; } break;#endif case 16:#ifndef KSTATE_RPTDELAY if(m_cnt == 24) putEvent(EVT_KEY_LONG(enuk)); //fallthrough#endif case 8: case 4: case 2: if(m_cnt >= 48) { //3 6 12 24 48 pulses in every 480ms m_state >>= 1; m_cnt = 0; } //fallthrough case 1: if( (m_cnt & (m_state-1)) == 0) putEvent(EVT_KEY_REPT(enuk)); break; case KSTATE_PAUSE: //pause if(m_cnt >= 64) { m_state = 8; m_cnt = 0; } break; case KSTATE_KILLED: //killed break; }
开发者ID:RasmusKS,项目名称:er9x,代码行数:72,
示例20: checkvoid check(check_event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t maxrow){ vertpos_t l_posVert = menuVerticalPosition; horzpos_t l_posHorz = menuHorizontalPosition; uint8_t maxcol = MAXCOL(l_posVert);#if defined(NAVIGATION_POT1) // check pot 1 - if changed -> scroll values static int16_t p1val; static int16_t p1valprev; p1valdiff = (p1val-calibratedStick[6]) / SCROLL_POT1_TH; if (p1valdiff) { p1valdiff = (p1valprev-calibratedStick[6]) / 2; p1val = calibratedStick[6]; } p1valprev = calibratedStick[6];#endif#if defined(NAVIGATION_POT2) // check pot 2 - if changed -> scroll menu static int16_t p2valprev; p2valdiff = (p2valprev-calibratedStick[4]) / SCROLL_TH; if (p2valdiff) p2valprev = calibratedStick[4];#endif#if defined(NAVIGATION_POT3) // check pot 3 if changed -> cursor down/up static int16_t p3valprev; int8_t scrollUD = (p3valprev-calibratedStick[5]) / SCROLL_TH; if (scrollUD) p3valprev = calibratedStick[5];#else #define scrollUD 0#endif if (p2valdiff || scrollUD || p1valdiff) backlightOn(); // on keypress turn the light on if (menuTab) { uint8_t attr = 0; if (l_posVert==0 && !calibrationState) { attr = INVERS; int8_t cc = curr; if (p2valdiff) { cc = limit((int8_t)0, (int8_t)(cc - p2valdiff), (int8_t)(menuTabSize-1)); } switch(event) {#if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_BREAK: if (s_editMode < 0 && maxrow > 0) { s_editMode = 0; // TODO ? l_posVert = (horTab && horTab[1]==0xff) ? 2 : 1; l_posHorz = 0; } else { s_editMode = -1; } event = 0; break;#endif#if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_LEFT: if (s_editMode >= 0) break;#endif case EVT_KEY_FIRST(KEY_LEFT): if (curr > 0) cc = curr - 1; else cc = menuTabSize-1; break;#if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_RIGHT: if (s_editMode >= 0) break;#endif case EVT_KEY_FIRST(KEY_RIGHT): if (curr < (menuTabSize-1)) cc = curr + 1; else cc = 0; break; } if (cc != curr) { chainMenu((MenuHandlerFunc)pgm_read_adr(&menuTab[cc])); }#if defined(ROTARY_ENCODER_NAVIGATION) if (IS_RE_NAVIGATION_ENABLE() && s_editMode < 0) attr = INVERS|BLINK;#endif }//.........这里部分代码省略.........
开发者ID:Ingwie,项目名称:NextStepRc-2.18,代码行数:101,
示例21: checkIncDecint16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, uint8_t i_flags){ int16_t newval = val;#if defined(DBLKEYS) uint8_t in = KEYS_PRESSED(); if (!(i_flags & NO_DBLKEYS) && (EVT_KEY_MASK(event))) { bool dblkey = true; if (DBLKEYS_PRESSED_RGT_LFT(in)) newval = -val; else if (DBLKEYS_PRESSED_RGT_UP(in)) { newval = (i_max > 100 ? 100 : i_max); } else if (DBLKEYS_PRESSED_LFT_DWN(in)) { newval = (i_min < -100 ? -100 : i_min); } else if (DBLKEYS_PRESSED_UP_DWN(in)) { newval = 0; } else { dblkey = false; } if (dblkey) { killEvents(KEY_UP); killEvents(KEY_DOWN); killEvents(KEY_RIGHT); killEvents(KEY_LEFT); event = 0; } }#endif if (event==EVT_KEY_FIRST(KEY_RIGHT) || event==EVT_KEY_REPT(KEY_RIGHT) || (s_editMode>0 && (IS_ROTARY_RIGHT(event) || event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP)))) { newval++; AUDIO_KEYPAD_UP(); } else if (event==EVT_KEY_FIRST(KEY_LEFT) || event==EVT_KEY_REPT(KEY_LEFT) || (s_editMode>0 && (IS_ROTARY_LEFT(event) || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN)))) { newval--; AUDIO_KEYPAD_DOWN(); } if (!READ_ONLY() && i_min==0 && i_max==1 && (event==EVT_KEY_BREAK(KEY_ENTER) || IS_ROTARY_BREAK(event))) { s_editMode = 0; newval = !val; }#if defined(NAVIGATION_POT1) // change values based on P1 newval -= p1valdiff; p1valdiff = 0;#endif#if defined(AUTOSWITCH) if (i_flags & INCDEC_SWITCH) { newval = checkIncDecMovedSwitch(newval); }#endif#if defined(AUTOSOURCE) if (i_flags & INCDEC_SOURCE) { if (s_editMode>0) { int8_t source = GET_MOVED_SOURCE(i_min, i_max); if (source) { newval = source; }#if defined(AUTOSWITCH) else { uint8_t swtch = abs(getMovedSwitch()); if (swtch) { newval = switchToMix(swtch); } }#endif } }#endif if (newval > i_max || newval < i_min) { newval = (newval > i_max ? i_max : i_min); killEvents(event); AUDIO_WARNING2(); } if (newval != val) { if (!(i_flags & NO_INCDEC_MARKS) && (newval != i_max) && (newval != i_min) && (newval==0 || newval==-100 || newval==+100) && !IS_ROTARY_EVENT(event)) { pauseEvents(event); // delay before auto-repeat continues if (newval>val) // without AUDIO it's optimized, because the 2 sounds are the same AUDIO_KEYPAD_UP(); else AUDIO_KEYPAD_DOWN(); } eeDirty(i_flags & (EE_GENERAL|EE_MODEL)); checkIncDec_Ret = (newval > val ? 1 : -1); } else { checkIncDec_Ret = 0; } return newval;}
开发者ID:Ingwie,项目名称:NextStepRc-2.18,代码行数:100,
示例22: menuTelemetryFrskyvoid menuTelemetryFrsky(uint8_t event){ if (event == EVT_KEY_FIRST(KEY_EXIT)) { killEvents(event); chainMenu(menuMainView); return; } switch (event) { case EVT_KEY_BREAK(KEY_UP): if (s_frsky_view-- == 0) s_frsky_view = FRSKY_VIEW_MAX; break;#if defined(PCBTARANIS) case EVT_KEY_BREAK(KEY_PAGE):#endif case EVT_KEY_BREAK(KEY_DOWN): if (s_frsky_view++ == FRSKY_VIEW_MAX) s_frsky_view = 0; break;#if defined(PCBTARANIS) case EVT_KEY_LONG(KEY_ENTER): killEvents(event); MENU_ADD_ITEM(STR_RESET_TELEMETRY); MENU_ADD_ITEM(STR_RESET_FLIGHT); menuHandler = onMainViewMenu; break;#else case EVT_KEY_FIRST(KEY_ENTER): telemetryReset(); break;#endif } lcdDrawTelemetryTopBar(); if (s_frsky_view < MAX_FRSKY_SCREENS) { FrSkyScreenData & screen = g_model.frsky.screens[s_frsky_view];#if defined(GAUGES) if (g_model.frsky.screensType & (1<<s_frsky_view)) { // Custom Screen with gauges uint8_t barHeight = 5; for (int8_t i=3; i>=0; i--) { FrSkyBarData & bar = screen.bars[i]; uint8_t source = bar.source; getvalue_t barMin = convertBarTelemValue(source, bar.barMin); getvalue_t barMax = convertBarTelemValue(source, 255-bar.barMax); if (source && barMax > barMin) { uint8_t y = barHeight+6+i*(barHeight+6); lcd_putsiAtt(0, y+barHeight-5, STR_VTELEMCHNS, source, 0); lcd_rect(25, y, BAR_WIDTH+1, barHeight+2); getvalue_t value = getValue(MIXSRC_FIRST_TELEM+source-1);#if LCD_W >= 212 putsTelemetryChannel(27+BAR_WIDTH, y+barHeight-6, source-1, value, LEFT);#endif getvalue_t threshold = 0; uint8_t thresholdX = 0; if (source <= TELEM_TM2) threshold = 0; else if (source <= TELEM_RSSI_RX) threshold = getRssiAlarmValue(source-TELEM_RSSI_TX); else if (source <= TELEM_A2) threshold = g_model.frsky.channels[source-TELEM_A1].alarms_value[0];#if defined(FRSKY_HUB) else threshold = convertBarTelemValue(source, barsThresholds[source-TELEM_ALT]);#endif if (threshold) { thresholdX = barCoord(threshold, barMin, barMax); if (thresholdX == 100) thresholdX = 0; } uint8_t width = barCoord(value, barMin, barMax); // reversed barshade for T1/T2 uint8_t barShade = ((threshold > value) ? DOTTED : SOLID); if (source == TELEM_T1 || source == TELEM_T2) barShade = -barShade; lcd_filled_rect(26, y+1, width, barHeight, barShade); for (uint8_t j=24; j<99; j+=25) if (j>thresholdX || j>width) lcd_vline(j*BAR_WIDTH/100+26, y+1, barHeight); if (thresholdX) { lcd_vlineStip(26+thresholdX, y-2, barHeight+3, DOTTED); lcd_hline(25+thresholdX, y-2, 3); } } else { barHeight += 2; } } displayRssiLine(); } else//.........这里部分代码省略.........
开发者ID:andyjenkinson,项目名称:opentx,代码行数:101,
示例23: fileListuint32_t fileList(uint8_t event, struct fileControl *fc ){ uint32_t limit ; uint32_t result = 0 ; uint8_t maxhsize ; uint32_t i ; limit = 6 ; if ( fc->nameCount < limit ) { limit = fc->nameCount ; } maxhsize = 0 ; for ( i = 0 ; i < limit ; i += 1 ) { uint32_t x ; uint32_t len ; len = x = strlen( Filenames[i] ) ; if ( x > maxhsize ) { maxhsize = x ; } if ( x > DISPLAY_CHAR_WIDTH ) { if ( ( fc->hpos + DISPLAY_CHAR_WIDTH ) > x ) { x = x - DISPLAY_CHAR_WIDTH ; } else { x = fc->hpos ; } len = DISPLAY_CHAR_WIDTH ; } else { x = 0 ; } lcd_putsn_P( 0, 16+FH*i, &Filenames[i][x], len ) ; }#if !defined(PCBTARANIS) if ( event == 0 ) {extern int32_t Rotary_diff ; if ( Rotary_diff > 0 ) { event = EVT_KEY_FIRST(KEY_DOWN) ; } else if ( Rotary_diff < 0 ) { event = EVT_KEY_FIRST(KEY_UP) ; } Rotary_diff = 0 ; }#endif if ( ( event == EVT_KEY_REPT(KEY_DOWN) ) || event == EVT_KEY_FIRST(KEY_DOWN) ) { if ( fc->vpos < limit-1 ) { fc->vpos += 1 ; } else { if ( fc->nameCount > limit ) { fc->index += 1 ; fc->nameCount = fillNames( fc->index, fc ) ; } } } if ( ( event == EVT_KEY_REPT(KEY_UP)) || ( event == EVT_KEY_FIRST(KEY_UP) ) ) { if ( fc->vpos > 0 ) { fc->vpos -= 1 ; } else { if ( fc->index ) { fc->index -= 1 ; fc->nameCount = fillNames( fc->index, fc ) ; } } } if ( ( event == EVT_KEY_REPT(MKEY_RIGHT)) || ( event == EVT_KEY_FIRST(MKEY_RIGHT) ) ) { if ( fc->hpos + DISPLAY_CHAR_WIDTH < maxhsize ) fc->hpos += 1 ; } if ( ( event == EVT_KEY_REPT(MKEY_LEFT)) || ( event == EVT_KEY_FIRST(MKEY_LEFT) ) ) { if ( fc->hpos ) fc->hpos -= 1 ; } if ( ( event == EVT_KEY_LONG(KEY_MENU) ) || ( event == EVT_KEY_BREAK(BTN_RE) ) ) { // Select file to flash killEvents(event); result = 1 ;//.........这里部分代码省略.........
开发者ID:Weanuts,项目名称:ersky9x,代码行数:101,
示例24: menuProcNMEA1void menuProcNMEA1(uint8_t event){ switch(event) // new event received, branch accordingly { case EVT_KEY_BREAK(KEY_LEFT): chainMenu(menuProcNMEA4); break; case EVT_KEY_BREAK(KEY_RIGHT): chainMenu(menuProcNMEA2); break; case EVT_KEY_LONG(KEY_UP): NMEA_DisableRXD(); chainMenu(menuProcStatistic); break; case EVT_KEY_LONG(KEY_DOWN): NMEA_DisableRXD(); chainMenu(menuProc0); break; case EVT_KEY_FIRST(KEY_MENU): if (show_timer == 0) { show_timer = 1; if (gpstimer <= 0) gpstimer = bintime(rbuf[2]); } else show_timer = 0; break; case EVT_KEY_FIRST(KEY_EXIT): if ((show_timer == 1) &&(rbuf[2][0])) gpstimer = bintime(rbuf[2]); // get actual GPS time ->resets timer to 00:00 break; } /* How to use: You choose the values to be displayed using the function: initval(<number>, <packet>, <value>); ------------------------------------- That means that "<value>" of "<packet>" is stored in the <number> buffer. The first <number> is 0. Here are the packet names and the associated value names: Position packet (beginning with "GGA"): "PACK_GGA" value names: "TIM", "LAT", "NOS", "LON", "EOW", "FIX", "SAT", "DIL", "ALT", "MTR", "GEO", "MET", "AGE", "DIF", Required minimum packet (beginning with "RMC"): "PACK_RMC" value names: "TIM", "NRW", "LT1", "NSO", "LN1", "EWE", "SOG", "COG", "DAT", "MAG", "EAW" The buffers are accessed using the macro "VALSTR(<n>)", where "<n>" is "0" for the first buffer, and "1" for the second buffer. When a value is missing, it is replaced by the contents of val_unknown ("?").*/ if (ggareceived) { gpstime=bintime(rbuf[2]); ggareceived=0; } initval (LONG_BUF(0), PACK_RMC, TIM); // sets rbuf[0][.] initval (LONG_BUF(1), PACK_RMC, DAT); // sets rbuf[1][.] initval (SHORT_BUF(0), PACK_RMC, NRW); // sets sbuf[0] initval (SHORT_BUF(2), PACK_GGA, SAT); // -> sbuf[2] title ('1'); lcd_puts_P ( 2*FW, 1*FH, PSTR("UTC-Time Sat")); if (rbuf[0][0]) { // show always if data have been received lcd_putcAtt ( 19*FW, 1*FH, sbuf[2], 0); // satellites in view lcd_putsnAtt ( 2*FW, 2*FH, &rbuf[0][0], 2, APSIZE); // hours lcd_putcAtt ( 6*FW, 2*FH, ':', DBLSIZE); // ":" lcd_putsnAtt ( 8*FW, 2*FH, &rbuf[0][2], 2, APSIZE); // minutes lcd_putcAtt ( 12*FW, 2*FH, ':', DBLSIZE); // ":" lcd_putsnAtt ( 14*FW, 2*FH, &rbuf[0][4], 2, APSIZE); // seconds } else lcd_putsAtt ( 2*FW, 2*FH, val_unknown, APSIZE); // "?" if ((show_timer == 1) && rbuf[0][0]) { // show the Timer when data have been received lcd_puts_P ( 2*FW, 4*FH, PSTR("Timer")); // display "Timer" putsTime ( 5*FW, 5*FH, (gpstime-gpstimer), DBLSIZE, DBLSIZE); // display difference as mm:ss } else { lcd_puts_P ( 2*FW, 4*FH, PSTR("Date")); // show the UTC Date if (rbuf[1][0]) { lcd_putsnAtt( 2*FW, 5*FH, &rbuf[1][0], 2, APSIZE); // year lcd_putcAtt ( 6*FW, 5*FH, '/', DBLSIZE); // "/" lcd_putsnAtt( 8*FW, 5*FH, &rbuf[1][2], 2, APSIZE); // month lcd_putcAtt (12*FW, 5*FH, '/', DBLSIZE); // "/" lcd_putsnAtt(14*FW, 5*FH, &rbuf[1][4], 2, APSIZE); // day } else//.........这里部分代码省略.........
开发者ID:RasmusKS,项目名称:er9x,代码行数:101,
示例25: menuProcArduPilot1void menuProcArduPilot1(uint8_t event){ switch(event) // new event received, branch accordingly { case EVT_KEY_FIRST(KEY_UP): chainMenu(menuProcArduPilot8); break; case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuProcArduPilot2); break; case EVT_KEY_FIRST(KEY_MENU): ARDUPILOT_DisableRXD(); chainMenu(menuProcStatistic); break; case EVT_KEY_FIRST(KEY_EXIT): ARDUPILOT_DisableRXD(); chainMenu(menuProc0); break; }/* How to use: You choose the values to be displayed using the function: initval(<number>, <packet>, <value>); ------------------------------------- That means that "<value>" of "<packet>" is stored in the <number> buffer. The first <number> is 0. Here are the packet names and the associated value names: Position packet (beginning with "!!!"): "PACK_POS" value names: "LAT", "LON", "SPD", "CRT", "ALT", "ALH", "CRS", "BER", "WPN", "DST", "BTV", "RSP", "TOW" Attitude packet (beginning with "+++"): "PACK_ATT" value names: "ASP", "THH", "RLL", "PCH" Mode change packet (beginning with "###"): "PACK_MOD" value name: "MOD" Waypoint packet (beginning with "%%%"): "PACK_WPC" value name: "WPC" Alert packet (beginning with "XXX"): "PACK_ALR" value name: "ALR" Performance packet (beginning with "PPP"): "PACK_PRF" value name: "PRF" The buffers are accessed using the macro "VALSTR(<n>)", where "<n>" is "0" for the first buffer, and "1" for the second buffer. When a value is missing, it is replaced by the contents of val_unknown ("?").*/// expecting LAT value in POS packet to be stored in the first buffer initval (0, PACK_POS, LAT);// and LON value in POS packet stored in the second buffer initval (1, PACK_POS, LON);// title of the screen title ('1'); lcd_puts_P (5*FW, 1*FH, PSTR(" Latitude")); // line 1 column 5// first buffer into line 2 column 2 lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE); lcd_puts_P (5*FW, 4*FH, PSTR(" Longitude")); // line 4 column 5// second buffer into line 5 column 2 lcd_putsAtt (1*FW, 5*FH, VALSTR(1), APSIZE);}
开发者ID:RasmusKS,项目名称:er9x,代码行数:69,
示例26: menuStatisticsDebugvoid menuStatisticsDebug(uint8_t event){ TITLE(STR_MENUDEBUG); switch(event) { case EVT_KEY_LONG(KEY_ENTER): g_eeGeneral.mAhUsed = 0; g_eeGeneral.globalTimer = 0; eeDirty(EE_GENERAL); sessionTimer = 0; killEvents(event); AUDIO_KEYPAD_UP(); break; case EVT_KEY_FIRST(KEY_ENTER):#if defined(LUA) maxLuaInterval = 0; maxLuaDuration = 0;#endif maxMixerDuration = 0; AUDIO_KEYPAD_UP(); break;#if defined(DEBUG_TRACE_BUFFER) case EVT_KEY_FIRST(KEY_UP): pushMenu(menuTraceBuffer); return;#endif case EVT_KEY_FIRST(KEY_DOWN): chainMenu(menuStatisticsView); break; case EVT_KEY_FIRST(KEY_EXIT): chainMenu(menuMainView); break; } lcd_putsLeft(MENU_DEBUG_Y_FREE_RAM, "Free Mem"); lcd_outdezAtt(MENU_DEBUG_COL1_OFS, MENU_DEBUG_Y_FREE_RAM, getAvailableMemory(), LEFT); lcd_puts(lcdLastPos, MENU_DEBUG_Y_FREE_RAM, "b");#if defined(LUA) lcd_putsLeft(MENU_DEBUG_Y_LUA, "Lua scripts"); lcd_putsAtt(MENU_DEBUG_COL1_OFS, MENU_DEBUG_Y_LUA+1, "[Duration]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_LUA, 10*maxLuaDuration, LEFT); lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_LUA+1, "[Interval]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_LUA, 10*maxLuaInterval, LEFT);#endif lcd_putsLeft(MENU_DEBUG_Y_MIXMAX, STR_TMIXMAXMS); lcd_outdezAtt(MENU_DEBUG_COL1_OFS, MENU_DEBUG_Y_MIXMAX, DURATION_MS_PREC2(maxMixerDuration), PREC2|LEFT); lcd_puts(lcdLastPos, MENU_DEBUG_Y_MIXMAX, "ms"); lcd_putsLeft(MENU_DEBUG_Y_RTOS, STR_FREESTACKMINB); lcd_putsAtt(MENU_DEBUG_COL1_OFS, MENU_DEBUG_Y_RTOS+1, "[M]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, stack_free(0), UNSIGN|LEFT); lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_RTOS+1, "[X]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, stack_free(1), UNSIGN|LEFT); lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_RTOS+1, "[A]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, stack_free(2), UNSIGN|LEFT); lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_RTOS+1, "[I]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, stack_free(255), UNSIGN|LEFT); lcd_puts(3*FW, 7*FH+1, STR_MENUTORESET); lcd_status_line();}
开发者ID:kamnxt,项目名称:opentx,代码行数:66,
示例27: menuModelPhaseOne//.........这里部分代码省略......... fm->gvars[idx] = v; } } uint8_t p = getGVarFlightPhase(s_currIdx, idx); lcd_outdezAtt(21*FW, y, GVAR_VALUE(idx, p), posHorz==2 ? attr : 0); if (attr && posHorz==2 && ((editMode>0) || p1valdiff)) { GVAR_VALUE(idx, p) = checkIncDec(event, GVAR_VALUE(idx, p), -GVAR_LIMIT, GVAR_LIMIT, EE_MODEL); } break; }#endif } }}#if defined(ROTARY_ENCODERS) #if ROTARY_ENCODERS > 2 #define NAME_OFS (-4-12) #define SWITCH_OFS (-FW/2-2-13) #define TRIMS_OFS (-FW/2-4-15) #define ROTARY_ENC_OFS (0) #else #define NAME_OFS (-4) #define SWITCH_OFS (-FW/2-2) #define TRIMS_OFS (-FW/2-4) #define ROTARY_ENC_OFS (2) #endif#else #define NAME_OFS 0 #define SWITCH_OFS (FW/2) #define TRIMS_OFS (FW/2)#endifvoid menuModelFlightModesAll(uint8_t event){ SIMPLE_MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_FLIGHT_MODES+1); int8_t sub = m_posVert - 1; switch (event) { CASE_EVT_ROTARY_BREAK case EVT_KEY_FIRST(KEY_ENTER): if (sub == MAX_FLIGHT_MODES) { s_editMode = 0; trimsCheckTimer = 200; // 2 seconds } // no break case EVT_KEY_FIRST(KEY_RIGHT): if (sub >= 0 && sub < MAX_FLIGHT_MODES) { s_currIdx = sub; pushMenu(menuModelPhaseOne); } break; } uint8_t att; for (uint8_t i=0; i<MAX_FLIGHT_MODES; i++) {#if defined(CPUARM) int8_t y = 1 + (1+i-s_pgOfs)*FH; if (y<1*FH+1 || y>(LCD_LINES-1)*FH+1) continue;#else uint8_t y = 1 + (i+1)*FH;#endif att = (i==sub ? INVERS : 0); FlightModeData *p = flightModeAddress(i); putsFlightMode(0, y, i+1, att|(getFlightMode()==i ? BOLD : 0)); lcd_putsnAtt(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR); if (i == 0) { lcd_puts((5+LEN_FLIGHT_MODE_NAME)*FW+SWITCH_OFS, y, STR_DEFAULT); } else { putsSwitches((5+LEN_FLIGHT_MODE_NAME)*FW+SWITCH_OFS, y, p->swtch, 0); for (uint8_t t=0; t<NUM_STICKS; t++) { putsTrimMode((9+LEN_FLIGHT_MODE_NAME+t)*FW+TRIMS_OFS, y, i, t, 0); }#if defined(CPUM2560) for (uint8_t t=0; t<NUM_ROTARY_ENCODERS; t++) { putsRotaryEncoderMode((13+LEN_FLIGHT_MODE_NAME+t)*FW+TRIMS_OFS+ROTARY_ENC_OFS, y, i, t, 0); }#endif } if (p->fadeIn || p->fadeOut) { lcd_putc(LCD_W-FW-MENUS_SCROLLBAR_WIDTH, y, (p->fadeIn && p->fadeOut) ? '*' : (p->fadeIn ? 'I' : 'O')); } }#if defined(CPUARM) if (s_pgOfs != MAX_FLIGHT_MODES-(LCD_LINES-2)) return;#endif lcd_putsLeft((LCD_LINES-1)*FH+1, STR_CHECKTRIMS); putsFlightMode(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, mixerCurrentFlightMode+1); if (sub==MAX_FLIGHT_MODES && !trimsCheckTimer) { lcd_status_line(); }}
开发者ID:RonDePrez,项目名称:opentx,代码行数:101,
示例28: menuMainView//.........这里部分代码省略......... case EVT_KEY_BREAK(KEY_UP): case EVT_KEY_BREAK(KEY_DOWN): g_eeGeneral.view = (event == EVT_KEY_BREAK(KEY_UP) ? (view_base == VIEW_COUNT-1 ? 0 : view_base+1) : (view_base == 0 ? VIEW_COUNT-1 : view_base-1)); eeDirty(EE_GENERAL); AUDIO_KEYPAD_UP(); break; case EVT_KEY_STATISTICS: chainMenu(menuStatisticsView); killEvents(event); break; case EVT_KEY_TELEMETRY:#if defined(FRSKY) if (!IS_FAI_ENABLED()) chainMenu(menuTelemetryFrsky);#elif defined(JETI) JETI_EnableRXD(); // enable JETI-Telemetry reception chainMenu(menuTelemetryJeti);#elif defined(ARDUPILOT) ARDUPILOT_EnableRXD(); // enable ArduPilot-Telemetry reception chainMenu(menuTelemetryArduPilot);#elif defined(NMEA) NMEA_EnableRXD(); // enable NMEA-Telemetry reception chainMenu(menuTelemetryNMEA);#elif defined(MAVLINK) chainMenu(menuTelemetryMavlink);#else chainMenu(menuStatisticsDebug);#endif killEvents(event); break; case EVT_KEY_FIRST(KEY_EXIT):#if defined(GVARS) && !defined(PCBSTD) if (s_gvar_timer > 0) { s_gvar_timer = 0; }#endif if (view == VIEW_TIMER2) { timerReset(1); } AUDIO_KEYPAD_UP(); break;#if !defined(NAVIGATION_MENUS) case EVT_KEY_LONG(KEY_EXIT): flightReset(); AUDIO_KEYPAD_UP(); break;#endif } { // Flight Mode Name uint8_t mode = mixerCurrentFlightMode; lcd_putsnAtt(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|PHASE_FLAGS); // Model Name putsModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE); // Main Voltage (or alarm if any) displayVoltageOrAlarm(); // Timers displayTimers();
开发者ID:bellth,项目名称:opentx,代码行数:67,
示例29: putEventvoid Key::input(bool val, EnumKeys enuk){ uint8_t t_vals = m_vals ; t_vals <<= 1 ; if (val) t_vals |= 1; //portbit einschieben m_vals = t_vals ; m_cnt++; if (m_state && m_vals==0) { //gerade eben sprung auf 0 if (m_state != KSTATE_KILLED) { putEvent(EVT_KEY_BREAK(enuk)); } m_cnt = 0; m_state = KSTATE_OFF; } switch(m_state){ case KSTATE_OFF: if (m_vals == FFVAL) { //gerade eben sprung auf ff m_state = KSTATE_START; m_cnt = 0; } break; //fallthrough case KSTATE_START: putEvent(EVT_KEY_FIRST(enuk)); inactivity.counter = 0; m_state = KSTATE_RPTDELAY; m_cnt = 0; break; case KSTATE_RPTDELAY: // gruvin: delay state before first key repeat if(m_cnt == KEY_LONG_DELAY) putEvent(EVT_KEY_LONG(enuk)); if (m_cnt == 40) { m_state = 16; m_cnt = 0; } break; case 16: case 8: case 4: case 2: if(m_cnt >= 48) { //3 6 12 24 48 pulses in every 480ms m_state >>= 1; m_cnt = 0; } // no break case 1: if( (m_cnt & (m_state-1)) == 0) putEvent(EVT_KEY_REPT(enuk)); break; case KSTATE_PAUSE: //pause if(m_cnt >= 64) { m_state = 8; m_cnt = 0; } break; case KSTATE_KILLED: //killed break; }
开发者ID:3drobotics,项目名称:3drtx,代码行数:62,
示例30: EVT_KEY_BREAK { "MIXSRC_SD", MIXSRC_SD }, { "MIXSRC_SE", MIXSRC_SE }, { "MIXSRC_SF", MIXSRC_SF }, { "MIXSRC_SG", MIXSRC_SG }, { "MIXSRC_SH", MIXSRC_SH }, { "MIXSRC_CH1", MIXSRC_CH1 }, { "SWSRC_LAST", SWSRC_LAST_LOGICAL_SWITCH }, { "EVT_MENU_BREAK", EVT_KEY_BREAK(KEY_MENU) }, { "EVT_PAGE_BREAK", EVT_KEY_BREAK(KEY_PAGE) }, { "EVT_PAGE_LONG", EVT_KEY_LONG(KEY_PAGE) }, { "EVT_ENTER_BREAK", EVT_KEY_BREAK(KEY_ENTER) }, { "EVT_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) }, { "EVT_EXIT_BREAK", EVT_KEY_BREAK(KEY_EXIT) }, { "EVT_PLUS_BREAK", EVT_KEY_BREAK(KEY_PLUS) }, { "EVT_MINUS_BREAK", EVT_KEY_BREAK(KEY_MINUS) }, { "EVT_PLUS_FIRST", EVT_KEY_FIRST(KEY_PLUS) }, { "EVT_MINUS_FIRST", EVT_KEY_FIRST(KEY_MINUS) }, { "EVT_PLUS_REPT", EVT_KEY_REPT(KEY_PLUS) }, { "EVT_MINUS_REPT", EVT_KEY_REPT(KEY_MINUS) }, { "FILL_WHITE", FILL_WHITE }, { "GREY_DEFAULT", GREY_DEFAULT }, { "SOLID", SOLID }, { "DOTTED", DOTTED }, { "FORCE", FORCE }, { "ERASE", ERASE }, { "ROUND", ROUND }, { "LCD_W", LCD_W }, { "LCD_H", LCD_H }, { "PLAY_NOW", PLAY_NOW }, { "PLAY_BACKGROUND", PLAY_BACKGROUND }, { "TIMEHOUR", TIMEHOUR },
开发者ID:ChaosPower,项目名称:opentx,代码行数:31,
注:本文中的EVT_KEY_FIRST函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ EVT_KEY_LONG函数代码示例 C++ EVPerr函数代码示例 |