Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

asmDATA.h

Go to the documentation of this file.
00001 #ifndef asmDATA_H
00002 #define asmDATA_H
00003 /******************************************************************************
00004 * E.S.O. - VLT project
00005 *
00006 * "@(#) $Id: asmDATA.h,v 5.26 2003/01/02 17:44:40 vltsccm Exp $"
00007 *
00008 * who       when      what
00009 * --------  --------  ----------------------------------------------
00010 * rkarban  31/08/99  cast void * buffer to char *
00011 * ssandroc  24/05/97  created
00012 */
00013 
00014 /************************************************************************
00015  * ASM DATA INTERFACE CLASS
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>   // parent class
00028 #include <eccsDB_TABLE.h> // used class
00029 
00030 typedef enum
00031 {
00032     asmDATA_QUALITY_OK = 1, // data ok and up to date
00033     asmDATA_QUALITY_OLD,  // data obsolete (> 1 min old)
00034     asmDATA_QUALITY_DEGRADED, // partial sensor outage
00035     asmDATA_QUALITY_FAIL  // complete sensor outage
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 // public function
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 

Generated on Wed Dec 3 14:52:07 2003 for ATCS API by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001