/*************************************************************************** knutvardata.cpp - description ------------------- begin : Tue Aug 21 2001 copyright : (C) 2001 by Daniel Prynych email : Daniel.Prynych@alo.cz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "knutvardata.h" #include "knutnet.h" #include #include #include const char *nameUpsVars1[] = { "NONE", "UTILITY", "BATTPCT", "UPSTEMP", "ACFREQ", "LOADPCT", "AMBTEMP", "AMBHUMID","BATTVOLT","OUTVOLT","CURRENT","BATT_TEMP","BATT_CURRENT"}; const char *nameUpsVars2[] = { "none", "input.voltage", "battery.charge", "ups.temperature", "input.frequency", "ups.load", "ambient.temperature", "ambient.humidity","battery.voltage","output.voltage","output.current","battery.temperature","battery.current"}; /* * Nic,Vstupni Napeti,Baterie,Teplota UPSky, * Vstupni frekvence,Zatizeni,Vnejsi teplota, * Vnejsi vlhkost,Napeti baterie, Vystupni napeti * Vystupni proud, Teplota baterie, Proud baterie */ KNutVarData::KNutVarData(){ upsVarNameAnalog[0] = i18n("None"); upsVarNameAnalog[1] = i18n("Input Voltage"); upsVarNameAnalog[2] = i18n("Battery Charge"); upsVarNameAnalog[3] = i18n("UPS Temperature"); upsVarNameAnalog[4] = i18n("Input Frequency"); upsVarNameAnalog[5] = i18n("UPS Load"); upsVarNameAnalog[6] = i18n("Outside Temperature"); upsVarNameAnalog[7] = i18n("Outside Humidity"); upsVarNameAnalog[8] = i18n("Battery Voltage"); upsVarNameAnalog[9] = i18n("Output Voltage"); upsVarNameAnalog[10] = i18n("Output Current"); upsVarNameAnalog[11] = i18n("Battery Temperature"); upsVarNameAnalog[12] = i18n("Battery Current"); static const QString upsVarNameUnit[] = {"", "V", "%", "C", "Hz", "%", "C", "%", "V", "V", "A", "C", "A"}; static const int upsVarType[] = {0,3,2,1,1,2,1,1,3,3,2,1,2}; //typ panelu static const int upsVarItem[] = {5,4,5,5,6,6,5,5,5,4,5,5,5}; // pocet velkych policek na stupnici static const int upsVarInItem[] = {0,3,0,0,4,0,0,0,0,3,5,0,5}; // pocet malych policek ve velkem policku na stupnici static const int upsVarStart[] = {0,170,0,-10,20,0,-10,0,0,170,0,-10,-15}; static const int upsVarEnd[] = {0,290,100,90,80,120,70,100,10,290,5,90,10}; static const int upsVarScaleStart[ knc::NumberOfTypes ][5] = {{0,0,0,0,0},{0,210,0,0,0},{50,0,40,0,0},{-100,50,0,0,0},{0,40,45,0,0},{0,80,100,0,0},{-100,50,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{210,0,250,0,0},{0,0,0,0,0},{-100,50,0,0,0},{0,0,0,0,0}}; static const int upsVarScaleEnd[ knc::NumberOfTypes ][5] = {{0,0,0,0,0},{400,250,0,0,0},{120,40,50,0,0},{50,100,0,0,0},{90,60,55,0,0},{80,100,120,0,0},{50,70,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{250,210,400,0,0},{0,0,0,0,0},{50,100,0,0,0},{0,0,0,0,0}}; int upsVarScaleColor[ knc::NumberOfTypes ][5] = {{aRegWhite,aRegWhite,aRegWhite,aRegWhite,aRegWhite}, {aRegRed,aRegGreen,aRegWhite,aRegWhite,aRegWhite}, {aRegGreen,aRegRed,aRegYellow,aRegWhite,aRegWhite}, {aRegGreen,aRegRed,aRegWhite,aRegWhite,aRegWhite}, {aRegRed,aRegYellow,aRegGreen,aRegWhite,aRegWhite}, {aRegGreen,aRegYellow,aRegRed,aRegWhite,aRegWhite}, {aRegGreen,aRegRed,aRegWhite,aRegWhite,aRegWhite}, {aRegWhite,aRegWhite,aRegWhite,aRegWhite,aRegWhite}, {aRegGreen,aRegRed,aRegRed,aRegWhite,aRegWhite}, {aRegGreen,aRegRed,aRegRed,aRegWhite,aRegWhite}, {aRegWhite,aRegWhite,aRegWhite,aRegWhite,aRegWhite}, {aRegGreen,aRegRed,aRegWhite,aRegWhite,aRegWhite}, {aRegWhite,aRegWhite,aRegWhite,aRegWhite,aRegWhite}}; for (int i=0;i < knc::NumberOfTypes; i++) { dataVar[i].nameAnalog = upsVarNameAnalog[i]; dataVar[i].nameUnit = upsVarNameUnit[i]; dataVar[i].typeAnalog = upsVarType[i]; dataVar[i].numberItem = upsVarItem[i]; dataVar[i].numberInItem = upsVarInItem[i]; dataVar[i].start = upsVarStart[i]; dataVar[i].end = upsVarEnd[i]; for (int j=0; j< 5; j++) { dataVar[i].scaleData[j].start=upsVarScaleStart[i][j]; dataVar[i].scaleData[j].end=upsVarScaleEnd[i][j]; dataVar[i].scaleData[j].scaleColor=upsVarScaleColor[i][j]; } } dataVarVoltage[U230V]=dataVar[knc::VarUtility]; dataVarVoltage[U120V]=dataVar[knc::VarUtility]; dataVarVoltage[U120V].start=90; dataVarVoltage[U120V].end=150; dataVarVoltage[U120V].scaleData[0].start=0; dataVarVoltage[U120V].scaleData[1].start=110; dataVarVoltage[U120V].scaleData[0].end=200; dataVarVoltage[U120V].scaleData[1].end=130; dataVarFrequence[F50HZ]=dataVar[knc::VarAcfreq]; dataVarFrequence[F60HZ]=dataVar[knc::VarAcfreq]; dataVarFrequence[F60HZ].start=30; dataVarFrequence[F60HZ].end=90; dataVarFrequence[F60HZ].scaleData[0].start=0; dataVarFrequence[F60HZ].scaleData[1].start=50; dataVarFrequence[F60HZ].scaleData[2].start=55; dataVarFrequence[F60HZ].scaleData[0].end=100; dataVarFrequence[F60HZ].scaleData[1].end=70; dataVarFrequence[F60HZ].scaleData[2].end=65; } KNutVarData::~KNutVarData(){ } void KNutVarData::getData (const int seqNumber, struct VarStrucDef& data) { if (seqNumber > 0 && seqNumber < knc::NumberOfTypes) data = dataVar[seqNumber]; } QString KNutVarData::getNameAnalogData (const int seqNumber) { if ((seqNumber >= 0) && (seqNumber < knc::NumberOfTypes)) return upsVarNameAnalog[seqNumber]; else return ""; } void KNutVarData::putData (const int seqNumber, struct VarStrucDef& data) { if (seqNumber > 0 && seqNumber < knc::NumberOfTypes) dataVar[seqNumber] = data; } void KNutVarData::setVoltage (const int typeVoltage) { if (typeVoltage == 230) { dataVar[knc::VarUtility] = dataVarVoltage[U230V]; dataVar[knc::VarOutVolt] = dataVarVoltage[U230V]; dataVar[knc::VarOutVolt].nameAnalog = upsVarNameAnalog[knc::VarOutVolt]; // je nutno nastavit nazev } if (typeVoltage == 120) { dataVar[knc::VarUtility] = dataVarVoltage[U120V]; dataVar[knc::VarOutVolt] = dataVarVoltage[U120V]; dataVar[knc::VarOutVolt].nameAnalog = upsVarNameAnalog[knc::VarOutVolt]; // je nutno nastavit nazev } } void KNutVarData::setFrequency (const int typeFrequence) { if (typeFrequence == 50) { dataVar[knc::VarAcfreq] = dataVarFrequence[F50HZ]; } if (typeFrequence == 60) { dataVar[knc::VarAcfreq] = dataVarFrequence[F60HZ]; } } void KNutVarData::setXfer (const float lowXfer, const float highXfer) { dataVar[knc::VarUtility].scaleData[1].start=(int)lowXfer; dataVar[knc::VarUtility].scaleData[1].end=(int)highXfer; dataVar[knc::VarOutVolt].scaleData[1].start=(int)lowXfer; dataVar[knc::VarOutVolt].scaleData[1].end=(int)highXfer; } const QString KNutVarData::errorToText (const int error) { switch (error) { // knutclient error case KNutNet::LowMem: return i18n("No memmory."); case KNutNet::NullAddress: return i18n("No address."); case KNutNet::NoSuchHost: return i18n("Unknown address."); case KNutNet::SocketReadErr: // socket case KNutNet::ConnectErr: // connect // case KNutNet::SelectErr: case KNutNet::CantConnect: return i18n("No connect with server."); case KNutNet::NutProtocolVarErr: return i18n("Server-client protocol or variables of NUT are unknown."); case KNutNet::NoUpsHere: return i18n("No UPS on this address."); case KNutNet::SendErr: return i18n("Server doesn't receive data."); case KNutNet::RecvErr: return i18n("Server doesn't send data."); case KNutNet::NoServerData: return i18n("Server doesn't answer."); case KNutNet::UnknownFormat: return i18n("Server returns data with unknown format."); case KNutNet::UnknownAnswer: return i18n("Server returns unknown data."); case KNutNet::UnknownFormatVer: return i18n("Command VER returns data with unknown format."); case KNutNet::NoData: return i18n("No data."); case KNutNet::NotConnection: return i18n("Connection doesn't exist."); // server error case KNutNet::AccessDenied: return i18n("Access denied. Failed password ?"); case KNutNet::DataStale: return i18n("UPS doesn't sent data to server (Data Stale)."); case KNutNet::UnknownCommand: return i18n("Server doesn't know this command."); // driver error case KNutNet::DriverNotConnected: return i18n("UPS's driver isn't connected."); // Horni radku opravit v dalse release case KNutNet::PasswordRequired: return i18n("Server required password."); case KNutNet::PasswordIncorrect: return i18n("Incorrect password."); case KNutNet::NoResponse: return i18n("UPS doesn't response."); case KNutNet::CommandFailed: return i18n("Command failed."); case KNutNet::UnknownInstCmd: return i18n("UPS doesn't know this instant command."); case KNutNet::CmdNotSupported: return i18n("UPS doesn't support this instant command."); case KNutNet::VarUnknown: return i18n("UPS doesn't known this variable."); case KNutNet::VarNotSupported: return i18n("UPS doesn't support this variable."); case KNutNet::InvalidValue: return i18n("UPS doesn't support this value in this variable."); case KNutNet::UnknownUps: return i18n("Name of UPS is unknown."); //default default: return i18n("Unknown error."); } } void KNutVarData::showError (const int error) { KMessageBox::sorry (0,errorToText(error)); }