71 typedef std::set<gnsstk::CommonTime>
TimeSet;
89 NavMsgList::iterator nmli;
90 for (nmli = msgBitsIn.begin(); nmli != msgBitsIn.end(); nmli++)
94 if ((*(fd->
data) & 0xff) == 0x000000d1)
95 msgBitsOut.push_back(*nmli);
112 NavMsgList::iterator nmli;
113 std::copy(msgBitsIn.begin(), msgBitsIn.end(),
114 std::back_insert_iterator<NavMsgList>(cache));
115 while (cache.size() > 4)
117 msgBitsOut.push_back(cache.front());
123 std::copy(cache.begin(), cache.end(),
124 std::back_insert_iterator<NavMsgList>(msgBitsOut));
144 unsigned noFilterTest();
146 unsigned testLNavCook();
148 unsigned testLNavParity();
150 unsigned testLNavEmpty();
152 unsigned testLNavTLMHOW();
154 unsigned testLNavEphMaker();
156 unsigned testLNavCombined();
159 template <
class Filter>
160 unsigned testProcessingDepth(
const std::string& filterName);
162 unsigned testCombinedDepths();
165 unsigned testProcessingDepths();
168 unsigned testBunk1();
170 unsigned testBunk2();
205 TUDEF(
"NavFilterMgr",
"initialize");
206 string fs = getFileSep();
207 string dp(gnsstk::getPathData() + fs);
208 string tf(gnsstk::getPathTestTemp() + fs);
212 refFileBunk1 = dp +
"test_output_NavFilterMgr_bunk1.txt";
213 refFileBunk2 = dp +
"test_output_NavFilterMgr_bunk2.txt";
223 string line, timeString, wordStr;
225 unsigned long subframeIdx = 0;
229 cerr <<
"Could not load input file \"" <<
inputFileLNAV <<
"\"" << endl;
237 if (line.length() == 0)
240 scanTime(recTime, timeString,
"%4Y %3j %02H:%02M:%04.1f");
252 for (
unsigned strWord = 6; strWord <= 15; strWord++)
271 cout <<
"Using " <<
dataIdxLNAV <<
" LNAV subframes" << endl;
279 cerr <<
"Could not load input file \"" <<
inputFileBunk <<
"\"" << endl;
287 if (line.length() == 0)
289 for (
unsigned strWord = 1; strWord <= 4; strWord++)
300 cout <<
"Using " <<
dataIdxBunk <<
" \"Bunk\" subframes" << endl;
309 TUDEF(
"NavFilterMgr",
"validate");
312 unsigned long count = 0;
332 TUDEF(
"LNavCookFilter",
"validate");
335 unsigned long count = 0;
379 TUDEF(
"LNavParityFilter",
"validate");
382 unsigned long rejectCount = 0;
390 gnsstk::NavFilter::NavMsgList::const_iterator nmli;
412 rejectCount += filtParity.
rejected.size();
427 TUDEF(
"LNavEmptyFilter",
"validate");
429 uint32_t emptySF[10] = { 0,0,0,0,0,0,0,0,0,0 };
431 unsigned long rejectCount = 0;
439 rejectCount += filtEmpty.
rejected.size();
459 TUDEF(
"LNavTLMHOWFilter",
"validate");
462 unsigned long rejectCount = 0;
481 rejectCount += filtTLMHOW.
rejected.size();
497 TUDEF(
"LNavTLMHOWFilter",
"validate");
500 unsigned long ephCount = 0;
519 TUDEF(
"NavFilterMgr",
"validate");
522 unsigned long rejectCount = 0;
544 rejectCount += l.empty();
556 template <
class Filter>
560 TUDEF(filterName,
"processingDepth");
565 NavFilterMgr::FilterSet::iterator fsi;
569 int expDelta = 6 * filt.processingDepth();
574 gnsstk::NavFilter::NavMsgList::iterator nmli;
576 for (nmli = l.begin(); nmli != l.end(); nmli++)
582 for (nmli = (*fsi)->rejected.begin(); nmli != (*fsi)->rejected.end();
588 if (allTimes.size() > filt.processingDepth())
590 TUASSERTE(TimeSet::size_type, 1, timestamps.size());
592 if (!timestamps.empty())
594 timestampsTime = (*timestamps.begin());
595 int delta = (
dataLNAV[i].timeStamp - timestampsTime);
602 TimeSet::iterator tsi;
603 for (tsi = timestamps.begin(); tsi != timestamps.end(); tsi++)
605 allTimes.erase(*tsi);
610 TUASSERTE(TimeSet::size_type, 0, timestamps.size());
625 TUDEF(
"NavFilterMgr",
"processingDepth");
637 unsigned expProcDepth = 1;
670 rv += testProcessingDepth<LNavParityFilter>(
"LNavParityFilter");
671 rv += testProcessingDepth<LNavCookFilter>(
"LNavCookFilter");
672 rv += testProcessingDepth<LNavEmptyFilter>(
"LNavEmptyFilter");
673 rv += testProcessingDepth<LNavTLMHOWFilter>(
"LNavTLMHOWFilter");
674 rv += testProcessingDepth<LNavCrossSourceFilter>(
"LNavCrossSourceFilter");
675 rv += testProcessingDepth<NavOrderFilter>(
"NavOrderFilter");
684 TUDEF(
"NavFilterMgr",
"validate");
690 gnsstk::NavFilter::NavMsgList::const_iterator nmli;
702 for (nmli = l.begin(); nmli != l.end(); nmli++)
705 outs << hex << setw(8) << setfill(
'0') << *(fd->
data) << setfill(
' ')
710 for (nmli = l.begin(); nmli != l.end(); nmli++)
713 outs << hex << setw(8) << setfill(
'0') << *(fd->
data) << setfill(
' ')
729 TUDEF(
"NavFilterMgr",
"finalize");
735 gnsstk::NavFilter::NavMsgList::const_iterator nmli;
745 unsigned wrongEarly = 0, wrongLate = 0;
770 for (nmli = l.begin(); nmli != l.end(); nmli++)
773 outs << hex << setw(8) << setfill(
'0') << *(fd->
data) << setfill(
' ')
778 testFramework.changeSourceMethod(
"validate");
784 testFramework.changeSourceMethod(
"finalize");
786 for (nmli = l.begin(); nmli != l.end(); nmli++)
789 outs << hex << setw(8) << setfill(
'0') << *(fd->
data) << setfill(
' ')
802 unsigned errorTotal = 0;
818 cout <<
"Total Failures for " << __FILE__ <<
": " << errorTotal << endl;