diff --git a/Common/Servers/KQWReceiver/include/ComponentCore.h b/Common/Servers/KQWReceiver/include/ComponentCore.h index 8d26d638fa4776bee4e4831a75a3a90e68f33da3..289f27d9666314f11babde1077706e508cb78680 100644 --- a/Common/Servers/KQWReceiver/include/ComponentCore.h +++ b/Common/Servers/KQWReceiver/include/ComponentCore.h @@ -467,11 +467,11 @@ protected: /** Obtain a valid reference to the local oscillator device * @throw ComponentErrors::CouldntGetComponentExImpl */ - void loadLocalOscillator(); + void loadLocalOscillator(Receivers::LocalOscillator_ptr device,bool &fault,const IRA::CString& name); /** Used to free the reference to the local oscillator device */ - void unloadLocalOscillator(); + void unloadLocalOscillator(Receivers::LocalOscillator_ptr device,const IRA::CString& name); /************************ CONVERSION FUNCTIONS **************************/ @@ -544,8 +544,15 @@ protected: private: maci::ContainerServices* m_services; - Receivers::LocalOscillator_var m_localOscillatorDevice; - bool m_localOscillatorFault; + Receivers::LocalOscillator_var m_localOscillatorDevice_K; + bool m_localOscillatorFault_K; + Receivers::LocalOscillator_var m_localOscillatorDevice_Q; + bool m_localOscillatorFault_Q; + Receivers::LocalOscillator_var m_localOscillatorDevice_WL; + bool m_localOscillatorFault_WL; + Receivers::LocalOscillator_var m_localOscillatorDevice_WH; + bool m_localOscillatorFault_WH; + //double m_localOscillatorValue; double m_vacuum; CConfiguration::BoardValue m_cryoCoolHead; diff --git a/Common/Servers/KQWReceiver/include/Configuration.h b/Common/Servers/KQWReceiver/include/Configuration.h index b7fc7f9c3c6dc4201e20498fb59cb6149ac8df66..424d13e85aaddec704d123f1827c3d54615dc8ac 100644 --- a/Common/Servers/KQWReceiver/include/Configuration.h +++ b/Common/Servers/KQWReceiver/include/Configuration.h @@ -2,9 +2,9 @@ #define _BASECCONFIGURATION_H_ /*******************************************************************************\ - IRA Istituto di Radioastronomia - This code is under GNU General Public License (GPL). - + IRA Istituto di Radioastronomia + This code is under GNU General Public License (GPL). + Author: Andrea Orlati (andrea.orlati@inaf.it) \*******************************************************************************/ @@ -17,42 +17,45 @@ #include "utils.h" #define _GET_DOUBLE_ATTRIBUTE(SERV,ATTRIB,DESCR,FIELD,NAME) { \ - double tmpd; \ - if (!CIRATools::getDBValue(SERV,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); \ - } \ + double tmpd; \ + if (!CIRATools::getDBValue(SERV,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); \ + } \ } #define _GET_DWORD_ATTRIBUTE(SERV,ATTRIB,DESCR,FIELD,NAME) { \ - if (!CIRATools::getDBValue(SERV,ATTRIB,FIELD,"alma/",NAME)) { \ - _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); \ - dummy.setFieldName(ATTRIB); \ - throw dummy; \ - } \ - else { \ - ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %u",FIELD); \ - } \ + if (!CIRATools::getDBValue(SERV,ATTRIB,FIELD,"alma/",NAME)) { \ + _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"CConfiguration::Init()"); \ + dummy.setFieldName(ATTRIB); \ + throw dummy; \ + } \ + else { \ + ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %u",FIELD); \ + } \ } #define _GET_STRING_ATTRIBUTE(SERV,ATTRIB,DESCR,FIELD,NAME) { \ - if (!CIRATools::getDBValue(SERV,ATTRIB,FIELD,"alma/",NAME)) { \ - _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"::CConfiguration::Init()"); \ - dummy.setFieldName(ATTRIB); \ - throw dummy; \ - } \ - else { \ - ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %s",(const char*)FIELD); \ - } \ + if (!CIRATools::getDBValue(SERV,ATTRIB,FIELD,"alma/",NAME)) { \ + _EXCPT(ComponentErrors::CDBAccessExImpl,dummy,"::CConfiguration::Init()"); \ + dummy.setFieldName(ATTRIB); \ + throw dummy; \ + } \ + else { \ + ACS_DEBUG_PARAM("CConfiguration::Init()",DESCR" %s",(const char*)FIELD); \ + } \ } #define CONFIG_PATH "DataBlock/KQWReceiver" -#define LOTABLE_PATH CONFIG_PATH"/Synthesizer" +#define LOTABLE_K_PATH CONFIG_PATH"/Synthesizer_K" +#define LOTABLE_Q_PATH CONFIG_PATH"/Synthesizer_Q" +#define LOTABLE_WL_PATH CONFIG_PATH"/Synthesizer_WLOW" +#define LOTABLE_WH_PATH CONFIG_PATH"/Synthesizer_WHIGH" #define MARKTABLE_PATH CONFIG_PATH"/NoiseMark" #define FEEDTABLE_PATH CONFIG_PATH"/Feeds" #define TAPERTABLE_PATH CONFIG_PATH"/Taper" @@ -67,8 +70,8 @@ using namespace IRA; * configuration database and then are used (read) inside the component. * @author Andrea Orlati, Istituto di Radioastronomia, Italia *
- */ -template + */ +template class CConfiguration { public: @@ -99,9 +102,16 @@ public: typedef struct { double temperature; - ACS::Time timestamp; + ACS::Time timestamp; } BoardValue; - + + typedef enum { + KBAND=0, + QBAND=2, + WLBAND=4, + WHBAND=6 + } TBandId; + /** * Default constructor @@ -135,7 +145,7 @@ public: /** * @return the time allowed to the watch dog thread to complete an iteration and - * respond to the thread manager (microseconds) + * respond to the thread manager (microseconds) */ inline const DWORD& getWarchDogResponseTime() const { return m_watchDogResponseTime; } @@ -151,7 +161,7 @@ public: /** * @return the time the repetition log guard will cache new log messages before sending - * to the central logger (microseconds) + * to the central logger (microseconds) */ inline const DWORD& getRepetitionCacheTime() const { return m_repetitionCacheTime; } @@ -179,16 +189,56 @@ public: DWORD getRightMarkTable(ACS::doubleSeq& freq,ACS::doubleSeq& markValue,short feed) const; /** - * @return the instance of the local oscillator component that the receiver will use to drive the set its LO + * @return the instance of the K-band local oscillator component that the receiver will use to drive the set its LO + */ + inline const IRA::CString& getLocalOscillatorInstance_K() const { return m_localOscillator_K_Instance; } + + /** + * @return the instance of the Q-band local oscillator component that the receiver will use to drive the set its LO */ - //inline const IRA::CString& getLocalOscillatorInstance() const { return m_localOscillatorInstance; } + inline const IRA::CString& getLocalOscillatorInstance_Q() const { return m_localOscillator_Q_Instance; } + + /** + * @return the instance of the WL-band local oscillator component that the receiver will use to drive the set its LO + */ + inline const IRA::CString& getLocalOscillatorInstance_WL() const { return m_localOscillator_W1_Instance; } + + /** + * @return the instance of the WH-band local oscillator component that the receiver will use to drive the set its LO + */ + inline const IRA::CString& getLocalOscillatorInstance_WH() const { return m_localOscillator_W2_Instance; } /** + * Return the synth table for the K band + * @param freq vector with the synthesizer frequencies. It must be freed by caller. + * @param power corresponding powers for the frequencies vector. It must be freed by caller. + * @return the size of the output vectors + */ + DWORD getSynthesizerTable_K(double * &freq,double *&power) const; + + /** + * Return the synth table for the Q band * @param freq vector with the synthesizer frequencies. It must be freed by caller. * @param power corresponding powers for the frequencies vector. It must be freed by caller. * @return the size of the output vectors */ - DWORD getSynthesizerTable(double *& freq,double *& power) const; + DWORD getSynthesizerTable_Q(double * &freq,double *&power) const; + + /** + * Return the synth table for the WL band + * @param freq vector with the synthesizer frequencies. It must be freed by caller. + * @param power corresponding powers for the frequencies vector. It must be freed by caller. + * @return the size of the output vectors + */ + DWORD getSynthesizerTable_WL(double * &freq,double *&power) const; + + /** + * Return the synth table for the WH band + * @param freq vector with the synthesizer frequencies. It must be freed by caller. + * @param power corresponding powers for the frequencies vector. It must be freed by caller. + * @return the size of the output vectors + */ + DWORD getSynthesizerTable_WH(double * &freq,double *&power) const; /** * @param freq vector with the frequencies. It must be freed by caller. @@ -198,49 +248,51 @@ public: DWORD getTaperTable(double * &freq,double *&taper,short feed) const; /** - * @param code feed identification codes. It must be freed by caller. - * @param xOffset displacement of the feed with respect to the central one along x axis. - * It must be freed by caller. - * @param yOffset displacement of the feed with respect to the central one along y axis. - * It must be freed by caller. - * @param relativePower expected percentage of variation of gain with respect to the central one. - * It must be freed by caller. - * @return the size of the output vectors - */ + * @param code feed identification codes. It must be freed by caller. + * @param xOffset displacement of the feed with respect to the central one along x axis. + * It must be freed by caller. + * @param yOffset displacement of the feed with respect to the central one along y axis. + * It must be freed by caller. + * @param relativePower expected percentage of variation of gain with respect to the central one. + * It must be freed by caller. + * @return the size of the output vectors + */ DWORD getFeedInfo(WORD *& code,double *& xOffset,double *& yOffset,double *& relativePower) const; - /** - * @return mnemonic of the working mode of the receiver - */ - inline const IRA::CString& getActualMode() const { return m_mode; } + /** + * @return mnemonic of the working mode of the receiver + */ + inline const IRA::CString& getActualMode() const { return m_mode; } - /** + /** * @return mnemonic of the default mode of the receiver - */ - inline const IRA::CString& getDefaultMode() const { return m_defaultMode; } + */ + inline const IRA::CString& getDefaultMode() const { return m_defaultMode; } - /** - * @return the markVector - */ + /** + * @return the markVector + */ inline const TMarkValue * getMarkVector() const { return m_markVector; } - inline const DWORD getMarkVectorLen() const { return m_markVectorLen; } + inline const DWORD getMarkVectorLen() const { return m_markVectorLen; } /* * @throw (ComponentErrors::CDBAccessExImpl, ReceiversErrors::ModeErrorExImpl) */ - void setMode(const char * mode); - - /** - * @return the index of the dedicated arrays where the relative information are located - */ - inline const DWORD getArrayIndex(const long& feed, const long& ifs) const { return feed*2+ifs; } - - /** - * @return the length of the dedicated arrays where the relative information are located - */ - inline const DWORD getArrayLen() const { return m_feeds*m_IFs; } + void setMode(const char * mode); + + /** + * @return the index of the dedicated arrays where the relative information are located + */ + inline const DWORD getArrayIndex(const long& feed, const long& ifs) const { return feed*2+ifs; } + + inline const DWORD getArrayIndex(const long& feed) const { return feed*2; } + /** + * @return the length of the dedicated arrays where the relative information are located + */ + inline const DWORD getArrayLen() const { return m_feeds*m_IFs; } + /** * @return the lower limit of the RF coming from the K,Q,W1 and W2 band feed (MHz) @@ -290,7 +342,7 @@ public: /** * @return the current frequency for local Oscillator (MHz) */ - void setCurrentLOValue(const ACS::doubleSeq& lo); + //void setCurrentLOValue(const ACS::doubleSeq& lo); void setCurrentLOValue(const double& val,const long& pos); @@ -315,15 +367,16 @@ public: inline bool getLNABypass() const { return m_lnaBypass; } /** - * This member function is used to configure component by reading the configuration parameter from the CDB. + * This member function is used to configure component by reading the configuration parameter from the CDB. * This must be the first call before using any other function of this class. * @throw ComponentErrors::CDBAccessExImpl, - * @throw ComponentErrors::MemoryAllocationExImpl, - * @thorw ReceiversErrors::ModeErrorExImpl + * @throw ComponentErrors::MemoryAllocationExImpl, + * @thorw ReceiversErrors::ModeErrorExImpl * @param Services pointer to the container services object or to simpleClient * @param comp_name name of the component */ - void init(T* Services,IRA::CString comp_name=""); + void init(T *Services,IRA::CString comp_name=""); + private: IRA::CString m_dewarIPAddress; @@ -339,19 +392,19 @@ private: IRA::CString m_localOscillator_Q_Instance; IRA::CString m_localOscillator_W1_Instance; IRA::CString m_localOscillator_W2_Instance; - - T* m_services; + + T* m_services; IRA::CString m_mode; IRA::CString m_defaultMode; double *m_BandRFMin; double *m_BandRFMax; double *m_BandIFMin; double *m_BandIFBandwidth; - double *m_DefaultLO; - double *m_FixedLO2; - double *m_currentLOValue; - double *m_LOMin; - double *m_LOMax; + double *m_DefaultLO; + double *m_FixedLO2; + double *m_currentLOValue; + double *m_LOMin; + double *m_LOMax; DWORD m_IFs; bool m_lnaBypass; Receivers::TPolarization *m_BandPolarizations; @@ -359,19 +412,30 @@ private: IRA::CDBTable *m_markTable; - IRA::CDBTable *m_loTable; + IRA::CDBTable *m_loTable_K; + IRA::CDBTable *m_loTable_Q; + IRA::CDBTable *m_loTable_WL; + IRA::CDBTable *m_loTable_WH; + IRA::CDBTable *m_taperTable; IRA::CDBTable *m_feedsTable; TMarkValue *m_markVector; - TLOValue * m_loVector; - DWORD m_loVectorLen; + TLOValue * m_loVector_K; + TLOValue * m_loVector_Q; + TLOValue * m_loVector_WL; + TLOValue * m_loVector_WH; + DWORD m_loVectorLen_K; + DWORD m_loVectorLen_Q; + DWORD m_loVectorLen_WL; + DWORD m_loVectorLen_WH; DWORD m_markVectorLen; TTaperValue * m_taperVector; DWORD m_taperVectorLen; TFeedValue * m_feedVector; // length given by m_feeds - - void updateBandWith(const long& pos); + + void updateBandWith(); + WORD openSynthTable(IRA::CDBTable * &table, const IRA::CString &path, TLOValue * &loV); }; diff --git a/Common/Servers/KQWReceiver/include/Configuration.tpp b/Common/Servers/KQWReceiver/include/Configuration.tpp index cd3382554435f9fdd9750dbf96cbe037df720b3f..c4dd1cc7107cc2e67b835336778eb01ba9ebe8ff 100644 --- a/Common/Servers/KQWReceiver/include/Configuration.tpp +++ b/Common/Servers/KQWReceiver/include/Configuration.tpp @@ -7,9 +7,9 @@ CConfiguration::CConfiguration() m_markVectorLen = 0; m_markTable=NULL; m_mode=""; - m_loTable=NULL; - m_loVector=NULL; - m_loVectorLen=0; + m_loTable_K=m_loTable_Q=m_loTable_WL=m_loTable_WH=NULL; + m_loVector_K=m_loVector_Q=m_loVector_WL=m_loVector_WH=NULL; + m_loVectorLen_K=m_loVectorLen_Q=m_loVectorLen_WL=m_loVectorLen_WH=0; m_BandPolarizations = NULL; m_feedsTable = NULL; m_feedVector = NULL; @@ -20,7 +20,7 @@ CConfiguration::CConfiguration() m_BandRFMax = NULL; m_BandIFMin = NULL; m_BandIFBandwidth = NULL; - m_DefaultLO = m_FixedLO2= m_currentLOValue= m_LOMin = m_LOMax = NULL; + m_DefaultLO = m_FixedLO2= m_currentLOValue= m_LOMin = m_LOMax = NULL; } template @@ -29,9 +29,18 @@ CConfiguration::~CConfiguration() if (m_markTable) { delete m_markTable; } - if (m_loTable) { - delete m_loTable; + if (m_loTable_K) { + delete m_loTable_K; } + if (m_loTable_Q) { + delete m_loTable_Q; + } + if (m_loTable_WL) { + delete m_loTable_WL; + } + if (m_loTable_WH) { + delete m_loTable_WH; + } if (m_feedsTable) { delete m_feedsTable; } @@ -41,8 +50,17 @@ CConfiguration::~CConfiguration() if (m_markVector) { delete [] m_markVector; } - if (m_loVector) { - delete [] m_loVector; + if (m_loVector_K) { + delete [] m_loVector_K; + } + if (m_loVector_Q) { + delete [] m_loVector_Q; + } + if (m_loVector_WL) { + delete [] m_loVector_WL; + } + if (m_loVector_WH) { + delete [] m_loVector_WH; } if (m_taperVector) { delete [] m_taperVector; @@ -83,6 +101,67 @@ CConfiguration::~CConfiguration() } +/* + @throw ( + ComponentErrors::CDBAccessExImpl + ComponentErrors::MemoryAllocationExImpl + ComponentErrors::CDBAccessExImpl) +*/ +template +WORD CConfiguration::openSynthTable(IRA::CDBTable * &table, const IRA::CString &path, TLOValue * &loV) +{ + IRA::CError ErrEvent; + IRA::CString field; + WORD len; + try { + table=new IRA::CDBTable(m_services,"SynthesizerEntry",path); + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::openSynthTable()"); + throw dummy; + } + + ErrEvent.Reset(); + if (!table->addField(ErrEvent,"Frequency",IRA::CDataField::DOUBLE)) { + field="Frequency"; + } + else if (!table->addField(ErrEvent,"OutputPower",IRA::CDataField::DOUBLE)) { + field="OutputPower"; + } + if (!ErrEvent.isNoError()) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl,dummy,ErrEvent); + dummy.setFieldName((const char *)field); + throw dummy; + } + + if (!table->openTable(ErrEvent)) { + _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, ErrEvent); + throw dummy; + } + table->First(); + len=table->recordCount(); + + try { + loV=new TLOValue[len]; + } + catch (std::bad_alloc& ex) { + _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::openSynthTable()"); + throw dummy; + } + ACS_LOG(LM_FULL_INFO,"CConfiguration::openSynthTable()",(LM_DEBUG,"SYNTH_VALUE_ENTRY_NUMBER: %d",len)); + for (WORD i=0;iasDouble(); + loV[i].outputPower=(*table)["OutputPower"]->asDouble(); + ACS_LOG(LM_FULL_INFO,"CConfiguration::openSynthTable()",(LM_DEBUG,"SYNTH_VALUE_ENTRY: %lf %lf",loV[i].frequency,loV[i].outputPower)); + table->Next(); + } + table->closeTable(); + delete table; + table=NULL; + return len; +} + + /* throw ( ComponentErrors::CDBAccessExImpl, @@ -102,8 +181,8 @@ void CConfiguration::init(T *Services,IRA::CString comp_name) _GET_STRING_ATTRIBUTE(m_services,"LNAIPAddress", "LNA IP address:",m_LNAIPAddress,comp_name); _GET_STRING_ATTRIBUTE(m_services,"LocalOscillator_K_Instance","Local oscillator for K band:",m_localOscillator_K_Instance,comp_name); _GET_STRING_ATTRIBUTE(m_services,"LocalOscillator_Q_Instance","Local oscillator for Q band:",m_localOscillator_Q_Instance,comp_name); - _GET_STRING_ATTRIBUTE(m_services,"LocalOscillator_W1_Instance","Local oscillator for W1 band:",m_localOscillator_W1_Instance,comp_name); - _GET_STRING_ATTRIBUTE(m_services,"LocalOscillator_W2_Instance","Local oscillator for W2 band:",m_localOscillator_W2_Instance,comp_name); + _GET_STRING_ATTRIBUTE(m_services,"LocalOscillator_W1_Instance","Local oscillator for W low band:",m_localOscillator_W1_Instance,comp_name); + _GET_STRING_ATTRIBUTE(m_services,"LocalOscillator_W2_Instance","Local oscillator for W high band:",m_localOscillator_W2_Instance,comp_name); _GET_DWORD_ATTRIBUTE(m_services,"DewarPort","Dewar port:",m_dewarPort,comp_name); _GET_DWORD_ATTRIBUTE(m_services,"LNAPort","LNA port:",m_LNAPort,comp_name); _GET_DWORD_ATTRIBUTE(m_services,"WatchDogResponseTime","Response time of watch dog thread (uSec):",m_watchDogResponseTime,comp_name); @@ -140,6 +219,7 @@ void CConfiguration::init(T *Services,IRA::CString comp_name) // Set the default operating mode setMode(mode); + // The noise mark try { m_markTable = new IRA::CDBTable(Services,"MarkEntry",MARKTABLE_PATH); @@ -190,56 +270,17 @@ void CConfiguration::init(T *Services,IRA::CString comp_name) m_markVector[i].markValue)); m_markTable->Next(); } - m_markVectorLen = len; m_markTable->closeTable(); delete m_markTable; m_markTable = NULL; // The synthesizer - try { - m_loTable=new IRA::CDBTable(Services,"SynthesizerEntry",LOTABLE_PATH); - } - catch (std::bad_alloc& ex) { - _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); - throw dummy; - } - error.Reset(); - if (!m_loTable->addField(error,"Frequency",IRA::CDataField::DOUBLE)) { - field="Frequency"; - } - else if (!m_loTable->addField(error,"OutputPower",IRA::CDataField::DOUBLE)) { - field="OutputPower"; - } - if (!error.isNoError()) { - _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl,dummy,error); - dummy.setFieldName((const char *)field); - throw dummy; - } - if (!m_loTable->openTable(error)) { - _EXCPT_FROM_ERROR(ComponentErrors::CDBAccessExImpl, dummy, error); - throw dummy; - } - m_loTable->First(); - len=m_loTable->recordCount(); - try { - m_loVector=new TLOValue[len]; - } - catch (std::bad_alloc& ex) { - _EXCPT(ComponentErrors::MemoryAllocationExImpl,dummy,"CConfiguration::init()"); - throw dummy; - } - ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"SYNTH_VALUE_ENTRY_NUMBER: %d",len)); - for (WORD i=0;iasDouble(); - m_loVector[i].outputPower=(*m_loTable)["OutputPower"]->asDouble(); - ACS_LOG(LM_FULL_INFO,"CConfiguration::init()",(LM_DEBUG,"SYNTH_VALUE_ENTRY: %lf %lf",m_loVector[i].frequency,m_loVector[i].outputPower)); - m_loTable->Next(); - } - m_loVectorLen=len; - m_loTable->closeTable(); - delete m_loTable; - m_loTable=NULL; + + m_loVectorLen_K=openSynthTable(m_loTable_K,LOTABLE_K_PATH,m_loVector_K); + m_loVectorLen_Q=openSynthTable(m_loTable_Q,LOTABLE_Q_PATH,m_loVector_Q); + m_loVectorLen_WL=openSynthTable(m_loTable_WL,LOTABLE_WL_PATH,m_loVector_WL); + m_loVectorLen_WH=openSynthTable(m_loTable_WH,LOTABLE_WH_PATH,m_loVector_WH); // The feeds @@ -343,7 +384,7 @@ void CConfiguration::init(T *Services,IRA::CString comp_name) m_taperTable = NULL; } -template +/*template void CConfiguration::setCurrentLOValue(const ACS::doubleSeq& lo) { for (WORD k=0;k::setCurrentLOValue(const ACS::doubleSeq& lo) updateBandWith(k); } } -} +}*/ template void CConfiguration::setCurrentLOValue(const double& val,const long& pos) { - if ((pos>=0) && (pos<=getArrayLen())) { + if ((pos>=0) && (pos<=getFeeds())) { if (val>=0.0) { - m_currentLOValue[pos]=val; - updateBandWith(pos); + m_currentLOValue[getArrayIndex(pos)]=val; + m_currentLOValue[getArrayIndex(pos)+1]=val; + updateBandWith(); } } } template -void CConfiguration::updateBandWith(const long& pos) +void CConfiguration::updateBandWith() { - m_BandIFBandwidth[pos]=m_BandRFMax[pos]-(m_BandIFMin[pos]+m_currentLOValue[pos]); + for (WORD i=0;i::setMode(const char * mode) } template -DWORD CConfiguration::getSynthesizerTable(double * &freq,double *&power) const +DWORD CConfiguration::getSynthesizerTable_K(double * &freq,double *&power) const +{ + freq= new double [m_loVectorLen_K]; + power=new double [m_loVectorLen_K]; + for (DWORD j=0;j +DWORD CConfiguration::getSynthesizerTable_Q(double * &freq,double *&power) const +{ + freq= new double [m_loVectorLen_Q]; + power=new double [m_loVectorLen_Q]; + for (DWORD j=0;j +DWORD CConfiguration::getSynthesizerTable_WL(double * &freq,double *&power) const +{ + freq= new double [m_loVectorLen_WL]; + power=new double [m_loVectorLen_WL]; + for (DWORD j=0;j +DWORD CConfiguration::getSynthesizerTable_WH(double * &freq,double *&power) const { - freq= new double [m_loVectorLen]; - power=new double [m_loVectorLen]; - for (DWORD j=0;j diff --git a/Common/Servers/KQWReceiver/src/ComponentCore.cpp b/Common/Servers/KQWReceiver/src/ComponentCore.cpp index c08153f74c4cacbd9ed3e20ae84d7006adbac5ee..07eabb4ebcffc4a62d7e39d20e651d164d54f79b 100644 --- a/Common/Servers/KQWReceiver/src/ComponentCore.cpp +++ b/Common/Servers/KQWReceiver/src/ComponentCore.cpp @@ -63,6 +63,11 @@ CConfiguration const * const CComponentCore::execute() _EXCPT(ComponentErrors::SocketErrorExImpl,dummy,"CComponentCore::execute()"); throw dummy; } + m_localOscillatorDevice_K=Receivers::LocalOscillator::_nil(); + m_localOscillatorDevice_Q=Receivers::LocalOscillator::_nil(); + m_localOscillatorDevice_WL=Receivers::LocalOscillator::_nil(); + m_localOscillatorDevice_WH=Receivers::LocalOscillator::_nil(); + m_localOscillatorFault_K=m_localOscillatorFault_Q=m_localOscillatorFault_WL=m_localOscillatorFault_WH=false; return &m_configuration; } @@ -75,6 +80,10 @@ void CComponentCore::cleanup() m_control->closeConnection(); delete m_control; } + unloadLocalOscillator(m_localOscillatorDevice_K.out(),m_configuration.getLocalOscillatorInstance_K()); + unloadLocalOscillator(m_localOscillatorDevice_Q.out(),m_configuration.getLocalOscillatorInstance_Q()); + unloadLocalOscillator(m_localOscillatorDevice_WL.out(),m_configuration.getLocalOscillatorInstance_WL()); + unloadLocalOscillator(m_localOscillatorDevice_WH.out(),m_configuration.getLocalOscillatorInstance_WH()); } const IRA::CString& CComponentCore::getActualMode() @@ -221,7 +230,7 @@ void CComponentCore::externalCalOff() //throw (ReceiversErrors::NoRemoteControlErrorExImpl,ReceiversErrors::ReceiverControlBoardErrorExImpl) void CComponentCore::deactivate() { - ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_DEBUG,"Nothing is really required to deactivate the receiver")); + ACS_LOG(LM_FULL_INFO,"CComponentCore::deactivate()",(LM_DEBUG,"Nothing is really required to deactivate the receiver")); } /* @@ -417,45 +426,80 @@ void CComponentCore::setLO(const ACS::doubleSeq& lo) impl.setReason("at least one value must be provided"); throw impl; } - if (lo.length()>m_configuration.getArrayLen()) { + if (lo.length()>m_configuration.getFeeds()) { _EXCPT(ComponentErrors::ValidationErrorExImpl,impl,"CComponentCore::setLO"); - impl.setReason("too many values provided"); + impl.setReason("too many values provided, one for each receiver is required"); throw impl; } for (WORD k=0;km_configuration.getLOMax()[k]) { - _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::setLO"); - impl.setValueName("local oscillator upper limit"); - impl.setValueLimit(m_configuration.getLOMax()[k]); - throw impl; + else if (lo[k]>m_configuration.getLOMax()[m_configuration.getArrayIndex(k)]) { + _EXCPT(ComponentErrors::ValueOutofRangeExImpl,impl,"CComponentCore::setLO"); + impl.setValueName("local oscillator upper limit"); + impl.setValueLimit(m_configuration.getLOMax()[m_configuration.getArrayIndex(k)]); + throw impl; } else if (lo[k]==-1) { - ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"KEEP_CURRENT_LOCAL_OSCILLATOR %lf", - m_configuration.getCurrentLOValue()[k])); + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"KEEP_CURRENT_LOCAL_OSCILLATOR %lf", + m_configuration.getCurrentLOValue()[m_configuration.getArrayIndex(k)])); } else { //computes the synthesizer settings - trueValue=lo[k]+m_configuration.getFixedLO2()[k]; - size=m_configuration.getSynthesizerTable(freq,power); + trueValue=lo[k]+m_configuration.getFixedLO2()[m_configuration.getArrayIndex(k)]; + + if (m_configuration.getArrayIndex(k)==CConfiguration::KBAND) { + size=m_configuration.getSynthesizerTable_K(freq,power); + } else if (m_configuration.getArrayIndex(k)==CConfiguration::QBAND) { + size=m_configuration.getSynthesizerTable_Q(freq,power); + } else if (m_configuration.getArrayIndex(k)==CConfiguration::WLBAND) { + size=m_configuration.getSynthesizerTable_WL(freq,power); + } + else { //WHBAND + size=m_configuration.getSynthesizerTable_WH(freq,power); + } amp=round(linearFit(freq,power,size,trueValue)); if (power) delete [] power; if (freq) delete [] freq; ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_DEBUG,"SYNTHESIZER_VALUES %lf %lf",trueValue,amp)); // make sure the synthesizer component is available - // Da verificare........************************************************* gestione di più OL da fare - //loadLocalOscillator(); // throw (ComponentErrors::CouldntGetComponentExImpl) - try { - //m_localOscillatorDevice->set(amp,trueValue); + + if (m_configuration.getArrayIndex(k)==CConfiguration::KBAND) { + loadLocalOscillator(m_localOscillatorDevice_K.out(),m_localOscillatorFault_K, + m_configuration.getLocalOscillatorInstance_K()); // throw (ComponentErrors::CouldntGetComponentExImpl) + } else if (m_configuration.getArrayIndex(k)==CConfiguration::QBAND) { + loadLocalOscillator(m_localOscillatorDevice_Q.out(),m_localOscillatorFault_Q, + m_configuration.getLocalOscillatorInstance_Q()); // throw (ComponentErrors::CouldntGetComponentExImpl) + } else if (m_configuration.getArrayIndex(k)==CConfiguration::WLBAND) { + loadLocalOscillator(m_localOscillatorDevice_WL.out(),m_localOscillatorFault_WL, + m_configuration.getLocalOscillatorInstance_WL()); // throw (ComponentErrors::CouldntGetComponentExImpl) + } + else { //WHBAND + loadLocalOscillator(m_localOscillatorDevice_WL.out(),m_localOscillatorFault_WL, + m_configuration.getLocalOscillatorInstance_WL()); // throw (ComponentErrors::CouldntGetComponentExImpl) + } + try { + if (m_configuration.getArrayIndex(k)==CConfiguration::KBAND) { + m_localOscillatorDevice_K->set(amp,trueValue); + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"K-Band LOCAL_OSCILLATOR %lf",lo[k])); + } else if (m_configuration.getArrayIndex(k)==CConfiguration::QBAND) { + m_localOscillatorDevice_Q->set(amp,trueValue); + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"Q-Band LOCAL_OSCILLATOR %lf",lo[k])); + } else if (m_configuration.getArrayIndex(k)==CConfiguration::WLBAND) { + m_localOscillatorDevice_WL->set(amp,trueValue); + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"Wlow-Band LOCAL_OSCILLATOR %lf",lo[k])); + } + else { //WHBAND + m_localOscillatorDevice_WH->set(amp,trueValue); + ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"Whigh-band LOCAL_OSCILLATOR %lf",lo[k])); + } } catch (CORBA::SystemException& ex) { - m_localOscillatorFault=true; _EXCPT(ComponentErrors::CORBAProblemExImpl,impl,"CComponentCore::setLO()"); impl.setName(ex._name()); impl.setMinor(ex.minor()); @@ -466,7 +510,7 @@ void CComponentCore::setLO(const ACS::doubleSeq& lo) throw impl; } m_configuration.setCurrentLOValue(lo[k],k); - ACS_LOG(LM_FULL_INFO,"CComponentCore::setLO()",(LM_NOTICE,"LOCAL_OSCILLATOR %lf",lo[k])); + } } } @@ -673,12 +717,12 @@ double CComponentCore::getTaper( void CComponentCore::setMode(const char * mode) { baci::ThreadSyncGuard guard(&m_mutex); IRA::CString cmdMode(mode); - m_configuration.setMode(mode); //* throw (ComponentErrors::CDBAccessExImpl, ReceiversErrors::ModeErrorExImpl) + m_configuration.setMode(mode); //* throw (ComponentErrors::CDBAccessExImpl, ReceiversErrors::ModeErrorExImpl) ACS::doubleSeq lo; - lo.length(m_configuration.getArrayLen()); - for (WORD i=0;ienableBypass();// throw IRA::ReceiverControlEx - } - catch (IRA::ReceiverControlEx& ex) { - _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::setMode()"); - impl.setDetails(ex.what().c_str()); - setStatusBit(CONNECTIONERROR); - throw impl; - } + m_control->enableBypass();// throw IRA::ReceiverControlEx + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::setMode()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } } else { try { - /************************************************************ - * Verificare - */ - //m_control->disableBypass();// throw IRA::ReceiverControlEx - } - catch (IRA::ReceiverControlEx& ex) { - _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::setMode()"); - impl.setDetails(ex.what().c_str()); - setStatusBit(CONNECTIONERROR); - throw impl; - } + m_control->disableBypass();// throw IRA::ReceiverControlEx + } + catch (IRA::ReceiverControlEx& ex) { + _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl,impl,"CComponentCore::setMode()"); + impl.setDetails(ex.what().c_str()); + setStatusBit(CONNECTIONERROR); + throw impl; + } } ACS_LOG(LM_FULL_INFO,"CComponentCore::setMode()",(LM_NOTICE,"RECEIVER_MODE %s",mode)); @@ -1141,76 +1179,60 @@ void CComponentCore::updateVertexTemperature() } //throw (ComponentErrors::CouldntGetComponentExImpl) -void CComponentCore::loadLocalOscillator() +void CComponentCore::loadLocalOscillator(Receivers::LocalOscillator_ptr device,bool &fault,const IRA::CString& name) { // If reference was already taken, but an error was found....dispose the reference - if ((!CORBA::is_nil(m_localOscillatorDevice)) && (m_localOscillatorFault)) { + if ((!CORBA::is_nil(device)) && (fault)) { try { - m_services->releaseComponent((const char*)m_localOscillatorDevice->name()); + m_services->releaseComponent((const char*)device->name()); } catch (...) { // Dispose silently...if an error...no matter } - m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + device=Receivers::LocalOscillator::_nil(); } - if (CORBA::is_nil(m_localOscillatorDevice)) { // Only if it has not been retrieved yet + if (CORBA::is_nil(device)) { // Only if it has not been retrieved yet try { - /******************************************************************************************* - * Verificare - */ - //m_localOscillatorDevice=m_services->getComponent( - // (const char*)m_configuration.getLocalOscillatorInstance()); - ACS_LOG(LM_FULL_INFO,"CCore::loadAntennaBoss()",(LM_INFO,"LOCAL_OSCILLATOR_OBTAINED")) - m_localOscillatorFault=false; + device=m_services->getComponent((const char*)name); + ACS_LOG(LM_FULL_INFO,"CCore::loadLocalOscillator()",(LM_INFO,"LOCAL_OSCILLATOR_OBTAINED")) + fault=false; } catch (maciErrType::CannotGetComponentExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CComponentCore::loadLocalOscillator()"); - /******************************************************************************************* - * Verificare - */ - //Impl.setComponentName((const char*)m_configuration.getLocalOscillatorInstance()); - m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + Impl.setComponentName((const char*)name); + device=Receivers::LocalOscillator::_nil(); throw Impl; } catch (maciErrType::NoPermissionExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CComponentCore::loadLocalOscillator()"); - /******************************************************************************************* - * Verificare - */ - //Impl.setComponentName((const char*)m_configuration.getLocalOscillatorInstance()); - m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + Impl.setComponentName((const char*)name); + device=Receivers::LocalOscillator::_nil(); throw Impl; } catch (maciErrType::NoDefaultComponentExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::CouldntGetComponentExImpl,Impl,ex,"CComponentCore::loadLocalOscillator()"); - /******************************************************************************************* - * Verificare - */ - //Impl.setComponentName((const char*)m_configuration.getLocalOscillatorInstance()); - m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + Impl.setComponentName((const char*)name); + device=Receivers::LocalOscillator::_nil(); throw Impl; } } } -void CComponentCore::unloadLocalOscillator() +void CComponentCore::unloadLocalOscillator(Receivers::LocalOscillator_ptr device,const IRA::CString& name) { - if (!CORBA::is_nil(m_localOscillatorDevice)) { + if (!CORBA::is_nil(device)) { try { - m_services->releaseComponent((const char*)m_localOscillatorDevice->name()); + m_services->releaseComponent((const char*)device->name()); } catch (maciErrType::CannotReleaseComponentExImpl& ex) { _ADD_BACKTRACE(ComponentErrors::CouldntReleaseComponentExImpl,Impl,ex,"CComponentCore::unloadLocalOscillator()"); - /******************************************************************************************* - * Verificare - */ - //Impl.setComponentName((const char *)m_configuration.getLocalOscillatorInstance()); + Impl.setComponentName((const char *)name); Impl.log(LM_WARNING); } catch (...) { _EXCPT(ComponentErrors::UnexpectedExImpl,impl,"CComponentCore::unloadLocalOscillator()"); impl.log(LM_WARNING); } - m_localOscillatorDevice=Receivers::LocalOscillator::_nil(); + device=Receivers::LocalOscillator::_nil(); } } diff --git a/Common/Servers/KQWReceiver/test/Configuration_test.i b/Common/Servers/KQWReceiver/test/Configuration_test.i index 8623be82a251d54e43c68cee226a803950ace874..3f394b57bc470c925c1361ccdd7bcda1bca4faa0 100644 --- a/Common/Servers/KQWReceiver/test/Configuration_test.i +++ b/Common/Servers/KQWReceiver/test/Configuration_test.i @@ -41,11 +41,29 @@ public: ::testing::Test::RecordProperty("Records number of the Noise Mark Table",conf.getMarkVectorLen()); - ::testing::Test::RecordProperty("Records number of the Synth Table",conf.getSynthesizerTable(loFreq,loPower)); - ::testing::Test::RecordProperty("Synth[0].freq",loFreq[0]); - ::testing::Test::RecordProperty("Synth[0].power",loPower[0]); + ::testing::Test::RecordProperty("Records number of the K-band Synth Table",conf.getSynthesizerTable_K(loFreq,loPower)); + ::testing::Test::RecordProperty("Synth_K[0].freq",loFreq[0]); + ::testing::Test::RecordProperty("Synth_K[0].power",loPower[0]); delete [] loFreq; delete [] loPower; + + ::testing::Test::RecordProperty("Records number of the Q-band Synth Table",conf.getSynthesizerTable_Q(loFreq,loPower)); + ::testing::Test::RecordProperty("Synth_Q[0].freq",loFreq[0]); + ::testing::Test::RecordProperty("Synth_Q[0].power",loPower[0]); + delete [] loFreq; + delete [] loPower; + + ::testing::Test::RecordProperty("Records number of the WL-band Synth Table",conf.getSynthesizerTable_WL(loFreq,loPower)); + ::testing::Test::RecordProperty("Synth_WL[0].freq",loFreq[0]); + ::testing::Test::RecordProperty("Synth_WL[0].power",loPower[0]); + delete [] loFreq; + delete [] loPower; + + ::testing::Test::RecordProperty("Records number of the WH-band Synth Table",conf.getSynthesizerTable_WH(loFreq,loPower)); + ::testing::Test::RecordProperty("Synth_WH[0].freq",loFreq[0]); + ::testing::Test::RecordProperty("Synth_WH[0].power",loPower[0]); + delete [] loFreq; + delete [] loPower; ::testing::Test::RecordProperty("Records number of the Taper Table (feed=1)",conf.getTaperTable(freq,taper,1)); ::testing::Test::RecordProperty("Taper[feed=1,i=0].freq",freq[0]); diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Feeds/Feeds.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Feeds/Feeds.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0ee9f25f8502f82f7e1a658a67ca6e7127a91a7 --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Feeds/Feeds.xml @@ -0,0 +1,37 @@ + + + + + + 0 + 0.0 + 0.0 + 1.0 + + + + 1 + 0.0 + 0.0 + 1.0 + + + + 2 + 0.0 + 0.0 + 1.0 + + + + 3 + 0.0 + 0.0 + 1.0 + + + + diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Modes/Normal/Normal.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Modes/Normal/Normal.xml new file mode 100644 index 0000000000000000000000000000000000000000..b3892931afde81942992b3f19ad44746c282ed8c --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Modes/Normal/Normal.xml @@ -0,0 +1,28 @@ + + + + diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Modes/Sun/Sun.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Modes/Sun/Sun.xml new file mode 100644 index 0000000000000000000000000000000000000000..6f67370b1a6448cafa3974c133b2b6b00a311baa --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Modes/Sun/Sun.xml @@ -0,0 +1,28 @@ + + + + diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/NoiseMark/NoiseMark.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/NoiseMark/NoiseMark.xml new file mode 100644 index 0000000000000000000000000000000000000000..13d86bc5956e6a74ad735eacf29c229dd4a8b49d --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/NoiseMark/NoiseMark.xml @@ -0,0 +1,43 @@ + + + + + + +0LEFT190003.0 +0LEFT220003.5 +0LEFT250004.0 + +0RIGHT190004.0 +0RIGHT220004.5 +0RIGHT250005.0 + +1LEFT2700013.0 +1LEFT3800013.5 +1LEFT4900014.0 + +1RIGHT2700014.0 +1RIGHT3800014.5 +1RIGHT4900015.0 + +2LEFT8100023.0 +2LEFT8900023.5 +2LEFT9700024.0 + +2RIGHT8100024.0 +2RIGHT8900024.5 +2RIGHT9700025.0 + +3LEFT9900033.0 +3LEFT10700033.5 +3LEFT11500034.0 + +3RIGHT9900034.0 +3RIGHT10700034.5 +3RIGHT11500035.0 + + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer/Synthesizer.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_K/Synthesizer_K.xml similarity index 100% rename from SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer/Synthesizer.xml rename to Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_K/Synthesizer_K.xml diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_Q/Synthesizer_Q.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_Q/Synthesizer_Q.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_Q/Synthesizer_Q.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + + diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WHIGH/Synthesizer_WHIGH.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WHIGH/Synthesizer_WHIGH.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WHIGH/Synthesizer_WHIGH.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + + diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WLOW/Synthesizer_WLOW.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WLOW/Synthesizer_WLOW.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WLOW/Synthesizer_WLOW.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + + diff --git a/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Taper/Taper.xml b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Taper/Taper.xml new file mode 100644 index 0000000000000000000000000000000000000000..d42afa988f2036c7be8a29318d771e9568c15d61 --- /dev/null +++ b/Noto/Configuration/CDB/alma/DataBlock/KQWReceiver/Taper/Taper.xml @@ -0,0 +1,23 @@ + + + + + + +018000.0-12.0 +022000.0-11.0 +026000.0-11.8 + +134000.0-11.7 +142000.0-12.0 +150000.0-12.5 + +280000.0-12.0 +298000.0-13.0 +2116000.0-9.8 + + + diff --git a/Noto/Configuration/CDB/alma/RECEIVERS/KQWBandReceiver/KQWBandReceiver.xml b/Noto/Configuration/CDB/alma/RECEIVERS/KQWBandReceiver/KQWBandReceiver.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a535dac74a7ad2cc09ee2787703051ae8419686 --- /dev/null +++ b/Noto/Configuration/CDB/alma/RECEIVERS/KQWBandReceiver/KQWBandReceiver.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_K/Synthesizer_K.xml b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_K/Synthesizer_K.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_K/Synthesizer_K.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_Q/Synthesizer_Q.xml b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_Q/Synthesizer_Q.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_Q/Synthesizer_Q.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WHIGH/Synthesizer_WHIGH.xml b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WHIGH/Synthesizer_WHIGH.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WHIGH/Synthesizer_WHIGH.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + + diff --git a/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WLOW/Synthesizer_WLOW.xml b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WLOW/Synthesizer_WLOW.xml new file mode 100644 index 0000000000000000000000000000000000000000..a01801c56fad866f4fca9c915911bd9f16f02722 --- /dev/null +++ b/SRT/Configuration/CDB/alma/DataBlock/KQWReceiver/Synthesizer_WLOW/Synthesizer_WLOW.xml @@ -0,0 +1,24 @@ + + + + + + +350.019.0 + +400.019.0 + +800.019.0 + +1200.019.0 + +1600.019.0 + +2000.019.0 + +2400.019.0 + +