Changeset 2535 for trunk/MagicSoft/Mars


Ignore:
Timestamp:
11/19/03 20:46:54 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
20 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r2534 r2535  
    1212   * mreport/MReportFileRead.cc:
    1313     - replaced SetTime by SetupReading
     14
     15   * mreport/MReportCamera.[h,cc]:
     16     - use new stuff
     17
     18   * mcamera/*:
     19     - added
    1420
    1521
  • trunk/MagicSoft/Mars/mreport/MReportCamera.cc

    r2520 r2535  
    3333
    3434#include "MAstro.h"
     35#include "MParList.h"
     36
     37#include "../mcamera/MCameraHV.h"
    3538
    3639ClassImp(MReportCamera);
    3740
     41ClassImp(MCameraCooling);
     42ClassImp(MCameraLids);
     43ClassImp(MCameraHV);
     44ClassImp(MCameraLV);
     45ClassImp(MCameraCalibration);
     46
    3847using namespace std;
    3948
     
    4150{
    4251    fName = "MReportCamera";
     52}
     53
     54Bool_t MReportCamera::SetupReading(MParList &plist)
     55{
     56    fCooling = (MCameraCooling*)plist.FindCreateObj("MCameraCooling");
     57    if (!fCooling)
     58        return kFALSE;
     59
     60    fLids = (MCameraLids*)plist.FindCreateObj("MCameraLids");
     61    if (!fLids)
     62        return kFALSE;
     63
     64    fHV = (MCameraHV*)plist.FindCreateObj("MCameraHV");
     65    if (!fHV)
     66        return kFALSE;
     67
     68    fLV = (MCameraLV*)plist.FindCreateObj("MCameraLV");
     69    if (!fLV)
     70        return kFALSE;
     71
     72    fCalibration = (MCameraCalibration*)plist.FindCreateObj("MCameraCalibration");
     73    if (!fCalibration)
     74        return kFALSE;
     75
     76    return MReport::SetupReading(plist);
     77}
     78
     79Bool_t MReportCamera::CheckTag(TString &str, const char *tag) const
     80{
     81    if (!str.BeginsWith(tag))
     82    {
     83        *fLog << err << "ERROR - '" << tag << "' tag not found." << endl;
     84        return kFALSE;
     85    }
     86    str.Remove(0, strlen(tag)); // Remove DC currents
     87    return kTRUE;
     88}
     89
     90Bool_t MReportCamera::InterpreteDC(TString &str)
     91{
     92    if (!CheckTag(str, "DC "))
     93        return kFALSE;
     94
     95    str.Remove(0, 577*4); // Remove DC currents
     96    str=str.Strip(TString::kLeading);
     97    return kTRUE;
     98}
     99
     100Bool_t MReportCamera::InterpreteHV(TString &str)
     101{
     102    if (!CheckTag(str, "HV "))
     103        return kFALSE;
     104
     105    for (int i=0; i<577; i++)
     106    {
     107        const Char_t hex[4] = { str[i*3], str[i*3+1], str[i*3+2], 0 };
     108        const Int_t n=sscanf(hex, "%3hx", &fHV->fHV[i]);
     109        if (n==1)
     110            continue;
     111
     112        *fLog << err << "ERROR - Reading hexadecimal HV information." << endl;
     113        return kFALSE;
     114    }
     115    str.Remove(0, 577*3); // Remove DC currents
     116    str=str.Strip(TString::kLeading);
     117    return kTRUE;
     118}
     119
     120Bool_t MReportCamera::InterpreteCOOL(TString &str)
     121{
     122    if (!CheckTag(str, "COOL "))
     123        return kFALSE;
     124
     125    Int_t len;
     126    const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n",
     127                         &len);
     128    if (n!=0)
     129    {
     130        *fLog << err << "ERROR - Reading information of 'COOL' section." << endl;
     131        return kFALSE;
     132    }
     133    str.Remove(0, len);
     134    str=str.Strip(TString::kLeading);
     135    return kTRUE;
     136}
     137
     138Bool_t MReportCamera::InterpreteLID(TString &str)
     139{
     140    if (!CheckTag(str, "LID "))
     141        return kFALSE;
     142
     143    Int_t len;
     144    const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n",
     145             &len);
     146    if (n!=0)
     147    {
     148        *fLog << err << "ERROR - Reading information of 'LID' section." << endl;
     149        return kFALSE;
     150    }
     151    str.Remove(0, len);
     152    str=str.Strip(TString::kLeading);
     153    return kTRUE;
     154}
     155
     156Bool_t MReportCamera::InterpreteHVPS(TString &str)
     157{
     158    if (!CheckTag(str, "HVPS "))
     159        return kFALSE;
     160
     161    Int_t len;
     162    const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %n",
     163             &len);
     164    if (n!=0)
     165    {
     166        *fLog << err << "ERROR - Reading information of 'HVPS' section." << endl;
     167        return kFALSE;
     168    }
     169    str.Remove(0, len);
     170    str=str.Strip(TString::kLeading);
     171    return kTRUE;
     172}
     173
     174Bool_t MReportCamera::InterpreteLV(TString &str)
     175{
     176    if (!CheckTag(str, "LV "))
     177        return kFALSE;
     178
     179    Int_t len;
     180    const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n",
     181                         &len);
     182    if (n!=0)
     183    {
     184        *fLog << err << "ERROR - Reading information of 'LV' section." << endl;
     185        return kFALSE;
     186    }
     187    str.Remove(0, len);
     188    str=str.Strip(TString::kLeading);
     189    return kTRUE;
     190}
     191
     192Bool_t MReportCamera::InterpreteAUX(TString &str)
     193{
     194    if (!CheckTag(str, "AUX "))
     195        return kFALSE;
     196
     197    Int_t len;
     198    const Int_t n=sscanf(str.Data(), "%*d %*d %n", &len);
     199    if (n!=0)
     200    {
     201        *fLog << err << "ERROR - Reading information of 'AUX' section." << endl;
     202        return kFALSE;
     203    }
     204    str.Remove(0, len);
     205    str=str.Strip(TString::kLeading);
     206    return kTRUE;
     207}
     208
     209Bool_t MReportCamera::InterpreteCAL(TString &str)
     210{
     211    if (!CheckTag(str, "CAL "))
     212        return kFALSE;
     213
     214    Int_t len;
     215    const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %n", &len);
     216    if (n!=0)
     217    {
     218        *fLog << err << "ERROR - Reading information of 'CAL' section." << endl;
     219        return kFALSE;
     220    }
     221
     222    str.Remove(0, len);
     223    str=str.Strip(TString::kBoth);
     224    return kTRUE;
    43225}
    44226
     
    47229Bool_t MReportCamera::InterpreteBody(TString &str)
    48230{
    49     *fLog << dbg << "C" << flush;
    50     return kTRUE;
    51 }
     231    //
     232    // I have tried to do it with pure pointer arithmentics, but most of the time is spent
     233    // to do the sscanf. So we gain less than 5% not using TString like it is done here.
     234    Int_t len;
     235    Int_t n=sscanf(str.Data(), " %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n",
     236                   &len);
     237
     238    if (n!=0)
     239    {
     240        *fLog << err << "ERROR - Cannot interprete status' of subsystems." << endl;
     241        return kFALSE;
     242    }
     243    str.Remove(0, len);
     244    str=str.Strip(TString::kLeading);
     245
     246    if (!InterpreteDC(str))
     247        return kFALSE;
     248
     249    if (!InterpreteHV(str))
     250        return kFALSE;
     251
     252    if (!InterpreteCOOL(str))
     253        return kFALSE;
     254
     255    if (!InterpreteLID(str))
     256        return kFALSE;
     257
     258    if (!InterpreteHVPS(str))
     259        return kFALSE;
     260
     261    if (!InterpreteLV(str))
     262        return kFALSE;
     263
     264    if (!InterpreteAUX(str))
     265        return kFALSE;
     266
     267    if (!InterpreteCAL(str))
     268        return kFALSE;
     269
     270    if (str!="OVER")
     271    {
     272        *fLog << err << "ERROR - 'OVER' tag not found." << endl;
     273        return kFALSE;
     274    }
     275
     276    return kTRUE;
     277}
  • trunk/MagicSoft/Mars/mreport/MReportCamera.h

    r2520 r2535  
    55#include "MReport.h"
    66#endif
     7/*
     8class MCameraCooling : public MParContainer
     9{
     10    friend class MReportCamera;
     11private:
     12    Bool_t  fStatus;              // Monitored status: , Cam.COOLING_state
     13
     14    Bool_t  fStatusPressureHi;    // 0=ok,  1=Obstruct
     15    Bool_t  fStatusPressureLo;    // 0=ok,  1=leakage
     16    Bool_t  fStatusPumb;          // 0=off, 1=on
     17    Bool_t  fStatusRefrigrerator; // 0=off, 1=on
     18    Bool_t  fStatusValve;         // 0=recirculate, 1=new
     19    Bool_t  fStatusResistor;      // 0=off, 1=on
     20    Bool_t  fStatusFans;          // 0=off, 1=on
     21
     22    Float_t fTempCenter;          // [deg C] Temperature at the camera center
     23    Float_t fTempWall;            // [deg C] Temperature at the camera wall
     24    Float_t fTempOptLink;         // [deg C] Temperature at the optical link
     25    Float_t fTempWater;           // [deg C] Temperature of the water
     26
     27    Byte_t  fHumAll;              // [%] Relative humidity over all
     28    Byte_t  fHumCenter;           // [%] Relative humidity camera center
     29
     30public:
     31    ClassDef(MCameraCooling, 0)
     32};
     33class MCameraLid : public MParContainer
     34{
     35    friend class MReportCamera;
     36private:
     37     Bool_t fLimitTop;         // 0=not active, 1= active
     38     Bool_t fLimitBottom;      // 0=not active, 1= active
     39     Bool_t fSaftyLimitTop;    // 0=not active, 1= active
     40     Bool_t fSaftyLimitBottom; // 0=not active, 1= active
     41     Byte_t fStatusLid;        // 0=positioning, 1=open, 2=closed
     42     Byte_t fStatusMotor;      // 0=stopped, 1=opening, 2=closing
     43public:
     44    ClassDef(MCameraLid, 0)
     45};
     46class MCameraLids : public MParContainer
     47{
     48    friend class MReportCamera;
     49private:
     50    MCameraLid *fLidA;
     51    MCameraLid *fLidB;
     52
     53    Bool_t fStatus; // [?] Monitored status, Cam.LID_state
     54public:
     55    ClassDef(MCameraLids, 0)
     56};
     57
     58class MCameraPowerSupply : public MParContainer
     59{
     60    friend class MReportCamera;
     61private:
     62     Float_t fVoltagePos5V;  // [V] voltage_pos5
     63     Float_t fVoltagePos12V; // [V] voltage_pos12
     64     Float_t fVoltageNeg12V; // [V] voltage_neg12
     65     Float_t fCurrentPos5V;  // [A] current_pos5
     66     Float_t fCurrentPos12V; // [A] current_pos12
     67     Float_t fCurrentNeg12V; // [A] current_neg12
     68public:
     69    ClassDef(MCameraPowerSupply, 0)
     70};
     71
     72class MCameraLV : public MParContainer
     73{
     74    friend class MReportCamera;
     75private:
     76    Bool_t  fStatus;                    // Monitored status:  , Cam.LV_state
     77    Bool_t  fRequestPowerSupply;        // Requested status: o=off, 1=on, blv_ps_status
     78    Bool_t  fRequestTemp;               // Requested status: o=off, 1=on, blv_temp
     79    Bool_t  fRequestHumidity;           // Requested status: o=off, 1=on, blv_RelativeHumidity
     80
     81    MCameraPowerSupply fPowerSupplyA;  // power supply A
     82    MCameraPowerSupply fPowerSupplyB;  // power supply B
     83
     84    Float_t fVoltageOptLinkPos12V;      // [V] voltage_opt_link_pos12
     85    Float_t fVoltageOptLinkSparePos12V; // [V] voltage_opt_link_spare_pos12
     86
     87    Float_t fCurrentOptLinkPos12V;      // [A] current_opt_link_pos12
     88    Float_t fCurrentOptLinkSparePos12V; // [A] current_opt_link_spare_pos12
     89
     90public:
     91    ClassDef(MCameraLV, 0)
     92};
     93
     94class MCameraAUX : public MParContainer
     95{
     96    friend class MReportCamera;
     97private:
     98    Bool_t fRequestCaosLEDs; // Requested status: o=off, 1=on, bAux_CaOsLEDs_Off/On
     99    Bool_t fRequestFansFADC; // Requested status: o=off, 1=on, bAux_FADC_FANs_Off/On
     100    Bool_t fStatusCaosLEDs;  // Monitored status: o=off, 1=on, Cam.CaOs.LED_state
     101    Bool_t fStatusFansFADC;  // Monitored status: o=off, 1=on, Cam.FADC.Fans_state
     102public:
     103    ClassDef(MCameraAUX, 0)
     104};
     105
     106class MCameraCalibration : public MParContainer
     107{
     108    friend class MReportCamera;
     109private:
     110    Bool_t fStatus;           // Monitored status: o=off, 1=on, CamCalib_state
     111    Bool_t fStatusCANbus;     // Monitored status: o=off, 1=on, Cal.CanBus_state
     112    Bool_t fStatusIO;         // Monitored status: o=off, 1=on, Cal.IO_state
     113    Bool_t fStatusLoVoltage;  // Monitored status: o=off, 1=on, Cal.LV_state
     114
     115    Bool_t fRequestHiVoltage; // Requested status: o=off, 1=on, bcalib_HV_Off/On
     116    Bool_t fRequestLoVoltage; // Requested status: o=off, 1=on, bcalib_LV_Off/On
     117    Bool_t fRequestContLight; // Requested status: o=off, 1=on, bcalib_ContinuousLight_Off/On
     118    Bool_t fRequestPinDiode;  // Requested status: o=off, 1=on, bcalib_PinDiode_Off/On
     119
     120public:
     121    ClassDef(MCameraCalibration, 0)
     122};
     123#include <TArrayS.h>
     124class MCameraHV : public MParContainer
     125{
     126    friend class MReportCamera;
     127private:
     128    Bool_t  fStatus;            // Monitored status of the High Voltage, Cam.HV.PS_state
     129    Bool_t  fStatusPowerSupply; // Monitored status of the HV Power supply, Cam.HV_state
     130
     131    Short_t fVoltageA;          // [V] Measured voltage of power supply A, hvps1
     132    Short_t fVoltageB;          // [V] Measured voltage of power supply B, hvps2
     133
     134    Short_t fCurrentA;          // [A] Measured current of power supply A, curr1
     135    Short_t fCurrentB;          // [A] Measured current of power supply B, curr2
     136
     137    TArrayS fHV;                // [V] Measured high Voltages for all PMTs
     138public:
     139    MCameraHV() : fHV(577) { }
     140    ClassDef(MCameraHV, 0)
     141};
     142*/
     143
     144class MCameraCooling;
     145class MCameraLids;
     146class MCameraHV;
     147class MCameraLV;
     148class MCameraCalibration;
    7149
    8150class MReportCamera : public MReport
    9151{
    10152private:
     153    Bool_t fStatus;   // [?] Monitored status of the sentinel, Sentinel_state
     154    Bool_t fStatusDC; // [?] Monitored status of the DC currents, Cam.DC_state
     155
     156    MCameraCooling     *fCooling;
     157    MCameraLids        *fLids;
     158    MCameraHV          *fHV;
     159    MCameraLV          *fLV;
     160    MCameraCalibration *fCalibration;
     161
     162    Bool_t SetupReading(MParList &plist);
     163    Bool_t CheckTag(TString &str, const char *tag) const;
     164
     165    Bool_t InterpreteDC(TString &str);
     166    Bool_t InterpreteHV(TString &str);
     167    Bool_t InterpreteCOOL(TString &str);
     168    Bool_t InterpreteLID(TString &str);
     169    Bool_t InterpreteHVPS(TString &str);
     170    Bool_t InterpreteLV(TString &str);
     171    Bool_t InterpreteAUX(TString &str);
     172    Bool_t InterpreteCAL(TString &str);
     173
    11174public:
    12175    MReportCamera();
     
    14177    Bool_t InterpreteBody(TString &str);
    15178
    16     ClassDef(MReportCamera, 0) // Base class for control reports
     179    ClassDef(MReportCamera, 1) // Base class for control reports
    17180};
    18181
  • trunk/MagicSoft/Mars/status.cc

    r2521 r2535  
    9393    // Evaluate arguments
    9494    //
    95     MArgs arg(argc, (const char**)argv);
     95    MArgs arg(argc, argv);
    9696
    9797    if (arg.HasOption("-?") || arg.HasOption("-h"))
     
    282282
    283283    tlist.PrintStatistics();
     284
    284285    return 0;
    285286}
Note: See TracChangeset for help on using the changeset viewer.