134 lines
3.0 KiB
C++
Executable File
134 lines
3.0 KiB
C++
Executable File
#include "cdevMonitorTable.h"
|
|
#include "cdevTagMap.h"
|
|
|
|
cdevTagMap myMap;
|
|
|
|
class myMonitorTable : public cdevMonitorTable
|
|
{
|
|
public :
|
|
int fireCallback (cdevMessage * message )
|
|
{
|
|
char * str;
|
|
size_t len;
|
|
cdevMessage message2;
|
|
cdevData *data = message->getData();
|
|
if(data) myMap.localToRemote(*data);
|
|
|
|
message->streamOut(&str, &len);
|
|
message2.streamIn(str, len);
|
|
message2.asciiDump();
|
|
if(str!=NULL) delete str;
|
|
|
|
if(data) myMap.remoteToLocal(*data);
|
|
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
myMonitorTable mTbl;
|
|
|
|
|
|
char * tagNames[7]=
|
|
{
|
|
"value",
|
|
"status",
|
|
"controlHigh",
|
|
"controlLow",
|
|
"time",
|
|
"alarmHigh",
|
|
"alarmLow"
|
|
};
|
|
|
|
int tagValues[7]=
|
|
{
|
|
9001,
|
|
9002,
|
|
9003,
|
|
9004,
|
|
9005,
|
|
9006,
|
|
9007
|
|
};
|
|
|
|
char * deviceList[10] =
|
|
{
|
|
"device1",
|
|
"device2",
|
|
"device3",
|
|
"device4",
|
|
"device5",
|
|
"device6",
|
|
"device7",
|
|
"device8",
|
|
"device9",
|
|
"device10"
|
|
};
|
|
|
|
int main()
|
|
{
|
|
cdevMessage * message;
|
|
cdevData context;
|
|
cdevData * triggers[10];
|
|
cdevData trigger;
|
|
|
|
myMap.updateTagMap(tagNames, tagValues, 7);
|
|
|
|
cdevData::insertTag(9001, "value1");
|
|
cdevData::insertTag(9002, "status1");
|
|
cdevData::insertTag(9003, "controlHigh1");
|
|
cdevData::insertTag(9004, "controlLow1");
|
|
cdevData::insertTag(9005, "time1");
|
|
cdevData::insertTag(9006, "alarmHigh1");
|
|
cdevData::insertTag(9007, "alarmLow1");
|
|
|
|
context.insert("value", 3);
|
|
context.insert("status", 3);
|
|
context.insert("controlHigh", 2);
|
|
context.insert("controlLow", 2);
|
|
context.insert("time", 1);
|
|
context.insert("alarmHigh", 1);
|
|
context.insert("alarmLow", 1);
|
|
|
|
trigger.insert("value", 100);
|
|
trigger.insert("status", 0);
|
|
trigger.insert("controlHigh", 1000);
|
|
trigger.insert("controlLow", 0);
|
|
trigger.insert("time", 100);
|
|
trigger.insert("alarmHigh", 999);
|
|
trigger.insert("alarmLow", 1);
|
|
|
|
for(int i=0; i<10; i++) triggers[i] = &trigger;
|
|
message = new cdevMessage(1, 1, 0, 0, 0, 0, 0, 10, deviceList, "monitorOn attrib", NULL, &context);
|
|
cdevMessage message2(*message);
|
|
|
|
message2.setCancelTransIndex(message2.getTransIndex());
|
|
mTbl.insertMonitor(message, triggers, 10);
|
|
|
|
fprintf(stdout, "***************** Firing a monitor *****************\n");
|
|
mTbl.fireMonitor ("device1", "attrib", "controlHigh", &trigger);
|
|
|
|
mTbl.removeMonitor(&message2);
|
|
|
|
fprintf(stdout, "*************** Firing Four Monitors ***************\n");
|
|
mTbl.fireMonitor ("device1", "attrib", "controlHigh", &trigger);
|
|
mTbl.fireMonitor ("device2", "attrib", "controlHigh", &trigger);
|
|
mTbl.fireMonitor ("device3", "attrib", "controlHigh", &trigger);
|
|
mTbl.fireMonitor ("device10", "attrib", "controlHigh", &trigger);
|
|
|
|
context.remove();
|
|
context.insert("value", 3);
|
|
|
|
cdevMessage *message3 = new cdevMessage(2, 2, 0, 0, 0, 0, 0, 10, deviceList, "monitorOn attrib", NULL, &context);
|
|
mTbl.insertMonitor(message3, &trigger);
|
|
|
|
for(i=0; i<100; i++)
|
|
{
|
|
trigger.insert("value", i);
|
|
mTbl.fireMonitor("device1", "attrib", "value", &trigger);
|
|
}
|
|
|
|
mTbl.removeClientMonitors(2);
|
|
mTbl.fireMonitor("device1", "attrib", "value", &trigger);
|
|
return 0;
|
|
}
|