vmgps_sdk.h
12.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
#ifndef VMGPS_SDK_H_
#define VMGPS_SDK_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "vmsys.h"
#define VM_GPS_NMEA_MAX_SVVIEW 20
#define VM_GPS_GSA_SATE_MAX 12
/*UTC time structure*/
typedef struct{
VMINT8 hour; /* hour */
VMINT8 minute; /* minute */
VMINT8 second; /* second */
VMINT8 millisecond; /* millisecond */
} vm_gps_nmea_utc_time_struct;
/*UTC date structure*/
typedef struct{
VMINT8 year; /* year */
VMINT8 month; /* month */
VMINT8 day; /* day */
} vm_gps_nmea_utc_date_struct;
/*GPGGA -- Global Positioning System Fix Data*/
typedef struct{
double gga_latitude; /*Latitude South<0 North>0*/
double gga_longitude; /*Longitude West<0 east>0*/
float gga_h_precision; /*Horizontal Dilution of precision*/
double gga_altitude; /*Antenna Altitude above/below mean-sea-level (geoid)*/
float gga_unit_of_altitude; /*Units of antenna altitude, meters*/
float gga_geoidal ; /*Geoidal separation, the difference between the WGS-84 earth*/
float gga_unit_of_geoidal; /*Units of geoidal separation, meters*/
float gga_gps_age; /*Age of differential GPS data, time in seconds since last SC104*/
VMUINT16 gga_station_id; /*Differential reference station ID, 0000-1023*/
VMUINT8 gga_sat_in_view; /*Number of satellites in view*/
vm_gps_nmea_utc_time_struct gga_utc_time; /*Time (UTC)*/
VMINT8 gga_north_south; /*north or south*/
VMINT8 gga_east_west; /*east or west*/
VMINT8 gga_quality; /*GPS Quality Indicator*/
}vm_gps_gga_data_struct;
/*GPRMC -- Recommended Minimum Specific GNSS Data*/
typedef struct{
double rmc_latitude; /* latitude */
double rmc_longitude; /* longitude */
float rmc_ground_speed; /*Speed over ground, knots*/
float rmc_trace_degree; /*Track mode degrees,north is 0*/
float rmc_magnetic; /* trace defree */
vm_gps_nmea_utc_time_struct rmc_utc_time; /*Time (UTC)*/
vm_gps_nmea_utc_date_struct rmc_utc_date; /*Date (UTC)*/
VMINT8 rmc_status; /* status */
VMINT8 rmc_north_south; /* north or south */
VMINT8 rmc_east_west; /* east or west */
VMINT8 rmc_magnetic_e_w; /* magnetic east or west */
VMINT8 rmc_cmode; /* mandatory checksum */
}vm_gps_rmc_data_struct;
/*GPGLL -- Geographic Position - Latitude/Longitude*/
typedef struct{
double gll_latitude; /* latitude */
double gll_longitude; /* longitude */
vm_gps_nmea_utc_time_struct gll_utc_time; /* utc time */
VMINT8 gll_north_south; /* north or south */
VMINT8 gll_east_west; /* east or west */
VMINT8 gll_status; /*Status A - Data Valid, V - Data Invalid*/
VMINT8 gll_mode; /* mode */
}vm_gps_gll_data_struct;
/*GPGSV -- GNSS Satellites in View*/
typedef struct{
VMINT16 gsv_msg_sum; /* Number of sentences for full data */
VMINT16 gsv_msg_index; /* message index */
VMINT16 gsv_sates_in_view; /* Number of satellites in view */
VMINT16 gsv_max_snr; /* max snr */
VMINT16 gsv_min_snr; /* min snr */
VMINT16 gsv_num_sv_trk; /* number of satellite */
struct
{
VMUINT8 sate_id; /* Satellite PRN number */
VMUINT8 elevation; /* Elevation, degrees */
VMINT16 azimuth; /* Azimuth, degrees */
VMUINT8 snr; /* Signal strength - higher is better */
}gsv_rsv[VM_GPS_NMEA_MAX_SVVIEW]; /* There my be up to three GSV sentences in a data packet*/
}vm_gps_gsv_data_struct;
/*GPGSA -- GNSS DOP and Active Satellites*/
typedef struct{
float gsa_pdop; /* PDOP (dilution of precision) */
float gsa_hdop; /* Horizontal dilution of precision (HDOP) */
float gsa_vdop; /* Vertical dilution of precision (VDOP) */
VMUINT16 gsa_sate_id[VM_GPS_GSA_SATE_MAX]; /* PRNs of satellites used for fix (space for 12) */
VMINT8 gsa_op_mode; /* selection of 2D or 3D fix, 0-Auto, 1-Manual */
VMINT8 gsa_fix_mode; /* 3D fix */
}vm_gps_gsa_data_struct;
/*GPVTG -- VTG Data*/
typedef struct{
float vtg_hspeed_knot; /* Ground speed, knots */
float vtg_hspeed_km; /*Ground speed, Kilometers per hour */
float vtg_true_heading; /*True track made good */
float vtg_mag_heading; /*Magnetic track made good */
VMINT8 vtg_mode; /* VTG mode */
}vm_gps_vtg_data_struct;
/*NMEA data structure*/
typedef struct{
vm_gps_rmc_data_struct rmc_data; /* RMC data */
vm_gps_vtg_data_struct vtg_data; /* VTG data */
vm_gps_gll_data_struct gll_data; /* GLL data */
vm_gps_gga_data_struct gga_data; /* GGA data */
vm_gps_gsa_data_struct gsa_data; /* GSA data */
vm_gps_gsv_data_struct gsv_data; /* GSV data */
}vm_gps_info_struct;
/*GPS open status*/
typedef enum{
VM_GPS_OPEN_RES_LESS = -3 , /*lack of resource*/
VM_GPS_OPEN_PORT_HANDLE_WRONG = -2, /*Open UART handle error*/
VM_GPS_OPEN_PORT_NUMBER_WRONG = -1, /*Open UART port number error*/
VM_GPS_OPEN_SUCCESS = 0, /*Open successfully*/
VM_GPS_OPEN_ALREADY_OPEN = 1 /*Already open*/
} vm_gps_open_state_enum;
/*GPS close status*/
typedef enum{
VM_GPS_CLOSE_FAILED = -1, /*Close failed*/
VM_GPS_CLOSE_SUCCESS = 0, /*Close successfully*/
VM_GPS_CLOSE_STILL_APP_USE_DATA = 1 /*GPS information still used by other application*/
} vm_gps_close_state_enum;
/*****************************************************************************
* FUNCTION
* vm_gps_open
* DESCRIPTION
* Open GPS. This funtion will also open UART port.
* RETURNS
* result of open operation.
* RETURN VALUES
* VM_GPS_OPEN_SUCCESS : Open successfully.
* VM_GPS_OPEN_ALREADY_OPEN : Already open.
* VM_GPS_OPEN_PORT_NUMBER_WRONG : Open UART port number error
* VM_GPS_OPEN_PORT_HANDLE_WRONG : Open UART handle error
*
*****************************************************************************/
VMINT vm_gps_open(void);
/*****************************************************************************
* FUNCTION
* vm_gps_close
* DESCRIPTION
* Close GPS. This funtion will close GPS if there is no other application use GPS.
* RETURNS
* result of close operation.
* RETURN VALUES
* VM_GPS_CLOSE_SUCCESS : Close successfully.
* VM_GPS_CLOSE_STILL_APP_USE_DATA : GPS information still used by other application
* VM_GPS_CLOSE_FAILED : Close failed.
*
*****************************************************************************/
VMINT vm_gps_close(void);
/*****************************************************************************
* FUNCTION
* vm_gps_get_gga_data
* DESCRIPTION
* Get GGA information of GPS. This funtion will return NULL if vm_gps_open() is not invoked before.
* RETURNS
* Pointer of GGA information or NULL.
*
*****************************************************************************/
vm_gps_gga_data_struct* vm_gps_get_gga_data( void );
/*****************************************************************************
* FUNCTION
* vm_gps_get_rmc_data
* DESCRIPTION
* Get RMC information of GPS. This funtion will return NULL if vm_gps_open() is not invoked before.
* RETURNS
* Pointer of RMC information or NULL.
*
*****************************************************************************/
vm_gps_rmc_data_struct* vm_gps_get_rmc_data( void );
/*****************************************************************************
* FUNCTION
* vm_gps_get_gll_data
* DESCRIPTION
* Get GLL information of GPS. This funtion will return NULL if vm_gps_open() is not invoked before.
* RETURNS
* Pointer of GLL information or NULL.
*
*****************************************************************************/
vm_gps_gll_data_struct* vm_gps_get_gll_data( void );
/*****************************************************************************
* FUNCTION
* vm_gps_get_gsv_data
* DESCRIPTION
* Get GSV information of GPS. This funtion will return NULL if vm_gps_open() is not invoked before.
* RETURNS
* Pointer of GSV information or NULL.
*
*****************************************************************************/
vm_gps_gsv_data_struct* vm_gps_get_gsv_data( void );
/*****************************************************************************
* FUNCTION
* vm_gps_get_gsa_data
* DESCRIPTION
* Get GSA information of GPS. This funtion will return NULL if vm_gps_open() is not invoked before.
* RETURNS
* Pointer of GSA information or NULL.
*
*****************************************************************************/
vm_gps_gsa_data_struct* vm_gps_get_gsa_data( void );
/*****************************************************************************
* FUNCTION
* vm_gps_get_vtg_data
* DESCRIPTION
* Get VTG information of GPS. This funtion will return NULL if vm_gps_open() is not invoked before.
* RETURNS
* Pointer of VTG information or NULL.
*
*****************************************************************************/
vm_gps_vtg_data_struct* vm_gps_get_vtg_data( void );
#ifdef __cplusplus
}
#endif
#endif /* VMGPS_SDK_H_ */