70 FFSign::NegOnly, FFAlign::Right),
72 FFSign::NegOnly, FFAlign::Right),
74 FFSign::NegOnly, FFAlign::Right),
76 FFSign::NegOnly, FFAlign::Right) },
78 FFSign::NegOnly, FFAlign::Right),
80 FFSign::NegOnly, FFAlign::Right),
82 FFSign::NegOnly, FFAlign::Right),
84 FFSign::NegOnly, FFAlign::Right) },
85 A0(0),
A1(0), UTCRefTime(0), UTCRefWeek(0), leapSeconds(0)
94 unsigned long allValid;
101 err.addText(
"Make sure to set the version correctly.");
105 if ((
valid & allValid) != allValid)
107 FFStreamError
err(
"Incomplete or invalid header.");
108 err.addText(
"Make sure you set all header valid bits for all of the available data.");
117 line += string(11,
' ');
118 line += string(
"NAVIGATION");
119 line += string(30,
' ');
121 strm << line << endl;
129 string dat = (
static_cast<CivilTime>(dt)).
printf(
"%02m/%02d/%04Y %02H:%02M:%02S");
132 strm << line << endl;
137 vector<string>::const_iterator itr =
commentList.begin();
142 strm << line << endl;
150 for (
int i = 0; i < 4; i++)
160 for (
int i = 0; i < 4; i++)
177 line += string(54,
' ');
179 strm << line << endl;
184 line = string(60,
' ');
186 strm << line << endl;
211 if (line.length()==0)
continue;
212 else if (line.length()<60 || line.length()>80)
214 FFStreamError e(
"Invalid line length");
218 string thisLabel(line, 60, 20);
227 FFStreamError e(
"This isn't a Rinex Nav file");
246 for(
int i = 0; i < 4; i++)
247 ionAlpha[i] = line.substr(2 + 12 * i,12);
252 for(
int i = 0; i < 4; i++)
253 ionBeta[i] = line.substr(2 + 12 * i,12);
258 A0 = line.substr(3,19);
259 A1 = line.substr(22,19);
275 FFStreamError exc(
"Unknown header label at line " +
281 unsigned long allValid;
287 FFStreamError e(
"Unknown or unsupported RINEX version " +
292 if ( (allValid &
valid) != allValid)
294 FFStreamError e(
"Incomplete or invalid header");
306 s <<
"---------------------------------- REQUIRED ----------------------------------\n";
307 s <<
"Rinex Version " << fixed << setw(5) << setprecision(2) <<
version
308 <<
", File type " <<
fileType <<
".\n";
311 s <<
"(This header is ";
315 else s <<
"NOT VALID";
322 s <<
"---------------------------------- OPTIONAL ----------------------------------\n";
324 for(i=0; i<4; i++) s <<
" " << scientific << setprecision(4) <<
ionAlpha[i];
326 else s <<
" Ion alpha is NOT valid\n";
328 for(i=0; i<4; i++) s <<
" " << scientific << setprecision(4) <<
ionBeta[i];
330 else s <<
" Ion beta is NOT valid\n";
332 << scientific << setprecision(12) <<
A0 <<
", A1="
333 << scientific << setprecision(12) <<
A1 <<
", UTC ref = ("
335 else s <<
" Delta UTC is NOT valid\n";
337 else s <<
" Leap seconds is NOT valid\n";
339 s <<
"Comments (" <<
commentList.size() <<
") :\n";
343 s <<
"-------------------------------- END OF HEADER -------------------------------\n";