/* testStandardPVField.cpp */ /** * Copyright - See the COPYRIGHT that is included with this distribution. * EPICS pvData is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. */ /* Author: Marty Kraimer Date: 2012.08 */ #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace epics::pvData; using std::tr1::static_pointer_cast; static bool debug = false; static PVDataCreatePtr pvDataCreate = getPVDataCreate(); static StandardFieldPtr standardField = getStandardField(); static StandardPVFieldPtr standardPVField = getStandardPVField(); static String builder(""); static void print(String name) { if(debug) printf("\n%s\n%s\n",name.c_str(),builder.c_str()); } int main(int, char **) { PVStructurePtr pvStructure = standardPVField->scalar(pvDouble, "alarm,timeStamp,display,control,valueAlarm"); PVDoublePtr pvValue = pvStructure->getDoubleField("value"); pvValue->put(10.0); PVIntPtr pvSeverity = pvStructure->getIntField("alarm.severity"); pvSeverity->put(2); PVStringPtr pvMessage = pvStructure->getStringField("alarm.message"); pvMessage->put("test message"); builder.clear(); pvStructure->toString(&builder); print("scalarTest"); pvStructure = standardPVField->scalar(pvBoolean,"alarm,timeStamp,valueAlarm"); builder.clear(); pvStructure->toString(&builder); print("booleanTest"); StringArray choices; choices.reserve(3); choices.push_back("one"); choices.push_back("two"); choices.push_back("three"); pvStructure = standardPVField->enumerated(choices, "alarm,timeStamp,valueAlarm"); builder.clear(); pvStructure->toString(&builder); print("enumeratedTest"); pvStructure = standardPVField->scalarArray(pvBoolean,"alarm,timeStamp"); builder.clear(); pvStructure->toString(&builder); print("scalarArrayTest"); StructureConstPtr structure = standardField->scalar(pvDouble, "alarm,timeStamp"); pvStructure = standardPVField->structureArray(structure,"alarm,timeStamp"); size_t num = 2; PVStructurePtrArray pvStructures; pvStructures.reserve(num); for(size_t i=0; icreatePVStructure(structure)); } PVStructureArrayPtr pvStructureArray = pvStructure->getStructureArrayField("value"); pvStructureArray->put(0, num, pvStructures, 0); builder.clear(); pvStructure->toString(&builder); print("structureArrayTest"); printf("PASSED\n"); return(0); }