Changeset 12347 for trunk


Ignore:
Timestamp:
10/31/11 18:53:01 (13 years ago)
Author:
tbretz
Message:
Make the FEEDBACK receive the data all the time for a combined control of temp and amplitude
File:
1 edited

Legend:

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

    r12319 r12347  
    5858    };
    5959
     60    enum control_t
     61    {
     62        kIdle,
     63        kTemp,
     64        kFeedback
     65    };
     66
     67    control_t fControlType;
     68
    6069    PixelMap fMap;
    6170
     
    7281    DimStampedInfo fBias;
    7382
    74     DimStampedInfo *fBiasData;
    75     DimStampedInfo *fCameraTemp;
     83    DimStampedInfo fBiasData;
     84    DimStampedInfo fCameraTemp;
    7685
    7786    DimDescribedService fDimReference;
     
    164173        }
    165174
    166         if (curr==fCameraTemp)
     175        if (curr==&fCameraTemp)
    167176        {
    168177            if (curr->getSize()==0)
     
    194203                vec[i+416] = diff;
    195204
     205            if (fControlType!=kTemp)
     206                return;
     207
    196208            fDimDeviation.Update(vec);
    197209
     
    206218        }
    207219
    208         if (curr==fBiasData)
     220        if (curr==&fBiasData && fControlType==kFeedback)
    209221        {
    210222            if (curr->getSize()==0)
     
    400412
    401413                            for (int i=0; i<BIAS::kNumChannels; i++)
    402                                 vec[i+416] = correction[i];
     414                                vec[i+416] = avg[i]<5*2.5 ? 0 : correction[i];
    403415
    404416                            fDimDeviation.Update(vec);
     
    529541    int StartFeedback()
    530542    {
    531         fBiasData = new DimStampedInfo("FAD_CONTROL/FEEDBACK_DATA", (void*)NULL, 0, this);
    532 
    533543        ResetData();
     544
     545        fControlType = kFeedback;
    534546
    535547        return GetCurrentState();
     
    540552        if (!CheckEventSize(evt.GetSize(), "StartTempCtrl", 4))
    541553            return kSM_FatalError;
    542 
    543         fBiasOffset = evt.GetFloat();
    544         fCameraTemp = new DimStampedInfo("FSC_CONTROL/TEMPERATURE", (void*)NULL, 0, this);
    545554
    546555        ostringstream out;
     
    548557        Message(out);
    549558
     559        fBiasOffset = evt.GetFloat();
     560        fControlType = kTemp;
     561
    550562        return GetCurrentState();
    551563    }
     
    553565    int StopFeedback()
    554566    {
    555         if (fBiasData)
    556         {
    557             delete fBiasData;
    558             fBiasData = 0;
    559         }
    560 
    561         if (fCameraTemp)
    562         {
    563             delete fCameraTemp;
    564             fCameraTemp = 0;
    565         }
     567        fControlType = kIdle;
    566568
    567569        return GetCurrentState();
     
    599601            return kSM_FatalError;
    600602
     603        /*
    601604        const float val = evt.GetFloat();
    602605        if (!fPV[0].size() && !fPV[1].size() && !fPV[2].size())
     
    604607            Warn("No values in memory. Take enough events first!");
    605608            return GetCurrentState();
    606         }
     609        }*/
    607610
    608611        vector<float> vec(BIAS::kNumChannels);
     
    641644        // All subsystems are connected
    642645
    643         if (fBiasData)
     646        if (fControlType==kFeedback)
    644647            return fOutputEnabled ? kStateFeedbackCtrlRunning : kStateFeedbackCtrlIdle;
    645648
    646         if (fCameraTemp)
     649        if (fControlType==kTemp)
    647650            return fOutputEnabled ? kStateTempCtrlRunning : kStateTempCtrlIdle;
    648651
     
    659662        fFSC("FSC_CONTROL/STATE",       (void*)NULL, 0, this),
    660663        fBias("BIAS_CONTROL/STATE",     (void*)NULL, 0, this),
    661         fBiasData(0), fCameraTemp(0),
     664        fBiasData("FAD_CONTROL/FEEDBACK_DATA", (void*)NULL, 0, this),
     665        fCameraTemp("FSC_CONTROL/TEMPERATURE", (void*)NULL, 0, this),
    662666        fDimReference("FEEDBACK/REFERENCE", "F:416",        ""),
    663667        fDimDeviation("FEEDBACK/DEVIATION", "F:416;F:416",  ""),
Note: See TracChangeset for help on using the changeset viewer.