void doMainScreenGraphics() { int16_t calibStickVert = calibratedStick[CONVERT_MODE(1)]; if (g_model.throttleReversed && CONVERT_MODE(1) == THR_STICK) calibStickVert = -calibStickVert; drawStick(LBOX_CENTERX, calibratedStick[CONVERT_MODE(0)], calibStickVert); calibStickVert = calibratedStick[CONVERT_MODE(2)]; if (g_model.throttleReversed && CONVERT_MODE(2) == THR_STICK) calibStickVert = -calibStickVert; drawStick(RBOX_CENTERX, calibratedStick[CONVERT_MODE(3)], calibStickVert); drawPotsBars(); }
void menuCommonCalib(uint8_t event) { for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) { //get low and high vals for sticks and trims int16_t vt = anaIn(i); reusableBuffer.calib.loVals[i] = min(vt, reusableBuffer.calib.loVals[i]); reusableBuffer.calib.hiVals[i] = max(vt, reusableBuffer.calib.hiVals[i]); #if defined(PCBTARANIS) if(i >= NUM_STICKS && i < NUM_STICKS+NUM_POTS-2) { #else if (i >= NUM_STICKS) { #endif reusableBuffer.calib.midVals[i] = (reusableBuffer.calib.hiVals[i] + reusableBuffer.calib.loVals[i]) / 2; } } s_noScroll = reusableBuffer.calib.state; // make sure we don't scroll while calibrating switch(event) { case EVT_ENTRY: reusableBuffer.calib.state = 0; break; case EVT_KEY_BREAK(KEY_ENTER): reusableBuffer.calib.state++; break; } switch (reusableBuffer.calib.state) { case 0: // START CALIBRATION lcd_putsLeft(3*FH, STR_MENUTOSTART); break; case 1: // SET MIDPOINT lcd_putsAtt(0*FW, 2*FH, STR_SETMIDPOINT, s_noScroll ? INVERS : 0); lcd_putsLeft(3*FH, STR_MENUWHENDONE); for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) { reusableBuffer.calib.loVals[i] = 15000; reusableBuffer.calib.hiVals[i] = -15000; reusableBuffer.calib.midVals[i] = anaIn(i); } break; case 2: // MOVE STICKS/POTS STICK_SCROLL_DISABLE(); lcd_putsAtt(0*FW, 2*FH, STR_MOVESTICKSPOTS, s_noScroll ? INVERS : 0); lcd_putsLeft(3*FH, STR_MENUWHENDONE); for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) { if (abs(reusableBuffer.calib.loVals[i]-reusableBuffer.calib.hiVals[i])>50) { g_eeGeneral.calibMid[i] = reusableBuffer.calib.midVals[i]; int16_t v = reusableBuffer.calib.midVals[i] - reusableBuffer.calib.loVals[i]; g_eeGeneral.calibSpanNeg[i] = v - v/STICK_TOLERANCE; v = reusableBuffer.calib.hiVals[i] - reusableBuffer.calib.midVals[i]; g_eeGeneral.calibSpanPos[i] = v - v/STICK_TOLERANCE; } } break; case 3: g_eeGeneral.chkSum = evalChkSum(); eeDirty(EE_GENERAL); reusableBuffer.calib.state = 4; break; default: reusableBuffer.calib.state = 0; break; } doMainScreenGraphics(); #if defined(PCBTARANIS) drawPotsBars(); #endif } void menuGeneralCalib(uint8_t event) { SIMPLE_MENU(STR_MENUCALIBRATION, menuTabDiag, e_Calib, 1); menuCommonCalib(event); }