home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / pngen.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  34.2 KB  |  843 lines

  1. /*
  2.     PNGEN.H
  3.  
  4.     General Position and Navigation system structure / type
  5.     definition file.
  6.  
  7.     Copyright (c) 1996, 1997 Microsoft Corporation, All rights reserved.
  8. */
  9.  
  10. #ifndef _INC_PNGEN
  11. #define _INC_PNGEN
  12.  
  13. #ifndef UNDER_CE
  14.     #define PN_DT_START_c           10000   //Start of area for user defined data types.
  15.     #define PN_DT_END_c             20000   //End of area for user defined data types.
  16. #else
  17.     #ifndef _TEXT
  18.         #define _TEXT(x) TEXT(x)
  19.     #endif //_TEXT
  20. //    #define PN_NUM_RTCM1_PARITY_c   20      //Max number of parity data in RTCM type 1 or 2 messages.
  21. //    #define PN_GPS1_I2P_c           100     //Comm port # signifying the 1st GPS I≤P interface for AutoPC.
  22. //    #define PN_GPS2_I2P_c           101     //Comm port # signifying the 2nd GPS I≤P interface for AutoPC.
  23. #endif //UNDER_CE
  24.  
  25. #define PN_MNFCT_SIZE_c         32      //Max. length of manufacturer string.
  26. #define PN_MODEL_SIZE_c         100     //Max. length of model number string.
  27. #define PN_COM_PORT_LEN_c       20      //Max. length of com port string (i.e. "COM1").
  28. #define PN_NUM_SATS_c           32      //Number of GPS satellites currently.
  29. #define PN_NUM_STATIONS_c       12      //Number of stations (satellites) used in PNSTATION structure.
  30. const DWORD PN_REG_PATH_LEN_c = 512;    //Max length a registry path can be under PNAPI
  31.  
  32. #define PN_NUM_RTCM1_SATS_c     12      //Max number of satellites in RTCM type 1 or 2 messages.
  33. #define PN_RTCM1_MAX_BYTE_LEN_c 83      //Max number of bytes needed to store a RTCM Type 1 or 2 messages.
  34.  
  35. //ADF was picked arbitarily so it will not conflict with any
  36. //other HRESULTs.
  37. #define PNAPI_E_MOREBUFFERSPACE         0x8ADF0000L
  38. #define PNAPI_E_NOCALLSTARTED           0x8ADF0001L
  39. #define PNAPI_E_STRUCTLOCKED            0x8ADF0002L
  40. #define PNAPI_E_NOSUCHCALL              0x8ADF0003L
  41. #define PNAPI_E_DATAUNAVAILABLE         0x8ADF0004L
  42. #define PNAPI_E_MEMFREE                 0x8ADF0005L
  43. #define PNAPI_E_DEVICEUNAVAILABLE       0x8ADF0006L
  44. #define PNAPI_E_BADOS                   0x8ADF0007L
  45. #define PNAPI_E_CREATETHREAD            0x8ADF0008L
  46. #define PNAPI_E_ZERODIVIDE              0x8ADF0009L
  47. #define PNAPI_E_REGDBCLOSEKEY           0x8ADF000AL
  48. #define PNAPI_E_LOADDLL                 0x8ADF000BL
  49. #define PNAPI_E_INVALIDREGDBVALUE       0x8ADF000CL
  50. #define PNAPI_E_NOACCESS                0x8ADF000DL
  51. #define PNAPI_E_NODATAYET               0x8ADF000EL
  52. #define PNAPI_E_LOCATOROPEN             0x8ADF000FL
  53. #define PNAPI_E_NOITEMSELECTED          0x8ADF0010L
  54. #define PNAPI_E_LOCATORDEAD             0x8ADF0011L
  55.  
  56. #define PNAPI_S_CALLALREADYSTARTED      0x0ADF0000L
  57. #define PNAPI_S_PERIODTOOSMALL          0x0ADF0001L
  58. #define PNAPI_S_VERSIONEXPIRED          0x0ADF0002L
  59. #define PNAPI_S_EOF                     0x0ADF0003L
  60.  
  61. typedef double          PNDouble;
  62. typedef PNDouble*       pPNDouble;
  63. typedef DWORD           PNBool;
  64. typedef PNBool*         pPNBool;
  65. typedef unsigned char   PNByte;
  66. typedef PNByte*         pPNByte;
  67. typedef DWORD*          pDWORD;
  68.  
  69. #ifndef _INC_PNAPI
  70.     typedef LPVOID hPNDevice;
  71.     typedef hPNDevice* phPNDevice;
  72. #endif //INC_PNAPI
  73.  
  74. //nb.   These values MUST remain fixed for all versions of PNAPI
  75. //      (as the registry uses these values in 'P&N Type').
  76. #define MIN_PNRECEIVER_T 0
  77. #define MAX_PNRECEIVER_T 6
  78. typedef enum ePNReceiver_t
  79. {   PN_RT_UNKNOWN   = MIN_PNRECEIVER_T,    //Unknown device connected
  80.     PN_RT_GPS       = 1,    //GPS receiver connected
  81. #ifndef UNDER_CE
  82.     PN_RT_NAVSAT    = 2,    //NAVSAT receiver connected
  83.     PN_RT_GLONASS   = 3,    //GLONASS receiver connected
  84.     PN_RT_LORANC    = 4,    //Loran C receiver connected
  85.     PN_RT_DECCA     = 5,    //DECCA receiver connected
  86. #endif //UNDER_CE
  87.     PN_RT_MISC      = MAX_PNRECEIVER_T //Miscellaneous receiver connected.
  88. }PNReceiver_t;
  89.  
  90. #define MIN_DEVICESTATE_T  0
  91. #define MAX_DEVICESTATE_T 13
  92. typedef enum ePNDeviceState_t
  93. {   PN_DS_INVALIDDS = -1000, //Device State is in invalid state.
  94.     PN_DS_NOTPRESENT= MIN_DEVICESTATE_T,    //Device not present (i.e. been unplugged).
  95.     PN_DS_ERROR     = 1,    //Error in device making it not operate at all.
  96.     PN_DS_WARNING   = 2,    //Error with device, but can still operate.
  97.     PN_DS_OK        = 3,    //Device 100% OK (but not yet searching).
  98.     PN_DS_SEARCHING = 4,    //Searching for fix
  99.     PN_DS_LEVEL1    = 5,    //Found level 1 accuracy data
  100.     PN_DS_LEVEL2    = 6,    //Found level 2 accuracy data
  101.     PN_DS_LEVEL3    = 7,    //Found level 3 accuracy data
  102.     PN_DS_LEVEL4    = 8,    //Found level 4 accuracy data
  103.     PN_DS_LEVEL5    = 9,    //Found level 5 accuracy data
  104.     PN_DS_LEVEL6    = 10,   //Found level 6 accuracy data
  105.     PN_DS_FOUND1SAT = 11,   //Found 1 satellite (GPS specific)
  106.     PN_DS_FOUND2SATS= 12,   //Found 2 satellites (GPS specific)
  107.     PN_DS_NOTIME    = MAX_DEVICESTATE_T    //No GPS time found (GPS specific)
  108. }PNDeviceState_t;
  109.  
  110. //Predefined areas:
  111. //101-200        :    RTCM internal message calls.
  112. //10000-20000    :    OEM defined calls. 
  113. #define MIN_PNDATA_T  0
  114. #define MAX_PNDATA_T 16
  115. typedef enum ePNData_t
  116. {   PN_DT_ALL           = MIN_PNDATA_T,    //All PNData_ts
  117.     PN_DT_POSITION      = 1,    //Long,lat,alt position data    PNPOSITION
  118.     PN_DT_VELOCITY      = 2,    //Velocity data                 PNVELOCITY
  119.     PN_DT_DEVICESTATE   = 3,    //Device state data             PNDEVSTATE
  120.     PN_DT_TIME          = 4,    //Time data                     PNTIME
  121.     PN_DT_TM            = 5,    //Time data                     PNTM
  122.     PN_DT_ACCURACY      = 6,    //Accuracy data                 PNACCURACY
  123.     PN_DT_STATION       = 7,    //Station data                  PNSTATION
  124.     PN_DT_DEVICE        = 8,    //Device profile data           PNDEVICE
  125.     PN_DT_CONFIG        = 9,    //Configuration data            PNCONFIG
  126.     PN_DT_SETTINGS      = 10,   //Settings data                 PNSETTINGS
  127. #ifndef UNDER_CE
  128.     PN_DT_STATICREFPOS  = 11,   //Static ref position           PNPOSITION
  129. #endif //UNDER_CE
  130.     PN_DT_DGPSSTATUS    = 12,   //Diff GPS status data          PNDGPSSTATUS
  131. //    PN_DT_RTCM          = 13,   //Unused
  132.     PN_DT_ALMANAC       = 14,   //Almanac data                  PNALMANAC
  133. #ifndef UNDER_CE
  134.     PN_DT_STATUS        = 15,   //See PNSTATUS struct           PNSTATUS
  135. #endif //UNDER_CE
  136.     PN_DT_RESET         = MAX_PNDATA_T,
  137. }PNData_t;
  138.  
  139. #define MIN_PNSTATIONSTATE_T 0
  140. #define MAX_PNSTATIONSTATE_T 3
  141. typedef enum ePNStationState_t
  142. {   PN_CS_UNAVAILABLE   = MIN_PNSTATIONSTATE_T,    //Station unavailable
  143.     PN_CS_IDLE          = 1,    //Station idle
  144.     PN_CS_SEARCHING     = 2,    //Station searching for data
  145.     PN_CS_TRACKING      = MAX_PNSTATIONSTATE_T     //Station finding good data
  146. }PNStationState_t;
  147.  
  148. #define MIN_PNDATUM_T         0
  149. #define MAX_PNDATUM_T       175
  150. typedef enum ePNDatum_t
  151. {   PN_DA_WGS84         = MIN_PNDATUM_T,    //World Geodetic System 1984
  152.     PN_DA_ADINDAN       = 1,    //Adindan-Mean
  153.     PN_DA_ADINDAN1      = 2,    //Adindan-Ethiopia
  154.     PN_DA_ADINDAN2      = 3,    //Adindan-Mali
  155.     PN_DA_ADINDAN3      = 4,    //Adindan-Senegal
  156.     PN_DA_ADINDAN4      = 5,    //Adindan-Sudan
  157.     PN_DA_AFGOOYE       = 6,    //Afgooye-Somalia
  158.     PN_DA_AINELABD70    = 7,    //Ain El Abd Bahrain 1970
  159.     PN_DA_ANNA1ASTRO65  = 8,    //Anna 1 Astro 1965
  160.     PN_DA_ARC50         = 9,    //Arc 1950-Mean
  161.     PN_DA_ARC50A        = 10,   //Arc 1950 Botswana
  162.     PN_DA_ARC50B        = 11,   //Arc 1950 Lesotho
  163.     PN_DA_ARC50C        = 12,   //Arc 1950 Malawi
  164.     PN_DA_ARC50D        = 13,   //Arc 1950 Swaziland
  165.     PN_DA_ARC50E        = 14,   //Arc 1950 Zaire
  166.     PN_DA_ARC50F        = 15,   //Arc 1950 Zambia
  167.     PN_DA_ARC50G        = 16,   //Arc 1950 Zimbabwe
  168.     PN_DA_ARC60         = 17,   //Arc 1960-Mean
  169.     PN_DA_ASCENSION58   = 18,   //Ascension Island 1958
  170.     PN_DA_ASTROB4       = 19,   //Astro B4 Sorol Atoll
  171.     PN_DA_ASTROBEACONE  = 20,   //Astro Beacon "E" 1945
  172.     PN_DA_ASTRODOS714   = 21,   //Astro DOS 71/4
  173.     PN_DA_ASTRONOMIC52  = 22,   //Astronomic Station 1952
  174.     PN_DA_AUSTRALIAN66  = 23,   //Australian Geodetic 1966
  175.     PN_DA_AUSTRALIAN84  = 24,   //Australian Geodetic 1984
  176.     PN_DA_AUSTRIANS     = 25,   //Austria NS
  177.     PN_DA_BELGIUM50     = 26,   //Belgium 1950
  178.     PN_DA_BELLEVUE      = 27,   //Bellevue (IGN)
  179.     PN_DA_BERMUDA57     = 28,   //Bermuda 1957
  180.     PN_DA_BOGOTA        = 29,   //Bogota Observatory
  181.     PN_DA_BUKITRIMPAH   = 30,   //Bukit Rimpah
  182.     PN_DA_CAMPAREA      = 31,   //Camp Area Astro
  183.     PN_DA_CAMPOINCH     = 32,   //Campo Inchauspe
  184.     PN_DA_CANTON66      = 33,   //Canton Island 1966
  185.     PN_DA_CAPE          = 34,   //Cape
  186.     PN_DA_CAPECANAV     = 35,   //Cape Canveral Mean
  187.     PN_DA_CARTHAGE      = 36,   //Carthage
  188.     PN_DA_CHATHAM71     = 37,   //Chatham 1971
  189.     PN_DA_CHUAASTRO     = 38,   //Chua Astro
  190.     PN_DA_CORREGOALEGRE = 39,   //Corrego Alegre
  191.     PN_DA_DANISH34      = 40,   //Danish Gi 1934
  192.     PN_DA_DJAKARTA      = 41,   //Djakarta (Batavia)
  193.     PN_DA_DOS68         = 42,   //DOS 1968
  194.     PN_DA_EASTER67      = 43,   //Easter Island 1967
  195.     PN_DA_EUROPEAN50    = 44,   //European 1950 Mean
  196.     PN_DA_EUROPEAN50A   = 45,   //European 1950 Cyprus
  197.     PN_DA_EUROPEAN50B   = 46,   //European 1950 Egypt
  198.     PN_DA_EUROPEAN50C   = 47,   //European 1950 England / Scotland
  199.     PN_DA_EUROPEAN50D   = 48,   //European 1950 England / Ireland
  200.     PN_DA_EUROPEAN50E   = 49,   //European 1950 Greece
  201.     PN_DA_EUROPEAN50F   = 50,   //European 1950 Iran
  202.     PN_DA_EUROPEAN50G   = 51,   //European 1950 Sardinia
  203.     PN_DA_EUROPEAN50H   = 52,   //European 1950 Sicily
  204.     PN_DA_EUROPEAN50I   = 53,   //European 1950 Norway
  205.     PN_DA_EUROPEAN50J   = 54,   //European 1950 Portugal / Spain
  206.     PN_DA_EUROPEAN79    = 55,   //European 1979
  207.     PN_DA_GANDAJIKA     = 56,   //Gandajika Base
  208.     PN_DA_GEODETIC49    = 57,   //Geodetic Datum 1949
  209.     PN_DA_GGRS87        = 58,   //GGRS 87
  210.     PN_DA_GUAM63        = 59,   //Guam 1963
  211.     PN_DA_GUNUNGSEGARA  = 60,   //Gunung Segara
  212.     PN_DA_GUX1ASTRO     = 61,   //Gux 1 Astro
  213.     PN_DA_HERATNORTH    = 62,   //Herat North
  214.     PN_DA_HJORSEY55     = 63,   //Hjorsey 1955
  215.     PN_DA_HONGKONG63    = 64,   //Hong Kong 1963
  216.     PN_DA_HUTZUSHAN     = 65,   //Hu-Tzu-Shan
  217.     PN_DA_INDIAN        = 66,   //Indian mean value
  218.     PN_DA_INDIAN1       = 67,   //Indian - India / Nepal / Bangladesh
  219.     PN_DA_INDIAN2       = 68,   //Indian - Thialand / Vietnam
  220.     PN_DA_IRELAND65     = 69,   //Ireland 1965
  221.     PN_DA_ISTSASTRO69   = 70,   //ISTS 073 Astro 1969
  222.     PN_DA_JOHNSTON61    = 71,   //Johnston Island 1961
  223.     PN_DA_KANDAWALA     = 72,   //Kandawala
  224.     PN_DA_KERGUELAN     = 73,   //Kerguelan Island
  225.     PN_DA_KERTAU48      = 74,   //Kertau 1948
  226.     PN_DA_LAREUNION     = 75,   //La Reunion (Reunion)
  227.     PN_DA_LC5ASTRO      = 76,   //L.C. 5 Astro
  228.     PN_DA_LIBERIA64     = 77,   //Liberia 1964
  229.     PN_DA_LUZON         = 78,   //Luzon mean value
  230.     PN_DA_LUZON1        = 79,   //Luzon - Phillippines
  231.     PN_DA_LUZON2        = 80,   //Luzon - Mindanao
  232.     PN_DA_MAHE71        = 81,   //Mahe 1971
  233.     PN_DA_MARCOASTRO    = 82,   //Marco Astro
  234.     PN_DA_MASSAWA       = 83,   //Massawa
  235.     PN_DA_MERCHICH      = 84,   //Merchich
  236.     PN_DA_MIDWAY61      = 85,   //Midway Astro 1961
  237.     PN_DA_MINNA         = 86,   //Minna
  238.     PN_DA_NAD02         = 87,   //North American 1902
  239.     PN_DA_NAD27         = 88,   //North American 1927 - Mean Value (CONUS)
  240.     PN_DA_NAD27A        = 89,   //North American 1927 - Western US
  241.     PN_DA_NAD27B        = 90,   //North American 1927 - Eastern US
  242.     PN_DA_NAD27C        = 91,   //North American 1927 - Alaska
  243.     PN_DA_NAD27D        = 92,   //North American 1927 - Canada
  244.     PN_DA_NAD27E        = 93,   //North American 1927 - Alberta / BC
  245.     PN_DA_NAD27F        = 94,   //North American 1927 - East Canada
  246.     PN_DA_NAD27G        = 95,   //North American 1927 - Manitoba/Ontario
  247.     PN_DA_NAD27H        = 96,   //North American 1927 - NW Ter/ Sask
  248.     PN_DA_NAD27I        = 97,   //North American 1927 - Yukon
  249.     PN_DA_NAD27J        = 98,   //North American 1927 - Greenland
  250.     PN_DA_NAD27K        = 99,   //North American 1927 - Central America
  251.     PN_DA_NAD27L        = 100,  //North American 1927 - Bahamas
  252.     PN_DA_NAD27M        = 101,  //North American 1927 - Canal Zone
  253.     PN_DA_NAD27N        = 102,  //North American 1927 - Caribbean
  254.     PN_DA_NAD27O        = 103,  //North American 1927 - Cuba
  255.     PN_DA_NAD27P        = 104,  //North American 1927 - Mexico
  256.     PN_DA_NAD27Q        = 105,  //North American 1927 - San Salvador Isle
  257.     PN_DA_NAD27R        = 106,  //North American 1927 - Alaska / Canada
  258.     PN_DA_NAD83         = 107,  //North American 1983 - Mean
  259.     PN_DA_NAHRWAN1      = 108,  //Nahrwan (Masirah Island)
  260.     PN_DA_NAHRWAN2      = 109,  //Nahrwan (Saudi Arabia)
  261.     PN_DA_NAHRWAN3      = 110,  //Nahrwan (United Arab Emirates)
  262.     PN_DA_NAMIBIA       = 111,  //Namibia
  263.     PN_DA_NAPARIMA      = 112,  //Naparima, BWI
  264.     PN_DA_NETHTRI21     = 113,  //Netherland Tri 21
  265.     PN_DA_NOUTRIAG1     = 114,  //Nou Triag France
  266.     PN_DA_NOUTRIAG2     = 115,  //Nou Triag Luxembourg
  267.     PN_DA_OBSERVATORIO66= 116,  //Observastorio 1966
  268.     PN_DA_OLDEGYPT      = 117,  //Old Egyptian 1907
  269.     PN_DA_OLDHAWAII     = 118,  //Old Hawaiian - Mean
  270.     PN_DA_OLDHAWAII1    = 119,  //Old Hawaiian - Hawaii
  271.     PN_DA_OLDHAWAII2    = 120,  //Old Hawaiian - Kauai
  272.     PN_DA_OLDHAWAII3    = 121,  //Old Hawaiian - Maui
  273.     PN_DA_OLDHAWAII4    = 122,  //Old Hawaiian - Oahu
  274.     PN_DA_OMAN          = 123,  //Oman
  275.     PN_DA_ORDNANCEGB36  = 124,  //Ordnance Survey of GB 1936 - Mean
  276.     PN_DA_PICODELASNIEVES=125,  //Pico De Las Neives
  277.     PN_DA_PITCAIRN67    = 126,  //Pitcairn Astro 1967
  278.     PN_DA_PORTUGUESE73  = 127,  //Portuguese 1973
  279.     PN_DA_POTSDAM       = 128,  //Potsdam
  280.     PN_DA_PUERTORICO    = 129,  //Puerto Rico
  281.     PN_DA_QATARNATIONAL = 130,  //Qatar National
  282.     PN_DA_QORNOQ        = 131,  //Qornoq
  283.     PN_DA_ROME40        = 132,  //Rome 1940
  284.     PN_DA_SANTABRAZ     = 133,  //Sao Braz
  285.     PN_DA_SANTODOS      = 134,  //Santo (DOS)
  286.     PN_DA_SAPPERHILL43  = 135,  //Sapper Hill 1943
  287.     PN_DA_SCHWARZECK    = 136,  //Schwarzeck (Namibia)
  288.     PN_DA_PROVSAMERICA56= 137,  //Prov South American 1956 - Mean
  289.     PN_DA_PROVSAMERICA56A=138,  //Prov South American 1956 - Bolivia
  290.     PN_DA_PROVSAMERICA56B=139,  //Prov South American 1956 - N Chile
  291.     PN_DA_PROVSAMERICA56C=140,  //Prov South American 1956 - S Chile
  292.     PN_DA_PROVSAMERICA56D=141,  //Prov South American 1956 - Columbia
  293.     PN_DA_PROVSAMERICA56E=142,  //Prov South American 1956 - Ecuador
  294.     PN_DA_PROVSAMERICA56F=143,  //Prov South American 1956 - Guyana
  295.     PN_DA_PROVSAMERICA56G=144,  //Prov South American 1956 - Peru
  296.     PN_DA_PROVSAMERICA56H=145,  //Prov South American 1956 - Venezuela
  297.     PN_DA_SAMERICA69    = 146,  //South American 1969 - Mean
  298.     PN_DA_SAMERICA69A   = 147,  //South American 1969 - Argentina
  299.     PN_DA_SAMERICA69B   = 148,  //South American 1969 - Bolivia
  300.     PN_DA_SAMERICA69C   = 149,  //South American 1969 - Brazil
  301.     PN_DA_SAMERICA69D   = 150,  //South American 1969 - Chile
  302.     PN_DA_SAMERICA69E   = 151,  //South American 1969 - Colombia
  303.     PN_DA_SAMERICA69F   = 152,  //South American 1969 - Ecuador
  304.     PN_DA_SAMERICA69G   = 153,  //South American 1969 - Guyana
  305.     PN_DA_SAMERICA69H   = 154,  //South American 1969 - Paraguay
  306.     PN_DA_SAMERICA69I   = 155,  //South American 1969 - Peru
  307.     PN_DA_SAMERICA69J   = 156,  //South American 1969 - Trinidad/Tobago
  308.     PN_DA_SAMERICA69K   = 157,  //South American 1969 - Venezuela
  309.     PN_DA_SOUTHASIA     = 158,  //South Asia
  310.     PN_DA_PROVSCHILEAN63= 159,  //Prov So Chilean 1963
  311.     PN_DA_SEBASE        = 160,  //Southeast Base
  312.     PN_DA_SWBASE        = 161,  //Southwest Base
  313.     PN_DA_TANANARIVE25  = 162,  //Tananarive Observatory 1925
  314.     PN_DA_TIMBALAI48    = 163,  //Timbalai 1948
  315.     PN_DA_TOKYO         = 164,  //Tokyo
  316.     PN_DA_TOKYONEW      = 165,  //Tokyo - mean
  317.     PN_DA_TOKYONEW1     = 166,  //Tokyo - Korea
  318.     PN_DA_TOKYONEW2     = 167,  //Tokyo - Okinawa
  319.     PN_DA_TOKYOGSI      = 168,  //Tokyo GSI coords
  320.     PN_DA_TRISTAN68     = 169,  //Tristan Astro 1968
  321.     PN_DA_VITILEVU16    = 170,  //Viti Levu 1916
  322.     PN_DA_WAKEENIWETOK60= 171,  //Wake-Eniwetok 1960
  323.     PN_DA_WGS72         = 172,  //World Geodetic System 1972
  324.     PN_DA_YACARE        = 173,  //Yacare
  325.     PN_DA_ZANDERIJ      = 174,  //Zanderij
  326.     PN_DA_UNKNOWN       = MAX_PNDATUM_T
  327. }PNDatum_t;
  328. #define PN_NUM_AV_DATUMS_c  6   //PN_NUM_DATUMS_c / 32 and rounded up.
  329.  
  330. #define MIN_PN2DMODE_T 0
  331. #define MAX_PN2DMODE_T 2
  332. typedef enum ePN2DMode_t
  333. {
  334.     PN_MO_NOTAVAILABLE  = MIN_PN2DMODE_T,    //Do not give a 2D position for 3 satellites
  335.     PN_MO_2DMANUAL      = 1,                 //Give a 2D position using supplied altitude
  336.     PN_MO_2DAUTO        = MAX_PN2DMODE_T     //Use previous altitude (where available) to
  337. }PN2DMode_t;
  338.  
  339. #define MIN_PNALTHOLD_T 0
  340. #define MAX_PNALTHOLD_T 2
  341. typedef enum ePNAltHold_t
  342. {
  343.     PN_AH_OFF       = MIN_PNALTHOLD_T,    //Alt hold off
  344.     PN_AH_MANUAL    = 1,                  //Manual alt hold
  345.     PN_AH_AUTO      = MAX_PNALTHOLD_T     //Automatic alt hold
  346. }PNAltHold_t;
  347.  
  348. typedef enum ePNInit_t
  349. {
  350.     PN_IT_AVAILABLE = 1,    //Element is used by UniLocator.
  351.     PN_IT_INITIALIZE= 2     //Element used in initialization of device.
  352. }PNInit_t;
  353.  
  354. #define MIN_PNACCESS_T  0
  355. #define MAX_PNACCESS_T  1
  356. typedef enum ePNAccess_t
  357. {
  358.     PN_AS_READWRITE = MIN_PNACCESS_T,    //Device has full access rights.
  359.     PN_AS_READ      = MAX_PNACCESS_T     //Device has partial access rights (cannot affect device)
  360. }PNAccess_t;
  361.  
  362. #define MIN_PNRESET_T 0
  363. #define MAX_PNRESET_T 1
  364. typedef enum ePNReset_t
  365. {
  366.     PN_RS_HARD  = MIN_PNRESET_T,    //Hard reset.
  367.     PN_RS_SOFT  = MAX_PNRESET_T     //Soft reset.
  368. }PNReset_t;
  369.  
  370. #define MIN_PNPOWERSTATE_T 0
  371. #define MAX_PNPOWERSTATE_T 5
  372. typedef enum ePNPowerState_t
  373. {
  374.     PN_PW_OFF       = MIN_PNPOWERSTATE_T,
  375.     PN_PW_SUSPENDED = 1,
  376.     PN_PW_STANDBY   = 2,
  377.     PN_PW_LOWPOWER  = 3,
  378.     PN_PW_MIDPOWER  = 4,
  379.     PN_PW_FULLPOWER = MAX_PNPOWERSTATE_T
  380. }PNPowerState_t;
  381.  
  382. //Enumerated types
  383. #define MIN_PNENV_T 0
  384. #define MAX_PNENV_T 7
  385. typedef enum ePNEnv_t
  386. {
  387.     PN_ET_STATIONARY    = MIN_PNENV_T,
  388.     PN_ET_OPENROAD      = 1,
  389.     PN_ET_URBANCANYON   = 2,
  390.     PN_ET_FOREST        = 3,
  391.     PN_ET_OPENOCEAN     = 4,
  392.     PN_ET_AIRCRAFT      = 5,
  393.     PN_ET_NONE          = 6,
  394.     PN_ET_USER          = MAX_PNENV_T
  395. }PNEnv_t;
  396.  
  397. #define MIN_PN3STATE_T 0
  398. #define MAX_PN3STATE_T 2
  399. typedef enum ePN3State_t
  400. {
  401.     PN_3S_FALSE = MIN_PNALTHOLD_T, //Off, or False position.
  402.     PN_3S_TRUE  = 1,               //On, or True position.
  403.     PN_3S_OTHER = MAX_PNALTHOLD_T  //Other, or Indeterminate position.
  404. }PN3State_t;
  405.  
  406. typedef struct tagPNDEVICE
  407. {
  408.     DWORD           dwStructureSize;
  409.     WCHAR           szManufacturer[PN_MNFCT_SIZE_c]; //Not used by WINCE
  410.     WCHAR           szModel[PN_MODEL_SIZE_c];
  411.     PNReceiver_t    rtReceiverType;     //Not used by WINCE
  412.     DWORD           dwUseCount;         //# of applications that are using this device currently.
  413.     DWORD           dwQuality;          //Quality of data this device can deliver (the lower the number the better it is).
  414.     WCHAR           szComPort[PN_COM_PORT_LEN_c]; //Com port this device is currently on (in the format "COM?" where ? is a the port number). Not used by WINCE.
  415.     WCHAR           szRegRoot[PN_REG_PATH_LEN_c]; //For PNAPI internal use.
  416.     DWORD           dwComPort;          //Comm port in numerical format (see PN_I2P_GPS1_c and PN_I2P_GPS2Pc).
  417.     DWORD           dwPNReserved;       //Reserved for future use by PNAPI
  418.     struct tagPNDEVICE* pNext;
  419. } PNDEVICE;
  420. typedef PNDEVICE*   pPNDEVICE;
  421. typedef PNDEVICE**  ppPNDEVICE;
  422.  
  423. typedef struct tagPNTM
  424. {
  425.     DWORD   dwMillisec;
  426.     DWORD   dwDay;
  427. } PNTM;
  428. typedef PNTM* pPNTM;
  429.  
  430. #define PN_ATM_MILLISEC 0x00000001L
  431. #define PN_ATM_DAY      0x00000002L
  432.  
  433. typedef struct tagPNAVTM
  434. {
  435.     DWORD   dwStructureSize;
  436.     DWORD   dwAv1;
  437.     DWORD   dwPNReserved;
  438. } PNAVTM;
  439. typedef PNAVTM* pPNAVTM;
  440.  
  441. typedef struct tagPNTIME
  442. {
  443.     PNTM    tmDevice;
  444.     PNAVTM  tmAvDevice;
  445.     PNTM    tmLeapDiffTime;     //Not used by WINCE.
  446.     PNAVTM  tmAvLeapDiffTime;   //Not used by WINCE.
  447.     PNTM    tmComputer;
  448.     PNAVTM  tmAvComputer;
  449. } PNTIME;
  450. typedef PNTIME* pPNTIME;
  451.  
  452. typedef struct tagPNPOSLLA
  453. {
  454.     PNDouble    dLong;
  455.     PNDouble    dLat;
  456.     PNDouble    dAlt;
  457.     PNBool      fRadians;
  458. } PNPOSLLA;
  459. typedef PNPOSLLA* pPNPOSLLA;
  460.  
  461. typedef struct tagPNPOSXYZ
  462. {
  463.     PNDouble    dX;
  464.     PNDouble    dY;
  465.     PNDouble    dZ;
  466. } PNPOSXYZ;
  467. typedef PNPOSXYZ* pPNPOSXYZ;
  468.  
  469. #define PN_APL_LONG     0x00000001L
  470. #define PN_APL_LAT      0x00000002L
  471. #define PN_APL_ALT      0x00000004L
  472. #define PN_APL_RADIANS  0x00000008L
  473.  
  474. typedef struct tagPNAVPOSLLA
  475. {
  476.     DWORD   dwStructureSize;
  477.     DWORD   dwAv1;
  478.     DWORD   dwPNReserved;
  479. } PNAVPOSLLA;
  480. typedef PNAVPOSLLA* pPNAVPOSLLA;
  481.  
  482. typedef struct tagPNPOSITION
  483. {
  484.     DWORD       dwStructureSize;
  485.     PNTIME      tiTime;
  486.     PNPOSLLA    psPosition;
  487.     PNAVPOSLLA  psAvPosition;
  488.     DWORD       dwPNReserved;
  489. } PNPOSITION;
  490. typedef PNPOSITION* pPNPOSITION;
  491.  
  492. typedef struct tagPNVELENU
  493. {
  494.     PNDouble    dEast;  //meters/sec
  495.     PNDouble    dNorth; //meters/sec
  496.     PNDouble    dUp;    //meters/sec
  497. } PNVELENU;
  498. typedef PNVELENU* pPNVELENU;
  499.  
  500. typedef struct tagPNVELBEAR
  501. {
  502.     PNDouble    dBearing;
  503.     PNDouble    dHorizSpeed;
  504.     PNDouble    dVertSpeed;
  505. } PNVELBEAR;
  506. typedef PNVELBEAR* pPNVELBEAR;
  507.  
  508. #define PN_AVN_EAST     0x00000001L
  509. #define PN_AVN_NORTH    0x00000002L
  510. #define PN_AVN_UP       0x00000004L
  511.  
  512. typedef struct tagPNAVVELENU
  513. {
  514.     DWORD   dwStructureSize;
  515.     DWORD   dwAv1;
  516.     DWORD   dwPNReserved;
  517. } PNAVVELENU;
  518. typedef PNAVVELENU* pPNAVVELENU;
  519.  
  520. typedef struct tagPNVELOCITY
  521. {
  522.     DWORD       dwStructureSize;//For future use
  523.     PNTIME      tiTime;
  524.     PNVELENU    vlVelocity;
  525.     PNAVVELENU  vlAvVelocity;
  526.     DWORD       dwPNReserved;   //Reserved for future use by PNAPI
  527. } PNVELOCITY;
  528. typedef PNVELOCITY* pPNVELOCITY;
  529.  
  530. #define PN_ASI_STATE            0x00000001L
  531. #define PN_ASI_STATIONIDNUM     0x00000002L
  532. #define PN_ASI_USED             0x00000004L
  533. #define PN_ASI_ELEVATION        0x00000008L
  534. #define PN_ASI_SATAZIMUTH       0x00000010L
  535. #define PN_ASI_SIGNALSTRENGTH   0x00000020L
  536. #ifndef UNDER_CE
  537. #define PN_ASI_COVERAGE         0x00000040L
  538. #endif //UNDER_CE
  539.  
  540. typedef struct tagPNAVINDSTATION
  541. {
  542.     DWORD   dwStructureSize;
  543.     DWORD   dwAv1;
  544.     DWORD   dwPNReserved;
  545. } PNAVINDSTATION;
  546. typedef PNAVINDSTATION* pPNAVINDSTATION;
  547.  
  548. typedef struct tagPNINDSTATION
  549. {
  550.     DWORD           dwStructureSize;//For future use
  551.     PNTIME          tiTime;         //Not used by WINCE.
  552.     PNStationState_t ssState;       //State of this station
  553.     DWORD           dwStationIDNum; //PRN#/SVID or unique station#
  554.     PNBool          fUsed;          //Whether station is being used for calcns
  555.     PNDouble        dSatElevation;  //Measured in radians (0-PI/2) GPS specific.
  556.     PNDouble        dSatAzimuth;    //Measured in radians (0-2*PI) GPS specific.
  557.     PNDouble        dSignalStrength;//Measured in dB.
  558.     DWORD           dwCoverage;     //How often the station is serviced (in milliseconds). Not used by WINCE.
  559.     PNAVINDSTATION  siAvIndStation;
  560.     DWORD           dwPNReserved;   //Reserved for future use by PNAPI
  561. } PNINDSTATION;
  562. typedef PNINDSTATION* pPNINDSTATION;
  563.  
  564. #ifndef UNDER_CE
  565. #define PN_ASN_NUMAVAILABLE 0x00000001L
  566. #endif //UNDER_CE
  567. #define PN_ASN_NUMUSED      0x00000002L
  568.  
  569. typedef struct tagPNAVSTATION
  570. {
  571.     DWORD   dwStructureSize;
  572.     DWORD   dwAv1;
  573.     DWORD   dwPNReserved;
  574. } PNAVSTATION;
  575. typedef PNAVSTATION* pPNAVSTATION;
  576.  
  577. typedef struct tagPNSTATION
  578. {
  579.     DWORD           dwStructureSize;//For future use
  580.     PNTIME          tiTime;
  581.     DWORD           dwNumAvailable; //Num stations that can be seen. Not used by WINCE.
  582.     DWORD           dwNumUsed;      //Num stations being tracked by the device
  583.     PNAVSTATION     snAvStation;    //Which PNSTATION elements are valid
  584.     PNINDSTATION    siStations[PN_NUM_STATIONS_c]; //Individual station data
  585.     DWORD           dwPNReserved;   //Reserved for future use by PNAPI
  586. } PNSTATION;
  587. typedef PNSTATION* pPNSTATION;
  588.    
  589. #ifndef UNDER_CE
  590. #define PN_ASA_SETDATA                  0x00000001L
  591. #endif //UNDER_CE
  592. #define PN_ASA_PRN                      0x00000002L
  593. #define PN_ASA_SATHEALTH                0x00000004L
  594. #define PN_ASA_REFWEEKNUMBER            0x00000008L
  595. #define PN_ASA_REFTIMEOFWEEK            0x00000010L
  596. #define PN_ASA_ECCENTRICITY             0x00000020L
  597. #define PN_ASA_ROOTSEMIMAJORAXIS        0x00000040L
  598. #define PN_ASA_ARGUMENTOFPERIGEE        0x00000080L
  599. #define PN_ASA_MEANANOMALYATREFTIME     0x00000100L
  600. #define PN_ASA_RIGHTASCENSIONATREFTIME  0x00000200L
  601. #define PN_ASA_RATERIGHTASCENSION       0x00000400L
  602. #define PN_ASA_CORRECTTOINCLINATION     0x00000800L
  603. #define PN_ASA_AF0CLOCKCORRECT          0x00001000L
  604. #define PN_ASA_AF1CLOCKCORRECT          0x00002000L
  605.  
  606. typedef struct tagPNAVSATELLITE
  607. {
  608.     DWORD   dwStructureSize;
  609.     DWORD   dwAv1;
  610.     DWORD   dwPNReserved;
  611. } PNAVSATELLITE;
  612. typedef PNAVSATELLITE* pPNAVSATELLITE;
  613.  
  614. typedef struct tagPNSATELLITE
  615. {
  616.     DWORD       dwStructureSize;        //For future use
  617.     PNTIME      tiTime;                 //Time data was collected. Not used by WINCE.
  618.     PNBool      fSetData;               //Set data or not.         Not used by WINCE.
  619.     DWORD       dwPRN;                  //Satellite PRN Number
  620.     PNByte      bSatHealth;             //Health summary (binary)
  621.     DWORD       dwRefWeekNumber;
  622.     DWORD       dwRefTimeOfWeek;        //seconds
  623.     PNDouble    dEccentricity;
  624.     PNDouble    dRootSemiMajorAxis;     //Measures in meters^0.5
  625.     PNDouble    dArgumentOfPerigee;     //Measured in radians
  626.     PNDouble    dMeanAnomalyAtRefTime;  //Measured in radians
  627.     PNDouble    dRightAscensionAtRefTime;//Measured in radians
  628.     PNDouble    dRateRightAscension;    //Measured in radians/sec
  629.     PNDouble    dCorrectToInclination;  //Measured in PI radians
  630.     PNDouble    dAF0ClockCorrect;       //Measured in seconds
  631.     PNDouble    dAF1ClockCorrect;       //Measured in sec/sec.
  632.     PNAVSATELLITE saAvSatellite;        //Which elements are valid
  633.     DWORD       dwPNReserved;           //Reserved for future use by PNAPI
  634. } PNSATELLITE;
  635. typedef PNSATELLITE* pPNSATELLITE;
  636.  
  637. typedef struct tagPNALMANAC
  638. {
  639.     DWORD       dwStructureSize;    //For future use
  640.     PNTIME      tiTime;             //Time data was collected
  641.     PNSATELLITE saSatellite[PN_NUM_SATS_c];//Satellite information 
  642.     DWORD       dwPNReserved;       //Reserved for future use by PNAPI
  643. } PNALMANAC;
  644. typedef PNALMANAC* pPNALMANAC;
  645.  
  646. #ifndef UNDER_CE
  647. #define PN_ASM_STATIONID    0x00000001L
  648. #define PN_ASM_STATIONUSED  0x00000002L
  649. #endif //UNDER_CE
  650.  
  651. //Structure not used by WINCE.
  652. typedef struct tagPNAVSTATIONMODE
  653. {
  654.     DWORD   dwStructureSize;
  655.     DWORD   dwAv1;
  656.     DWORD   dwPNReserved;
  657. } PNAVSTATIONMODE;
  658.  
  659. //Structure not used by WINCE.
  660. typedef struct tagPNSTATIONMODE
  661. {
  662.     DWORD           dwStructureSize;//For future use
  663.     DWORD           dwStationID;    //PRN#/SVID or unique station#
  664.     PNBool          fStationUsed;   //TRUE if station used to calc a position
  665.     PNAVSTATIONMODE smMode;         //Which elements are valid
  666.     DWORD           dwPNReserved;   //Reserved for future use by PNAPI
  667. } PNSTATIONMODE;
  668. typedef PNSTATIONMODE* pPNSTATIONMODE;
  669.  
  670. #ifndef UNDER_CE
  671. #define PN_ASE_MODE             0x00000001L
  672. #endif //UNDER_CE
  673. #define PN_ASE_DGPSENABLE       0x00000002L //Not implemented for V1.0 PNAPI.
  674. #define PN_ASE_DRENABLE         0x00000004L
  675. #define PN_ASE_DGPSTIMEOUT      0x00000008L //Not implemented for V1.0 PNAPI.
  676. #ifndef UNDER_CE
  677. #define PN_ASE_DGPS2DENABLE     0x00000010L //Not implemented for V1.0 PNAPI.
  678. #define PN_ASE_DGPS2DTIMEOUT    0x00000020L //Not implemented for V1.0 PNAPI.
  679. #endif //UNDER_CE
  680. #define PN_ASE_DATUM            0x00000040L
  681. #define PN_ASE_POWERSTATE       0x00000080L
  682. #ifndef UNDER_CE
  683. #define PN_ASE_ALTITUDEHOLD     0x00000100L
  684. #define PN_ASE_AHALTITUDE       0x00000200L
  685. #define PN_ASE_2DPOSMODE        0x00000400L
  686. #define PN_ASE_2DALTITUDE       0x00000800L
  687. #endif //UNDER_CE
  688. #define PN_ASE_ENVIRONMENT      0x00001000L
  689. #define PN_ASE_ACCESS           0x00002000L
  690.  
  691. typedef struct tagPNAVSETTINGS
  692. {
  693.     DWORD   dwStructureSize;
  694.     DWORD   dwAv1;
  695.     DWORD   dwPNReserved;
  696. } PNAVSETTINGS;
  697. typedef PNAVSETTINGS* pPNAVSETTINGS;
  698.  
  699. typedef struct tagPNSETTINGS
  700. {
  701.     DWORD           dwStructureSize;//For future use
  702.     PNTIME          tiTime;
  703.     PNSTATIONMODE   cmMode[PN_NUM_SATS_c]; //Current station mode. Not used by WINCE.
  704.     PNBool          fDGPSEnable;    //Enables / disables DGPS functionality.
  705.     PNBool          fDREnable;      //Enables / disables dead reckoning functionality (Not used in V1.0 or V1.1).
  706.     DWORD           dwDGPSTimeOut;  //Sets / gets the DGPS time out (in milliseconds).
  707.     PNBool          fDGPS2DEnable;  //Not implemented for V1.0 PNAPI. Not used by WINCE.
  708.     DWORD           dwDGPS2DTimeOut;//Not implemented for V1.0 PNAPI. Not used by WINCE.
  709.     PNDatum_t       daDatum;        //Datum receiver uses
  710.     PNPowerState_t  pwPowerState;   //Power state of device.
  711.     PNAltHold_t     ahAltitudeHold; //Set altitude hold. Not used by WINCE.
  712.     PNDouble        dAHAltitude;    //Altitude value when AltHold is manual. Not used by WINCE.
  713.     PN2DMode_t      mo2DPosMode;    //If TRUE, 2D positioning is available. Not used by WINCE.
  714.     PNDouble        d2DAltitude;    //Altitude for mo2DPosMode. Not used by WINCE.
  715.     PNAccess_t      asAccess;       //Access rights for device.
  716.     PNEnv_t         etEnvironment;  //Environment for this device.
  717.     PNAVSETTINGS    seAvSettings;   //Which elements are valid.
  718.     DWORD           dwPNReserved;   //Reserved for future use by PNAPI
  719. } PNSETTINGS;
  720. typedef PNSETTINGS* pPNSETTINGS;
  721.  
  722. #ifndef UNDER_CE
  723. #define PN_AAC_AHORIZERROR      0x00000001L
  724. #define PN_AAC_AVERTICALERROR   0x00000002L
  725. #endif //UNDER_CE
  726. #define PN_AAC_EDOP             0x00000004L
  727. #define PN_AAC_NDOP             0x00000008L
  728. #define PN_AAC_VDOP             0x00000010L
  729. #define PN_AAC_PDOP             0x00000020L
  730. #define PN_AAC_TDOP             0x00000040L
  731. #define PN_AAC_GDOP             0x00000080L
  732.  
  733. typedef struct tagPNAVACCURACY
  734. {
  735.     DWORD   dwStructureSize;
  736.     DWORD   dwAv1;
  737.     DWORD   dwPNReserved;
  738. } PNAVACCURACY;
  739.  
  740. typedef PNAVACCURACY* pPNAVACCURACY;
  741.  
  742. typedef struct tagPNACCURACY
  743. {
  744.     DWORD       dwStructureSize;//For future use
  745.     PNTIME      tiTime;
  746.     PNDouble    dHorizError;    //meters. Not used by WINCE.
  747.     PNDouble    dVerticalError; //meters. Not used by WINCE.
  748.     PNDouble    dEDOP;          //GPS specific item
  749.     PNDouble    dNDOP;          //GPS specific item
  750.     PNDouble    dVDOP;          //GPS specific item
  751.     PNDouble    dPDOP;          //GPS specific item
  752.     PNDouble    dTDOP;          //GPS specific item
  753.     PNDouble    dGDOP;          //GPS specific item
  754.     PNAVACCURACY acAvAccuracy;
  755.     DWORD       dwPNReserved;   //Reserved for future use by PNAPI
  756. } PNACCURACY;
  757. typedef PNACCURACY* pPNACCURACY;
  758.  
  759. typedef struct tagPNCONFIG
  760. {
  761.     DWORD       dwStructureSize;//For future use
  762.     PNPOSITION  poPositionData; //Holds position & time it was found. Only PNPOSLLA portion used by WINCE.
  763.     PNACCURACY  acAccuracy;     //Accuracy of above position. Not used by WINCE.
  764.     PNPOSITION  poStaticRefPos; //Static reference position. Not used by WINCE.
  765.     PNALMANAC   alAlmanac;      //Almanac data.
  766.     PNSETTINGS  seSettings;     //Miscellaneous settings. Not used by WINCE.
  767.     PNBool      fInitAlmanac;   //Whether almanac will be initialized on start up.
  768.     PNBool      fInitPosition;  //Whether position will be initialised on start up.
  769.     PNBool      fInitTime;      //Whether the time will be initialised on start up.
  770.     DWORD       dwPNReserved;   //Reserved for future use by PNAPI
  771. } PNCONFIG;
  772. typedef PNCONFIG* pPNCONFIG;
  773.  
  774. #define PN_ADS_STATE    0x00000001L  
  775.  
  776. typedef struct tagPNAVDEVSTATE
  777. {
  778.     DWORD   dwStructureSize;
  779.     DWORD   dwAv1;
  780.     DWORD   dwPNReserved;
  781. } PNAVDEVSTATE;
  782.  
  783. typedef struct tagPNDEVSTATE
  784. {
  785.     DWORD           dwStructureSize;//For future use
  786.     PNTIME          tiTime;
  787.     PNDeviceState_t dsState;
  788.     PNAVDEVSTATE    dsAvState;
  789.     DWORD           dwPNReserved;   //Reserved for future use by PNAPI
  790. } PNDEVSTATE;
  791. typedef PNDEVSTATE* pPNDEVSTATE;
  792.  
  793. //Structure not used by WINCE.
  794. typedef struct tagPNSTATUS
  795. {
  796.     DWORD       dwStructureSize;//For future use
  797.     PNTIME      tiFirstTime;    //Time first piece of data collected
  798.     PNTIME      tiLastTime;     //Time last piece of data collected
  799.     PNPOSITION  poPosition;     //Position data
  800.     PNVELOCITY  veVelocity;     //Velocity data
  801.     PNDEVSTATE  deDevState;     //Device state
  802.     PNACCURACY  acAccuracy;     //Accuracy data
  803.     DWORD       dwPNReserved;   //Reserved for future use by PNAPI
  804. } PNSTATUS;
  805. typedef PNSTATUS* pPNSTATUS;
  806.  
  807. #define PN_DU_MODE          0x00000001L  
  808. #define PN_DU_OPMODE        0x00000002L
  809. #define PN_DU_STATUS        0x00000004L
  810. #define PN_DU_AGELIMIT      0x00000008L
  811.  
  812. typedef struct tagPNAVDGPSSTATUS
  813. {
  814.     DWORD   dwStructureSize;
  815.     DWORD   dwAv1;
  816.     DWORD   dwPNReserved;
  817. } PNAVDGPSSTATUS;
  818. typedef PNAVDGPSSTATUS* pPNAVDGPSSTATUS;
  819.  
  820. typedef struct tagPNDGPSSTATUS
  821. {
  822.     DWORD           dwStructureSize;//For future use
  823.     PNTIME          tiTime;
  824.     PN3State_t      DGPSMode;       //PN_3S_FALSE - DPGS Off, PN_3S_TRUE - DGPS On, PN_3S_OTHER - Auto selection.
  825.     PN3State_t      OperatingMode;  //PN_3S_FALSE - 2D only, PN_3S_TRUE - 3D only, PN_3S_OTHER - Auto selection.
  826.     PNBool          fDGPSStatus;    //TRUE - If outputting position, receiver using DGPS corrections, FALSE - Not using DGPS corrections.
  827.     PNAVDGPSSTATUS  dpAvDGPSStatus;
  828.     DWORD           dwPNReserved;   //Reserved for future use by PNAPI
  829.     DWORD           dwDGPSAgeLimit; //Max. # of milliseconds to use DGPS correctional data
  830. } PNDGPSSTATUS;
  831. typedef PNDGPSSTATUS* pPNDGPSSTATUS;
  832.  
  833. typedef struct tagPNDR
  834. {
  835.     DWORD   dwStructureSize;
  836.     PNBool  fDRActive;  //Whether dead reckoning service is available.
  837.     PNBool  fDREnable;  //TRUE - Enable dead reckoning, FALSE - Disable dead reckoning.
  838.     DWORD   dwPNReserved;
  839. } PNDR;
  840. typedef PNDR* pPNDR;
  841.  
  842. #endif //INC_PNGEN
  843.