Ignore:
Timestamp:
05/05/12 23:58:53 (13 years ago)
Author:
tbretz
Message:
Added a service to distribute the current run-type information.
File:
1 edited

Legend:

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

    r13554 r13570  
    7272    DimStampedInfo fLog;
    7373    DimStampedInfo fRC;
     74
     75    DimDescribedService fService;
    7476
    7577    pair<Time, int> GetNewState(DimStampedInfo &info) const
     
    272274        Message(str);
    273275
     276        Update(kStateConfiguring1);
     277
    274278        return kStateConfiguring1;
    275279    }
    276280
    277     void ConfigureFAD()
    278     {
    279         struct Value
    280         {
    281             uint64_t time;
    282             uint64_t nevts;
    283             char type[];
    284         };
    285 
     281    struct Value
     282    {
     283        uint64_t time;
     284        uint64_t nevts;
     285        char type[];
     286    };
     287
     288    Value *GetBuffer()
     289    {
    286290        const size_t len = sizeof(Value)+fRunType.length()+1;
    287291
     
    295299        strcpy(val->type, fRunType.c_str());
    296300
     301        return val;
     302    }
     303
     304    void Update(int newstate)
     305    {
     306        Value *buf = GetBuffer();
     307        fService.setQuality(newstate);
     308        fService.setData(buf, sizeof(Value)+fRunType.length()+1);
     309        fService.Update();
     310        delete buf;
     311    }
     312
     313    void ConfigureFAD()
     314    {
     315        Value *buf = GetBuffer();
     316
    297317        Message("Configuring FAD");
    298         Dim::SendCommand("FAD_CONTROL/CONFIGURE", buf, len);
     318        Dim::SendCommand("FAD_CONTROL/CONFIGURE", buf, sizeof(Value)+fRunType.length()+1);
    299319
    300320        delete buf;
     
    326346                Message("Configuring Trigger (FTM)");
    327347                Dim::SendCommand("FTM_CONTROL/CONFIGURE", fRunType);
     348                Update(kStateConfiguring2);
    328349                return kStateConfiguring2;
    329350            }
     
    345366
    346367                ConfigureFAD();
     368                Update(kStateConfiguring3);
    347369                return kStateConfiguring3;
    348370            }
     
    357379                Message("Starting Trigger (FTM)");
    358380                Dim::SendCommand("FTM_CONTROL/START_TRIGGER");
     381                Update(kStateConfigured);
    359382                return kStateConfigured;
    360383            }
     
    364387                if (fStatusFTM.second != FTM::kTriggerOn)
    365388                    return GetCurrentState();
     389
     390                Update(kStateIdle);
    366391
    367392                // Now we are taking data... we could now wait for
     
    403428        fFAD("FAD_CONTROL/STATE",      (void*)NULL, 0, this),
    404429        fLog("DATA_LOGGER/STATE",      (void*)NULL, 0, this),
    405         fRC("RATE_CONTROL/STATE",      (void*)NULL, 0, this)
     430        fRC("RATE_CONTROL/STATE",      (void*)NULL, 0, this),
     431        fService("CONFIGURATION", "X:1;X:1;C", "")
    406432    {
    407433        // ba::io_service::work is a kind of keep_alive for the loop.
Note: See TracChangeset for help on using the changeset viewer.