00001 #ifndef asmDATA_H
00002 #define asmDATA_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __cplusplus
00020 #error This is a C++ include file and cannot be used from plain C
00021 #endif
00022
00023 typedef const char *asmDevice_t;
00024 typedef const char *asmTag_t;
00025 typedef const char *asmField_t;
00026
00027 #include <eccs.h>
00028 #include <eccsDB_TABLE.h>
00029
00030 typedef enum
00031 {
00032 asmDATA_QUALITY_OK = 1,
00033 asmDATA_QUALITY_OLD,
00034 asmDATA_QUALITY_DEGRADED,
00035 asmDATA_QUALITY_FAIL
00036 } asmDATA_QUALITY_t;
00037
00038 typedef struct
00039 {
00040 vltBYTES20 tag;
00041 vltBYTES8 loc;
00042 vltBYTES48 description;
00043 vltBYTES16 unit;
00044 ccsTIMEVAL timestamp;
00045 vltDOUBLE interval_stat;
00046 vltDOUBLE value;
00047 vltDOUBLE average;
00048 vltDOUBLE minimum;
00049 vltDOUBLE maximum;
00050 vltDOUBLE deviation;
00051 } asmDATA_RECORD_t;
00052
00053 #if 0
00054
00055 ccsCOMPL_STAT asmReadRecord(asmDevice_t dev, asmTag_t tag,
00056 asmDATA_RECORD_t &dataRecord,
00057 ccsENVNAME environment = asmENVIRONMENT);
00058 #endif
00059
00060 class asmDATA_TABLE: public eccsDB_TABLE_RECORD
00061 {
00062 public:
00063 asmDATA_RECORD_t dataRecord;
00064
00065 ccsCOMPL_STAT Unpack(void *pBuffer) {
00066 char *buffer = reinterpret_cast<char *>(pBuffer);
00067
00068 memcpy(&dataRecord.tag, buffer,sizeof(dataRecord.tag)); buffer+=sizeof(dataRecord.tag);
00069 memcpy(&dataRecord.loc, buffer,sizeof(dataRecord.loc)); buffer+=sizeof(dataRecord.loc);
00070 memcpy(&dataRecord.description,buffer,sizeof(dataRecord.description)); buffer+=sizeof(dataRecord.description);
00071 memcpy(&dataRecord.unit, buffer,sizeof(dataRecord.unit)); buffer+=sizeof(dataRecord.unit);
00072 memcpy(&dataRecord.timestamp, buffer,sizeof(dataRecord.timestamp)); buffer+=sizeof(dataRecord.timestamp);
00073 memcpy(&dataRecord.interval_stat,buffer,sizeof(dataRecord.interval_stat));buffer+=sizeof(dataRecord.interval_stat);
00074 memcpy(&dataRecord.value, buffer,sizeof(dataRecord.value)); buffer+=sizeof(dataRecord.value);
00075 memcpy(&dataRecord.average, buffer,sizeof(dataRecord.average)); buffer+=sizeof(dataRecord.average);
00076 memcpy(&dataRecord.minimum, buffer,sizeof(dataRecord.minimum)); buffer+=sizeof(dataRecord.minimum);
00077 memcpy(&dataRecord.maximum, buffer,sizeof(dataRecord.maximum)); buffer+=sizeof(dataRecord.maximum);
00078 memcpy(&dataRecord.deviation, buffer,sizeof(dataRecord.deviation)); buffer+=sizeof(dataRecord.deviation);
00079 return SUCCESS;
00080 }
00081
00082 ccsCOMPL_STAT Pack(void *buffer) {
00083 int size;
00084 dbFillBuf((char**)&buffer, (char*)&dataRecord.tag, &size, dbBYTES20);
00085 dbFillBuf((char**)&buffer, (char*)&dataRecord.loc, &size, dbBYTES8);
00086 dbFillBuf((char**)&buffer, (char*)&dataRecord.description, &size, dbBYTES48);
00087 dbFillBuf((char**)&buffer, (char*)&dataRecord.unit, &size, dbBYTES16);
00088 dbFillBuf((char**)&buffer, (char*)&dataRecord.timestamp, &size, dbABS_TIME);
00089 dbFillBuf((char**)&buffer, (char*)&dataRecord.interval_stat, &size, dbDOUBLE);
00090 dbFillBuf((char**)&buffer, (char*)&dataRecord.value, &size, dbDOUBLE);
00091 dbFillBuf((char**)&buffer, (char*)&dataRecord.average, &size, dbDOUBLE);
00092 dbFillBuf((char**)&buffer, (char*)&dataRecord.maximum, &size, dbDOUBLE);
00093 dbFillBuf((char**)&buffer, (char*)&dataRecord.minimum, &size, dbDOUBLE);
00094 dbFillBuf((char**)&buffer, (char*)&dataRecord.deviation, &size, dbDOUBLE);
00095 return SUCCESS;
00096 }
00097 };
00098
00099
00100 class asmDATA: public eccsERROR_CLASS
00101 {
00102 public:
00103 asmDATA(asmDevice_t dev, ccsENVNAME environment = asmENVIRONMENT);
00104 ~asmDATA();
00105
00106 ccsCOMPL_STAT SnapTable();
00107 ccsCOMPL_STAT GetRecord(asmTag_t tag, asmDATA_RECORD_t &dataRecord);
00108 ccsCOMPL_STAT ReadRecord(asmTag_t tag, asmDATA_RECORD_t &dataRecord);
00109
00110 private:
00111 char devName[20];
00112 asmDATA_TABLE *data;
00113 eccsDB_TABLE<asmDATA_TABLE> *DB_data;
00114 };
00115
00116 #endif