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

actcalCOEFFICIENTS.h

Go to the documentation of this file.
00001 #ifndef actcalCOEFFICIENTS_H
00002 #define actcalCOEFFICIENTS_H
00003 /*******************************************************************************
00004 * E.S.O. - VLT project
00005 #
00006 # "@(#) $Id: actcalCOEFFICIENTS.h,v 1.102 2003/08/12 14:55:12 vltsccm Exp $" 
00007 *
00008 * actcalCoeff.h
00009 *
00010 * who       when      what
00011 * --------  --------  ----------------------------------------------
00012 * kwirenst  04/11/02  Changed name vector.h --> vector
00013 * fdelgado 2001-09-03 Added actcalCALIB_POLYNOM_RECORD struct.
00014 * rabuter  17/05/99  fix order on Pack for AVG_COEFFS
00015 * tcsmgr  13/05/98  reorganize AVG_COEFFS
00016 * lnoethe   10/02/97  - add 'vltDOUBLE rmsVariation,' in the definition
00017 *                       of actcalAVG_COEFFS.
00018 * lnoethe   12/02/97  - rename struct actcalACTIVE_COEFFS to actcalCOEFFS
00019 *                     - remove old struct actcalCOEFFS 
00020 * rabuter   11/10/97  added class actcalINS_ABERR
00021 * 
00022 */
00023 
00024 /************************************************************************
00025 *
00026 *----------------------------------------------------------------------
00027 */
00028 #define _POSIX_SOURCE 1
00029 #include "vltPort.h"
00030 
00031 #include <stdlib.h>
00032 #include <stdio.h>
00033 #include <string.h>
00034 #include <math.h>
00035 
00036 #include "ECCS.h"
00037 #include "eccsTestTools.h" 
00038 #include "eccsDB_ATTR.h" 
00039 #include "eccsDB_TABLE.h"
00040 #include "tif.h"
00041 #include "mswDefines.h"
00042 
00043 #include <vector>
00044 
00045 #include "ccd.h"
00046 
00047 #include "eccsDB_VECTOR.h"
00048 
00049 #include "actcalErrors.h"
00050 #include "actcalDefines.h"
00051 #include "actcalDB_ACCESS.h"
00052 
00053 
00054 /*
00055  * Structure for calibration coefficients table
00056  */
00057 
00058 struct actcalACTIVE_MODES
00059 {
00060     vltLOGICAL   mode[actcalMAX_NUM_MODES];
00061 };
00062 
00063 
00064 struct actcalINS_ABERR_MODULUS
00065 {
00066     vltDOUBLE   modulus[actcalMAX_NUM_MODES];
00067 };
00068 struct actcalINS_ABERR_ANGLE
00069 {
00070     vltDOUBLE   angle[actcalMAX_NUM_MODES];
00071 };
00072 
00073 
00074 struct actcalSINGLE_CALIB_COEFF
00075 {
00076     vltDOUBLE    modulus;
00077     vltDOUBLE    angle;
00078 };
00079 
00080 struct actcalCALIB_COEFFS_RECORD : public eccsDB_TABLE_RECORD 
00081 {
00082   vltDOUBLE                zd;
00083   actcalSINGLE_CALIB_COEFF coeff[actcalMAX_NUM_MODES];
00084 
00085   ccsCOMPL_STAT Unpack( void *buffer ){
00086     memcpy( &zd, buffer, sizeof(vltDOUBLE) );
00087     buffer = (char*)buffer+sizeof(vltDOUBLE);
00088     memcpy( coeff, buffer, 
00089       sizeof(actcalSINGLE_CALIB_COEFF)*actcalMAX_NUM_MODES );
00090     return SUCCESS;
00091   }
00092   
00093   ccsCOMPL_STAT Pack( void *buffer ){
00094     memcpy( buffer, &zd, sizeof(vltDOUBLE) );
00095     buffer = (char*)buffer+sizeof(vltDOUBLE);
00096     memcpy( buffer, coeff, 
00097       sizeof(actcalSINGLE_CALIB_COEFF)*actcalMAX_NUM_MODES );
00098     return(SUCCESS);
00099   }
00100 };
00101 
00102 
00103 struct actcalCALIB_COEFFS 
00104 {
00105     vltINT32                   active[actcalMAX_NUM_MODES];
00106     actcalCALIB_COEFFS_RECORD  coeff[actcalMAX_NUM_ZD_ENTRIES];
00107 };
00108 
00109 
00110 
00111 struct actcalCOEFFS : public eccsDB_TABLE_RECORD {
00112 
00113     vltLOGICAL active;
00114     vltDOUBLE  modulus;
00115     vltDOUBLE  angle;
00116 
00117     ccsCOMPL_STAT Unpack( void *buffer ){
00118   memcpy( &active, buffer, sizeof(vltLOGICAL) );
00119   buffer = (char*)buffer+sizeof(vltLOGICAL);
00120   memcpy( &modulus, buffer, sizeof(vltDOUBLE) );
00121   buffer = (char*)buffer+sizeof(vltDOUBLE);
00122   memcpy( &angle, buffer, sizeof(vltDOUBLE));
00123   return SUCCESS;
00124     }
00125 
00126     ccsCOMPL_STAT Pack( void *buffer ){
00127   vltINT32 size;
00128   dbFillBuf( (char**)&buffer, (char*)&active , &size, dbLOGICAL );
00129   dbFillBuf( (char**)&buffer, (char*)&modulus, &size, dbDOUBLE  );
00130   dbFillBuf( (char**)&buffer, (char*)&angle  , &size, dbDOUBLE  );
00131   return(SUCCESS);
00132     }
00133 };
00134 
00136 struct actcalCALIB_POLYNOM_RECORD : public eccsDB_TABLE_RECORD {
00137 
00138   vltDOUBLE cx[10], cy[10];
00139 
00140   ccsCOMPL_STAT Unpack(void *buffer)
00141   {
00142     int p;
00143     for (p=0 ; p<10 ; p++)
00144       {
00145   memcpy(&(cx[p]), buffer, sizeof(vltDOUBLE));
00146   buffer = (char *)buffer +sizeof(vltDOUBLE);
00147   memcpy(&(cy[p]), buffer, sizeof(vltDOUBLE));
00148   buffer = (char *)buffer +sizeof(vltDOUBLE);
00149       }
00150     return SUCCESS;
00151   }
00152   ccsCOMPL_STAT Pack(void *buffer)
00153   {
00154     vltINT32 size;
00155     int p;
00156 
00157     for (p=0 ; p<10 ; p++)
00158       {
00159   dbFillBuf((char **)&buffer, (char *)&(cx[p]), &size, dbDOUBLE);
00160   dbFillBuf((char **)&buffer, (char *)&(cy[p]), &size, dbDOUBLE);
00161       }
00162     return SUCCESS;
00163   }
00164 };
00165 
00167 
00168 struct actcalAVG_COEFFS : public eccsDB_TABLE_RECORD {
00169 
00170     vltLOGICAL active;
00171     vltDOUBLE  modulus;
00172     vltDOUBLE  angle;
00173     vltDOUBLE  rmsVariation;
00174     vltDOUBLE  rmsD80;
00175     vltDOUBLE  d80Coeff;
00176     vltDOUBLE  rmsCoeffTilt;
00177 
00178     ccsCOMPL_STAT Unpack( void *buffer ){
00179   memcpy( &active, buffer, sizeof(vltLOGICAL) );
00180   buffer = (char*)buffer+sizeof(vltLOGICAL);
00181 
00182   memcpy( &modulus, buffer, sizeof(vltDOUBLE) );
00183   buffer = (char*)buffer+sizeof(vltDOUBLE);
00184 
00185   memcpy( &angle, buffer, sizeof(vltDOUBLE));
00186   buffer = (char*)buffer+sizeof(vltDOUBLE);
00187 
00188   memcpy( &rmsVariation, buffer, sizeof(vltDOUBLE));
00189   buffer = (char*)buffer+sizeof(vltDOUBLE);
00190 
00191   memcpy( &rmsD80, buffer, sizeof(vltDOUBLE));
00192   buffer = (char*)buffer+sizeof(vltDOUBLE);
00193 
00194   memcpy( &d80Coeff, buffer, sizeof(vltDOUBLE));
00195   buffer = (char*)buffer+sizeof(vltDOUBLE);
00196 
00197   memcpy( &rmsCoeffTilt, buffer, sizeof(vltDOUBLE));
00198 
00199   return SUCCESS;
00200     }
00201 
00202     ccsCOMPL_STAT Pack( void *buffer ){
00203   vltINT32 size;
00204   dbFillBuf( (char**)&buffer, (char*)&active        , &size, dbLOGICAL);
00205   dbFillBuf( (char**)&buffer, (char*)&modulus       , &size, dbDOUBLE );
00206   dbFillBuf( (char**)&buffer, (char*)&angle         , &size, dbDOUBLE );
00207         dbFillBuf( (char**)&buffer, (char*)&rmsVariation  , &size, dbDOUBLE );
00208   dbFillBuf( (char**)&buffer, (char*)&rmsD80        , &size, dbDOUBLE );
00209   dbFillBuf( (char**)&buffer, (char*)&d80Coeff      , &size, dbDOUBLE );
00210   dbFillBuf( (char**)&buffer, (char*)&rmsCoeffTilt  , &size, dbDOUBLE );
00211   return(SUCCESS);
00212     }
00213 };
00214 
00215 
00216 #endif

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