11 #include <pv/standardField.h> 12 #include <pv/standardPVField.h> 13 #include <pv/timeStamp.h> 14 #include <pv/pvTimeStamp.h> 16 #include <pv/pvAlarm.h> 17 #include <pv/pvAccess.h> 18 #include <pv/serverContext.h> 19 #include <pv/rpcService.h> 22 #include <epicsExport.h> 23 #define epicsExportSharedSymbols 29 namespace epics {
namespace pvDatabase {
31 PvdbcrScalarRecord::PvdbcrScalarRecord(
32 std::string
const & recordName,epics::pvData::PVStructurePtr
const & pvStructure,
33 int asLevel,std::string
const & asGroup)
34 : PVRecord(recordName,pvStructure,asLevel,asGroup)
38 std::string
const & recordName,std::string
const & scalarType,
39 int asLevel,std::string
const & asGroup)
41 ScalarType st = epics::pvData::ScalarTypeFunc::getScalarType(scalarType);
42 FieldCreatePtr fieldCreate = getFieldCreate();
43 StandardFieldPtr standardField = getStandardField();
44 PVDataCreatePtr pvDataCreate = getPVDataCreate();
45 StructureConstPtr top = fieldCreate->createFieldBuilder()->
47 add(
"timeStamp",standardField->timeStamp()) ->
48 add(
"alarm",standardField->alarm()) ->
50 PVStructurePtr pvStructure = pvDataCreate->createPVStructure(top);
52 pvRecord->initPVRecord();
57 static const iocshArg arg0 = {
"recordName", iocshArgString };
58 static const iocshArg arg1 = {
"scalarType", iocshArgString };
59 static const iocshArg arg2 = {
"asLevel", iocshArgInt };
60 static const iocshArg arg3 = {
"asGroup", iocshArgString };
61 static const iocshArg *args[] = {&arg0,&arg1,&arg2,&arg3};
63 static const iocshFuncDef pvdbcrScalarFuncDef = {
"pvdbcrScalarRecord", 4,args};
65 static void pvdbcrScalarCallFunc(
const iocshArgBuf *args)
67 char *sval = args[0].sval;
69 throw std::runtime_error(
"pvdbcrScalarRecord recordName not specified");
71 string recordName = string(sval);
74 throw std::runtime_error(
"pvdbcrScalarRecord scalarType not specified");
76 string scalarType = string(sval);
77 int asLevel = args[2].ival;
78 string asGroup(
"DEFAULT");
81 asGroup = string(sval);
86 record->setAsLevel(asLevel);
87 record->setAsGroup(asGroup);
88 bool result = master->addRecord(record);
89 if(!result) cout <<
"recordname " << recordName <<
" not added" << endl;
92 static void pvdbcrScalarRecord(
void)
94 static int firstTime = 1;
97 iocshRegister(&pvdbcrScalarFuncDef, pvdbcrScalarCallFunc);
epicsExportRegistrar(pvdbcrScalarRecord)
static PvdbcrScalarRecordPtr create(std::string const &recordName, std::string const &scalarType, int asLevel=0, std::string const &asGroup=std::string("DEFAULT"))
Create a record.
std::tr1::shared_ptr< PVDatabase > PVDatabasePtr
static PVDatabasePtr getMaster()
Get the master database.
PvdbcrScalarRecord creates a record with a scalar value, alarm, and timeStamp.
std::tr1::shared_ptr< PvdbcrScalarRecord > PvdbcrScalarRecordPtr