Loading Common/Libraries/IRALibrary/src/ReceiverControl.cpp +7 −73 Original line number Diff line number Diff line Loading @@ -1149,9 +1149,6 @@ ReceiverControl::FetValues ReceiverControl::fetValues( FetValues values; cout << "feed number " << feed_number << endl; cout << "m_number_of_feeds " << m_number_of_feeds << endl; cout << "stage_number " << stage_number << endl; if(feed_number >= m_number_of_feeds) throw ReceiverControlEx("ReceiverControl error: invalid feed number."); Loading Loading @@ -1376,10 +1373,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( std::string vg_selector; // A03: it allows to select the value requested for a given stadium std::string quantity_selector; // A03: it allows to select the value requested for a given stadium cout << "m_number_of_feeds " << m_number_of_feeds << endl; //cout << "stage_number " << stage_number << endl; //cout << "quantity" << quantity << endl; if(m_number_of_feeds == 1) column_selectors.push_back("0001"); else if(m_number_of_feeds <= 8) { Loading @@ -1398,10 +1391,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( column_selectors.push_back("0100"); } for (std::size_t x = 0; x < column_selectors.size(); x++){ cout << "column_sel " << column_selectors[x] << endl; } switch(stage_number) { case 1: vd_selector = "0000"; Loading Loading @@ -1432,11 +1421,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( throw ReceiverControlEx("ReceiverControl error: invalid stage number."); } cout << "vd_selector " << vd_selector << endl; cout << "id_selector " << id_selector << endl; cout << "vg_selector " << vg_selector << endl; cout << "quantity " << quantity << endl; switch(quantity) { case DRAIN_VOLTAGE: quantity_selector = vd_selector; Loading Loading @@ -1485,7 +1469,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( MCB_PORT_NUMBER_00_07 // Port Number from 08 to 15 ); pthread_mutex_unlock(&m_lna_mutex); //cout << "parameters.size() " << parameters.size() << endl; if(parameters.size() != AD24_LEN * AD24_TYPE_LEN) throw MicroControllerBoardEx("Error: wrong number of parameters received."); Loading Loading @@ -1537,14 +1520,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( rvalues.push_back(rdvalues[offset+idx+4]); // Add the item of the fourth column } } cout << "lvalues.size() " << lvalues.size() << endl; cout << "rvalues.size() " << rvalues.size() << endl; cout << "m_number_of_feeds " << m_number_of_feeds << endl; for(std::size_t i = 0; i < lvalues.size(); i++) cout << i << " lvalues " << lvalues[i] << endl; for(std::size_t j = 0; j < rvalues.size(); j++) cout << j << "rvalues " << rvalues[j] << endl; if(lvalues.size() < m_number_of_feeds || rvalues.size() < m_number_of_feeds) throw ReceiverControlEx("Error: the vector size doesn't match the number of feeds."); Loading Loading @@ -1580,10 +1555,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( const unsigned short feeds_per_pcb = ceil(m_number_of_feeds/5.0f); //cout << "m_number_of_feeds " << m_number_of_feeds << endl; //cout << "stage_number " << stage_number << endl; //cout << "quantity" << quantity << endl; if(m_number_of_feeds <= 5) column_selectors.push_back("0001"); else if(m_number_of_feeds <= 40) { Loading @@ -1602,10 +1573,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( column_selectors.push_back("0100"); } /* for (std::size_t x = 0; x < column_selectors.size(); x++){ cout << "column_sel " << column_selectors[x] << endl; }*/ switch(feed_number) { case 1: vd_selector = "0000"; Loading Loading @@ -1636,11 +1603,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( throw ReceiverControlEx("ReceiverControl error: invalid stage number."); } /*cout << "vd_selector " << vd_selector << endl; cout << "id_selector " << id_selector << endl; cout << "vg_selector " << vg_selector << endl; cout << "quantity " << quantity << endl;*/ switch(quantity) { case DRAIN_VOLTAGE: quantity_selector = vd_selector; Loading @@ -1658,8 +1620,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( throw ReceiverControlEx("ReceiverControl::stageValues(): the quantity requested does not exist."); } cout << quant << " " << quantity_selector << endl; // Left channel values, right channel values, left channel disorderly values, right channel disorderly values std::vector<double> lvalues, rvalues, ldvalues, rdvalues; std::vector<BYTE> parameters; Loading Loading @@ -1690,7 +1650,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( MCB_PORT_NUMBER_00_07 // Port Number from 08 to 15 ); pthread_mutex_unlock(&m_lna_mutex); //cout << "parameters.size() " << parameters.size() << endl; if(parameters.size() != AD24_LEN * AD24_TYPE_LEN) throw MicroControllerBoardEx("Error: wrong number of parameters received."); Loading @@ -1711,9 +1670,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } if(m_number_of_feeds <= 5) { // just one column (BRD Selection 0) cout << "feeds <=10" << endl; cout << "ldvalues.size()" << ldvalues.size() << endl; cout << "rdvalues.size()" << rdvalues.size() << endl; if(ldvalues.size() != 4 || rdvalues.size() != 4) // Just five feeds means just one column throw ReceiverControlEx("Error: mismatch between number of feeds and number of parameters"); lvalues.push_back(ldvalues.front()); Loading @@ -1728,9 +1684,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } if(m_number_of_feeds >= 41 && m_number_of_feeds <= 50) { // third column if we have from 41 to 50 feeds cout << "feeds >=41 to <=50" << endl; cout << "ldvalues.size()" << ldvalues.size() << endl; cout << "rdvalues.size()" << rdvalues.size() << endl; if(ldvalues.size() != 12 || rdvalues.size() != 12) // Nine feeds means three columns throw ReceiverControlEx("Error: mismatch between number of feeds and number of parameters"); lvalues.push_back(ldvalues[8]); Loading @@ -1738,9 +1691,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } else if(m_number_of_feeds > 50) { cout << "feeds > 50" << endl; cout << "ldvalues.size()" << ldvalues.size() << endl; cout << "rdvalues.size()" << rdvalues.size() << endl; if(ldvalues.size() != 16 || rdvalues.size() != 16) // More than nine feeds means four columns throw ReceiverControlEx("Error: mismatch between number of feeds and number of parameters"); std::vector<BYTE>::size_type offset=8; Loading @@ -1752,32 +1702,16 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } } cout << "lvalues.size() " << lvalues.size() << endl; cout << "rvalues.size() " << rvalues.size() << endl; cout << "m_number_of_feeds " << m_number_of_feeds << endl; /*for(std::size_t i = 0; i < lvalues.size(); i++) cout << i << " lvalues " << lvalues[i] << endl; for(std::size_t j = 0; j < rvalues.size(); j++) cout << j << "rvalues " << rvalues[j] << endl;*/ if(lvalues.size() < feeds_per_pcb || rvalues.size() < feeds_per_pcb) throw ReceiverControlEx("Error: the vector size doesn't match the number of feeds."); throw ReceiverControlEx("Error: the vector size doesn't match the number of feeds per pcb."); // Add the first "feeds_per_pcb" converted items of lvalues and rvalues FeedValues values; try { for(size_t idx=0; idx<feeds_per_pcb; idx++) { for(size_t idx=0; idx<m_number_of_feeds; idx++) { (values.left_channel).push_back(converter != NULL ? converter(lvalues[idx]) : lvalues[idx]); (values.right_channel).push_back(converter != NULL ? converter(rvalues[idx]) : rvalues[idx]); } cout << "values.left_channel " << values.left_channel.size() << endl; cout << "values.right_channel " << values.right_channel.size() << endl; } catch(...) { throw ReceiverControlEx("ReceiverControl error: unexpected exception occurs performing the conversion."); Loading SRT/Configuration/CDB/alma/RECEIVERS/SRTQBandReceiver/SRTQBandReceiver.xml +3 −3 Original line number Diff line number Diff line Loading @@ -15,16 +15,16 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" actionThreadStackSize="2048" monitoringThreadStackSize="4096" DewarIPAddress="192.168.3.115" DewarIPAddress="192.168.60.51" DewarPort="5002" LNAIPAddress="192.168.3.114" LNAIPAddress="192.168.60.50" LNAPort="5002" WatchDogResponseTime="10000000" WatchDogSleepTime="10000000" LNASamplingTime="250000" RepetitionCacheTime="7000000" RepetitionExpireTime="10000000" LocalOscillatorInstance="RECEIVERS/LO_CBAND" LocalOscillatorInstance="RECEIVERS/LO_QBAND" ReceiverName="SRTQBand" > <LO description="Sequence of local oscillator values for each IF chain" /> Loading SRT/Servers/SRTQBandReceiver/src/SRTQBandCore.cpp +140 −128 Original line number Diff line number Diff line Loading @@ -2,7 +2,8 @@ #define NUMBER_OF_FEEDS 5 // Number of feeds per AD24 port SRTQBandCore::SRTQBandCore() { SRTQBandCore::SRTQBandCore() { voltage2mbar = voltage2mbarF; voltage2Kelvin = voltage2KelvinF; voltage2Celsius = voltage2CelsiusF; Loading @@ -12,7 +13,6 @@ SRTQBandCore::SRTQBandCore() { SRTQBandCore::~SRTQBandCore() {} void SRTQBandCore::initialize(maci::ContainerServices *services) { m_vdFeedValues = std::vector<IRA::ReceiverControl::FeedValues>(NUMBER_OF_FEEDS); Loading @@ -28,84 +28,91 @@ ACS::doubleSeq SRTQBandCore::getFeedValues(const IRA::ReceiverControl::FetValue& ACS::doubleSeq values; values.length(getFeeds()); cout << "getFeeds() " << getFeeds() << endl; cout << "ifs " << ifs << endl; cout << "feed " << feed << endl; cout << "m_configuration.getIFs() " << m_configuration.getIFs() << endl; cout << "m_configuration.getFeeds()" << m_configuration.getFeeds() << endl; size_t feed_offs = 0; for (size_t i = 0; i < getFeeds(); i++) values[i] = 0.0; if (ifs >= m_configuration.getIFs() || feed > NUMBER_OF_FEEDS || feed < 1) return values; cout << "m_polarization[ifs] " << m_polarization[ifs] << endl; cout << "Receivers::RCV_LCP " << Receivers::RCV_LCP << endl; cout << "control " << control << endl; cout << "IRA::ReceiverControl::DRAIN_VOLTAGE " << IRA::ReceiverControl::DRAIN_VOLTAGE << endl; cout << "IRA::ReceiverControl::DRAIN_CURRENT " << IRA::ReceiverControl::DRAIN_CURRENT << endl; cout << "IRA::ReceiverControl::GATE_VOLTAGE " << IRA::ReceiverControl::GATE_VOLTAGE << endl; cout << "m_vdFeedValues[feed-1].left_channel.size() " << m_vdFeedValues[feed-1].left_channel.size() << endl; cout << "m_idFeedValues[feed-1].left_channel.size() " << m_idFeedValues[feed-1].left_channel.size() << endl; cout << "m_vgFeedeValues[feed-1].left_channel.size() " << m_vgFeedValues[feed-1].left_channel.size() << endl; cout << "m_vdFeedValues[feed-1].right_channel.size() " << m_vdFeedValues[feed-1].right_channel.size() << endl; cout << "m_idFeedValues[feed-1].right_channel.size() " << m_idFeedValues[feed-1].right_channel.size() << endl; cout << "m_vgFeedeValues[feed-1].right_channel.size() " << m_vgFeedValues[feed-1].right_channel.size() << endl; // Left Channel if(m_polarization[ifs] == (long)Receivers::RCV_LCP) { if (control == IRA::ReceiverControl::DRAIN_VOLTAGE) { if (getFeeds()>m_vdFeedValues[feed-1].left_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) { values[i] = (m_vdFeedValues[feed-1]).left_channel[i]; if (m_polarization[ifs] == (long)Receivers::RCV_LCP) { if (control == IRA::ReceiverControl::DRAIN_VOLTAGE) { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vdFeedValues[j]).left_channel[i]; } feed_offs +=4; } else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { if (getFeeds()>m_idFeedValues[feed-1].left_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_idFeedValues[feed-1]).left_channel[i]; } else { if (getFeeds()>m_vgFeedValues[feed-1].left_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_vgFeedValues[feed-1]).left_channel[i]; else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_idFeedValues[j]).left_channel[i]; } feed_offs +=4; } } else { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vgFeedValues[j]).left_channel[i]; } feed_offs +=4; } } } } // Right Channel if (m_polarization[ifs] == (long)Receivers::RCV_RCP) { if (control==IRA::ReceiverControl::DRAIN_VOLTAGE) { if (getFeeds()>m_vdFeedValues[feed-1].right_channel.size()) return values; for(size_t i=0;i<getFeeds();i++) values[i] = (m_vdFeedValues[feed-1]).right_channel[i]; if (m_polarization[ifs] == (long)Receivers::RCV_RCP) { if (control == IRA::ReceiverControl::DRAIN_VOLTAGE) { size_t feed_offs = 0; for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vdFeedValues[j]).right_channel[i]; } else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { if (getFeeds()>m_idFeedValues[feed-1].right_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_idFeedValues[feed-1]).right_channel[i]; feed_offs +=4; } else { if (getFeeds()>m_vgFeedValues[feed-1].right_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_vgFeedValues[feed-1]).right_channel[i]; } else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_idFeedValues[j]).right_channel[i]; } feed_offs +=4; } } else { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vgFeedValues[j]).right_channel[i]; } feed_offs +=4; } } for(size_t j = 0; j < getFeeds(); j++){ cout << "values " << values[j] << endl; } return values; } return values; } void SRTQBandCore::setMode(const char *mode) throw( ReceiversErrors::ModeErrorExImpl, Loading @@ -114,8 +121,7 @@ void SRTQBandCore::setMode(const char * mode) throw ( ComponentErrors::ValueOutofRangeExImpl, ComponentErrors::CouldntGetComponentExImpl, ComponentErrors::CORBAProblemExImpl, ReceiversErrors::LocalOscillatorErrorExImpl ) ReceiversErrors::LocalOscillatorErrorExImpl) { baci::ThreadSyncGuard guard(&m_mutex); m_setupMode = ""; // If we don't reach the end of the method then the mode will be unknown Loading @@ -123,18 +129,18 @@ void SRTQBandCore::setMode(const char * mode) throw ( cmdMode.MakeUpper(); _EXCPT(ReceiversErrors::ModeErrorExImpl, impl, "CConfiguration::setMode()"); cout << "cmdMode " << cmdMode << endl; // Set the operating mode to the board try { try { if (cmdMode == "SINGLEDISH") m_control->setSingleDishMode(); else if(cmdMode == "VLBI") else if (cmdMode == "VLBI") m_control->setVLBIMode(); else throw impl; // If the mode is not supported, raise an exception } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::setMode()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -143,7 +149,8 @@ void SRTQBandCore::setMode(const char * mode) throw ( m_configuration.setMode(cmdMode); for (WORD i=0;i<m_configuration.getIFs();i++) { for (WORD i = 0; i < m_configuration.getIFs(); i++) { m_startFreq[i] = m_configuration.getIFMin()[i]; m_bandwidth[i] = m_configuration.getIFBandwidth()[i]; m_polarization[i] = (long)m_configuration.getPolarizations()[i]; Loading @@ -151,7 +158,8 @@ void SRTQBandCore::setMode(const char * mode) throw ( // The set the default LO for the default LO for the selected mode..... ACS::doubleSeq lo; lo.length(m_configuration.getIFs()); for (WORD i=0;i<m_configuration.getIFs();i++) { for (WORD i = 0; i < m_configuration.getIFs(); i++) { lo[i] = m_configuration.getDefaultLO()[i]; } // setLO throws: Loading @@ -164,17 +172,20 @@ void SRTQBandCore::setMode(const char * mode) throw ( // Verify the m_setupMode is the same mode active on the board bool isSingleDishModeOn, isVLBIModeOn; try { try { isSingleDishModeOn = m_control->isSingleDishModeOn(); isVLBIModeOn = m_control->isVLBIModeOn(); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::setMode()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); throw impl; } if((cmdMode == "SINGLEDISH" && !isSingleDishModeOn) || (cmdMode == "VLBI" && !isVLBIModeOn)) { if ((cmdMode == "SINGLEDISH" && !isSingleDishModeOn) || (cmdMode == "VLBI" && !isVLBIModeOn)) { m_setupMode = ""; // If m_setupMode doesn't match the mode active on the board, then set un unknown mode throw impl; } Loading @@ -187,16 +198,16 @@ void SRTQBandCore::setMode(const char * mode) throw ( ACS_LOG(LM_FULL_INFO, "CComponentCore::setMode()", (LM_NOTICE, "RECEIVER_MODE %s", (const char *)cmdMode)); } void SRTQBandCore::updateVdLNAControls() throw(ReceiversErrors::ReceiverControlBoardErrorExImpl) { // Not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) try { cout << "Number of feeds per pcb " << NUMBER_OF_FEEDS << endl; try { for (size_t i = 0; i < NUMBER_OF_FEEDS; i++) m_vdFeedValues[i] = m_control->feedValues(IRA::ReceiverControl::DRAIN_VOLTAGE, i + 1, SRTQBandCore::voltageConverter); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::updateVdLNAControls()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -205,15 +216,16 @@ void SRTQBandCore::updateVdLNAControls() throw (ReceiversErrors::ReceiverControl clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit } void SRTQBandCore::updateIdLNAControls() throw(ReceiversErrors::ReceiverControlBoardErrorExImpl) { // Not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) try { try { for (size_t i = 0; i < NUMBER_OF_FEEDS; i++) m_idFeedValues[i] = m_control->feedValues(IRA::ReceiverControl::DRAIN_CURRENT, i + 1, SRTQBandCore::currentConverter); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::updateIdLNAControls()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -222,15 +234,16 @@ void SRTQBandCore::updateIdLNAControls() throw (ReceiversErrors::ReceiverControl clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit } void SRTQBandCore::updateVgLNAControls() throw(ReceiversErrors::ReceiverControlBoardErrorExImpl) { // Not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) try { try { for (size_t i = 0; i < NUMBER_OF_FEEDS; i++) m_vgFeedValues[i] = m_control->feedValues(IRA::ReceiverControl::GATE_VOLTAGE, i + 1, SRTQBandCore::voltageConverter); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::updateVgLNAControls()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -238,4 +251,3 @@ void SRTQBandCore::updateVgLNAControls() throw (ReceiversErrors::ReceiverControl } clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit } Loading
Common/Libraries/IRALibrary/src/ReceiverControl.cpp +7 −73 Original line number Diff line number Diff line Loading @@ -1149,9 +1149,6 @@ ReceiverControl::FetValues ReceiverControl::fetValues( FetValues values; cout << "feed number " << feed_number << endl; cout << "m_number_of_feeds " << m_number_of_feeds << endl; cout << "stage_number " << stage_number << endl; if(feed_number >= m_number_of_feeds) throw ReceiverControlEx("ReceiverControl error: invalid feed number."); Loading Loading @@ -1376,10 +1373,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( std::string vg_selector; // A03: it allows to select the value requested for a given stadium std::string quantity_selector; // A03: it allows to select the value requested for a given stadium cout << "m_number_of_feeds " << m_number_of_feeds << endl; //cout << "stage_number " << stage_number << endl; //cout << "quantity" << quantity << endl; if(m_number_of_feeds == 1) column_selectors.push_back("0001"); else if(m_number_of_feeds <= 8) { Loading @@ -1398,10 +1391,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( column_selectors.push_back("0100"); } for (std::size_t x = 0; x < column_selectors.size(); x++){ cout << "column_sel " << column_selectors[x] << endl; } switch(stage_number) { case 1: vd_selector = "0000"; Loading Loading @@ -1432,11 +1421,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( throw ReceiverControlEx("ReceiverControl error: invalid stage number."); } cout << "vd_selector " << vd_selector << endl; cout << "id_selector " << id_selector << endl; cout << "vg_selector " << vg_selector << endl; cout << "quantity " << quantity << endl; switch(quantity) { case DRAIN_VOLTAGE: quantity_selector = vd_selector; Loading Loading @@ -1485,7 +1469,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( MCB_PORT_NUMBER_00_07 // Port Number from 08 to 15 ); pthread_mutex_unlock(&m_lna_mutex); //cout << "parameters.size() " << parameters.size() << endl; if(parameters.size() != AD24_LEN * AD24_TYPE_LEN) throw MicroControllerBoardEx("Error: wrong number of parameters received."); Loading Loading @@ -1537,14 +1520,6 @@ ReceiverControl::StageValues ReceiverControl::stageValues( rvalues.push_back(rdvalues[offset+idx+4]); // Add the item of the fourth column } } cout << "lvalues.size() " << lvalues.size() << endl; cout << "rvalues.size() " << rvalues.size() << endl; cout << "m_number_of_feeds " << m_number_of_feeds << endl; for(std::size_t i = 0; i < lvalues.size(); i++) cout << i << " lvalues " << lvalues[i] << endl; for(std::size_t j = 0; j < rvalues.size(); j++) cout << j << "rvalues " << rvalues[j] << endl; if(lvalues.size() < m_number_of_feeds || rvalues.size() < m_number_of_feeds) throw ReceiverControlEx("Error: the vector size doesn't match the number of feeds."); Loading Loading @@ -1580,10 +1555,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( const unsigned short feeds_per_pcb = ceil(m_number_of_feeds/5.0f); //cout << "m_number_of_feeds " << m_number_of_feeds << endl; //cout << "stage_number " << stage_number << endl; //cout << "quantity" << quantity << endl; if(m_number_of_feeds <= 5) column_selectors.push_back("0001"); else if(m_number_of_feeds <= 40) { Loading @@ -1602,10 +1573,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( column_selectors.push_back("0100"); } /* for (std::size_t x = 0; x < column_selectors.size(); x++){ cout << "column_sel " << column_selectors[x] << endl; }*/ switch(feed_number) { case 1: vd_selector = "0000"; Loading Loading @@ -1636,11 +1603,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( throw ReceiverControlEx("ReceiverControl error: invalid stage number."); } /*cout << "vd_selector " << vd_selector << endl; cout << "id_selector " << id_selector << endl; cout << "vg_selector " << vg_selector << endl; cout << "quantity " << quantity << endl;*/ switch(quantity) { case DRAIN_VOLTAGE: quantity_selector = vd_selector; Loading @@ -1658,8 +1620,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( throw ReceiverControlEx("ReceiverControl::stageValues(): the quantity requested does not exist."); } cout << quant << " " << quantity_selector << endl; // Left channel values, right channel values, left channel disorderly values, right channel disorderly values std::vector<double> lvalues, rvalues, ldvalues, rdvalues; std::vector<BYTE> parameters; Loading Loading @@ -1690,7 +1650,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( MCB_PORT_NUMBER_00_07 // Port Number from 08 to 15 ); pthread_mutex_unlock(&m_lna_mutex); //cout << "parameters.size() " << parameters.size() << endl; if(parameters.size() != AD24_LEN * AD24_TYPE_LEN) throw MicroControllerBoardEx("Error: wrong number of parameters received."); Loading @@ -1711,9 +1670,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } if(m_number_of_feeds <= 5) { // just one column (BRD Selection 0) cout << "feeds <=10" << endl; cout << "ldvalues.size()" << ldvalues.size() << endl; cout << "rdvalues.size()" << rdvalues.size() << endl; if(ldvalues.size() != 4 || rdvalues.size() != 4) // Just five feeds means just one column throw ReceiverControlEx("Error: mismatch between number of feeds and number of parameters"); lvalues.push_back(ldvalues.front()); Loading @@ -1728,9 +1684,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } if(m_number_of_feeds >= 41 && m_number_of_feeds <= 50) { // third column if we have from 41 to 50 feeds cout << "feeds >=41 to <=50" << endl; cout << "ldvalues.size()" << ldvalues.size() << endl; cout << "rdvalues.size()" << rdvalues.size() << endl; if(ldvalues.size() != 12 || rdvalues.size() != 12) // Nine feeds means three columns throw ReceiverControlEx("Error: mismatch between number of feeds and number of parameters"); lvalues.push_back(ldvalues[8]); Loading @@ -1738,9 +1691,6 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } else if(m_number_of_feeds > 50) { cout << "feeds > 50" << endl; cout << "ldvalues.size()" << ldvalues.size() << endl; cout << "rdvalues.size()" << rdvalues.size() << endl; if(ldvalues.size() != 16 || rdvalues.size() != 16) // More than nine feeds means four columns throw ReceiverControlEx("Error: mismatch between number of feeds and number of parameters"); std::vector<BYTE>::size_type offset=8; Loading @@ -1752,32 +1702,16 @@ ReceiverControl::FeedValues ReceiverControl::feedValues( } } cout << "lvalues.size() " << lvalues.size() << endl; cout << "rvalues.size() " << rvalues.size() << endl; cout << "m_number_of_feeds " << m_number_of_feeds << endl; /*for(std::size_t i = 0; i < lvalues.size(); i++) cout << i << " lvalues " << lvalues[i] << endl; for(std::size_t j = 0; j < rvalues.size(); j++) cout << j << "rvalues " << rvalues[j] << endl;*/ if(lvalues.size() < feeds_per_pcb || rvalues.size() < feeds_per_pcb) throw ReceiverControlEx("Error: the vector size doesn't match the number of feeds."); throw ReceiverControlEx("Error: the vector size doesn't match the number of feeds per pcb."); // Add the first "feeds_per_pcb" converted items of lvalues and rvalues FeedValues values; try { for(size_t idx=0; idx<feeds_per_pcb; idx++) { for(size_t idx=0; idx<m_number_of_feeds; idx++) { (values.left_channel).push_back(converter != NULL ? converter(lvalues[idx]) : lvalues[idx]); (values.right_channel).push_back(converter != NULL ? converter(rvalues[idx]) : rvalues[idx]); } cout << "values.left_channel " << values.left_channel.size() << endl; cout << "values.right_channel " << values.right_channel.size() << endl; } catch(...) { throw ReceiverControlEx("ReceiverControl error: unexpected exception occurs performing the conversion."); Loading
SRT/Configuration/CDB/alma/RECEIVERS/SRTQBandReceiver/SRTQBandReceiver.xml +3 −3 Original line number Diff line number Diff line Loading @@ -15,16 +15,16 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" actionThreadStackSize="2048" monitoringThreadStackSize="4096" DewarIPAddress="192.168.3.115" DewarIPAddress="192.168.60.51" DewarPort="5002" LNAIPAddress="192.168.3.114" LNAIPAddress="192.168.60.50" LNAPort="5002" WatchDogResponseTime="10000000" WatchDogSleepTime="10000000" LNASamplingTime="250000" RepetitionCacheTime="7000000" RepetitionExpireTime="10000000" LocalOscillatorInstance="RECEIVERS/LO_CBAND" LocalOscillatorInstance="RECEIVERS/LO_QBAND" ReceiverName="SRTQBand" > <LO description="Sequence of local oscillator values for each IF chain" /> Loading
SRT/Servers/SRTQBandReceiver/src/SRTQBandCore.cpp +140 −128 Original line number Diff line number Diff line Loading @@ -2,7 +2,8 @@ #define NUMBER_OF_FEEDS 5 // Number of feeds per AD24 port SRTQBandCore::SRTQBandCore() { SRTQBandCore::SRTQBandCore() { voltage2mbar = voltage2mbarF; voltage2Kelvin = voltage2KelvinF; voltage2Celsius = voltage2CelsiusF; Loading @@ -12,7 +13,6 @@ SRTQBandCore::SRTQBandCore() { SRTQBandCore::~SRTQBandCore() {} void SRTQBandCore::initialize(maci::ContainerServices *services) { m_vdFeedValues = std::vector<IRA::ReceiverControl::FeedValues>(NUMBER_OF_FEEDS); Loading @@ -28,84 +28,91 @@ ACS::doubleSeq SRTQBandCore::getFeedValues(const IRA::ReceiverControl::FetValue& ACS::doubleSeq values; values.length(getFeeds()); cout << "getFeeds() " << getFeeds() << endl; cout << "ifs " << ifs << endl; cout << "feed " << feed << endl; cout << "m_configuration.getIFs() " << m_configuration.getIFs() << endl; cout << "m_configuration.getFeeds()" << m_configuration.getFeeds() << endl; size_t feed_offs = 0; for (size_t i = 0; i < getFeeds(); i++) values[i] = 0.0; if (ifs >= m_configuration.getIFs() || feed > NUMBER_OF_FEEDS || feed < 1) return values; cout << "m_polarization[ifs] " << m_polarization[ifs] << endl; cout << "Receivers::RCV_LCP " << Receivers::RCV_LCP << endl; cout << "control " << control << endl; cout << "IRA::ReceiverControl::DRAIN_VOLTAGE " << IRA::ReceiverControl::DRAIN_VOLTAGE << endl; cout << "IRA::ReceiverControl::DRAIN_CURRENT " << IRA::ReceiverControl::DRAIN_CURRENT << endl; cout << "IRA::ReceiverControl::GATE_VOLTAGE " << IRA::ReceiverControl::GATE_VOLTAGE << endl; cout << "m_vdFeedValues[feed-1].left_channel.size() " << m_vdFeedValues[feed-1].left_channel.size() << endl; cout << "m_idFeedValues[feed-1].left_channel.size() " << m_idFeedValues[feed-1].left_channel.size() << endl; cout << "m_vgFeedeValues[feed-1].left_channel.size() " << m_vgFeedValues[feed-1].left_channel.size() << endl; cout << "m_vdFeedValues[feed-1].right_channel.size() " << m_vdFeedValues[feed-1].right_channel.size() << endl; cout << "m_idFeedValues[feed-1].right_channel.size() " << m_idFeedValues[feed-1].right_channel.size() << endl; cout << "m_vgFeedeValues[feed-1].right_channel.size() " << m_vgFeedValues[feed-1].right_channel.size() << endl; // Left Channel if(m_polarization[ifs] == (long)Receivers::RCV_LCP) { if (control == IRA::ReceiverControl::DRAIN_VOLTAGE) { if (getFeeds()>m_vdFeedValues[feed-1].left_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) { values[i] = (m_vdFeedValues[feed-1]).left_channel[i]; if (m_polarization[ifs] == (long)Receivers::RCV_LCP) { if (control == IRA::ReceiverControl::DRAIN_VOLTAGE) { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vdFeedValues[j]).left_channel[i]; } feed_offs +=4; } else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { if (getFeeds()>m_idFeedValues[feed-1].left_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_idFeedValues[feed-1]).left_channel[i]; } else { if (getFeeds()>m_vgFeedValues[feed-1].left_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_vgFeedValues[feed-1]).left_channel[i]; else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_idFeedValues[j]).left_channel[i]; } feed_offs +=4; } } else { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vgFeedValues[j]).left_channel[i]; } feed_offs +=4; } } } } // Right Channel if (m_polarization[ifs] == (long)Receivers::RCV_RCP) { if (control==IRA::ReceiverControl::DRAIN_VOLTAGE) { if (getFeeds()>m_vdFeedValues[feed-1].right_channel.size()) return values; for(size_t i=0;i<getFeeds();i++) values[i] = (m_vdFeedValues[feed-1]).right_channel[i]; if (m_polarization[ifs] == (long)Receivers::RCV_RCP) { if (control == IRA::ReceiverControl::DRAIN_VOLTAGE) { size_t feed_offs = 0; for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vdFeedValues[j]).right_channel[i]; } else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { if (getFeeds()>m_idFeedValues[feed-1].right_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_idFeedValues[feed-1]).right_channel[i]; feed_offs +=4; } else { if (getFeeds()>m_vgFeedValues[feed-1].right_channel.size()) return values; for(size_t i=0; i<getFeeds(); i++) values[i] = (m_vgFeedValues[feed-1]).right_channel[i]; } else { if (control == IRA::ReceiverControl::DRAIN_CURRENT) { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_idFeedValues[j]).right_channel[i]; } feed_offs +=4; } } else { for (size_t i = 0; i < 4; i++){ for (size_t j = 0; j < NUMBER_OF_FEEDS; j++){ if(i + j + feed_offs < getFeeds()) values[i + j + feed_offs] = (m_vgFeedValues[j]).right_channel[i]; } feed_offs +=4; } } for(size_t j = 0; j < getFeeds(); j++){ cout << "values " << values[j] << endl; } return values; } return values; } void SRTQBandCore::setMode(const char *mode) throw( ReceiversErrors::ModeErrorExImpl, Loading @@ -114,8 +121,7 @@ void SRTQBandCore::setMode(const char * mode) throw ( ComponentErrors::ValueOutofRangeExImpl, ComponentErrors::CouldntGetComponentExImpl, ComponentErrors::CORBAProblemExImpl, ReceiversErrors::LocalOscillatorErrorExImpl ) ReceiversErrors::LocalOscillatorErrorExImpl) { baci::ThreadSyncGuard guard(&m_mutex); m_setupMode = ""; // If we don't reach the end of the method then the mode will be unknown Loading @@ -123,18 +129,18 @@ void SRTQBandCore::setMode(const char * mode) throw ( cmdMode.MakeUpper(); _EXCPT(ReceiversErrors::ModeErrorExImpl, impl, "CConfiguration::setMode()"); cout << "cmdMode " << cmdMode << endl; // Set the operating mode to the board try { try { if (cmdMode == "SINGLEDISH") m_control->setSingleDishMode(); else if(cmdMode == "VLBI") else if (cmdMode == "VLBI") m_control->setVLBIMode(); else throw impl; // If the mode is not supported, raise an exception } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::setMode()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -143,7 +149,8 @@ void SRTQBandCore::setMode(const char * mode) throw ( m_configuration.setMode(cmdMode); for (WORD i=0;i<m_configuration.getIFs();i++) { for (WORD i = 0; i < m_configuration.getIFs(); i++) { m_startFreq[i] = m_configuration.getIFMin()[i]; m_bandwidth[i] = m_configuration.getIFBandwidth()[i]; m_polarization[i] = (long)m_configuration.getPolarizations()[i]; Loading @@ -151,7 +158,8 @@ void SRTQBandCore::setMode(const char * mode) throw ( // The set the default LO for the default LO for the selected mode..... ACS::doubleSeq lo; lo.length(m_configuration.getIFs()); for (WORD i=0;i<m_configuration.getIFs();i++) { for (WORD i = 0; i < m_configuration.getIFs(); i++) { lo[i] = m_configuration.getDefaultLO()[i]; } // setLO throws: Loading @@ -164,17 +172,20 @@ void SRTQBandCore::setMode(const char * mode) throw ( // Verify the m_setupMode is the same mode active on the board bool isSingleDishModeOn, isVLBIModeOn; try { try { isSingleDishModeOn = m_control->isSingleDishModeOn(); isVLBIModeOn = m_control->isVLBIModeOn(); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::setMode()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); throw impl; } if((cmdMode == "SINGLEDISH" && !isSingleDishModeOn) || (cmdMode == "VLBI" && !isVLBIModeOn)) { if ((cmdMode == "SINGLEDISH" && !isSingleDishModeOn) || (cmdMode == "VLBI" && !isVLBIModeOn)) { m_setupMode = ""; // If m_setupMode doesn't match the mode active on the board, then set un unknown mode throw impl; } Loading @@ -187,16 +198,16 @@ void SRTQBandCore::setMode(const char * mode) throw ( ACS_LOG(LM_FULL_INFO, "CComponentCore::setMode()", (LM_NOTICE, "RECEIVER_MODE %s", (const char *)cmdMode)); } void SRTQBandCore::updateVdLNAControls() throw(ReceiversErrors::ReceiverControlBoardErrorExImpl) { // Not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) try { cout << "Number of feeds per pcb " << NUMBER_OF_FEEDS << endl; try { for (size_t i = 0; i < NUMBER_OF_FEEDS; i++) m_vdFeedValues[i] = m_control->feedValues(IRA::ReceiverControl::DRAIN_VOLTAGE, i + 1, SRTQBandCore::voltageConverter); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::updateVdLNAControls()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -205,15 +216,16 @@ void SRTQBandCore::updateVdLNAControls() throw (ReceiversErrors::ReceiverControl clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit } void SRTQBandCore::updateIdLNAControls() throw(ReceiversErrors::ReceiverControlBoardErrorExImpl) { // Not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) try { try { for (size_t i = 0; i < NUMBER_OF_FEEDS; i++) m_idFeedValues[i] = m_control->feedValues(IRA::ReceiverControl::DRAIN_CURRENT, i + 1, SRTQBandCore::currentConverter); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::updateIdLNAControls()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -222,15 +234,16 @@ void SRTQBandCore::updateIdLNAControls() throw (ReceiversErrors::ReceiverControl clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit } void SRTQBandCore::updateVgLNAControls() throw(ReceiversErrors::ReceiverControlBoardErrorExImpl) { // Not under the mutex protection because the m_control object is thread safe (at the micro controller board stage) try { try { for (size_t i = 0; i < NUMBER_OF_FEEDS; i++) m_vgFeedValues[i] = m_control->feedValues(IRA::ReceiverControl::GATE_VOLTAGE, i + 1, SRTQBandCore::voltageConverter); } catch (IRA::ReceiverControlEx& ex) { catch (IRA::ReceiverControlEx &ex) { _EXCPT(ReceiversErrors::ReceiverControlBoardErrorExImpl, impl, "SRTQBandCore::updateVgLNAControls()"); impl.setDetails(ex.what().c_str()); setStatusBit(CONNECTIONERROR); Loading @@ -238,4 +251,3 @@ void SRTQBandCore::updateVgLNAControls() throw (ReceiversErrors::ReceiverControl } clearStatusBit(CONNECTIONERROR); // The communication was ok so clear the CONNECTIONERROR bit }