seticontainer.h
Go to the documentation of this file.00001
00020 #ifndef SETICONTAINER_H
00021 #define SETICONTAINER_H
00022
00023 #include <qobject.h>
00024
00025 #include "setidefs.h"
00026
00117 class SetiContainer : public QObject
00118 {
00119 Q_OBJECT
00120
00121 public:
00129 SetiContainer(const QString& dir, int refresh=30);
00131 ~SetiContainer();
00136 void setRefreshInterval(int refresh);
00138 QString directory() const {return setiDirectory;}
00140 void setDirectory(const QString& d);
00142 int refreshInterval() {return(refreshIval/1000);}
00146 int fftNumber() {return(stfData.ncfft);}
00150 int fftLength() {return(stfData.fl);}
00152 double chirpRate() {return(stfData.cr);}
00154 double cpuTime() {return(stfData.cpu);}
00159 int outfileSize() {return(stfData.outfilepos);}
00161 int potFrequency() {return(stfData.potfreq);}
00163 int potActivity() {return(stfData.potactivity);}
00165 double progress() {return(100.0*(stfData.prog < 0.0 ? 0.0 : stfData.prog));}
00169 double progressRate();
00173 double remainingTime();
00177 QString remainingTimeAsString();
00182 WUScore wuScore() {return(stfData.max);}
00187 SpikeScore spikeScore() {return(stfData.max.spike);}
00192 GaussianScore gaussianScore() {return(stfData.max.gaussian);}
00197 PulseScore pulseScore() {return(stfData.max.pulse);}
00202 TripletScore tripletScore() {return(stfData.max.triplet);}
00204 int userID() {return(uifData.id);}
00206 int key() {return(uifData.key);}
00208 QString userEmailAddress() {return(uifData.email_addr);}
00210 QString userName() {return(uifData.name);}
00212 QString userHomepage() {return(uifData.url);}
00214 QString userCountry() {return(uifData.country);}
00216 int userPostalCode() {return(uifData.postal_code);}
00220 bool showName() {return(uifData.show_name);}
00224 bool showEmail() {return(uifData.show_email);}
00226 int venue() {return(uifData.venue);}
00230 QString registerTime() {return(uifData.register_time);}
00235 QString registerTimeString();
00240 QString lastWUTime() {return(uifData.last_wu_time);}
00245 QString lastResultTime() {return(uifData.last_result_time);}
00250 QString lastResultTimeString();
00254 int numberOfWUs() {return(uifData.nwus);}
00258 int numberOfResults() {return(uifData.nresults);}
00261 double totalCPUTime() {return(uifData.total_cpu);}
00265 double averageCPUTime();
00267 double paramsIndex() {return(uifData.params_index);}
00271 QString task() {return(wufData.task);}
00275 int wuVersion() {return(wufData.version);}
00277 QString wuName() {return(wufData.name);}
00279 QString wuDataType() {return(wufData.data_type);}
00281 int wuDataClass() {return(wufData.data_class);}
00283 QString splitterVersion() {return(wufData.splitter_version);}
00287 double startRA() {return(wufData.start_ra);}
00291 double startDec() {return(wufData.start_dec);}
00295 double endRA() {return(wufData.end_ra);}
00299 double endDec() {return(wufData.end_dec);}
00303 double angleRange() {return(wufData.angle_range);}
00315 double teraFlops(double ar, int version=0);
00317 double megaFlopsPerSecond();
00321 QString timeRecorded() {return(wufData.time_recorded);}
00326 QString timeRecordedString();
00328 double centerFrequency() {return(wufData.subband_center/1.0e9);}
00330 double baseFrequency() {return(wufData.subband_base/1.0e9);}
00332 double sampleRate() {return(wufData.subband_sample_rate);}
00334 int wuFFTLength() {return(wufData.fft_len);};
00336 int wuIFFTLength() {return(wufData.ifft_len);}
00338 int subbandNumber() {return(wufData.subband_number);}
00342 QString receiver() {return(wufData.receiver);}
00344 int numberOfSamples() {return(wufData.nsamples);}
00346 QString tapeVersion() {return(wufData.tape_version);}
00350 int numberOfCoords() {return(wufData.num_positions);}
00355 QStringList coords() {return(wufData.coordinates);}
00361 int clientVersion() {return(sahVersion);}
00368 bool exists(int sah);
00380 bool isClientRunning(bool checkCmdLine = false);
00382 int clientState() const {return cltState;}
00385 void setClientState(int st) {cltState = st;}
00395 QString readEntry(int sah, const QString& e);
00400 static void initWUScore(WUScore* score);
00408 static QString convertTime(double time, bool hms);
00416 static QString convertRAToString(double ra);
00424 static QString convertDecToString(double dec);
00428 enum SetiStatus {Stopped, Running, Finished, Loading, Connecting};
00432 enum sahID {SC_StateFile, SC_UserInfoFile,
00433 SC_WorkUnitFile, SC_ResultFile,
00434 SC_ResultHeaderFile, SC_WtempFile};
00435
00436 public slots:
00444 int updateSahData(bool sig=true);
00445
00446 protected:
00447 int refreshIval;
00448 int sahVersion;
00449 bool versionRead;
00450 QString setiDirectory;
00451 QString stfFileName;
00452 QString wufFileName;
00453 QString uifFileName;
00454 QString rsfFileName;
00455 QString rhdFileName;
00456 QString wtpFileName;
00457 QStringList stateFile;
00458 QStringList workunitFile;
00459 QStringList userinfoFile;
00460 QString stfTimeStamp;
00461 QString wufTimeStamp;
00462 QString uifTimeStamp;
00463 QString pidTimeStamp;
00464 StateFileData stfData;
00465 UserInfoData uifData;
00466 WorkUnitData wufData;
00467 int cltState;
00468 int cltPid;
00469 bool localClt;
00470
00471 protected:
00479 int readStateFile(bool sig=true);
00487 int readWorkUnitFile(bool sig=true);
00495 int readUserInfoFile(bool sig=true);
00506 int readSahFile(const QString& file, QStringList& list,
00507 const QString& endId=0);
00517 QString readEntry(const QString& fn, const QString& e);
00526 static QString readEntry(QStringList& list, const QString& e);
00528 void initStateFileData();
00530 void initWorkUnitData();
00532 void initUserInfoData();
00539 void scanStateFile(bool sig=true);
00545 void scanSpikeData(bool sig=true);
00551 void scanGaussianData(bool sig=true);
00557 void scanPulseData(bool sig=true);
00563 void scanTripletData(bool sig=true);
00565 void scanGaussianGraphData();
00567 bool scanPulseGraphData();
00569 bool scanTripletGraphData();
00576 void scanUserInfoData(bool sig=true);
00583 void scanWorkUnitData(bool sig=true);
00589 int readClientVersion();
00596 void initAllData(bool sig=false);
00601 virtual void timerEvent(QTimerEvent* e);
00607 int checkClientState();
00612 int getClientPid();
00621 int checkClientStatePassive();
00630 static int readDataString(unsigned short int data[], QString& str, int cnt);
00632 void checkFileExistence();
00633
00634 private:
00635 int refTimer;
00636 int sttTimer1;
00637 int sttTimer2;
00638 double oldProgress;
00639 bool fastCheck;
00640
00641 signals:
00645 void progressIncreased();
00652 void progressDecreased();
00658 void newSpike(SpikeScore sps);
00664 void newGaussian(GaussianScore gas);
00670 void newPulse(PulseScore pus);
00676 void newTriplet(TripletScore trs);
00680 void newWorkUnit(WorkUnitData wud);
00685 void updatedWorkUnitData();
00690 void updatedUserInfoData();
00698 void stateChanged(int state, int loadsize=0);
00699 };
00700
00701 #endif
This file is part of the documentation for Ksetiwatch API Version 2.6.1.