builds and tests work. must still look carefully

This commit is contained in:
Marty Kraimer
2012-08-02 09:47:19 -04:00
parent 42c6c2dc38
commit 0f251f5eb1
8 changed files with 213 additions and 284 deletions

View File

@@ -23,22 +23,19 @@
#include <pv/nt.h>
#include <epicsExit.h>
#include <pv/CDRMonitor.h>
using namespace epics::pvData;
static FieldCreate * fieldCreate = 0;
static PVDataCreate * pvDataCreate = 0;
static StandardField *standardField = 0;
static StandardPVField *standardPVField = 0;
static NTField *ntField = 0;
static PVNTField *pvntField = 0;
static String builder("");
static FieldCreatePtr fieldCreate = getFieldCreate();
static PVDataCreatePtr pvDataCreate = getPVDataCreate();
static StandardFieldPtr standardField = getStandardField();
static StandardPVFieldPtr standardPVField = getStandardPVField();
static NTFieldPtr ntField = NTField::get();
static PVNTFieldPtr pvntField = PVNTField::get();
static String builder;
static void testNTField(FILE * fd)
{
StructureConstPtr structureConstPtr = ntField->createEnumerated("value");
StructureConstPtr structureConstPtr = ntField->createEnumerated();
builder.clear();
structureConstPtr->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
@@ -75,17 +72,17 @@ static void testNTField(FILE * fd)
assert(ntField->isControl(structureConstPtr));
StructureArrayConstPtr structureArrayConstPtr
= ntField->createEnumeratedArray("value");
= ntField->createEnumeratedArray();
builder.clear();
structureArrayConstPtr->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
structureArrayConstPtr = ntField->createTimeStampArray("value");
structureArrayConstPtr = ntField->createTimeStampArray();
builder.clear();
structureArrayConstPtr->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
structureArrayConstPtr = ntField->createAlarmArray("value");
structureArrayConstPtr = ntField->createAlarmArray();
builder.clear();
structureArrayConstPtr->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
@@ -93,40 +90,44 @@ static void testNTField(FILE * fd)
static void testPVNTField(FILE * fd)
{
String choices[] = {"one","two","three"};
PVStructure::shared_pointer pvStructure = PVStructure::shared_pointer(
pvntField->createEnumerated(0,"enumerated",choices, 3));
StringArray choices;
choices.resize(3);
choices[0] = "one";
choices[1] = "two";
choices[2] = "three";
PVStructurePtr pvStructure = PVStructurePtr(
pvntField->createEnumerated(choices));
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(ntField->isEnumerated(pvStructure->getStructure()));
pvStructure = PVStructure::shared_pointer(pvntField->createTimeStamp(0));
pvStructure = PVStructurePtr(pvntField->createTimeStamp());
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(ntField->isTimeStamp(pvStructure->getStructure()));
pvStructure = PVStructure::shared_pointer(pvntField->createAlarm(0));
pvStructure = PVStructurePtr(pvntField->createAlarm());
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(ntField->isAlarm(pvStructure->getStructure()));
pvStructure = PVStructure::shared_pointer(pvntField->createDisplay(0));
pvStructure = PVStructurePtr(pvntField->createDisplay());
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(ntField->isDisplay(pvStructure->getStructure()));
pvStructure = PVStructure::shared_pointer(pvntField->createAlarmLimit(0));
pvStructure = PVStructurePtr(pvntField->createAlarmLimit());
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(ntField->isAlarmLimit(pvStructure->getStructure()));
PVStructureArray::shared_pointer pvStructureArray = PVStructureArray::shared_pointer(
pvntField->createEnumeratedArray(0,"enumArray"));
PVStructureArrayPtr pvStructureArray = PVStructureArrayPtr(
pvntField->createEnumeratedArray());
builder.clear();
pvStructureArray->toString(&builder);
fprintf(fd,"\n%s\n",builder.c_str());
@@ -134,8 +135,8 @@ static void testPVNTField(FILE * fd)
pvStructureArray->getStructureArray()->getStructure()->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
pvStructureArray = PVStructureArray::shared_pointer(
pvntField->createTimeStampArray(0,"timeStampArray"));
pvStructureArray = PVStructureArrayPtr(
pvntField->createTimeStampArray());
builder.clear();
pvStructureArray->toString(&builder);
fprintf(fd,"\n%s\n",builder.c_str());
@@ -143,8 +144,8 @@ static void testPVNTField(FILE * fd)
pvStructureArray->getStructureArray()->getStructure()->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
pvStructureArray = PVStructureArray::shared_pointer(
pvntField->createAlarmArray(0,"alarmArray"));
pvStructureArray = PVStructureArrayPtr(
pvntField->createAlarmArray());
builder.clear();
pvStructureArray->toString(&builder);
fprintf(fd,"\n%s\n",builder.c_str());
@@ -161,16 +162,8 @@ int main(int argc,char *argv[])
if(fileName!=0 && fileName[0]!=0) {
fd = fopen(fileName,"w+");
}
fieldCreate = getFieldCreate();
pvDataCreate = getPVDataCreate();
standardField = getStandardField();
standardPVField = getStandardPVField();
ntField = NTField::get();
pvntField = PVNTField::get();
testNTField(fd);
testPVNTField(fd);
epicsExitCallAtExits();
CDRMonitor::get().show(fd,true);
return(0);
}

View File

@@ -23,53 +23,53 @@
#include <pv/nt.h>
#include <epicsExit.h>
#include <pv/CDRMonitor.h>
using namespace epics::pvData;
static PVDataCreate * pvDataCreate = 0;
static NTField *ntField = 0;
static PVNTField *pvntField = 0;
static String builder("");
static PVDataCreatePtr pvDataCreate = getPVDataCreate();
static NTFieldPtr ntField = NTField::get();
static PVNTFieldPtr pvntField = PVNTField::get();
static String builder;
static void test(FILE * fd)
{
PVStructure::shared_pointer pvStructure = NTNameValue::create(true,true,true);
NTNameValuePtr ntNameValue = NTNameValue::create(true,true,true);
PVStructurePtr pvStructure = ntNameValue->getPVStructure();
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
builder.clear();
pvStructure->getStructure()->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
NTNameValue ntNameValue(pvStructure);
PVStringArray *names = ntNameValue.getNames();
PVStringArray *values = ntNameValue.getValues();
int n = 2;
String name[] = {String("name 0"),String("name 1")};
String value[] = {String("value 0"),String("value 1")};
PVStringArrayPtr names = ntNameValue->getNames();
PVStringArrayPtr values = ntNameValue->getValues();
size_t n = 2;
StringArray name;
StringArray value;
name.resize(n);
value.resize(n);
name[0] = "name 0";
name[1] = "name 1";
value[0] = "value 0";
value[1] = "value 1";
names->put(0,n,name,0);
values->put(0,n,value,0);
PVString *function = ntNameValue.getFunction();
PVStringPtr function = ntNameValue->getFunction();
function->put("test");
PVAlarm pvAlarm;
ntNameValue.attachAlarm(pvAlarm);
ntNameValue->attachAlarm(pvAlarm);
Alarm alarm;
alarm.setMessage("test alarm");
alarm.setSeverity(majorAlarm);
alarm.setStatus(clientStatus);
pvAlarm.set(alarm);
PVTimeStamp pvTimeStamp;
ntNameValue.attachTimeStamp(pvTimeStamp);
ntNameValue->attachTimeStamp(pvTimeStamp);
TimeStamp timeStamp(1000,1000,10);
pvTimeStamp.set(timeStamp);
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(NTNameValue::isNTNameValue(pvStructure.get()));
NTNameValue::shared_pointer pntNameValue
= NTNameValue::shared_pointer(new NTNameValue(pvStructure));
assert(NTNameValue::isNTNameValue(pvStructure));
}
@@ -81,12 +81,7 @@ int main(int argc,char *argv[])
if(fileName!=0 && fileName[0]!=0) {
fd = fopen(fileName,"w+");
}
pvDataCreate = getPVDataCreate();
ntField = NTField::get();
pvntField = PVNTField::get();
test(fd);
epicsExitCallAtExits();
CDRMonitor::get().show(fd,true);
return(0);
}

