PowerSupplyRecordPtr PowerSupplyRecord::create( string const & recordName) { FieldCreatePtr fieldCreate = getFieldCreate(); StandardFieldPtr standardField = getStandardField(); PVDataCreatePtr pvDataCreate = getPVDataCreate(); StructureConstPtr topStructure = fieldCreate->createFieldBuilder()-> add("alarm",standardField->alarm()) -> add("timeStamp",standardField->timeStamp()) -> addNestedStructure("power") -> add("value",pvDouble) -> endNested()-> addNestedStructure("voltage") -> add("value",pvDouble) -> endNested()-> addNestedStructure("current") -> add("value",pvDouble) -> endNested()-> createStructure(); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(topStructure); PowerSupplyRecordPtr pvRecord( new PowerSupplyRecord(recordName,pvStructure)); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }
PowerSupplyPtr PowerSupply::create( string const & recordName, PVStructurePtr const & pvStructure) { PowerSupplyPtr pvRecord( new PowerSupply(recordName,pvStructure)); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }
PVRecordPtr PVRecord::create( string const &recordName, PVStructurePtr const & pvStructure) { PVRecordPtr pvRecord(new PVRecord(recordName,pvStructure)); if(!pvRecord->init()) { pvRecord.reset(); } return pvRecord; }
ExampleLinkPtr ExampleLink::create( string const & recordName, string const & providerName, string const & channelName) { PVStructurePtr pvStructure = getStandardPVField()->scalarArray( pvDouble,"alarm.timeStamp"); ExampleLinkPtr pvRecord( new ExampleLink( recordName,providerName,channelName,pvStructure)); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }
NDArrayRecordPtr NDArrayRecord::create( string const & recordName) { nt::NTNDArrayBuilderPtr builder = nt::NTNDArray::createBuilder(); builder->addDescriptor()->addTimeStamp()->addAlarm()->addDisplay(); NDArrayRecordPtr pvRecord( new NDArrayRecord(recordName,builder->createPVStructure())); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }
ExampleGetLinkRecordPtr ExampleGetLinkRecord::create( PvaClientPtr const & pva, string const & recordName, string const & providerName, string const & channelName) { PVStructurePtr pvStructure = getStandardPVField()->scalarArray(pvDouble,"timeStamp"); ExampleGetLinkRecordPtr pvRecord( new ExampleGetLinkRecord( recordName,pvStructure)); if(!pvRecord->init(pva,channelName,providerName)) pvRecord.reset(); return pvRecord; }
NTNDArrayRecordPtr NTNDArrayRecord::create( string const & recordName) { PVStructurePtr pvStructure = NTNDArray::createBuilder()-> addTimeStamp()->createPVStructure(); NTNDArrayRecordPtr pvRecord( new NTNDArrayRecord(recordName,pvStructure)); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }
void PVRecordField::removeListener(PVListenerPtr const & pvListener) { PVRecordPtr pvRecord(this->pvRecord.lock()); if(pvRecord && pvRecord->getTraceLevel()>1) { cout << "PVRecordField::removeListener() " << getFullName() << endl; } std::list<PVListenerWPtr>::iterator iter; for (iter = pvListenerList.begin(); iter!=pvListenerList.end(); iter++ ) { PVListenerPtr listener = iter->lock(); if(!listener.get()) continue; if(listener.get()==pvListener.get()) { pvListenerList.erase(iter); return; } } }
void PVRecordField::init() { fullFieldName = pvField.lock()->getFieldName(); PVRecordStructurePtr pvParent(parent.lock()); while(pvParent) { string parentName = pvParent->getPVField()->getFieldName(); if(parentName.size()>0) { fullFieldName = pvParent->getPVField()->getFieldName() + '.' + fullFieldName; } pvParent = pvParent->getParent(); } PVRecordPtr pvRecord(this->pvRecord.lock()); if(fullFieldName.size()>0) { fullName = pvRecord->getRecordName() + '.' + fullFieldName; } else { fullName = pvRecord->getRecordName(); } pvField.lock()->setPostHandler(shared_from_this()); }
RecordListRecordPtr RecordListRecord::create( std::string const & recordName) { FieldCreatePtr fieldCreate = getFieldCreate(); PVDataCreatePtr pvDataCreate = getPVDataCreate(); StructureConstPtr topStructure = fieldCreate->createFieldBuilder()-> addNestedStructure("argument")-> add("database",pvString)-> add("regularExpression",pvString)-> endNested()-> addNestedStructure("result") -> add("status",pvString) -> addArray("names",pvString) -> endNested()-> createStructure(); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(topStructure); RecordListRecordPtr pvRecord( new RecordListRecord(recordName,pvStructure)); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }
ExampleHelloPtr ExampleHello::create( string const & recordName) { StandardFieldPtr standardField = getStandardField(); FieldCreatePtr fieldCreate = getFieldCreate(); PVDataCreatePtr pvDataCreate = getPVDataCreate(); StructureConstPtr topStructure = fieldCreate->createFieldBuilder()-> addNestedStructure("argument")-> add("value",pvString)-> endNested()-> addNestedStructure("result") -> add("value",pvString) -> add("timeStamp",standardField->timeStamp()) -> endNested()-> createStructure(); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(topStructure); ExampleHelloPtr pvRecord( new ExampleHello(recordName,pvStructure)); if(!pvRecord->init()) pvRecord.reset(); return pvRecord; }