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
|
/*
* @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file MDev_Gps_Common.h
*/
#ifndef INC_GPSCOMMON_MDEV_GPS_COMMON_H_
#define INC_GPSCOMMON_MDEV_GPS_COMMON_H_
/*---------------------------------------------------------------------------*/
// Include files
#include "positioning_def.h"
#include "MDev_Gps_Main.h"
/*---------------------------------------------------------------------------*/
// Define
#define NMEA_CHECKSUM_CHAR '*' /* *## (HEX) */
#define NMEA_DATA_SEPARATOR ','
#define GPS_NMEA_FIELD_LEN_MAX (GPS_NMEA_MAX_SZ)
// NMEA GGA Sentence
/* Fix Status */
#define GPS_NMEA_GGA_FIX_STATUS_NON 0 /* invalid */
#define GPS_NMEA_GGA_FIX_STATUS_GPS 1 /* GPS SPS Mode, Fix valid */
#define GPS_NMEA_GGA_FIX_STATUS_DGPS 2 /* DGPS SPS Mode, Fix valid */
#define GPS_NMEA_GGA_FIX_STATUS_DR 6 /* Estimated/Dead Reckoning */
/* Field No */
#define GPS_NMEA_FNO_GGA_FS 6
#define GPS_NMEA_FNO_GGA_MSL 9
/* number of SV Fields */
#define GPS_NMEA_NUM_GSA_SV 12
/* Fix Status */
#define GPS_NMEA_GSA_FIX_STS_NON 1
#define GPS_NMEA_GSA_FIX_STS_2D 2
#define GPS_NMEA_GSA_FIX_STS_3D 3
/* Field No */
#define GPS_NMEA_FNO_GSA_FS 2
#define GPS_NMEA_FNO_GSA_SV 3
/* number of Satellite Infomation Fields (sv+elv+az+cno) */
#define GPS_NMEA_NUM_GSV_SINFO 4
/* Field No */
#define GPS_NMEA_FNO_GSV_NOSV 3
#define GPS_NMEA_FNO_GSV_SV 4
#define GPS_NMEA_FNO_GSV_ELV 5
#define GPS_NMEA_FNO_GSV_AZ 6
#define GPS_NMEA_FNO_GSV_CNO 7
#define GPS_NMEA_RMC_STS_INVALID 'V'
#define GPS_NMEA_RMC_STS_VALID 'A'
#define GPS_NMEA_RMC_IND_NORTH 'N'
#define GPS_NMEA_RMC_IND_EAST 'E'
/* Field No */
#define GPS_NMEA_FNO_RMC_UTC 1
#define GPS_NMEA_FNO_RMC_STATUS 2
#define GPS_NMEA_FNO_RMC_LATITUDE 3
#define GPS_NMEA_FNO_RMC_NS 4
#define GPS_NMEA_FNO_RMC_LONGITUDE 5
#define GPS_NMEA_FNO_RMC_EW 6
#define GPS_NMEA_FNO_RMC_SPEED 7
#define GPS_NMEA_FNO_RMC_COG 8
#define GPS_NMEA_FNO_RMC_DATE 9
// Diag Fix Count
#define GPS_DIAG_FIX_COUNT_3D (0x01)
#define GPS_DIAG_FIX_COUNT_2D (0x02)
#define GPS_DIAG_FIX_COUNT_ELSE (0x04)
/* GPS time setting related */
#define GPS_SETTIME_RANGE 5 /* 5 seconds : Valid range of GPS time setting */
#define GPS_TIME_RANGE 10 /* 10 seconds : GPS time change range */
/* NAV-SVINFO logging status */
#define GPS_NAVSVINFO_STS_INIT 0
#define GPS_NAVSVINFO_STS_READY 1
#define GPS_NAVSVINFO_STS_DONE 2
#define GPS_NAVSVINFO_STS_SETTING 3
/* Time setting information */
#define GPS_TIME_RX 0 /* Time not set */
#define GPS_TIME_ROLOVR 1 /* First GPS reception(for rollover) */
#define GPS_TIME_SET 2 /* Time setting in progress */
/*!
@brief Satellite position information
*/
typedef struct GpsSatelliteInfoStr {
uint8_t sv; /* Satellite number */
uint8_t elv; /* Height 0-99 */
uint16_t az; /* Orientation 0-359 */
uint8_t cno; /* Signal strength */
uint8_t sts; /* Reception status */
} GpsSatelliteInfo;
/*---------------------------------------------------------------------------*/
// Global values
extern BOOL g_gps_rcv_thread_stop;
extern uint8_t g_is_gpstime_sts;
/*---------------------------------------------------------------------------*/
// Prototype
void ChangeStatusGpsCommon(u_int32 sts);
void RtyResetGpsCommon(void);
void SendRtyResetGpsCommon(void);
void SendReqGpsCommon(void);
void GPSResetReqGpsCommon(void);
void CyclDataTimeOutGpsCommon(void);
RET_API CheckFrontStringPartGpsCommon(const u_char *p_tartget, const u_char *p_start);
int32 JudgeFormatGpsCommon(u_char *p_send_data, u_int32 ul_length, TG_GPS_OUTPUT_FORMAT *p_format);
RET_API CheckSumGpsCommon(const u_int8 p_uc_data[], u_int32 ul_length, TG_GPS_OUTPUT_FORMAT e_cmd_info);
u_int8 AtoHGpsCommon(u_int8 ascii);
RET_API DevGpsSaveCmd(TG_GPS_SAVECMD *p_send_data);
void SendSaveCmdGpsCommon(void);
void DeleteSaveCmdGpsCommon(void);
void DeleteAllSaveCmdGpsCommon(void);
void RcvCyclCmdNmeaGpsCommon(u_int8 *p_uc_data, u_int32 ul_len, TG_GPS_OUTPUT_FORMAT s_output_format);
int32 CheckSendCmdGpsCommon(const u_char *p_rcv_data, u_int32 ul_length, TG_GPS_OUTPUT_FORMAT *p_format);
int32_t GetStringFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, char* p_dst, size_t size);
double GetNumericFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid);
int32 GetIntegerFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src);
int32 GetLonLatFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid);
u_int16 GetHeadingFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid);
int32 GetAltitudeFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid);
u_int16 GetSpeedFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid);
void StopThreadGpsCommon(void);
uint8_t JudgeFormatOrderGpsCommon(TG_GPS_OUTPUT_FORMAT s_format_1, TG_GPS_OUTPUT_FORMAT s_format_2);
ENUM_GPS_NMEA_INDEX GetNmeaIdxGpsCommon(TG_GPS_OUTPUT_FORMAT s_output_format);
void SendResetReqGpsCommon(void);
void WriteGpsTimeToBackup(uint8_t flag, POS_DATETIME* pst_datetime);
void DevGpsCommSettingTime(void);
RET_API GpsSetPosBaseEvent(uint16_t snd_pno, int32_t event_val);
uint8_t HardResetChkGpsCommon(void);
void RcvCyclCmdExtGpsCommon(u_int8 *p_data, u_int32 len, TG_GPS_OUTPUT_FORMAT format);
BOOL DevGpsRcvProcGpsResetResp(TG_GPS_RCV_DATA*);
void DevGpsRcvProcTimeSetResp(TG_GPS_RCV_DATA*);
void DevGpsRcvProcWknRolloverGetResp(TG_GPS_RCV_DATA* p_data);
void DevGpsRcvProcNavSvinfoAddResp(TG_GPS_RCV_DATA* p_data);
void DevGpsReadGpsTime(POS_DATETIME* p_st_datetime);
RET_API DevGpsRcvProcCmnResp(TG_GPS_RCV_DATA* p_data, uint8_t cmd);
RET_API DevGpsResetReq(PNO us_pno, RID uc_rid);
void DevGpsSettingTime(POS_DATETIME* p_st_datetime);
int DevGpsYMD2JD(int y, int m, int d);
BOOL DevGpsYMD2GPSTIME(const int32 y, const int32 m, const int32 d,
const int32 hh, const int32 mm, const int32 ss,
u_int16* gpsw, u_int32* gpsws);
void DevGpsSetChkSum(u_int8* uc_buffer, u_int32 ul_length);
RET_API DevGpsCatPollReq(uint8_t *p_ublox_data, uint16_t kind);
void DevGpsSetGpsweekcorcnt(void);
RET_API DevGpsNavTimeUTCAddReq(void);
RET_API DevGpsWknRolloverGetReq(void);
BOOL DevGpsCheckGpsTime(uint16_t set_gpsw, uint32_t set_gpsws,
uint16_t rcv_gpsw, uint32_t rcv_gpsws, int32_t offset_range);
void DevGpsCnvLonLatNavi(SENSORLOCATION_LONLATINFO_DAT* p_lonlat,
u_int8 fix_sts, int32 lon, int32 lat);
void DevGpsCnvAltitudeNavi(SENSORLOCATION_ALTITUDEINFO_DAT* p_altitude,
u_int8 fix_sts, int32 alt);
void DevGpsCnvHeadingNavi(SENSORMOTION_HEADINGINFO_DAT* p_heading,
u_int8 fix_sts, u_int16 heading);
/*---------------------------------------------------------------------------*/
#endif // INC_GPSCOMMON_MDEV_GPS_COMMON_H_
/*---------------------------------------------------------------------------*/
/*EOF*/
|