View File

@@ -23,46 +23,46 @@
#include <pv/nt.h>
#include <epicsExit.h>
#include <pv/CDRMonitor.h>
using namespace epics::pvData;
using std::tr1::static_pointer_cast;
static FieldCreate * fieldCreate = 0;
static PVDataCreate * pvDataCreate = 0;
static NTField *ntField = 0;
static PVNTField *pvntField = 0;
static String builder("");
static FieldCreatePtr fieldCreate = getFieldCreate();
static PVDataCreatePtr pvDataCreate = getPVDataCreate();
static NTFieldPtr ntField = NTField::get();
static PVNTFieldPtr pvntField = PVNTField::get();
static String builder;
static void test(FILE * fd)
{
int n = 2;
FieldConstPtr fields[2];
fields[0] = fieldCreate->createScalarArray("position",pvDouble);
fields[1] = ntField->createAlarmArray("alarms");
PVStructure::shared_pointer pvStructure = NTTable::create(
true,true,true,n,fields);
size_t n = 2;
FieldConstPtrArray fields(n);
StringArray names(n);
names[0] = "position";
names[1] = "alarms";
fields[0] = fieldCreate->createScalarArray(pvDouble);
fields[1] = ntField->createAlarmArray();
NTTablePtr ntTable = NTTable::create(
true,true,true,names,fields);
PVStructurePtr pvStructure = ntTable->getPVStructure();
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
builder.clear();
pvStructure->getStructure()->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
NTTable ntTable(pvStructure);
PVDoubleArray *pvPositions
= static_cast<PVDoubleArray *>(ntTable.getPVField(0));
double positions[2];
PVDoubleArrayPtr pvPositions
= static_pointer_cast<PVDoubleArray>(ntTable->getPVField(0));
DoubleArray positions(2);
positions[0] = 1.0;
positions[1] = 2.0;
pvPositions->put(0,n,positions,0);
PVStructureArray *pvAlarms
= static_cast<PVStructureArray *>(ntTable.getPVField(1));
pvPositions->put(0,2,positions,0);
PVStructureArrayPtr pvAlarms
= static_pointer_cast<PVStructureArray>(ntTable->getPVField(1));
PVAlarm pvAlarm;
Alarm alarm;
PVStructurePtr palarms[n];
for(int i=0; i<n; i++) {
palarms[i] = pvntField->createAlarm(0);
PVStructurePtrArray palarms(n);
for(size_t i=0; i<n; i++) {
palarms[i] = pvntField->createAlarm();
pvAlarm.attach(palarms[i]);
alarm.setMessage("test");
alarm.setSeverity(majorAlarm);
@@ -70,27 +70,26 @@ static void test(FILE * fd)
pvAlarm.set(alarm);
}
pvAlarms->put(0,n,palarms,0);
String labels[n];
labels[0] = pvPositions->getField()->getFieldName();
labels[1] = pvAlarms->getField()->getFieldName();
PVStringArray *label = ntTable.getLabel();
StringArray labels(n);
labels[0] = pvPositions->getFieldName();
labels[1] = pvAlarms->getFieldName();
PVStringArrayPtr label = ntTable->getLabel();
label->put(0,n,labels,0);
PVString *function = ntTable.getFunction();
PVStringPtr function = ntTable->getFunction();
function->put("test");
ntTable.attachAlarm(pvAlarm);
ntTable->attachAlarm(pvAlarm);
alarm.setMessage("test alarm");
alarm.setSeverity(majorAlarm);
alarm.setStatus(clientStatus);
pvAlarm.set(alarm);
PVTimeStamp pvTimeStamp;
ntTable.attachTimeStamp(pvTimeStamp);
ntTable->attachTimeStamp(pvTimeStamp);
TimeStamp timeStamp(1000,1000,10);
pvTimeStamp.set(timeStamp);
builder.clear();
pvStructure->toString(&builder);
fprintf(fd,"%s\n",builder.c_str());
assert(NTTable::isNTTable(pvStructure.get()));
assert(NTTable::isNTTable(pvStructure));
}
@@ -102,13 +101,7 @@ int main(int argc,char *argv[])
if(fileName!=0 && fileName[0]!=0) {
fd = fopen(fileName,"w+");
}
fieldCreate = getFieldCreate();
pvDataCreate = getPVDataCreate();
ntField = NTField::get();
pvntField = PVNTField::get();
test(fd);
epicsExitCallAtExits();
CDRMonitor::get().show(fd,true);
return(0);
}