void Calibrator::announceCalibrationUpdate() { Datum announceData(M_DICTIONARY, 2); announceData.addElement(CALIBRATOR_NAME,uniqueCalibratorName); // char announceData.addElement(CALIBRATOR_ACTION,CALIBRATOR_ACTION_UPDATE_PARAMS); // TODO announce parameters in base class ?? too messy. announce(announceData); // announce things here using method from Announcable }
void Calibrator::initialize() { pUncalibratedData = new Datum(M_LIST, this->getNumInputs() ); pSampledData = new Datum(M_LIST, this->getNumInputs() ); pCalibratedData = new Datum(M_LIST, this->getNumOutputs() ); fitableFunctions = new ExpandableList<FitableFunction>( this->getNumOutputs() ); // set vectors to 0 as defaults for (int i = 0; i < this->getNumInputs(); i++) { pUncalibratedData->setElement(i, (double)0); pSampledData->setElement(i, (double)0); } for (int i = 0; i < this->getNumOutputs(); i++) { pCalibratedData->setElement(i, (double)0); } // create an averager for each input line (also feeds off the input variable) averagers = new ExpandableList<Averager>( this->getNumInputs() ); shared_ptr<Variable> inputVariable; for (int inputIndex=0;inputIndex<this->getNumInputs();inputIndex++) { if (this->getInputVariable(inputIndex, &inputVariable)) { shared_ptr<Averager> averager(new Averager(inputVariable)); averagers->addReference(inputIndex, averager); } } // announce the presence of the calibrator Datum announceData(M_DICTIONARY, 2); announceData.addElement(CALIBRATOR_NAME,uniqueCalibratorName); // char announceData.addElement(CALIBRATOR_ACTION,CALIBRATOR_ACTION_IDENTIFY_SELF); announce(announceData); // announce things here using method from Announcable initialized = true; }
Datum StandardDynamicStimulus::getCurrentAnnounceDrawData() { Datum announceData(M_DICTIONARY, 5); announceData.addElement(STIM_NAME, tag); announceData.addElement(STIM_ACTION, STIM_ACTION_DRAW); announceData.addElement(STIM_TYPE, "standard_dynamic_stimulus"); announceData.addElement("start_time", getStartTime()); return announceData; }
// override of base class to provide more info Datum DisplayBitCodeStimulus::getCurrentAnnounceDrawData() { Datum announceData(M_DICTIONARY, 2); announceData.addElement(STIM_NAME, getTag()); // char announceData.addElement("bit_code",Datum((long)(*code_variable))); return (announceData); }
// method to announce details about each sample that is acquired for calibration void Calibrator::announceCalibrationSample(int outputIndex, Datum SampledData, Datum DesiredOutputData, Datum CalibratedOutputData, MWTime timeOfSampleUS) { Datum announceData(M_DICTIONARY, 3); announceData.addElement(CALIBRATOR_NAME,uniqueCalibratorName); // char announceData.addElement(CALIBRATOR_ACTION,CALIBRATOR_ACTION_SAMPLE); announceData.addElement("outputIndex",(long)outputIndex); if (VERBOSE_EYE_CALIBRATORS) mprintf("mCalibrator::announceCalibrationSample Announcing now"); announce(announceData); // announce things here using method from Announcable }
// method to announce details about each sample that is acquired for calibration void EyeCalibrator::announceCalibrationSample(int outputIndex, Datum SampledData, Datum DesiredOutputData, Datum CalibratedOutputData, MWTime timeOfSampleUS) { // this method expects the H sample to arrive first and then the V sample if (outputIndex == outputIndexH) { // store data and wait for v (announce as pair) desiredH = DesiredOutputData; calibratedH = CalibratedOutputData; sampledH = (&SampledData)->getElement(inputIndexH); HsampleTime = timeOfSampleUS; return; } if (outputIndex == outputIndexV) { // store data and wait for v (announce as pair) desiredV = DesiredOutputData; calibratedV = CalibratedOutputData; sampledV = (&SampledData)->getElement(inputIndexV); if ( (std::abs(timeOfSampleUS-HsampleTime)) > 10000) { mwarning(M_SYSTEM_MESSAGE_DOMAIN, "Calibrator sample announce detected large time differential between h and v samples. Values likely inaccurate."); } } Datum announceData(M_DICTIONARY, 5); announceData.addElement(CALIBRATOR_NAME,uniqueCalibratorName); // char announceData.addElement(CALIBRATOR_ACTION,CALIBRATOR_ACTION_SAMPLE); { Datum temp(M_LIST, 2); temp.setElement(0,sampledH); temp.setElement(1,sampledV); announceData.addElement(CALIBRATOR_SAMPLE_SAMPLED_HV,temp); // input values } { Datum temp(M_LIST, 2); temp.setElement(0,desiredH); temp.setElement(1,desiredV); announceData.addElement(CALIBRATOR_SAMPLE_DESIRED_HV,temp); // gold standard values } { Datum temp(M_LIST, 2); temp.setElement(0,calibratedH); temp.setElement(1,calibratedV); announceData.addElement(CALIBRATOR_SAMPLE_CALIBRATED_HV,temp); // values produced from input values using current calibration } //announceData.addElement("JJDtest",desiredH); // values produced from input values using current calibration if (VERBOSE_EYE_CALIBRATORS) mprintf("mCalibrator::announceCalibrationSample Announcing now"); announce(announceData); // announce things here using method from Announcable }
Datum CircularFixationPoint::getCurrentAnnounceDrawData() { Datum announceData(CircleStimulus::getCurrentAnnounceDrawData()); announceData.addElement(STIM_TYPE, "circular_fixation_point"); // CircularRegionTrigger parameters announceData.addElement("center_x", centerx->getValue().getFloat()); announceData.addElement("center_y", centery->getValue().getFloat()); announceData.addElement("width", width->getValue().getFloat()); return announceData; }
void EyeCalibrator::announceCalibrationUpdate() { Datum announceData(M_DICTIONARY, 4); announceData.addElement(CALIBRATOR_NAME,uniqueCalibratorName); announceData.addElement(CALIBRATOR_ACTION,CALIBRATOR_ACTION_UPDATE_PARAMS); Datum paramsH = (fitableFunctions->getElement(HfunctionIndex))->getParameters(); announceData.addElement(CALIBRATOR_PARAMS_H,paramsH); // M_LIST Datum paramsV = (fitableFunctions->getElement(VfunctionIndex))->getParameters(); announceData.addElement(CALIBRATOR_PARAMS_V,paramsV); // M_LIST announce(announceData); // announce things here using method from Announcable (will set values in announce variable) }