uint8_t SettingsMenu::printItem(uint8_t index) { StaticMenu::printItem(index); if(getBlinkIndex() != index) { START_CASE_COUNTER; switch (index) { #ifdef ENABLE_LCD_BACKLIGHT case NEXT_CASE: lcdPrintUnsigned(p_.backlight_, 3); break; #endif #ifdef ENABLE_FAN case NEXT_CASE: printTemp(p_.fanTempOn_); break; #endif #ifdef ENABLE_T_INTERNAL case NEXT_CASE: printTemp(p_.dischargeTempOff_); break; #endif case NEXT_CASE: lcdPrintYesNo(p_.externT_); break; case NEXT_CASE: printTemp(p_.externTCO_); break; case NEXT_CASE: printDeltaT(p_.deltaT_); break; case NEXT_CASE: lcdPrint_mV(p_.deltaV_NiMH_, 5); break; case NEXT_CASE: lcdPrint_mV(p_.deltaV_NiCd_, 5); break; case NEXT_CASE: lcdPrintUnsigned(p_.CDcycles_, 3); break; case NEXT_CASE: lcdPrintPercentage(p_.capCutoff_, 5); break; case NEXT_CASE: printVolt(p_.inputVoltageLow_); break; case NEXT_CASE: lcdPrint_mV(p_.dischargeOffset_LiXX_,6);break; case NEXT_CASE: lcdPrint_mV(p_.balancerError_, 5); break; case NEXT_CASE: printUART(); break; case NEXT_CASE: printUARTSpeed(); break; } } }
void lcdPrint_mV(AnalogInputs::ValueType p, int8_t dig) { if(dig > 2) { lcdPrintUnsigned(p,dig-2); lcdPrint_P(PSTR("mV")); } }
void lcdPrintPercentage(AnalogInputs::ValueType p, int8_t dig) { if(dig > 0) { lcdPrintUnsigned(p,--dig); lcdPrintChar('%'); } }
void SettingsMenu::printDeltaT(AnalogInputs::ValueType dt) { lcdPrintUnsigned(dt/100, 3); lcdPrintChar('.'); lcdPrintDigit((dt%100)/10); lcdPrint_P(PSTR("C/m")); }
void Screen::displayCalibrationErrorScreen(uint8_t errNo) { lcdClear(); lcdSetCursor0_0(); lcdPrint_P(PSTR("Cal.err. F:")); lcdPrintUnsigned(errNo, 2); Time::delay(8000); }
void SettingsMenu::printUARTSpeed() const { //TODO: add printULong uint32_t s = p_.getUARTspeed(); s/=100; lcdPrintUnsigned(s,5); lcdPrintChar('0'); lcdPrintChar('0'); }
virtual void printItem(uint8_t index) { //TODO: hack, should be improved ... Gyuri: R138 burned. if(!AnalogInputs::isConnected(AnalogInputs::Vout)) { Screen::displayStrings(string_connect, string_battery); if(cName1_ == AnalogInputs::IdischargeSet) { Discharger::powerOff(); } } else { StaticMenu::printItem(index); if(getBlinkIndex() != index) { if(index == 0) { lcdPrintUnsigned(value_, 9); } else { lcdPrintCurrent(AnalogInputs::getIout(), 7); lcdPrintUnsigned(AnalogInputs::getAvrADCValue(cName2_), 6); } } } }
virtual uint8_t printItem(uint8_t index) { StaticMenu::printItem(index); if(getBlinkIndex() != index) { if(index == 0) { AnalogInputs::printRealValue(tName_, 7); } else { lcdPrintUnsigned(AnalogInputs::getAvrADCValue(tName_), 7); } } }
void Screen::displayDebugDelta() { lcdSetCursor0_0(); lcdPrint_P(PSTR("C=")); lcdPrintUnsigned(analogInputs.getRealValue(AnalogInputs::deltaLastCount),5); lcdPrint_P(PSTR(" L=")); int x = analogInputs.deltaLastT_; lcdPrintSigned(x, 6); lcdPrintSpaces(); lcdSetCursor0_1(); lcdPrint_P(PSTR("N=")); lcdPrintUnsigned(analogInputs.deltaCount_,5); lcdPrint_P(PSTR(" L=")); x = ProgramData::currentProgramData.getDeltaVLimit(); lcdPrintSigned(x, 6); lcdPrintSpaces(); }
virtual uint8_t printItem(uint8_t index) { StaticMenu::printItem(index); if(getBlinkIndex() != index) { if(index == 0) { lcdPrintUnsigned(value_, 5); } else { lcdPrintCurrent(AnalogInputs::getIout(), 7); } } }
void Screen::displayScreenReversedPolarity() { lcdSetCursor0_0(); lcdPrint_P(PSTR("REVERSE POLARITY")); if(settings.isDebug()) { lcdSetCursor0_1(); lcdPrint_P(PSTR("Vrev:")); lcdPrintUnsigned(analogInputs.getRealValue(AnalogInputs::VreversePolarity), 8); } }
void Screen::Cycle::displayCycles() { uint8_t c, time = Blink::blinkTime_/8; uint8_t all_scr = ProgramDCcycle::currentCycle/2 + 1; c = time % all_scr; lcdSetCursor0_0(); lcdPrintUnsigned(c+1, 1); lcdPrintChar(SCREEN_EMPTY_CELL_CHAR); lcdPrintTime(cyclesHistoryTime[c*2], 6); lcdPrintSpace1(); lcdPrintChar(SCREEN_FULL_CELL_CHAR); lcdPrintTime(cyclesHistoryTime[c*2+1], 6); lcdPrintSpaces(); lcdSetCursor0_1(); lcdPrintCharge(cyclesHistoryCapacity[c*2],8); lcdPrintCharge(cyclesHistoryCapacity[c*2+1],8); lcdPrintSpaces(); }
void Screen::displayStartInfo() { lcdSetCursor0_0(); ProgramData::currentProgramData.printBatteryString(4); lcdPrintChar(' '); ProgramData::currentProgramData.printVoltageString(); lcdPrintChar(' '); printProgram2chars(Program::programType_); lcdSetCursor0_1(); uint16_t procent = getChargeProcent(); if(procent == 100) { if(getBlinkOff()) lcdPrintSpaces(4); else lcdPrint_P(PSTR("FUL ")); } else { lcdPrintUnsigned(procent, 2); lcdPrint_P(PSTR("% ")); } int bindex = getBlinkIndex(); if(bindex & 1) analogInputs.printRealValue(AnalogInputs::Vout, 5); else lcdPrintSpaces(5); lcdPrintChar(' '); if(ProgramData::currentProgramData.isLiXX()) { //display balance port if(bindex & 2) analogInputs.printRealValue(AnalogInputs::Vbalancer, 5); else lcdPrintSpaces(5); if(bindex & 4) lcdPrintDigit(analogInputs.getConnectedBalancePorts()); else lcdPrintChar(' '); } else { lcdPrintCharge(ProgramData::currentProgramData.battery.C, 6); lcdPrintSpaces(); } }
void lcdPrintTime(uint16_t timeSec) { lcdPrintUnsigned(timeSec/60, 3, '0'); lcdPrintChar(':'); lcdPrintUnsigned(timeSec%60, 2, '0'); }
void Screen::runCalibrationError(const char *s, uint8_t error) { displayStrings(PSTR("calib. error"), s); lcdPrintUnsigned(error, 3); waitButtonPressed(); }
void SettingsMenu::printTemp(AnalogInputs::ValueType t) { lcdPrintUnsigned(t/100, 3); lcdPrintChar('C'); }
void lcdPrintUnsigned(uint16_t x, int8_t dig) { lcdPrintUnsigned(x,dig, ' '); }
void SettingsMenu::printVolt(AnalogInputs::ValueType v) { lcdPrintUnsigned(v/1000, 3); lcdPrintChar('V'); }