Changeset 14213


Ignore:
Timestamp:
06/22/12 10:08:19 (13 years ago)
Author:
tbretz
Message:
Added history of chat messages; added camera switching to event history; fixeda a problem with the number of points in the visibility curves.
File:
1 edited

Legend:

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

    r14161 r14213  
    449449    set<string>   fErrorList;
    450450    deque<string> fErrorHist;
     451    deque<string> fChatHist;
     452    Time          fChatLastTime;
    451453
    452454    Sun   fSun;
     
    707709    }
    708710
    709     void HandleFscControlStateChange()
     711    void HandleFscControlStateChange(const EventImp &d)
    710712    {
    711713        const int32_t &last  = fDimFscControl.last.second;
     
    716718
    717719        if (last<FSC::State::kConnected && state==FSC::State::kConnected)
     720        {
     721            AddMcpConfigurationHist(d, "<B>Camera swiched on</B>");
    718722            SetAudio("startup");
     723        }
    719724
    720725        if (last==FSC::State::kConnected && state<FSC::State::kConnected)
     726        {
     727            AddMcpConfigurationHist(d, "<B>Camera swiched off</B>");
    721728            SetAudio("shutdown");
     729        }
     730    }
     731
     732    void AddMcpConfigurationHist(const EventImp &d, const string &msg)
     733    {
     734        if (d.GetTime()>fMcpConfigurationLastTime+boost::posix_time::hours(12))
     735            fMcpConfigurationHist.clear();
     736
     737        fMcpConfigurationLastTime  = d.GetTime();
     738        fMcpConfigurationHist.push_back(d.GetTimeAsStr("%H:%M:%S ")+msg+"<br/>");
     739
     740        ostringstream out;
     741        out << d.GetJavaDate() << '\n';
     742        out << HTML::kWhite << '\t';
     743        for (auto it=fMcpConfigurationHist.rbegin(); it!=fMcpConfigurationHist.rend(); it++)
     744            out << *it;
     745        out << '\n';
     746
     747        ofstream(fPath+"/observations.data") << out.str();
    722748    }
    723749
     
    734760        }
    735761
    736         if (d.GetTime()>fMcpConfigurationLastTime+boost::posix_time::hours(12))
    737             fMcpConfigurationHist.clear();
    738 
    739762        // If a run ends...
    740763        if (fMcpConfigurationState==MCP::State::kTakingData && d.GetQoS()==MCP::State::kIdle)
     
    747770                SetAudio("losticks");
    748771
     772            fLastRunFinishedWithZeroEvents = fFadControlNumEvents==0;
     773
    749774            ostringstream out;
    750             out << d.GetTimeAsStr("%H:%M:%S") << " <#darkred>" << d.Ptr<char>(16);
     775            out << "<#darkred>" << d.Ptr<char>(16);
    751776            if (!fDriveControlSourceName.empty())
    752777                out << " [" << fDriveControlSourceName << ']';
    753778            out << " (N=" << fFadControlNumEvents << ')';
    754             out << "</#><br/>";
    755             fMcpConfigurationHist.push_back(out.str());
    756 
    757             fLastRunFinishedWithZeroEvents = fFadControlNumEvents==0;
     779            out << "</#>";
     780
     781            AddMcpConfigurationHist(d, out.str());
    758782        }
    759783
     
    764788
    765789            ostringstream out;
    766             out << d.GetTimeAsStr("%H:%M:%S") << " <#darkgreen>" << fMcpConfigurationName;
     790            out << "<#darkgreen>" << fMcpConfigurationName;
    767791            if (!fDriveControlSourceName.empty())
    768792                out << " [" << fDriveControlSourceName << ']';
    769793            if (fFadControlStartRun>0)
    770794                out << " (Run " << fFadControlStartRun << ')';
    771             out << "</#><br/>";
    772             fMcpConfigurationHist.push_back(out.str());
     795            out << "</#>";
     796
     797            AddMcpConfigurationHist(d, out.str());
    773798        }
    774799
     
    777802        fMcpConfigurationMaxEvents = d.Get<uint64_t>(8);
    778803        fMcpConfigurationName      = d.Ptr<char>(16);
    779         fMcpConfigurationLastTime  = d.GetTime();
    780 
    781         ostringstream out;
    782         out << d.GetJavaDate() << '\n';
    783         out << HTML::kWhite << '\t';
    784         for (auto it=fMcpConfigurationHist.rbegin(); it!=fMcpConfigurationHist.rend(); it++)
    785             out << *it;
    786         out << '\n';
    787 
    788         ofstream(fPath+"/observations.data") << out.str();
    789804
    790805        return GetCurrentState();
     
    16591674    }
    16601675
     1676    int HandleChatMsg(const EventImp &d)
     1677    {
     1678        if (d.GetSize()==0 || d.GetQoS()!=MessageImp::kMessage)
     1679            return GetCurrentState();
     1680
     1681        if (d.GetTime()>fChatLastTime+boost::posix_time::hours(12))
     1682            fChatHist.clear();
     1683
     1684        if (Time()<d.GetTime()+boost::posix_time::minutes(1))
     1685            SetAudio("message");
     1686
     1687        fChatLastTime = d.GetTime();
     1688
     1689        string msg;
     1690        msg += d.GetTimeAsStr("%H:%M:%S ");
     1691        msg += d.Ptr<char>();
     1692
     1693        fChatHist.push_front(msg);
     1694        if (fChatHist.size()>80)
     1695            fChatHist.pop_back();
     1696
     1697        ostringstream out;
     1698        out << setprecision(3);
     1699        out << Header(d) << '\n';
     1700        out << HTML::kWhite << '\t';
     1701
     1702        out << "<->";
     1703        for (auto it=fChatHist.begin(); it!=fChatHist.end(); it++)
     1704            out << *it << "<br/>";
     1705        out << "</->";
     1706
     1707        out << '\n';
     1708
     1709        ofstream(fPath+"/chat.data") << out.str();
     1710
     1711        return GetCurrentState();
     1712    }
     1713
    16611714    // -------------------------------------------------------------------
    16621715
     
    17851838
    17861839        double max   = 0;
    1787         double maxjd = jd0;
    1788 
     1840        double maxjd = 0;
     1841
     1842        int cnt = 0;
    17891843
    17901844        vector<float> alt;
     
    17971851            ln_get_hrz_from_equ(pos, observer, jd+h, &hrz);
    17981852
    1799             if (h>jd0 && h<jd1 && hrz.alt>15)
     1853            if (h>jd0 && h<jd1)
    18001854                alt.push_back(hrz.alt);
    18011855
     
    18051859                maxjd = jd+h;
    18061860            }
    1807         }
    1808 
    1809         if (max<15)
     1861
     1862            if (h>jd0 && h<jd1 && hrz.alt>15)
     1863                cnt++;
     1864        }
     1865
     1866        if (max<=15 || cnt==0)
    18101867            return make_pair(vector<float>(), make_pair(Time(), 0));
    18111868
    1812         return make_pair(alt, make_pair(maxjd, maxjd>jd0+jd&&maxjd<jd1+jd?max:0));
     1869        return make_pair(alt, make_pair(maxjd, maxjd>jd+jd0&&maxjd<jd+jd1?max:0));
    18131870    }
    18141871#endif
     
    22682325                if (dev>60)   // ~1.5mm
    22692326                    col = HTML::kYellow;
    2270                 if (dev>100)  // ~1/4 of a pixel ~ 2.5mm
     2327                if (dev>120)  // ~1/4 of a pixel ~ 2.5mm
    22712328                    col = HTML::kRed;
    22722329            }
     
    23152372        if (fDimDNS.online() && fDimFscControl.state()>FSC::State::kDisconnected && fFscControlTemperatureHist.size()>0)
    23162373        {
    2317             out << HTML::kGreen << '\t' << fFscControlTemperatureHist.back() << '\n';
     2374            string col = HTML::kGreen;
     2375            if (fFscControlTemperatureHist.back()>5)
     2376                col = HTML::kYellow;
     2377            if (fFscControlTemperatureHist.back()>8)
     2378                col = HTML::kRed;
     2379
     2380            out << col << '\t' << fFscControlTemperatureHist.back() << '\n';
    23182381        }
    23192382        else
     
    24622525            out << GetStateHtml(fDimRateControl,  4);
    24632526            out << GetStateHtml(fDimFscControl,   2);
     2527            out << GetStateHtml(fDimRateScan,     4);
    24642528            out << GetStateHtml(fDimMagicWeather, 2);
    24652529            out << GetStateHtml(fDimTngWeather,   2);
    2466             out << GetStateHtml(fDimRateScan,     4);
    24672530            out << GetStateHtml(fDimChat,         0);
    24682531            out << GetStateHtml(fDimSkypeClient,  1);
     
    25372600        fDimSkypeClient.Subscribe(*this);
    25382601
    2539         fDimFscControl.SetCallback(bind(&StateMachineSmartFACT::HandleFscControlStateChange, this));
     2602        fDimFscControl.SetCallback(bind(&StateMachineSmartFACT::HandleFscControlStateChange, this, placeholders::_1));
    25402603        fDimControl.SetCallback(bind(&StateMachineSmartFACT::HandleControlStateChange, this, placeholders::_1));
    25412604        fDimControl.AddCallback("dotest.dim", bind(&StateMachineSmartFACT::HandleDoTest, this, placeholders::_1));
     
    25822645        Subscribe("FAD_CONTROL/DRS_RUNS")
    25832646            (bind(&StateMachineSmartFACT::HandleFadDrsRuns,          this, placeholders::_1));
     2647        Subscribe("FAD_CONTROL/EVENT_DATA")
     2648            (bind(&StateMachineSmartFACT::HandleFadEventData,        this, placeholders::_1));
    25842649
    25852650        Subscribe("FTM_CONTROL/TRIGGER_RATES")
     
    25962661            (bind(&StateMachineSmartFACT::HandleRateScanData,        this, placeholders::_1));
    25972662
    2598         Subscribe("FAD_CONTROL/EVENT_DATA")
    2599             (bind(&StateMachineSmartFACT::HandleFadEventData,        this, placeholders::_1));
     2663        Subscribe("CHAT/MESSAGE")
     2664            (bind(&StateMachineSmartFACT::HandleChatMsg,             this, placeholders::_1));
     2665
    26002666
    26012667        // =================================================================
     
    26532719        out << Time().JavaDate() << '\n';
    26542720
    2655         ofstream(fPath+"/errorhist.data")    << out.str();
    2656         ofstream(fPath+"/error.data")        << out.str();
     2721        ofstream(fPath+"/error.data") << out.str();
    26572722
    26582723        return -1;
Note: See TracChangeset for help on using the changeset viewer.