bool NTScalar::attachControl(PVControl &pvControl) const { PVStructurePtr ctrl = getControl(); if (ctrl) return pvControl.attach(ctrl); else return false; }
void test_ntscalarArray() { testDiag("test_ntscalarArray"); NTScalarArrayBuilderPtr builder = NTScalarArray::createBuilder(); testOk(builder.get() != 0, "Got builder"); NTScalarArrayPtr ntScalarArray = builder-> value(pvInt)-> addDescriptor()-> addAlarm()-> addTimeStamp()-> addDisplay()-> addControl()-> create(); testOk1(ntScalarArray.get() != 0); testOk1(ntScalarArray->getPVStructure().get() != 0); testOk1(ntScalarArray->getValue().get() != 0); testOk1(ntScalarArray->getDescriptor().get() != 0); testOk1(ntScalarArray->getAlarm().get() != 0); testOk1(ntScalarArray->getTimeStamp().get() != 0); testOk1(ntScalarArray->getDisplay().get() != 0); testOk1(ntScalarArray->getControl().get() != 0); // // example how to set values // PVIntArray::svector newValues; newValues.push_back(1); newValues.push_back(2); newValues.push_back(8); PVIntArrayPtr pvValueField = ntScalarArray->getValue<PVIntArray>(); pvValueField->replace(freeze(newValues)); // // example how to get values // PVIntArray::const_svector values(pvValueField->view()); testOk1(values.size() == 3); testOk1(values[0] == 1); testOk1(values[1] == 2); testOk1(values[2] == 8); // // timeStamp ops // PVTimeStamp pvTimeStamp; if (ntScalarArray->attachTimeStamp(pvTimeStamp)) { testPass("timeStamp attach"); // example how to set current time TimeStamp ts; ts.getCurrent(); pvTimeStamp.set(ts); // example how to get EPICS time TimeStamp ts2; pvTimeStamp.get(ts2); testOk1(ts2.getEpicsSecondsPastEpoch() != 0); } else testFail("timeStamp attach fail"); // // alarm ops // PVAlarm pvAlarm; if (ntScalarArray->attachAlarm(pvAlarm)) { testPass("alarm attach"); // example how to set an alarm Alarm alarm; alarm.setStatus(deviceStatus); alarm.setSeverity(minorAlarm); alarm.setMessage("simulation alarm"); pvAlarm.set(alarm); } else testFail("alarm attach fail"); // // display ops // PVDisplay pvDisplay; if (ntScalarArray->attachDisplay(pvDisplay)) { testPass("display attach"); // example how to set an display Display display; display.setLow(-15); display.setHigh(15); display.setDescription("This is a test scalar array"); display.setFormat("%d"); display.setUnits("A"); pvDisplay.set(display); } else testFail("display attach fail"); // // control ops // PVControl pvControl; if (ntScalarArray->attachControl(pvControl)) { testPass("control attach"); // example how to set an control Control control; control.setLow(-10); control.setHigh(10); control.setMinStep(1); pvControl.set(control); } else testFail("control attach fail"); // // set descriptor // ntScalarArray->getDescriptor()->put("This is a test NTScalarArray"); // dump ntScalarArray std::cout << *ntScalarArray->getPVStructure() << std::endl; }
void test_ntscalar() { testDiag("test_ntscalar"); NTScalarBuilderPtr builder = NTScalar::createBuilder(); testOk(builder.get() != 0, "Got builder"); NTScalarPtr ntScalar = builder-> value(pvInt)-> addDescriptor()-> addAlarm()-> addTimeStamp()-> addDisplay()-> addControl()-> add("valueAlarm",standardField->intAlarm()) -> create(); testOk1(ntScalar.get() != 0); testOk1(NTScalar::is_a(ntScalar->getPVStructure())); testOk1(NTScalar::isCompatible(ntScalar->getPVStructure())); testOk1(ntScalar->getPVStructure().get() != 0); testOk1(ntScalar->getValue().get() != 0); testOk1(ntScalar->getDescriptor().get() != 0); testOk1(ntScalar->getAlarm().get() != 0); testOk1(ntScalar->getTimeStamp().get() != 0); testOk1(ntScalar->getDisplay().get() != 0); testOk1(ntScalar->getControl().get() != 0); // // example how to set a value // ntScalar->getValue<PVInt>()->put(12); // // example how to get a value // int32 value = ntScalar->getValue<PVInt>()->get(); testOk1(value == 12); // // timeStamp ops // PVTimeStamp pvTimeStamp; if (ntScalar->attachTimeStamp(pvTimeStamp)) { testPass("timeStamp attach"); // example how to set current time TimeStamp ts; ts.getCurrent(); pvTimeStamp.set(ts); // example how to get EPICS time TimeStamp ts2; pvTimeStamp.get(ts2); testOk1(ts2.getEpicsSecondsPastEpoch() != 0); } else testFail("timeStamp attach fail"); // // alarm ops // PVAlarm pvAlarm; if (ntScalar->attachAlarm(pvAlarm)) { testPass("alarm attach"); // example how to set an alarm Alarm alarm; alarm.setStatus(deviceStatus); alarm.setSeverity(minorAlarm); alarm.setMessage("simulation alarm"); pvAlarm.set(alarm); } else testFail("alarm attach fail"); // // display ops // PVDisplay pvDisplay; if (ntScalar->attachDisplay(pvDisplay)) { testPass("display attach"); // example how to set an display Display display; display.setLow(-15); display.setHigh(15); display.setDescription("This is a test scalar"); display.setFormat("%d"); display.setUnits("A"); pvDisplay.set(display); } else testFail("display attach fail"); // // control ops // PVControl pvControl; if (ntScalar->attachControl(pvControl)) { testPass("control attach"); // example how to set an control Control control; control.setLow(-10); control.setHigh(10); control.setMinStep(1); pvControl.set(control); } else testFail("control attach fail"); // // set descriptor // ntScalar->getDescriptor()->put("This is a test NTScalar"); // dump ntScalar std::cout << *ntScalar->getPVStructure() << std::endl; }