예제 #1
0
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;
        }
    }
}
예제 #2
0
 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);
         }
     }
 }
예제 #3
0
 virtual uint8_t printItem(uint8_t index) {
     StaticMenu::printItem(index);
     if(getBlinkIndex() != index) {
         if(index == 0) {
             lcdPrintUnsigned(value_, 5);
         } else {
             lcdPrintCurrent(AnalogInputs::getIout(), 7);
         }
     }
 }
예제 #4
0
void StaticEditMenu::printItem(uint8_t item)
{
    uint8_t index = getSelectedIndexOrSize(item);
    const char * str = pgm::read(&staticEditData[index].staticString);
    uint8_t dig = lcdPrint_P(str);
    if(getBlinkIndex() != item) {
        dig = LCD_COLUMNS - dig - 1;
        uint8_t size = pgm::read(&staticEditData[index].print.size);
        if(size) {
            lcdPrintSpaces(dig - size);
            dig = size;
        }
        cprintf::cprintf(&staticEditData[index].print, dig);
    }
}
예제 #5
0
 virtual void printItem(uint8_t index) {
     //TODO: hack, should be improved ... Gyuri: R138 burned.
     if(!AnalogInputs::isConnected(AnalogInputs::Vout)) {
         Screen::displayStrings(string_connectBattery);
         if(cName_ == AnalogInputs::IdischargeSet) {
             Discharger::powerOff();
         }
     } else {
         StaticMenu::printItem(index);
         if(getBlinkIndex() != index) {
             if(index == 0) {
                 lcdPrintUnsigned(value_, 5);
             } else {
                 lcdPrintCurrent(AnalogInputs::getIout(), 7);
             }
         }
     }
 }
예제 #6
0
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();
    }
}
예제 #7
0
uint8_t ProgramDataMenu::printItem(uint8_t index)
{
    StaticMenu::printItem(index);
    if(getBlinkIndex() != index) {
        switch (index) {
        case 0:
            p_.printBatteryString();
            break;
        case 1:
            p_.printVoltageString();
            break;
        case 2:
            p_.printChargeString();
            break;
        case 3:
            p_.printIcString();
            break;
        case 4:
            p_.printIdString();
            break;
        }
    }
    return 0;
}