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
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
|
/*
* @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_Main.h
*/
#ifndef INC_GPSCOMMON_MDEV_GPS_MAIN_H_
#define INC_GPSCOMMON_MDEV_GPS_MAIN_H_
/*---------------------------------------------------------------------------*/
// Include files
#include "gps_hal.h"
#include "positioning_def.h"
// #include "gps_hal.h"
// #include "MDev_Gps_Nmea.h"
// #include "LineSensDrv_Api.h"
/*---------------------------------------------------------------------------*/
// Value define
#define OFF 0 /* OFF */
#define ON 1 /* ON */
#define OK 0 /* Normal */
#define NG (-1L) /* Abnormality */
#define DAT_END 0xff /* Exit code */
// State
typedef enum GpsMatrixSts {
GPS_STS_STARTUP = 0, /* Startup confirmation */
GPS_STS_NORMAL, /* In operation */
GPS_STS_SENT, /* Command sent status */
GPS_STS_NUM
}TG_GPS_MATRIX_STS;
// Event
typedef enum GpsMatrixEvt {
GPS_EVT_SENDREQ = 0, /* Transmission request */
GPS_EVT_RESETREQ, /* GPS reset request */
GPS_EVT_RECVCYCLDAT, /* Cyclic reception command reception */
GPS_EVT_RECVRSPDAT, /* Receive response command */
GPS_EVT_TIMEOUT_RSPDAT, /* Response monitoring timeout */
GPS_EVT_TIMEOUT_CYCLDAT, /* Periodic reception data monitoring timeout */
GPS_EVT_TIMEOUT_NAVI, /* Navigation providing data monitoring timeout */
GPS_EVT_TIMEOUT_DIAGCLKGUARD, /* Diagnosis provision time guard monitoring timeout*/
GPS_EVT_ACC_OFF, /* In-function ACC-OFF instructions */
GPS_EVT_NAVI_LOCATIONINFO, /* Providing navigation information */
GPS_EVT_NAVI_SPEEDINFO, /* Navigation speed information service */
GPS_EVT_TIMESETTING, /* GPS time setting instruction */
GPS_EVT_TIMEOUT_NMEADATAGUARD, /* NMEA data-providing guard monitoring timeout*/
GPS_EVT_BACKUPDATA_LOAD, /* Backup data read request */
GPS_EVT_STOPREQ, /* Thread stop request */
GPS_EVT_WEEKCOR_CNT_NOTIFICATIO, /* GPS Week Adjustment Counter Notification */
GPS_EVT_TIMEOUT_RECOVERY, /* GPS error monitoring reset timer */
GPS_EVT_TIMEOUT_RECEIVERERR, /* GPS receiver anomaly detection timeout */
GPS_EVT_NUM
} TG_GPS_MATRIX_EVT;
typedef enum GpsOutputFormat {
GPS_FORMAT_MIN = -1, /* Minimum Receive Format(Initialization) */
GPS_FORMAT_BINARY, /* Standard binary */
GPS_FORMAT_FULLBIN, /* Full binary */
GPS_FORMAT_GGA, /* GGA */
GPS_FORMAT_DGGA, /* DGGA */
GPS_FORMAT_VTG, /* VTG */
GPS_FORMAT_RMC, /* RMC */
GPS_FORMAT_DRMC, /* DRMC */
GPS_FORMAT_GLL, /* GLL */
GPS_FORMAT_DGLL, /* DGLL */
GPS_FORMAT_GSA, /* GSA */
GPS_FORMAT_GSV1, /* GSV(1) */
GPS_FORMAT_GSV2, /* GSV(2) */
GPS_FORMAT_GSV3, /* GSV(3) */
GPS_FORMAT_GSV4, /* GSV(4) */
GPS_FORMAT_GSV5, /* GSV(5) */
GPS_FORMAT_GST, /* GST */
GPS_FORMAT__CWORD44__GP3, /* _CWORD44_,GP,3 */
GPS_FORMAT__CWORD44__GP4, /* _CWORD44_,GP,4 */
GPS_FORMAT_P_CWORD82_F_GP0, /* P_CWORD82_F,GP,0 */
GPS_FORMAT_P_CWORD82_J_GP1, /* P_CWORD82_J,GP,1 */
GPS_FORMAT_P_CWORD82_I_GP, /* P_CWORD82_I,GP */
GPS_FORMAT_P_CWORD82_E_GP0, /* P_CWORD82_E,GP,0 */
GPS_FORMAT_P_CWORD82_J_GP0, /* P_CWORD82_J,GP,0 */
GPS_FORMAT_P_CWORD82_E_GP2, /* P_CWORD82_E,GP,2 */
GPS_FORMAT_P_CWORD82_G_GP0, /* P_CWORD82_G,GP,0 */
GPS_FORMAT_P_CWORD82_J_GP7, /* P_CWORD82_J,GP,7 */
GPS_FORMAT_P_CWORD82_J_GP8, /* P_CWORD82_J,GP,8 */
GPS_FORMAT_MON_VER, /* MON-VER */
GPS_FORMAT_AID_INI, /* AID-INI */
GPS_FORMAT_ACK_ACKNACK, /* ACK-ACKNACK */
GPS_FORMAT_NAV_TIMEUTC, /* NAV-TIMEUTC */
GPS_FORMAT_NAV_CLOCK, /* NAV-CLOCK */
GPS_FORMAT_RXM_RTC5, /* RXM-RTC5 */
GPS_FORMAT_NAV_SVINFO, /* NAV-SVINFO */
GPS_FORMAT_CFG_NAVX5, /* CFG-NAVX5 */
GPS_FORMAT_NMEA, /* NMEA (Sentence unspecified) */
GPS_FORMAT_UBX, /* UBX Protocol (binary) */
GPS_FORMAT_MAX /* Maximum Receive Format */
} TG_GPS_OUTPUT_FORMAT;
// Return value
#define RETRY_OFF 0 /* No retry */
#define RETRY_ON 1 /* Retry exists */
#define RETRY_OUT 2 /* Retry out */
#define NG_RETRYOUT 4 /* Transmission failure retry out */
#define GPSRET_NOPCMD (0) /* Non notification target command #GPF_60_024 */
#define GPSRET_SNDCMD (1) /* Notification target command #GPF_60_024 */
#define GPSRET_CMDERR (-1) /* No applicable command #GPF_60_024 */
// Number of Retries
#define SRSET_MAX 4 /* Maximum serial reset retry value */
#define HRSET_MAX 3 /* Maximum value of hard reset retry */
#define SNDNG_MAX 4 /* Maximum retry value of transmission failure */
/* The actual number of retries is SNDNG_MAX-1. */
#define GPS_RECV_ERR_MAX 5 /* Maximum number of reception errors #GPF_60_024 */
// Others
#define SAV_MAX 11
#define GPS_ALTITUDE_INVALID_VAL (-1000000) /* Value when fix altitude is invalid */
#define GPS_HEADING_INVALID_VAL 36100 /* Value when measurement orientation is invalid */
#define GPS_RECVOK 0 /* Normal reception #13 */
#define GPS_RECVNG 1 /* Reception error #13 */
#define GPS_OVERRUN 2 /* Overrun detection #13 */
#define GPS_PARITY 3 /* Parity detection #13 */
#define GPS_FRAMING 4 /* Framing detection #13 */
// For the communication management thread
#define GPS_NON_RECV 0 /* Not received */
#define GPS_RECV_ACK 1 /* ACK received */
#define GPS_RECV_DATA 2 /* Receive response command */
#define GPS_SEND_ERR_MAX 5 /* Maximum number of transmission errors */
#define GPS_CNCT_ERR_MAX 5 /* Maximum number of connection errors */
#define GPS_START_EVT "GPS_EVT" /* Interthread synchronization events */
#define GPS_EVT_VAL 99 /* Event settings */
#define GPS_MSGDAT_BUF_SZ 500 /* Receive message buffer size */
// Definition for receive command analysis table #GPF_60_024
#define SENTENCE_STR_MAX 12 /* Maximum string for judging sentence */
#define SENSOR_MSG_VSINFO_DSIZE 1904 //!< \~english message body max size
/*---------------------------------------------------------------------------*/
// Structure
/********************************************************************************
* TAG :TG_GPS_MNG
* ABSTRACT :GPS process management information
* NOTE :
********************************************************************************/
typedef struct GpsMng {
u_int32 sts; /* Matrix state */
u_int32 event; /* Matrix event code */
u_int32 rcvsts; /* Response reception status */
u_int32 sndcnt; /* Number of transmission attempts */
u_int32 hrsetcnt; /* Number of tries before hard reset */
u_int32 sndngcnt; /* Number of failed-to-send attempts */
TG_GPS_OUTPUT_FORMAT rcv_cmd; /* Types of received GPS commands */
TG_GPS_OUTPUT_FORMAT resp_cmd; /* Types of GPS commands during response monitoring */
PNO resp_pno; /* Destination PNO */
RID resp_rid; /* RID to be notified when responding */
u_int8 resp_rst_flag; /* Response command reset flag */
BOOL rcv_err_flag; /* GPS receiver error detection flag */
} TG_GPS_MNG;
/********************************************************************************
* TAG :TG_GPS_SAVECMD
* ABSTRACT :GPS process pending command
* NOTE :
********************************************************************************/
typedef struct GpsSaveCmd {
TG_GPS_SND_DATA sndcmd; /* Sending commands(_CWORD82_ command) */
PNO us_pno; /* Result notification destination process number(Unused) */
RID uc_rid; /* Result Notification Resource ID(Unused) */
u_int8 uc_rst; /* Reset flag */
TG_GPS_OUTPUT_FORMAT e_cmd_info; /* Command information */
} TG_GPS_SAVECMD;
/********************************************************************************
* TAG :TG_GPS_SAVEBUF
* ABSTRACT :GPS process pending buffer management information
* NOTE :
********************************************************************************/
typedef struct GpsSaveBuf {
u_int32 saveno; /* Current pending index number */
u_int32 sendno; /* Current send index number */
u_int32 bufsav; /* Number of pending buffers used */
TG_GPS_SAVECMD savebuf[SAV_MAX]; /* Pending buffer */
} TG_GPS_SAVEBUF;
/********************************************************************************
* TAG :TG_GPS_MSGRCV
* ABSTRACT :Receive message
* NOTE :
********************************************************************************/
typedef struct GpsMsgRcv {
T_APIMSG_MSGBUF_HEADER header; /* Message header */
u_int8 msgdat[SENSOR_MSG_VSINFO_DSIZE + 12];
} TG_GPS_MSGRCV;
/********************************************************************************
* TAG :TG_GPS_MSGEVTCHNG
* ABSTRACT :GPS message event translation table
* NOTE :
********************************************************************************/
typedef struct GpsMsgEvtChng {
u_int32 cid; /* Matrix state */
u_int32 event; /* Matrix event code */
} TG_GPS_MSGEVTCHNG;
/********************************************************************************
* TAG :TG_GPS_TIMEVTCHNG
* ABSTRACT :GPS timer ID and event translation table
* NOTE :
********************************************************************************/
typedef struct GpsTimEvtChng {
u_int16 tim_id; /* Timer ID information */
u_int16 reserve; /* Reserved */
u_int32 event; /* Matrix event code */
} TG_GPS_TIMEVTCHNG;
/********************************************************************************
* TAG :Gps_Jmp_Tbl
* ABSTRACT :GPS jump table
* NOTE :
********************************************************************************/
typedef struct GpsJmpTbl {
void (*func)( void ); /* Jump-to module */
} TG_GPS_JMP_TBL;
/********************************************************************************
* TAG :TG_GPS_CMD_ANA_TBL
* ABSTRACT :Receive command analysis table structure
* NOTE :
********************************************************************************/
typedef struct TgGpsCmdAnaTbl {
u_char c_sentence[SENTENCE_STR_MAX]; /* Sentence identifier */
u_int32 ul_length; /* Length of the command */
u_int32 ul_rcv_kind; /* Receiving type */
BOOL b_snd_cmd_flg; /* Command notification flag */
TG_GPS_OUTPUT_FORMAT e_rcv_format; /* Receive Format */
} TG_GPS_CMD_ANA_TBL;
/********************************************************************************
* TAG :TG_GPS_TIME_BCD
* ABSTRACT :Time information (BCD) structure
* NOTE :
********************************************************************************/
typedef struct GpsTimeBCD {
u_int8 uc_year; /* Year information */
u_int8 uc_month; /* Month information */
u_int8 uc_day; /* Day information */
u_int8 uc_hour; /* Time information */
u_int8 uc_min; /* Minute information */
u_int8 uc_sec; /* Second information */
} TG_GPS_TIME_BCD;
/*---------------------------------------------------------------------------*/
// Global values
#define MDEV_GPSMSGCHKC_MAX 10
#define MDEV_PSTIMCHKC_MAX 11
extern const TG_GPS_MSGEVTCHNG kGpsMsgchkC[MDEV_GPSMSGCHKC_MAX]; /* Ignore -> MISRA-C:2004 Rule 8.12 */
extern const TG_GPS_TIMEVTCHNG kGpsTimchkC[MDEV_PSTIMCHKC_MAX]; /* Ignore -> MISRA-C:2004 Rule 8.12 */
extern const TG_GPS_JMP_TBL kGpsMatxC[GPS_STS_NUM][GPS_EVT_NUM];
#define MDEV_GPSCMDANATBLNMEA_MAX 20
extern const TG_GPS_CMD_ANA_TBL* kGpsCmdAnaTbl;
extern const TG_GPS_CMD_ANA_TBL kGpsCmdAnaTblUblox[MDEV_GPSCMDANATBLNMEA_MAX];
extern TG_GPS_SAVEBUF g_gps_save_cmdr;
extern TG_GPS_MSGRCV g_gps_msg_rcvr;
extern TG_GPS_MNG g_gps_mngr;
extern u_int16 g_wsend_err; /* Number of transmission errors */
extern u_int16 g_wcnct_err; /* Number of connection errors */
extern TG_GPS_OUTPUT_FORMAT g_rcv_format; /* Receive Format */
/*---------------------------------------------------------------------------*/
// Prototype
EFrameworkunifiedStatus DevGpsMainThread(HANDLE h_app);
BOOL DevGpsInit(void);
void DevGpsRcvMsg(void);
void DevGpsMsgEventCheck(void);
void DevGpsTimEventCheck(void);
void DevGpsGpsVersionCheck(void);
/*---------------------------------------------------------------------------*/
#endif // INC_GPSCOMMON_MDEV_GPS_MAIN_H_
/*---------------------------------------------------------------------------*/
/*EOF*/
|