Select Git revision
Configuration.cpp
-
Giuseppe Carboni authoredGiuseppe Carboni authored
Configuration.cpp 5.45 KiB
// $Id: Configuration.cpp,v 1.11 2011-05-20 16:52:46 a.orlati Exp $
#include "Configuration.h"
#include "slamac.h"
#define _GET_DWORD_ATTRIBUTE(ATTRIB,DESCR,FIELD) { \
DWORD tmpw; \
if (!CIRATools::getDBValue(Services,ATTRIB,tmpw)) { \
_EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); \
dummy.setFieldName(ATTRIB); \
throw dummy; \
} \
else { \
FIELD=tmpw; \
ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %u",tmpw); \
} \
}
#define _GET_STRING_ATTRIBUTE(ATTRIB,DESCR,FIELD) { \
CString tmps; \
if (!CIRATools::getDBValue(Services,ATTRIB,tmps)) { \
_EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"::CConfiguration::Init()"); \
dummy.setFieldName(ATTRIB); \
throw dummy; \
} \
else { \
FIELD=tmps; \
ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %s",(const char*)tmps); \
} \
}
#define _GET_DOUBLE_ATTRIBUTE(ATTRIB,DESCR,FIELD) { \
double tmpd; \
if (!CIRATools::getDBValue(Services,ATTRIB,tmpd)) { \
_EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); \
dummy.setFieldName(ATTRIB); \
throw dummy; \
} \
else { \
FIELD=tmpd; \
ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %lf",tmpd); \
} \
}
#define _GET_DOUBLE_ATTRIBUTE_E(ATTRIB,DESCR,FIELD,NAME) { \
double tmpd; \
if (!IRA::CIRATools::getDBValue(Services,ATTRIB,tmpd,"alma/",NAME)) { \
_EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::init()"); \
dummy.setFieldName(ATTRIB); \
throw dummy; \
} \
else { \
FIELD=tmpd; \
ACS_DEBUG_PARAM("CConfiguration::init()",DESCR" %lf",tmpd); \
} \
}
CConfiguration::CConfiguration()
{
}
CConfiguration::~CConfiguration()
{
}
void CConfiguration::init(maci::ContainerServices *Services) throw (ComponentErrors::CDBAccessExImpl)
{
IRA::CString temp;
_GET_STRING_ATTRIBUTE("MountInstance","Mount instance is ",m_mountInstance);
_GET_STRING_ATTRIBUTE("ObservatoryInterface","Observatory interface is ",m_observatoryComp);
_GET_STRING_ATTRIBUTE("PointingModelInstance","Pointing model instance is ",m_pointingInstance);
_GET_STRING_ATTRIBUTE("RefractionInstance","Refraction instance is ",m_refractionInstance);
_GET_STRING_ATTRIBUTE("Otf","Generator for On The Fly is ",m_otfInterface);
_GET_STRING_ATTRIBUTE("Sun","Generator for the Sun is ",m_sunInterface);
_GET_STRING_ATTRIBUTE("Moon","Generator for the Moon is ",m_moonInterface);
_GET_STRING_ATTRIBUTE("Sidereal","Generator for sidereal tracking is ",m_siderealInterface);
_GET_STRING_ATTRIBUTE("SolarSystemBody","Generator for bodies of the Solar System is ",m_solarSystemBodyInterface);
_GET_STRING_ATTRIBUTE("Satellite","Generator for Satellite is ",m_satelliteInterface);
_GET_DWORD_ATTRIBUTE("WatchingThreadTime","Sleep time of watching thread (uSec)",m_watchingThreadTime);
_GET_DWORD_ATTRIBUTE("WorkingThreadTime","Sleep time of watching thread (uSec)",m_workingThreadTime);
_GET_DWORD_ATTRIBUTE("CoordinateIntegration","Integration period for coordinates (uSec)",m_coordinateIntegration);
_GET_DWORD_ATTRIBUTE("RepetitionCacheTime","Log repetition filter cache time (uSec)",m_repetitionCacheTime);
_GET_DWORD_ATTRIBUTE("RepetitionExpireTime","Log repetition filter expire time (uSec)",m_repetitionExpireTime);
_GET_DWORD_ATTRIBUTE("MinPointNumber","Minimum guaranteed points in the trajectory",m_minPointNumber);
_GET_DWORD_ATTRIBUTE("MaxPointNumber","Maximum points in the trajectory",m_maxPointNumber);
_GET_DWORD_ATTRIBUTE("GapTime","Gap time between points in trajectory (uSec)",m_gapTime);
_GET_DOUBLE_ATTRIBUTE_E("maxAzimuthRate","Max absolute value for Az rate (degrees/s):",m_maxAzimuthRate,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("maxElevationRate","Max absolute value for El rate (degrees/s):",m_maxElevationRate,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("minElevation","Lower elevation limit (degrees):",m_minElevation,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("maxElevation","Upper elevation limit (degrees):",m_maxElevation,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("maxAzimuthAcceleration","Max value for Az acceleration (degrees/s^2):",m_maxAzimuthAccelaration,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("maxElevationAcceleration","Max value for El acceleration (degrees/s^2):",m_maxElevationAcceleration,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("diameter","Telescope dish diameter (meters):",m_diameter,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("MinElevationAvoidance","Suggested lower elevation limit for source observation(degrees):",m_minElevationAvoidance,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE_E("MaxElevationAvoidance","Suggested upper elevation limit for source observation(degrees):",m_maxElevationAvoidance,"DataBlock/Mount");
_GET_DOUBLE_ATTRIBUTE("CutOffElevation","The cut off elevation is (degrees):",m_cutOffElevation);
_GET_STRING_ATTRIBUTE("SkydipElevationRange","The skydip elevation range is (degrees):",temp);
_GET_STRING_ATTRIBUTE("CoordinatesFilename", "The text file path in which the received coordinates will be written:", m_coordinatesFile);
if (sscanf((const char *)temp,"%lf %lf",&m_skydipElDown,&m_skydipElUp)!=2) {
_EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()");
dummy.setFieldName("SkydipElevationRange");
throw dummy;
}
m_skydipElDown*=DD2R;
m_skydipElUp*=DD2R;
m_maxElevation*=DD2R;
m_minElevation*=DD2R;
m_maxAzimuthRate*=DD2R;
m_maxElevationRate*=DD2R;
m_maxAzimuthAccelaration*=DD2R;
m_maxElevationAcceleration*=DD2R;
m_minElevationAvoidance*=DD2R;
m_maxElevationAvoidance*=DD2R;
m_coordinateIntegration*=10;
m_cutOffElevation*=DD2R;
}