SVNumXRef.cpp

Go to the documentation of this file.
00001 
00027    // Language Headers
00028 
00029    // Library Headers
00030    // Project Headers
00031 #include "SVNumXRef.hpp"
00032 
00033 using namespace std;
00034 namespace gpstk
00035 {
00036 
00037 SVNumXRef::SVNumXRef( )
00038 {
00039    NtoBMap.insert( make_pair(  1,  I )); 
00040    NtoBMap.insert( make_pair(  2,  I ));
00041    NtoBMap.insert( make_pair(  3,  I ));
00042    NtoBMap.insert( make_pair(  4,  I ));
00043    NtoBMap.insert( make_pair(  5,  I ));
00044    NtoBMap.insert( make_pair(  6,  I ));
00045      // no NAVSTAR 07, I-7 was a launch failure
00046    NtoBMap.insert( make_pair(  8,  I ));
00047    NtoBMap.insert( make_pair(  9,  I ));
00048    NtoBMap.insert( make_pair( 10,  I ));
00049    NtoBMap.insert( make_pair( 11,  I ));
00050      // no NAVSTAR 12, was never launched
00051    NtoBMap.insert( make_pair( 13, II ));
00052    NtoBMap.insert( make_pair( 14, II ));
00053    NtoBMap.insert( make_pair( 15, II ));
00054    NtoBMap.insert( make_pair( 16, II ));
00055    NtoBMap.insert( make_pair( 17, II ));
00056    NtoBMap.insert( make_pair( 18, II ));
00057    NtoBMap.insert( make_pair( 19, II ));
00058    NtoBMap.insert( make_pair( 20, II ));
00059    NtoBMap.insert( make_pair( 21, II ));
00060    NtoBMap.insert( make_pair( 22,IIA ));
00061    NtoBMap.insert( make_pair( 23,IIA ));
00062    NtoBMap.insert( make_pair( 24,IIA ));
00063    NtoBMap.insert( make_pair( 25,IIA ));
00064    NtoBMap.insert( make_pair( 26,IIA ));
00065    NtoBMap.insert( make_pair( 27,IIA ));
00066    NtoBMap.insert( make_pair( 28,IIA ));
00067    NtoBMap.insert( make_pair( 29,IIA ));
00068    NtoBMap.insert( make_pair( 30,IIA ));
00069    NtoBMap.insert( make_pair( 31,IIA ));
00070    NtoBMap.insert( make_pair( 32,IIA ));
00071    NtoBMap.insert( make_pair( 33,IIA ));
00072    NtoBMap.insert( make_pair( 34,IIA ));
00073    NtoBMap.insert( make_pair( 35,IIA ));
00074    NtoBMap.insert( make_pair( 36,IIA ));
00075    NtoBMap.insert( make_pair( 37,IIA ));
00076    NtoBMap.insert( make_pair( 38,IIA ));
00077    NtoBMap.insert( make_pair( 39,IIA ));
00078    NtoBMap.insert( make_pair( 40,IIA )); 
00079    NtoBMap.insert( make_pair( 41,IIR ));
00080     // no NAVSTAR 42, IIR-1 was a launch failure
00081    NtoBMap.insert( make_pair( 43,IIR )); 
00082    NtoBMap.insert( make_pair( 44,IIR ));
00083    NtoBMap.insert( make_pair( 45,IIR ));
00084    NtoBMap.insert( make_pair( 46,IIR ));
00085    NtoBMap.insert( make_pair( 47,IIR ));
00086    NtoBMap.insert( make_pair( 48,IIR_M));
00087    NtoBMap.insert( make_pair( 49,IIR_M));
00088    NtoBMap.insert( make_pair( 50,IIR_M));
00089    NtoBMap.insert( make_pair( 51,IIR ));
00090    NtoBMap.insert( make_pair( 52,IIR_M));
00091    NtoBMap.insert( make_pair( 53,IIR_M));
00092    NtoBMap.insert( make_pair( 54,IIR ));
00093    NtoBMap.insert( make_pair( 55,IIR_M));
00094    NtoBMap.insert( make_pair( 56,IIR ));
00095    NtoBMap.insert( make_pair( 57,IIR_M));
00096    NtoBMap.insert( make_pair( 58,IIR_M));
00097    NtoBMap.insert( make_pair( 59,IIR ));
00098    NtoBMap.insert( make_pair( 60,IIR ));
00099    NtoBMap.insert( make_pair( 61,IIR ));
00100    NtoBMap.insert( make_pair( 62,IIF )); 
00101 
00102       // Note: This table start with Block I values
00103       // Set up NAVSTAR -> PRN ID relationship
00104       // NAVSTAR ID first, PRN ID second
00105    NtoPMap.insert( std::pair<const int, XRefNode>(  1, XRefNode(  4, 
00106                                        DayTime( 1978,  2, 22,  0,  0,  0.0),
00107                                        DayTime( 1985,  7, 17, 17, 30,  0.0))));
00108    NtoPMap.insert( std::pair<const int, XRefNode>(  2, XRefNode(  7, 
00109                                        DayTime( 1978,  6, 13,  0,  0,  0.0),
00110                                        DayTime( 1988,  2, 12, 23, 59,  0.0))));
00111    NtoPMap.insert( std::pair<const int, XRefNode>(  3, XRefNode(  6, 
00112                                        DayTime( 1978, 10,  6,  0,  0,  0.0),
00113                                        DayTime( 1992,  5, 18, 23, 41,  0.0))));
00114    NtoPMap.insert( std::pair<const int, XRefNode>(  4, XRefNode(  8, 
00115                                        DayTime( 1978, 12, 10,  0,  0,  0.0),
00116                                        DayTime( 1990,  5, 31, 23, 59,  0.0))));
00117    NtoPMap.insert( std::pair<const int, XRefNode>(  5, XRefNode(  5, 
00118                                        DayTime( 1980,  2,  9,  0,  0,  0.0),
00119                                        DayTime( 1984,  5, 11, 23, 59,  0.0))));
00120    NtoPMap.insert( std::pair<const int, XRefNode>(  6, XRefNode(  9, 
00121                                        DayTime( 1980,  4, 26,  0,  0,  0.0),
00122                                        DayTime( 1991,  3,  6,  3, 42,  0.0))));
00123      // no NAVSTAR 07, I-7 was a launch failure
00124    NtoPMap.insert( std::pair<const int, XRefNode>(  8, XRefNode( 11, 
00125                                        DayTime( 1983,  7, 14,  0,  0,  0.0),
00126                                        DayTime( 1993,  5,  4,  0, 20,  0.0))));
00127    NtoPMap.insert( std::pair<const int, XRefNode>(  9, XRefNode( 13, 
00128                                        DayTime( 1984,  6, 13,  0,  0,  0.0),
00129                                        DayTime( 1993,  5,  4, 18, 17,  0.0))));
00130    NtoPMap.insert( std::pair<const int, XRefNode>( 10, XRefNode( 12, 
00131                                        DayTime( 1984,  9,  8,  0,  0,  0.0),
00132                                        DayTime( 1996,  3, 26, 23, 59,  0.0))));
00133    NtoPMap.insert( std::pair<const int, XRefNode>( 11, XRefNode(  3, 
00134                                        DayTime( 1985, 10, 30,  0,  0,  0.0),
00135                                        DayTime( 1994,  4, 14, 21,  0,  0.0))));
00136      // no NAVSTAR 12, was never launched
00137    NtoPMap.insert( std::pair<const int, XRefNode>( 13, XRefNode(  2, 
00138                                        DayTime( 1989,  6, 10,  0,  0,  0.0),
00139                                        DayTime( 2004,  5, 12, 17,  1,  0.0))));
00140    NtoPMap.insert( std::pair<const int, XRefNode>( 14, XRefNode( 14, 
00141                                        DayTime( 1989,  2, 14,  0,  0,  0.0),
00142                                        DayTime( 2000,  4, 14, 13, 47,  0.0))));
00143    NtoPMap.insert( std::pair<const int, XRefNode>( 15, XRefNode( 15, 
00144                                        DayTime( 1990, 10,  1,  0,  0,  0.0),
00145                                        DayTime( 2007,  3, 15, 23, 59,  0.0))));
00146    NtoPMap.insert( std::pair<const int, XRefNode>( 16, XRefNode( 16, 
00147                                        DayTime( 1989,  8, 18,  0,  0,  0.0),
00148                                        DayTime( 2000, 10, 13,  0, 45,  0.0))));
00149    NtoPMap.insert( std::pair<const int, XRefNode>( 17, XRefNode( 17, 
00150                                        DayTime( 1989, 12, 11,  0,  0,  0.0),
00151                                        DayTime( 2005,  2, 23, 22,  0,  0.0))));
00152    NtoPMap.insert( std::pair<const int, XRefNode>( 18, XRefNode( 18, 
00153                                        DayTime( 1990,  1, 24,  0,  0,  0.0),
00154                                        DayTime( 2000,  8, 18,  7, 42,  0.0))));
00155    NtoPMap.insert( std::pair<const int, XRefNode>( 19, XRefNode( 19, 
00156                                        DayTime( 1989, 10, 21,  0,  0,  0.0),
00157                                        DayTime( 2001,  9, 11, 22,  0,  0.0))));
00158    NtoPMap.insert( std::pair<const int, XRefNode>( 20, XRefNode( 20, 
00159                                        DayTime( 1990,  3, 26,  0,  0,  0.0),
00160                                        DayTime( 1996, 12, 13, 23, 59,  0.0))));
00161    NtoPMap.insert( std::pair<const int, XRefNode>( 21, XRefNode( 21, 
00162                                        DayTime( 1990,  8,  2,  0,  0,  0.0),
00163                                        DayTime( 2003,  1, 27, 22,  0,  0.0))));
00164    NtoPMap.insert( std::pair<const int, XRefNode>( 22, XRefNode( 22, 
00165                                        DayTime( 1993,  2,  3,  0,  0,  0.0),
00166                                        DayTime( 2003,  8,  6, 22,  0,  0.0))));
00167    NtoPMap.insert( std::pair<const int, XRefNode>( 23, XRefNode( 23, 
00168                                        DayTime( 1990, 11, 26,  0,  0,  0.0),
00169                                        DayTime( 2004,  2, 13, 22,  0,  0.0))));
00170    NtoPMap.insert( std::pair<const int, XRefNode>( 23, XRefNode( 32, 
00171                                        DayTime( 2006, 12,  1,  0,  0,  0.0),
00172                                        DayTime::END_OF_TIME  )));
00173    NtoPMap.insert( std::pair<const int, XRefNode>( 24, XRefNode( 24, 
00174                                        DayTime( 1991,  7,  4,  0,  0,  0.0),
00175                                        DayTime::END_OF_TIME  )));
00176    NtoPMap.insert( std::pair<const int, XRefNode>( 25, XRefNode( 25, 
00177                                        DayTime( 1992,  2, 23,  0,  0,  0.0),
00178                                        DayTime::END_OF_TIME  )));
00179    NtoPMap.insert( std::pair<const int, XRefNode>( 26, XRefNode( 26, 
00180                                        DayTime( 1992,  7,  7,  0,  0,  0.0),
00181                                        DayTime::END_OF_TIME  )));
00182    NtoPMap.insert( std::pair<const int, XRefNode>( 27, XRefNode( 27, 
00183                                        DayTime( 1992,  9,  9,  0,  0,  0.0),
00184                                        DayTime::END_OF_TIME  )));
00185    NtoPMap.insert( std::pair<const int, XRefNode>( 28, XRefNode( 28, 
00186                                        DayTime( 1992,  4, 10,  0,  0,  0.0),
00187                                        DayTime( 1997,  8, 15, 23, 59,  0.0))));
00188    NtoPMap.insert( std::pair<const int, XRefNode>( 29, XRefNode( 29, 
00189                                        DayTime( 1992, 12, 18,  0,  0,  0.0),
00190                                        DayTime( 2007, 10, 23, 23, 59,  0.0))));
00191    NtoPMap.insert( std::pair<const int, XRefNode>( 30, XRefNode( 30, 
00192                                        DayTime( 1996,  9, 12,  0,  0,  0.0),
00193                                        DayTime::END_OF_TIME  )));
00194    NtoPMap.insert( std::pair<const int, XRefNode>( 31, XRefNode( 31, 
00195                                        DayTime( 1993,  3, 30,  0,  0,  0.0),
00196                                        DayTime( 2005, 10, 24, 23, 59,  0.0))));
00197    NtoPMap.insert( std::pair<const int, XRefNode>( 32, XRefNode(  1, 
00198                                        DayTime( 1992, 11, 22,  0,  0,  0.0),
00199                                        DayTime( 2008,  3, 17, 22,  0,  0.0))));
00200    NtoPMap.insert( std::pair<const int, XRefNode>( 33, XRefNode(  3, 
00201                                        DayTime( 1996,  3, 28,  0,  0,  0.0),
00202                                        DayTime::END_OF_TIME  )));
00203    NtoPMap.insert( std::pair<const int, XRefNode>( 34, XRefNode(  4, 
00204                                        DayTime( 1993, 10, 26,  0,  0,  0.0),
00205                                        DayTime::END_OF_TIME  )));
00206    NtoPMap.insert( std::pair<const int, XRefNode>( 35, XRefNode(  5, 
00207                                        DayTime( 1993,  8, 30,  0,  0,  0.0),
00208                                        DayTime( 2009,  3, 26, 20, 31,  0.0))));
00209    NtoPMap.insert( std::pair<const int, XRefNode>( 36, XRefNode(  6, 
00210                                        DayTime( 1995,  3, 10,  0,  0,  0.0),
00211                                        DayTime::END_OF_TIME  )));
00212    NtoPMap.insert( std::pair<const int, XRefNode>( 37, XRefNode(  7, 
00213                                        DayTime( 1993,  5, 13,  0,  0,  0.0),
00214                                        DayTime( 2007,  7, 20, 23, 59,  0.0))));
00215    NtoPMap.insert( std::pair<const int, XRefNode>( 37, XRefNode(  1, 
00216                                        DayTime( 2008, 10, 23,  0,  0,  0.0),
00217                                        DayTime( 2009,  1,  6, 23, 59,  0.0))));
00218    NtoPMap.insert( std::pair<const int, XRefNode>( 38, XRefNode(  8, 
00219                                        DayTime( 1997, 11,  6,  0,  0,  0.0),
00220                                        DayTime::END_OF_TIME  )));
00221    NtoPMap.insert( std::pair<const int, XRefNode>( 39, XRefNode(  9, 
00222                                        DayTime( 1993,  6, 26,  0,  0,  0.0),
00223                                        DayTime::END_OF_TIME  )));
00224    NtoPMap.insert( std::pair<const int, XRefNode>( 40, XRefNode( 10, 
00225                                        DayTime( 1996,  7, 16,  0,  0,  0.0),
00226                                        DayTime::END_OF_TIME  )));
00227    NtoPMap.insert( std::pair<const int, XRefNode>( 41, XRefNode( 14, 
00228                                        DayTime( 2000, 11, 10,  0,  0,  0.0),
00229                                        DayTime::END_OF_TIME  )));
00230     // no NAVSTAR 42, IIR-1 was a launch failure
00231    NtoPMap.insert( std::pair<const int, XRefNode>( 43, XRefNode( 13, 
00232                                        DayTime( 1997,  7, 23,  0,  0,  0.0),
00233                                        DayTime::END_OF_TIME  )));
00234    NtoPMap.insert( std::pair<const int, XRefNode>( 44, XRefNode( 28,
00235                                        DayTime( 2000,  7, 16,  0,  0,  0.0),
00236                                        DayTime::END_OF_TIME  )));
00237    NtoPMap.insert( std::pair<const int, XRefNode>( 45, XRefNode( 21, 
00238                                        DayTime( 2003,  3, 31,  0,  0,  0.0),
00239                                        DayTime::END_OF_TIME  )));
00240    NtoPMap.insert( std::pair<const int, XRefNode>( 46, XRefNode( 11, 
00241                                        DayTime( 1999, 10,  7,  0,  0,  0.0),
00242                                        DayTime::END_OF_TIME  )));
00243    NtoPMap.insert( std::pair<const int, XRefNode>( 47, XRefNode( 22, 
00244                                        DayTime( 2003, 12, 21,  0,  0,  0.0),
00245                                        DayTime::END_OF_TIME  )));
00246    NtoPMap.insert( std::pair<const int, XRefNode>( 48, XRefNode(  7, 
00247                                        DayTime( 2008,  3, 15,  0,  0,  0.0),
00248                                        DayTime::END_OF_TIME  )));
00249    NtoPMap.insert( std::pair<const int, XRefNode>( 49, XRefNode(  1, 
00250                                        DayTime( 2009,  3, 24,  0,  0,  0.0),
00251                                        DayTime::END_OF_TIME  )));
00252    NtoPMap.insert( std::pair<const int, XRefNode>( 50, XRefNode(  5, 
00253                                        DayTime( 2009,  8, 27,  0,  0,  0.0),
00254                                        DayTime::END_OF_TIME  )));
00255    NtoPMap.insert( std::pair<const int, XRefNode>( 51, XRefNode( 20, 
00256                                        DayTime( 2000,  5, 11,  0,  0,  0.0),
00257                                        DayTime::END_OF_TIME  )));
00258    NtoPMap.insert( std::pair<const int, XRefNode>( 52, XRefNode( 31, 
00259                                        DayTime( 2006,  9, 25,  0,  0,  0.0),
00260                                        DayTime::END_OF_TIME  )));
00261    NtoPMap.insert( std::pair<const int, XRefNode>( 53, XRefNode( 17, 
00262                                        DayTime( 2005,  9, 26,  0,  0,  0.0),
00263                                        DayTime::END_OF_TIME  )));
00264    NtoPMap.insert( std::pair<const int, XRefNode>( 54, XRefNode( 18, 
00265                                        DayTime( 2001,  1, 30,  0,  0,  0.0),
00266                                        DayTime::END_OF_TIME  )));
00267    NtoPMap.insert( std::pair<const int, XRefNode>( 55, XRefNode( 15, 
00268                                        DayTime( 2007, 10, 17,  0,  0,  0.0),
00269                                        DayTime::END_OF_TIME  )));
00270    NtoPMap.insert( std::pair<const int, XRefNode>( 56, XRefNode( 16, 
00271                                        DayTime( 2003,  1, 29,  0,  0,  0.0),
00272                                        DayTime::END_OF_TIME  )));
00273    NtoPMap.insert( std::pair<const int, XRefNode>( 57, XRefNode( 29, 
00274                                        DayTime( 2007, 12, 21,  0,  0,  0.0),
00275                                        DayTime::END_OF_TIME  )));
00276    NtoPMap.insert( std::pair<const int, XRefNode>( 58, XRefNode( 12, 
00277                                        DayTime( 2006, 11, 17,  0,  0,  0.0),
00278                                        DayTime::END_OF_TIME  )));
00279    NtoPMap.insert( std::pair<const int, XRefNode>( 59, XRefNode( 19, 
00280                                        DayTime( 2004,  3, 20,  0,  0,  0.0),
00281                                        DayTime::END_OF_TIME  )));
00282    NtoPMap.insert( std::pair<const int, XRefNode>( 60, XRefNode( 23, 
00283                                        DayTime( 2004,  6, 23,  0,  0,  0.0),
00284                                        DayTime::END_OF_TIME  )));
00285    NtoPMap.insert( std::pair<const int, XRefNode>( 61, XRefNode(  2, 
00286                                        DayTime( 2004,  6,  6,  0,  0,  0.0),
00287                                        DayTime::END_OF_TIME  )));
00288    NtoPMap.insert( std::pair<const int, XRefNode>( 62, XRefNode( 25,
00289                                        DayTime( 2010,  5, 28,  3,  0,  0.0),
00290                                        DayTime::END_OF_TIME  )));
00291   
00292       // Set up PRN ID -> NAVSTAR relationship
00293       // Note: Because of a bug in the Solaris compler version 5.x,
00294       // you cannot use make_pair b/c Solaris ASSUMES the key is const AND
00295       // Sun's implementation of pair lacks the templated copy constructor 
00296       // template< class a, class b> pair::pair< const pair<a,b>& p >
00297    PtoNMap.insert( std::pair<const int, XRefNode>(  1, XRefNode( 32, 
00298                                        DayTime( 1992, 11, 22,  0,  0,  0.0),
00299                                        DayTime( 2008,  3, 17, 22,  0,  0.0))));
00300    PtoNMap.insert( std::pair<const int, XRefNode>(  1, XRefNode( 37, 
00301                                        DayTime( 2008, 10, 23,  0,  0,  0.0),
00302                                        DayTime( 2009,  1,  7, 23, 59, 59.0))));
00303    PtoNMap.insert( std::pair<const int, XRefNode>(  1, XRefNode( 49, 
00304                                        DayTime( 2009, 3, 24,  0,  0,  0.0),
00305                                        DayTime::END_OF_TIME  )));
00306    PtoNMap.insert( std::pair<const int, XRefNode>(  2, XRefNode( 13, 
00307                                        DayTime( 1989,  6, 10,  0,  0,  0.0),
00308                                        DayTime( 2004,  5, 12, 17,  1,  0.0))));
00309    PtoNMap.insert( std::pair<const int, XRefNode>(  2, XRefNode( 61, 
00310                                        DayTime( 2004,  6,  6,  0,  0,  0.0),
00311                                        DayTime::END_OF_TIME  )));
00312    PtoNMap.insert( std::pair<const int, XRefNode>(  3, XRefNode( 11, 
00313                                        DayTime( 1985, 10, 30,  0,  0,  0.0),
00314                                        DayTime( 1994,  4, 14, 21,  0,  0.0))));
00315    PtoNMap.insert( std::pair<const int, XRefNode>(  3, XRefNode( 33, 
00316                                        DayTime( 1996,  3, 28,  0,  0,  0.0),
00317                                        DayTime::END_OF_TIME  )));
00318    PtoNMap.insert( std::pair<const int, XRefNode>(  4, XRefNode(  1, 
00319                                        DayTime( 1978,  2, 22,  0,  0,  0.0),
00320                                        DayTime( 1985,  7, 17, 17, 30,  0.0))));
00321    PtoNMap.insert( std::pair<const int, XRefNode>(  4, XRefNode( 34, 
00322                                        DayTime( 1993, 10, 26,  0,  0,  0.0),
00323                                        DayTime::END_OF_TIME  )));
00324    PtoNMap.insert( std::pair<const int, XRefNode>(  5, XRefNode(  5, 
00325                                        DayTime( 1980,  2,  9,  0,  0,  0.0),
00326                                        DayTime( 1984,  5, 11, 23, 59,  0.0))));
00327    PtoNMap.insert( std::pair<const int, XRefNode>(  5, XRefNode( 35, 
00328                                        DayTime( 1993,  8, 30,  0,  0,  0.0),
00329                                        DayTime( 2009,  3, 26, 20, 31,  0.0))));
00330    PtoNMap.insert( std::pair<const int, XRefNode>(  5, XRefNode( 50, 
00331                                        DayTime( 2009,  8, 27,  0,  0,  0.0),
00332                                        DayTime::END_OF_TIME  )));
00333    PtoNMap.insert( std::pair<const int, XRefNode>(  6, XRefNode(  3, 
00334                                        DayTime( 1978, 10,  6,  0,  0,  0.0),
00335                                        DayTime( 1992,  5, 18, 23, 41,  0.0))));
00336    PtoNMap.insert( std::pair<const int, XRefNode>(  6, XRefNode( 36, 
00337                                        DayTime( 1995,  3, 10,  0,  0,  0.0),
00338                                        DayTime::END_OF_TIME  )));
00339    PtoNMap.insert( std::pair<const int, XRefNode>(  7, XRefNode(  2, 
00340                                        DayTime( 1978,  6, 13,  0,  0,  0.0),
00341                                        DayTime( 1988,  2, 12, 23, 59,  0.0))));
00342    PtoNMap.insert( std::pair<const int, XRefNode>(  7, XRefNode( 37, 
00343                                        DayTime( 1993,  5, 13,  0,  0,  0.0),
00344                                        DayTime( 2007,  7, 20, 23, 59,  0.0))));
00345    PtoNMap.insert( std::pair<const int, XRefNode>(  7, XRefNode( 48, 
00346                                        DayTime( 2008,  3, 15,  0,  0,  0.0),
00347                                        DayTime::END_OF_TIME  )));
00348    PtoNMap.insert( std::pair<const int, XRefNode>(  8, XRefNode(  4, 
00349                                        DayTime( 1978, 12, 10,  0,  0,  0.0),
00350                                        DayTime( 1990,  5, 31, 23, 59,  0.0))));
00351    PtoNMap.insert( std::pair<const int, XRefNode>(  8, XRefNode( 38, 
00352                                        DayTime( 1997, 11,  6,  0,  0,  0.0),
00353                                        DayTime::END_OF_TIME  )));
00354    PtoNMap.insert( std::pair<const int, XRefNode>(  9, XRefNode(  6, 
00355                                        DayTime( 1980,  4, 26,  0,  0,  0.0),
00356                                        DayTime( 1991,  3,  6,  3, 42,  0.0))));
00357    PtoNMap.insert( std::pair<const int, XRefNode>(  9, XRefNode( 39, 
00358                                        DayTime( 1993,  6, 26,  0,  0,  0.0),
00359                                        DayTime::END_OF_TIME  )));
00360    PtoNMap.insert( std::pair<const int, XRefNode>( 10, XRefNode( 40, 
00361                                        DayTime( 1996,  7, 16,  0,  0,  0.0),
00362                                        DayTime::END_OF_TIME  )));
00363    PtoNMap.insert( std::pair<const int, XRefNode>( 11, XRefNode(  8, 
00364                                        DayTime( 1983,  7, 14,  0,  0,  0.0),
00365                                        DayTime( 1993,  5,  4,  0, 20,  0.0))));
00366    PtoNMap.insert( std::pair<const int, XRefNode>( 11, XRefNode( 46, 
00367                                        DayTime( 1999, 10,  7,  0,  0,  0.0),
00368                                        DayTime::END_OF_TIME  )));
00369    PtoNMap.insert( std::pair<const int, XRefNode>( 12, XRefNode( 10, 
00370                                        DayTime( 1984,  9,  8,  0,  0,  0.0),
00371                                        DayTime( 1996,  3, 26, 23, 59,  0.0))));
00372    PtoNMap.insert( std::pair<const int, XRefNode>( 12, XRefNode( 58, 
00373                                        DayTime( 2006, 11, 17,  0,  0,  0.0),
00374                                        DayTime::END_OF_TIME  )));
00375    PtoNMap.insert( std::pair<const int, XRefNode>( 13, XRefNode(  9, 
00376                                        DayTime( 1984,  6, 13,  0,  0,  0.0),
00377                                        DayTime( 1993,  5,  4, 18, 17,  0.0))));
00378    PtoNMap.insert( std::pair<const int, XRefNode>( 13, XRefNode( 43, 
00379                                        DayTime( 1997,  7, 23,  0,  0,  0.0),
00380                                        DayTime::END_OF_TIME  )));
00381    PtoNMap.insert( std::pair<const int, XRefNode>( 14, XRefNode( 14, 
00382                                        DayTime( 1989,  2, 14,  0,  0,  0.0),
00383                                        DayTime( 2000,  4, 14, 13, 47,  0.0))));
00384    PtoNMap.insert( std::pair<const int, XRefNode>( 14, XRefNode( 41, 
00385                                        DayTime( 2000, 11, 10,  0,  0,  0.0),
00386                                        DayTime::END_OF_TIME  )));
00387    PtoNMap.insert( std::pair<const int, XRefNode>( 15, XRefNode( 15, 
00388                                        DayTime( 1990, 10,  1,  0,  0,  0.0),
00389                                        DayTime( 2007,  3, 15, 23, 59,  0.0))));
00390    PtoNMap.insert( std::pair<const int, XRefNode>( 15, XRefNode( 55, 
00391                                        DayTime( 2007, 10, 17,  0,  0,  0.0),
00392                                        DayTime::END_OF_TIME  )));
00393    PtoNMap.insert( std::pair<const int, XRefNode>( 16, XRefNode( 16, 
00394                                        DayTime( 1989,  8, 18,  0,  0,  0.0),
00395                                        DayTime( 2000, 10, 13,  0, 45,  0.0))));
00396    PtoNMap.insert( std::pair<const int, XRefNode>( 16, XRefNode( 56, 
00397                                        DayTime( 2003,  1, 29,  0,  0,  0.0),
00398                                        DayTime::END_OF_TIME  )));
00399    PtoNMap.insert( std::pair<const int, XRefNode>( 17, XRefNode( 17, 
00400                                        DayTime( 1989, 12, 11,  0,  0,  0.0),
00401                                        DayTime( 2005,  2, 23, 22,  0,  0.0))));
00402    PtoNMap.insert( std::pair<const int, XRefNode>( 17, XRefNode( 53, 
00403                                        DayTime( 2005,  9, 26,  0,  0,  0.0),
00404                                        DayTime::END_OF_TIME  )));
00405    PtoNMap.insert( std::pair<const int, XRefNode>( 18, XRefNode( 18, 
00406                                        DayTime( 1990,  1, 24,  0,  0,  0.0),
00407                                        DayTime( 2000,  8, 18,  7, 42,  0.0))));
00408    PtoNMap.insert( std::pair<const int, XRefNode>( 18, XRefNode( 54, 
00409                                        DayTime( 2001,  1, 30,  0,  0,  0.0),
00410                                        DayTime::END_OF_TIME  )));
00411    PtoNMap.insert( std::pair<const int, XRefNode>( 19, XRefNode( 19, 
00412                                        DayTime( 1989, 10, 21,  0,  0,  0.0),
00413                                        DayTime( 2001,  9, 11, 22,  0,  0.0))));
00414    PtoNMap.insert( std::pair<const int, XRefNode>( 19, XRefNode( 59, 
00415                                        DayTime( 2004,  3, 20,  0,  0,  0.0),
00416                                        DayTime::END_OF_TIME  )));
00417    PtoNMap.insert( std::pair<const int, XRefNode>( 20, XRefNode( 20, 
00418                                        DayTime( 1990,  3, 26,  0,  0,  0.0),
00419                                        DayTime( 1996, 12, 13, 23, 59,  0.0))));
00420    PtoNMap.insert( std::pair<const int, XRefNode>( 20, XRefNode( 51, 
00421                                        DayTime( 2000,  5, 11,  0,  0,  0.0),
00422                                        DayTime::END_OF_TIME  )));
00423    PtoNMap.insert( std::pair<const int, XRefNode>( 21, XRefNode( 21, 
00424                                        DayTime( 1990,  8,  2,  0,  0,  0.0),
00425                                        DayTime( 2003,  1, 27, 22,  0,  0.0))));
00426    PtoNMap.insert( std::pair<const int, XRefNode>( 21, XRefNode( 45, 
00427                                        DayTime( 2003,  3, 31,  0,  0,  0.0),
00428                                        DayTime::END_OF_TIME  )));
00429    PtoNMap.insert( std::pair<const int, XRefNode>( 22, XRefNode( 22, 
00430                                        DayTime( 1993,  2,  3,  0,  0,  0.0),
00431                                        DayTime( 2003,  8,  6, 22,  0,  0.0))));
00432    PtoNMap.insert( std::pair<const int, XRefNode>( 22, XRefNode( 47, 
00433                                        DayTime( 2003, 12, 21,  0,  0,  0.0),
00434                                        DayTime::END_OF_TIME  )));
00435    PtoNMap.insert( std::pair<const int, XRefNode>( 23, XRefNode( 23, 
00436                                        DayTime( 1990, 11, 26,  0,  0,  0.0),
00437                                        DayTime( 2004,  2, 13, 22,  0,  0.0))));
00438    PtoNMap.insert( std::pair<const int, XRefNode>( 23, XRefNode( 60, 
00439                                        DayTime( 2004,  6, 23,  0,  0,  0.0),
00440                                        DayTime::END_OF_TIME  )));
00441    PtoNMap.insert( std::pair<const int, XRefNode>( 24, XRefNode( 24, 
00442                                        DayTime( 1991,  7,  4,  0,  0,  0.0),
00443                                        DayTime::END_OF_TIME  )));
00444    PtoNMap.insert( std::pair<const int, XRefNode>( 25, XRefNode( 25,
00445                                        DayTime( 1992,  2, 23,  0,  0,  0.0),
00446                                        DayTime( 2009, 12, 18, 22, 28,  0.0))));
00447    PtoNMap.insert( std::pair<const int, XRefNode>( 25, XRefNode( 62,
00448                                        DayTime( 2010,  5, 28,  3,  0,  0.0),
00449                                        DayTime::END_OF_TIME  )));
00450    PtoNMap.insert( std::pair<const int, XRefNode>( 26, XRefNode( 26, 
00451                                        DayTime( 1992,  7,  7,  0,  0,  0.0),
00452                                        DayTime::END_OF_TIME  )));
00453    PtoNMap.insert( std::pair<const int, XRefNode>( 27, XRefNode( 27, 
00454                                        DayTime( 1992,  9,  9,  0,  0,  0.0),
00455                                        DayTime::END_OF_TIME  )));
00456    PtoNMap.insert( std::pair<const int, XRefNode>( 28, XRefNode( 28, 
00457                                        DayTime( 1992,  4, 10,  0,  0,  0.0),
00458                                        DayTime( 1997,  8, 15, 23, 59,  0.0))));
00459    PtoNMap.insert( std::pair<const int, XRefNode>( 28, XRefNode( 44,
00460                                        DayTime( 2000,  7, 16,  0,  0,  0.0),
00461                                        DayTime::END_OF_TIME  )));
00462    PtoNMap.insert( std::pair<const int, XRefNode>( 29, XRefNode( 29, 
00463                                        DayTime( 1992, 12, 18,  0,  0,  0.0),
00464                                        DayTime( 2007, 10, 23, 23, 59,  0.0))));
00465    PtoNMap.insert( std::pair<const int, XRefNode>( 29, XRefNode( 57, 
00466                                        DayTime( 2007, 12, 21,  0,  0,  0.0),
00467                                        DayTime::END_OF_TIME  )));
00468    PtoNMap.insert( std::pair<const int, XRefNode>( 30, XRefNode( 30, 
00469                                        DayTime( 1996,  9, 12,  0,  0,  0.0),
00470                                        DayTime::END_OF_TIME  )));
00471    PtoNMap.insert( std::pair<const int, XRefNode>( 31, XRefNode( 31, 
00472                                        DayTime( 1993,  3, 30,  0,  0,  0.0),
00473                                        DayTime( 2005, 10, 24, 23, 59,  0.0))));
00474    PtoNMap.insert( std::pair<const int, XRefNode>( 31, XRefNode( 52, 
00475                                        DayTime( 2006,  9, 25,  0,  0,  0.0),
00476                                        DayTime::END_OF_TIME  )));
00477    PtoNMap.insert( std::pair<const int, XRefNode>( 32, XRefNode( 23, 
00478                                        DayTime( 2006, 12,  1,  0,  0,  0.0),
00479                                        DayTime::END_OF_TIME  )));
00480 }
00481 
00482 int SVNumXRef::getNAVSTAR( const int PRNID, const gpstk::DayTime dt ) const
00483 {
00484    SVNumXRefPair p = PtoNMap.equal_range( PRNID );
00485    for (SVNumXRefListCI ci=p.first; ci != p.second; ++ci )
00486    {
00487       if (ci->second.isApplicable( dt )) return( ci->second.getNAVSTARNum() );
00488    }
00489    
00490       // We didn't find a NAVSTAR # for this PRN ID and date, so throw an 
00491       // exception.
00492    char textOut[80];
00493    sprintf(textOut,"No NAVSTAR # found associated with PRN ID %d at requested date: %s.", 
00494             PRNID,dt.printf("%02m/%02d/%04Y").c_str() ); 
00495    std::string sout = textOut;
00496    NoNAVSTARNumberFound noFound( sout );
00497    GPSTK_THROW(noFound); 
00498 }
00499 
00500 bool SVNumXRef::NAVSTARIDAvailable( const int PRNID, const gpstk::DayTime dt ) const
00501 {
00502    SVNumXRefPair p = PtoNMap.equal_range( PRNID );
00503    for (SVNumXRefListCI ci=p.first; ci != p.second; ++ci )
00504    {
00505       if (ci->second.isApplicable( dt )) return( true );
00506    }
00507    return( false ); 
00508 }
00509 
00510 bool SVNumXRef::NAVSTARIDActive( const int NAVSTARID, const gpstk::DayTime dt ) const
00511 {
00512    for (SVNumXRefListCI ci=PtoNMap.begin(); ci != PtoNMap.end(); ++ci )
00513    {
00514       if (ci->second.getNAVSTARNum()==NAVSTARID &&
00515           ci->second.isApplicable( dt )         ) return( true );
00516    }
00517    return( false ); 
00518 }
00519 
00520 SVNumXRef::BlockType SVNumXRef::getBlockType( const int NAVSTARID ) const
00521 {
00522    map<int,BlockType>::const_iterator i;
00523    i = NtoBMap.find(  NAVSTARID );
00524    if (i!=NtoBMap.end()) return(i->second);
00525    
00526       // We didn't find a BlockType for this NAVSTAR #, so throw an 
00527       // exception.
00528    char textOut[80];
00529    sprintf(textOut,"No BlockType found associated with NAVSTAR Num %d.", 
00530             NAVSTARID);
00531    std::string sout = textOut;
00532    NoNAVSTARNumberFound noFound( sout );
00533    GPSTK_THROW(noFound); 
00534    throw( noFound );
00535 }
00536 
00537 std::string SVNumXRef::getBlockTypeString( const int NAVSTARID ) const
00538 {
00539    std::map<int,BlockType>::const_iterator i;
00540    i = NtoBMap.find( NAVSTARID );
00541    if (i!=NtoBMap.end())
00542    {
00543      switch( getBlockType( NAVSTARID ) )
00544      {
00545        case I: return("Block I"); break;
00546        case II: return("Block II"); break;
00547        case IIA: return("Block IIA"); break;
00548        case IIR: return("Block IIR"); break;
00549        case IIR_M: return("Block IIR_M"); break;
00550        case IIF: return("Block IIF"); break;
00551      }
00552 
00553    }
00554    return("unknown");
00555 }
00556 
00557 int SVNumXRef::getPRNID( const int NAVSTARID, const gpstk::DayTime dt ) const
00558 {
00559    NAVNumXRefPair p = NtoPMap.equal_range( NAVSTARID );
00560    // If there is only one PRNID for this SVN number return it to maintain
00561    // compatability with previous versions
00562    if( p.first == (--p.second) ) return ( p.first->second.getPRNNum() );
00563    ++p.second;
00564    for (NAVNumXRefCI ci=p.first; ci != p.second; ++ci )
00565    {
00566       if (ci->second.isApplicable( dt )) return( ci->second.getPRNNum() );
00567    }
00568 
00569       // We didn't find a PRN ID for this NAVSTAR # and date, so throw an 
00570       // exception.
00571    char textOut[80];
00572    sprintf(textOut,"No PRN ID found associated with NAVSTAR Num %d at requested date: %s.", 
00573             NAVSTARID,dt.printf("%02m/%02d/%04Y").c_str() ); 
00574    std::string sout = textOut;
00575    NoNAVSTARNumberFound noFound( sout );
00576    GPSTK_THROW(noFound); 
00577    throw( noFound );
00578 }
00579 
00580 bool SVNumXRef::PRNIDAvailable( const int NAVSTARID, const gpstk::DayTime dt ) const
00581 {
00582    NAVNumXRefPair p = NtoPMap.equal_range( NAVSTARID );
00583    if( p.first == (--p.second) ) return ( true );
00584    ++p.second;
00585    for (NAVNumXRefCI ci=p.first; ci != p.second; ++ci )
00586    {
00587       if (ci->second.isApplicable( dt )) return( true );
00588    }
00589    return( false ); 
00590 }
00591 
00592 bool SVNumXRef::BlockTypeAvailable(  const int NAVSTARID ) const
00593 {
00594    map<int,BlockType>::const_iterator i;
00595    i = NtoBMap.find(  NAVSTARID );   
00596    if (i!=NtoBMap.end()) return(true);
00597    return(false);
00598 }
00599 
00600 //-------------- Nethods for XRefNode -----------------
00601 XRefNode::XRefNode( const int NumArg,
00602                              const gpstk::DayTime begDT,
00603                              const gpstk::DayTime endDT )
00604 {
00605    Num = NumArg;
00606    begValid = begDT;
00607    endValid = endDT;
00608 }
00609 
00610 bool XRefNode::isApplicable( gpstk::DayTime dt ) const
00611 {
00612    if (dt>=begValid && dt<=endValid) return(true);
00613    return(false);
00614 }
00615 }

Generated on Tue May 22 03:31:02 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1