void LNavParityFilter :: validate(NavMsgList& msgBitsIn, NavMsgList& msgBitsOut) { NavMsgList::iterator i; // check parity of each subframe and put the valid ones in // the output for (i = msgBitsIn.begin(); i != msgBitsIn.end(); i++) { LNavFilterData *fd = dynamic_cast<LNavFilterData*>(*i); if (EngNav::checkParity(fd->sf)) accept(*i, msgBitsOut); else reject(*i); } }
void LNavCrossSourceFilter :: validate(NavMsgList& msgBitsIn, NavMsgList& msgBitsOut) { NavMsgList::const_iterator nmli; for (nmli = msgBitsIn.begin(); nmli != msgBitsIn.end(); nmli++) { LNavFilterData *fd = dynamic_cast<LNavFilterData*>(*nmli); if (fd->timeStamp != currentTime) { // different time, so check out what we have examineSubframes(msgBitsOut); groupedNav.clear(); currentTime = fd->timeStamp; } // add the subframe to our collection groupedNav[fd->prn][fd].push_back(*nmli); } }
void LNavAlmValFilter :: validate(NavMsgList& msgBitsIn, NavMsgList& msgBitsOut) { NavMsgList::iterator i; for (i = msgBitsIn.begin(); i != msgBitsIn.end(); i++) { LNavFilterData *fd = dynamic_cast<LNavFilterData*>(*i); short sfid = EngNav::getSFID(fd->sf[1]); switch (sfid) { case 4: case 5: if (checkAlmValRange(fd)) accept(*i, msgBitsOut); else reject(*i); break; default: accept(*i, msgBitsOut); break; } } }
void NavFilter :: reject(const NavMsgList& invalid) { std::copy(invalid.begin(), invalid.end(), std::back_insert_iterator<NavMsgList>(rejected)); }
void NavFilter :: reject(NavFilterKey* data) { rejected.push_back(data); }
void NavFilter :: accept(const NavMsgList& valid, NavMsgList& msgBitsOut) { std::copy(valid.begin(), valid.end(), std::back_insert_iterator<NavMsgList>(msgBitsOut)); }
void NavFilter :: accept(NavFilterKey* data, NavMsgList& msgBitsOut) { msgBitsOut.push_back(data); }