Changeset 13955


Ignore:
Timestamp:
05/28/12 23:51:45 (13 years ago)
Author:
tbretz
Message:
Display the time until the sun is down and display a symbol if the moon is up; updates to the error state
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/smartfact.cc

    r13953 r13955  
    191191        description = state[name];
    192192
    193         string arr;
    194         ostringstream out;
    195         if (isday)
    196         {
    197             out << fSunSetDarkTime-time;
    198             arr = "&darr;";
    199         }
    200         else
    201         {
    202             out << fSunRiseDayTime-time;
    203             arr = "&uarr;";
    204         }
    205 
    206         description += " ["+out.str().substr(0, 5)+arr+"]";
     193        const string arr = isday ?
     194            fSunSetDarkTime.MinutesTo(time)+"&darr;" :
     195            fSunRiseDayTime.MinutesTo(time)+"&uarr;";
     196
     197        description += " ["+arr+"]";
    207198
    208199        switch (state)
     
    282273            color = disk>75 ? HTML::kRed : HTML::kYellow;
    283274
    284         string arr;
    285         ostringstream dt;
    286         if (fMoonSet<fMoonRise)
    287         {
    288             dt << fMoonSet-time;
    289             arr = "&darr;";
    290         }
    291         else
    292         {
    293             dt << fMoonRise-time;
    294             arr = "&uarr;";
    295         }
     275        const string arr = fMoonSet<fMoonRise ?
     276            fMoonSet.MinutesTo(time)+"&darr;" :
     277            fMoonRise.MinutesTo(time)+"&uarr;";
    296278
    297279        ostringstream out;
    298280        out << setprecision(2);
    299         out << (visible?"visible ":"") << (disk<0.1?0:disk) << "% [" << dt.str().substr(0,5) << arr << "]";
     281        out << (visible?"visible ":"") << (disk<0.1?0:disk) << "% [" << arr << "]";
    300282
    301283        description = out.str();
     
    409391    bool fSunIsVisible;
    410392    bool fMoonIsVisible;
     393
     394    Time fTimeOfCivilTwilight;
    411395
    412396    int fHasError;
     
    675659        fSunIsVisible = astro.state>=3 && astro.state<=5;
    676660        fMoonIsVisible = !fSunIsVisible && moon.visible;
     661
     662        fTimeOfCivilTwilight = astro.fSunSetCivil;
    677663
    678664        ofstream(fPath+"/weather.data") << out.str();
     
    15541540            return HTML::kWhite + "\t&mdash;\n";
    15551541
    1556 
    1557         return (rc.index<green?HTML::kYellow:HTML::kGreen) + '\t' + rc.name + '\n';
     1542        string col = HTML::kGreen;
     1543        if (rc.index<green)
     1544            col = HTML::kYellow;
     1545        if (rc.index>0xff)
     1546            col = HTML::kRed;
     1547
     1548        return col + '\t' + rc.name + '\n';
    15581549    }
    15591550
     
    15751566        // ==============================================================
    15761567
     1568        const bool data_taking =
     1569            fDimMcp.state()==MCP::State::kTriggerOn ||
     1570            fDimMcp.state()==MCP::State::kTakingData;
     1571
    15771572        ostringstream msg;
    15781573
     
    15811576        if (!fDimDNS.online())
    15821577            msg << "DIM network not available.<br/>";
    1583         if (fDimDriveControl.state()>0xff)
    1584             msg << "Drive in ERROR state<br/>";
    1585         if (fDimBiasControl.state()<BIAS::State::kRamping && (fDimMcp.state()==MCP::State::kTriggerOn || fDimMcp.state()==MCP::State::kTakingData))
     1578        if (fDimDriveControl.state()>0xff && data_taking)
     1579            msg << "Drive in ERROR state during data-taking<br/>";
     1580        if (fDimBiasControl.state()<BIAS::State::kRamping && data_taking)
    15861581            msg << "BIAS not operating during data-taking<br/>";
    15871582        if (fDimBiasControl.state()==BIAS::State::kOverCurrent)
     
    15961591                msg << "Maximum current exceeds 90&micro;A/pix<br/>";
    15971592        }
    1598         if (fMagicWeatherHist[kHum].size()>0 && fMagicWeatherHist[kHum].back()>98 && (fDimMcp.state()==MCP::State::kTriggerOn || fDimMcp.state()==MCP::State::kTakingData))
     1593        if (fMagicWeatherHist[kHum].size()>0 && fMagicWeatherHist[kHum].back()>98 && data_taking)
    15991594            msg << "Outside humidity exceeds 98% during data-taking<br/>";
    16001595        if (fMagicWeatherHist[kGusts].size()>0 && fMagicWeatherHist[kGusts].back()>98 && fDimDriveControl.state()==Drive::State::kTracking)
     
    16021597        if (fFscControlTemperatureHist.size()>0 && fFscControlTemperatureHist.back()>7)
    16031598            msg << "Sensor temperature exceeds outside temperature by more than 7&deg;C<br/>";
    1604         if (fFtmControlTriggerRateCam<0.01 && (fDimMcp.state()==MCP::State::kTriggerOn || fDimMcp.state()==MCP::State::kTakingData))
     1599        if (fFtmControlTriggerRateCam<0.01 && data_taking)
    16051600            msg << "Trigger rate below 10mHz during data taking<br/>";
    16061601        if (fFscControlHumidityAvg>60)
     
    17451740                {
    17461741                    if (fMcpConfigurationState==MCP::State::kTakingData)
    1747                     {
    1748                         ostringstream d;
    1749                         d << Time()-fMcpConfigurationRunStart;
    1750                         tim << d.str().substr(3, 5);
    1751                     }
     1742                        tim << fMcpConfigurationRunStart.SecondsTo();
    17521743                }
    17531744
     
    17901781            //out << rc.name << '\t';
    17911782            out << fDriveControlPointingAz << ' ';
     1783            out << fDriveControlPointingZd  << "&deg;";
    17921784            out << setprecision(2);
    1793             out << fDriveControlPointingZd  << "&deg;";
    17941785            if (fDimDriveControl.state()==Drive::State::kTracking)
    17951786            {
    17961787                out << " &plusmn; " << dev << '"';
    17971788                if (!fDriveControlSourceName.empty())
    1798                     out << '[' << fDriveControlSourceName  << ']';
     1789                    out << " [" << fDriveControlSourceName  << ']';
    17991790            }
    18001791            if (fDimDriveControl.state()==Drive::State::kMoving)
     
    18051796            out << HTML::kWhite << '\t';
    18061797        if (fSunIsVisible)
     1798        {
    18071799            out << " &#9788;";
     1800            if (fTimeOfCivilTwilight.IsValid() && fDimDriveControl.state()<Drive::State::kArmed)
     1801                out << " [" << fTimeOfCivilTwilight.MinutesTo() << "]";
     1802        }
    18081803        else
    18091804            if (fMoonIsVisible)
     
    19781973        fBiasControlCurrentMax(0),
    19791974        fFscControlHumidityAvg(0),
     1975        fDriveControlMoonDist(-1),
     1976        fFadControlNumEvents(0),
    19801977        fFadControlDrsRuns(3),
    19811978        fFtmControlTriggerRateCam(0),
     
    19831980        fRateScanBoard(0),
    19841981        fSunIsVisible(true),
     1982        fMoonIsVisible(false),
     1983        fTimeOfCivilTwilight(Time::none),
    19851984        fHasError(2),
    19861985        // ---
Note: See TracChangeset for help on using the changeset viewer.