//------------------------------------------------------------------------------ // transmitDataMessage() -- send a data message emission; // returns true if the data emission was sent. //------------------------------------------------------------------------------ bool CommRadio::transmitDataMessage(base::Object* const msg) { bool sent = false; // Transmitting, scanning and have an antenna? if(getOwnship() == nullptr) { if (isMessageEnabled(MSG_DEBUG)) { std::cout << "CommRadio ownship == nullptr!" << std::endl; } return sent; } if (msg != nullptr && isTransmitterEnabled() && getAntenna() != nullptr) { // Send the emission to the other player Emission* em = new Emission(); em->setDataMessage(msg); em->setFrequency(getFrequency()); em->setBandwidth(getBandwidth()); em->setPower(getPeakPower()); em->setTransmitLoss(getRfTransmitLoss()); em->setMaxRangeNM(getMaxDetectRange()); em->setTransmitter(this); em->setReturnRequest(false); getAntenna()->rfTransmit(em); em->unref(); sent = true; } return sent; }
//------------------------------------------------------------------------------ //Find ILS Glideslope By Freq - ALWAYS FIND GLIDESLOPE FIRST THEN LOCALIZER!!! //------------------------------------------------------------------------------ bool IlsRadio::findILSGlideslopeByFreq(LCreal freq) { //Reset glideSlopeValid so only the first valid glide slope is returned... glideSlopeValid = false; if (getAirportLoader() != 0 && freq > 0) { if (getAirportLoader()->requestDbInUse()) { //Set the active area: getAirportLoader()->setArea(getLatitude(), getLongitude(), getMaxDetectRange()); //See what the results are: int found = getAirportLoader()->queryIlsByFreq(static_cast<float>(freq)); //Sort through the results and check the type - assume the closest ones are correct //"found" list is already sorted from closest to farthest away: for (int i = 0; i < found; i++) { Dafif::Ils* p = getAirportLoader()->getIls(i); //Debug Prints: //p->printRecord(std::cout); //Get Glideslope data here: if((!glideSlopeValid)&&(p->isIlsType(Dafif::Ils::GLIDESLOPE))){ //Glideslope should not affect the bearing data from the localizer currentMagVar = p->magVariance(); float ilsGS(0), acGS(0), delGS(0); p->getGlideSlopeData(getLatitude(),getLongitude(),getAltitude(),&ilsGS,&acGS,&delGS); ilsGlideSlope = ilsGS; acGlideSlope= acGS; deltaGlideSlope = delGS; glideSlopeValid = true; } //Toast the object: p->unref(); } getAirportLoader()->clearDbInUse(); } } return glideSlopeValid; }