2 * @copyright Copyright (c) 2018-2020 TOYOTA MOTOR CORPORATION.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef HAL_API_POSITIONING_HAL_H_
18 #define HAL_API_POSITIONING_HAL_H_
21 * @file positioning_hal.h
24 /** @addtogroup positioning
27 /** @addtogroup positioning_hal
28 * @ingroup positioning
32 /*---------------------------------------------------------------------------*/
35 #include <native_service/frameworkunified_types.h>
36 #include <vehicle_service/pos_message_header.h>
37 #include <vehicle_service/std_types.h>
39 /*---------------------------------------------------------------------------*/
42 #define POSHAL_THREAD_NAME_SENS "POS_Sens"
43 //!< \~english Thread name for receive sensor
44 #define POSHAL_THREAD_NAME_GPS_MAIN "POS_Gps"
45 //!< \~english Thread name for GPS NMEA analysis and delivery message
46 #define POSHAL_THREAD_NAME_GPS_RECV "POS_Gps_Recv"
47 //!< \~english Thread name for receive GPS
48 #define POSHAL_THREAD_NAME_GPS_ROLOVR "POS_Gps_Rolovr"
49 //!< \~english Thread name for monitoring GPS rollover
51 #define POSHAL_DID_SNS_COUNTER 0x8000001A
52 //!< \~english Data ID of sensor counter
53 #define POSHAL_DID_SPEED_PULSE 0x80000012
54 //!< \~english Data ID of speed pulse
55 #define POSHAL_DID_SPEED_PULSE_FLAG 0x80000076
56 //!< \~english Data ID of speed pulse flag
57 #define POSHAL_DID_SPEED_PULSE_FST 0x80000028
58 //!< \~english Data ID of first time speed pulse
59 #define POSHAL_DID_SPEED_PULSE_FLAG_FST 0x8000007D
60 //!< \~english Data ID of first time speed pulse flag
61 #define POSHAL_DID_SPEED_KMPH 0x80000013
62 //!< \~english Data ID of KMPH speed
63 #define POSHAL_DID_PULSE_TIME 0x8000003A
64 //!< \~english Data ID of pulse time
65 #define POSHAL_DID_GYRO_X 0x80000014
66 //!< \~english Data ID of X axis of gyro
67 #define POSHAL_DID_GYRO_Y 0x80000085
68 //!< \~english Data ID of Y axis of gyro
69 #define POSHAL_DID_GYRO_Z 0x80000086
70 //!< \~english Data ID of Z axis ofgyro
71 #define POSHAL_DID_GYRO POSHAL_DID_GYRO_X
72 //!< \~english Data ID of gyro
73 #define POSHAL_DID_GYRO_X_FST 0x80000029
74 //!< \~english Data ID of first time X axis gyro
75 #define POSHAL_DID_GYRO_Y_FST 0x80000043
76 //!< \~english Data ID of first time Y axis gyro
77 #define POSHAL_DID_GYRO_Z_FST 0x80000023
78 //!< \~english Data ID of first time Z axis gyro
79 #define POSHAL_DID_GYRO_FST POSHAL_DID_GYRO_X_FST
80 //!< \~english Data ID of first time gyro
81 #define POSHAL_DID_GYRO_EXT 0x80000027
82 //!< \~english Data ID of extend gyro
83 #define POSHAL_DID_GYRO_TEMP 0x80000090
84 //!< \~english Data ID of gyro temperature
85 #define POSHAL_DID_GYRO_TEMP_FST 0x80000091
86 //!< \~english Data ID of first time gyro temperature
87 #define POSHAL_DID_REV 0x80000017
88 //!< \~english Data ID of reverse signal
89 #define POSHAL_DID_REV_FST 0x8000007E
90 //!< \~english Data ID of first time reverse signal
91 #define POSHAL_DID_GSNS_X 0x80000015
92 //!< \~english Data ID of x axis gsensor
93 #define POSHAL_DID_GSNS_Y 0x80000016
94 //!< \~english Data ID of Y axis gsensor
95 #define POSHAL_DID_GSNS_Z 0x80000026
96 //!< \~english Data ID of Z axis gsensor
97 #define POSHAL_DID_GSNS_X_FST 0x80000087
98 //!< \~english Data ID of first time x axis gsensor
99 #define POSHAL_DID_GSNS_Y_FST 0x80000088
100 //!< \~english Data ID of first time Y axis gsensor
101 #define POSHAL_DID_GSNS_Z_FST 0x80000089
102 //!< \~english Data ID of first time Z axis gsensor
103 #define POSHAL_DID_GPS_NMEA 0x8000009AU
104 //!< \~english Data ID of GPS NMEA sentence
105 #define POSHAL_DID_GPS_ANTENNA 0x80000019
106 //!< \~english Data ID of GPS antenna status
107 #define POSHAL_DID_GPS_CUSTOMDATA 0x80000094U
108 //!< \~english Data ID of GPS custom data
109 #define POSHAL_DID_GPS_CUSTOMDATA_NAVI 0x800000A0
110 //!< \~english Data ID of GPS custom data for navi
111 #define POSHAL_DID_GPS_TIME 0x80000098
112 //!< \~english Data ID of GPS time
113 #define POSHAL_DID_GPS_TIME_RAW 0x800000B1U
114 //!< \~english Data ID of GPS raw time
115 #define POSHAL_DID_GPS_VERSION 0x8000001E
116 //!< \~english Data ID of GPS version
117 #define POSHAL_DID_GPS__CWORD82___CWORD44_GP4 0x80000031U
118 //!< \~english Data ID of _CWORD82_ GPS _CWORD44_GP4 data
119 #define POSHAL_DID_GPS__CWORD82__FULLBINARY 0x80000032U
120 //!< \~english Data ID of _CWORD82_ GPS full binary data
121 #define POSHAL_DID_GPS_WKNROLLOVER 0x800000B2U
122 //!< \~english Data ID of GPS week counter
123 #define POSHAL_DID_GPS_CLOCK_DRIFT 0x800000B3U
124 //!< \~english Data ID of GPS time drift data
125 #define POSHAL_DID_GPS_CLOCK_FREQ 0x800000B4U
126 //!< \~english Data ID of GPS time frequency data
127 #define POSHAL_DID_GPS_INTERRUPT_FLAG 0x80000077
128 //!< \~english Data ID of GPS interrupt flag
130 #define CONFIG_SENSOR_EXT_VALID 1 //!< \~english for first sensor
132 #define CID_LINESENS_VEHICLE_DATA 0x0300 //!< \~english vehicle notify ID
135 * \~english @brief LineSensor Vehicle Signal Notification
136 * \~english @brief This command is sent when LineSensor vehicle signals are notified when sensor data is received.\n
137 * \~english @brief Message related structure @ref LsdrvMsgLsdataG\n
138 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
139 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
140 * \~english @brief Message body structure @ref LsdrvMsgLsdataDatG\n
141 * \~english @brief Message body (vehicle signal notification message information) structure @ref LsdrvLsdataG\n
143 #define CID_LINESENS_VEHICLE_DATA_G 0x0303
146 * \~english @brief Gyro Failure Status Notification
147 * \~english @brief This command is sent when giro failure status is notified.\n
148 * \~english @brief Message related structure @ref LsdrvMsgLsdataGyroTrouble\n
149 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
150 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
151 * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGyroTrouble\n
153 #define CID_LINESENS_VEHICLE_DATA_GYRO_TROUBLE 0x0304
156 * \~english @brief Get SYS GPS Interrupt Signals
157 * \~english @brief This command is sent when SYS GPS interrupt signal is acquired.\n
158 * \~english @brief Message related structure @ref LsdrvMsgLsdataGpsInterruptSignal\n
159 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
160 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
161 * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGpsInterruptSignal\n
163 #define CID_LINESENS_VEHICLE_DATA_SYS_GPS_INTERRUPT_SIGNAL 0x0305
167 * \~english @brief Gyro Connection Status Notification
168 * \~english @brief This command is sent when giro connection status is notified.\n
169 * \~english @brief Message related structure @ref LsdrvMsgLsdataGyroConnectStatus\n
170 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
171 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
172 * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGyroConnectStatus\n
174 #define CID_LINESENS_VEHICLE_DATA_GYRO_CONNECT_STATUS 0x0306
178 * \~english @brief GPS Antenna Connection Status Notification
179 * \~english @brief This command is sent when the GPS antenna connection status is notified.\n
180 * \~english @brief Message related structure @ref LsdrvMsgLsdataGpsAntennaStatus\n
181 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
182 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
183 * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGpsAntennaStatus\n
185 #define CID_LINESENS_VEHICLE_DATA_GPS_ANTENNA_STATUS 0x0307
189 * \~english @brief LineSensor Vehicle Signal Notification(Initial Sensor)
190 * \~english @brief This command is sent when LineSensor vehicle signals (initial sensor) are notified.\n
191 * \~english @brief Message related structure @ref LsdrvMsgLsdataFst\n
192 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
193 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
194 * \~english @brief Message body structure @ref LsdrvMsgLsdataDatFst\n
195 * \~english @brief Gyro X-axis @ref LsdrvLsdataFstGyroX\n
196 * \~english @brief Gyro Y-axis @ref LsdrvLsdataFstGyroY\n
197 * \~english @brief Gyro Z-axis @ref LsdrvLsdataFstGyroZ\n
198 * \~english @brief Velocity information @ref LsdrvLsdataFstSpeed\n
199 * \~english @brief Vehicle speed pulse @ref LsdrvLsdataFstSpeedPulseFlag\n
200 * \~english @brief REV flag @ref LsdrvLsdataFstRev\n
201 * \~english @brief Gyro Temperature @ref LsdrvLsdataFstGyroTemp\n
202 * \~english @brief G-sensor X-axis @ref LsdrvLsdataFstGsensorX\n
203 * \~english @brief G-sensor Y-axis @ref LsdrvLsdataFstGsensorY\n
204 * \~english @brief G-sensor Z-axis @ref LsdrvLsdataFstGsensorZ\n
206 #define CID_LINESENS_VEHICLE_DATA_FST 0x0302
209 * \~english @brief GPS data notification
210 * \~english @brief This command is used to notify the data input from the GPS receiver device.\n
211 * \~english @brief Message related structure @ref SensorMsgGpsdata\n
212 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
213 * \~english @brief Message header structure @ref T_APIMSG_HEADER\n
214 * \~english @brief Message body structure @ref SensorMsgGpsdataDat\n
216 #define CID_GPS_DATA 0x0301
219 * \~english @brief Notification of effective ephemeris number at shutdown
220 * \~english @brief This command is sent to notify the effective ephemeris number at shutdown.\n
221 * \~english @brief Message related structure @ref SensorMsgGpsdata\n
222 * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n
223 * \~english @brief Message body structure @ref SensorMsgGpsdata\n
225 #define CID_EPH_NUM_NOTIFICATION 0x0310
228 #define LSDRV_FSTSNS_SENSOR_FIRST_SAVE_NUM 50
229 //!< \~english number of save first sensor
231 #define LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM 30
232 //!< \~english number of send first sensor
234 #define LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM 10
235 //!< \~english number of gyro including detail data
237 #define LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM 10
238 //!< \~english number of Gsns includeing detail data
240 #define LSDRV_FSTSNS_DSIZE_GYRO_X (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM * 2)
241 //!< \~english data size of X axis of gyro
242 #define LSDRV_FSTSNS_DSIZE_GYRO_Y (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM * 2)
243 //!< \~english data size of Y axis of gyro
244 #define LSDRV_FSTSNS_DSIZE_GYRO_Z (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM * 2)
245 //!< \~english data size of Z axis of gyro
246 #define LSDRV_FSTSNS_DSIZE_SPEED (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * 2)
247 //!< \~english data size of speed
248 #define LSDRV_FSTSNS_DSIZE_SPEED_FLG LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM
249 //!< \~english data size of speed pulse
250 #define LSDRV_FSTSNS_DSIZE_REV LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM
251 //!< \~english data size of reverse
252 #define LSDRV_FSTSNS_DSIZE_GYRO_TEMP (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * 2)
253 //!< \~english data size of gyro temperature
254 #define LSDRV_FSTSNS_DSIZE_GSENSOR_X (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM * 2)
255 //!< \~english data size of X axis of Gsns
257 #define LSDRV_FSTSNS_DSIZE_GSENSOR_Y (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM * 2)
258 //!< \~english data size of Y axis of Gsns
259 #define LSDRV_FSTSNS_DSIZE_GSENSOR_Z (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM * 2)
260 //!< \~english data size of Z axis of Gsns
262 #define SENSOR_MSG_VSINFO_DSIZE 1904 //!< \~english message body max size
265 // Thread control Command ID
266 #define CID_THREAD_CREATE_COMP (0x0001) //!< \~english Thread Start Complete Notify Command ID
267 #define CID_THREAD_STOP_REQ (0x0002) //!< \~english Thread Stop Request Command ID
268 #define CID_THREAD_STOP_COMP (0x0003) //!< \~english Thread Stop Complete Notify Command ID
270 // A vehicle signal of data size
271 #define LSDRV_SNDMSG_DTSIZE_1 1 //!< \~english SndMSG data size 1Byte
272 #define LSDRV_SNDMSG_DTSIZE_2 2 //!< \~english SndMSG data size 2Byte
273 #define LSDRV_SNDMSG_DTSIZE_20 20 //!< \~english SndMSG data size 20Byte
274 #define LSDRV_SNDMSG_DTSIZE_132 132 //!< \~english SndMSG data size 132Byte
277 #define POS_SNS_GPS_NMEA_GGA (0x00000001U) //!< \~english GGA sentence
278 #define POS_SNS_GPS_NMEA_GLL (0x00000002U) //!< \~english GLL sentence
279 #define POS_SNS_GPS_NMEA_GSA1 (0x00000004U) //!< \~english GSA1 sentence
280 #define POS_SNS_GPS_NMEA_GSA2 (0x00000008U) //!< \~english GSA2 sentence
281 #define POS_SNS_GPS_NMEA_GSA3 (0x00000010U) //!< \~english GSA3 sentence
282 #define POS_SNS_GPS_NMEA_GSA4 (0x00000020U) //!< \~english GSA4 sentence
283 #define POS_SNS_GPS_NMEA_GST (0x00000040U) //!< \~english GST sentence
284 #define POS_SNS_GPS_NMEA_RMC (0x00000080U) //!< \~english RMC sentence
285 #define POS_SNS_GPS_NMEA_VTG (0x00000100U) //!< \~english VTG sentence
286 #define POS_SNS_GPS_NMEA_GSV1 (0x00000200U) //!< \~english GSV1 sentence
287 #define POS_SNS_GPS_NMEA_GSV2 (0x00000400U) //!< \~english GSV2 sentence
288 #define POS_SNS_GPS_NMEA_GSV3 (0x00000800U) //!< \~english GSV3 sentence
289 #define POS_SNS_GPS_NMEA_GSV4 (0x00001000U) //!< \~english GSV4 sentence
290 #define POS_SNS_GPS_NMEA_GSV5 (0x00002000U) //!< \~english GSV5 sentence
291 #define POS_SNS_GPS_NMEA_GSV6 (0x00004000U) //!< \~english GSV6 sentence
292 #define POS_SNS_GPS_NMEA_GSV7 (0x00008000U) //!< \~english GSV7 sentence
293 #define POS_SNS_GPS_NMEA_GSV8 (0x00010000U) //!< \~english GSV8 sentence
294 #define POS_SNS_GPS_NMEA_GSV9 (0x00020000U) //!< \~english GSV9 sentence
295 #define POS_SNS_GPS_NMEA_GSV10 (0x00040000U) //!< \~english GSV10 sentence
296 #define POS_SNS_GPS_NMEA_GSV11 (0x00080000U) //!< \~english GSV11 sentence
297 #define POS_SNS_GPS_NMEA_GSV12 (0x00100000U) //!< \~english GSV12 sentence
298 #define POS_SNS_GPS_NMEA_GSV13 (0x00200000U) //!< \~english GSV13 sentence
299 #define POS_SNS_GPS_NMEA_RESERVE1 (0x00400000U) //!< \~english Reserved
300 #define POS_SNS_GPS_NMEA_RESERVE2 (0x00800000U) //!< \~english Reserved
304 * @enum POS_SNS_GPS_NMEA_SNO
305 * \~english type of NMEA
308 POS_SNS_GPS_NMEA_SNO_GGA = 0, //!< \~english GGA sentence
309 POS_SNS_GPS_NMEA_SNO_GLL, //!< \~english GLL sentence
310 POS_SNS_GPS_NMEA_SNO_GSA1, //!< \~english GSA1 sentence
311 POS_SNS_GPS_NMEA_SNO_GSA2, //!< \~english GSA2 sentence
312 POS_SNS_GPS_NMEA_SNO_GSA3, //!< \~english GSA3 sentence
313 POS_SNS_GPS_NMEA_SNO_GSA4, //!< \~english GSA4 sentence
314 POS_SNS_GPS_NMEA_SNO_GST, //!< \~english GST sentence
315 POS_SNS_GPS_NMEA_SNO_RMC, //!< \~english RMC sentence
316 POS_SNS_GPS_NMEA_SNO_VTG, //!< \~english VTG sentence
317 POS_SNS_GPS_NMEA_SNO_GSV1, //!< \~english GSV1 sentence
318 POS_SNS_GPS_NMEA_SNO_GSV2, //!< \~english GSV2 sentence
319 POS_SNS_GPS_NMEA_SNO_GSV3, //!< \~english GSV3 sentence
320 POS_SNS_GPS_NMEA_SNO_GSV4, //!< \~english GSV4 sentence
321 POS_SNS_GPS_NMEA_SNO_GSV5, //!< \~english GSV5 sentence
322 POS_SNS_GPS_NMEA_SNO_GSV6, //!< \~english GSV6 sentence
323 POS_SNS_GPS_NMEA_SNO_GSV7, //!< \~english GSV7 sentence
324 POS_SNS_GPS_NMEA_SNO_GSV8, //!< \~english GSV8 sentence
325 POS_SNS_GPS_NMEA_SNO_GSV9, //!< \~english GSV9 sentence
326 POS_SNS_GPS_NMEA_SNO_GSV10, //!< \~english GSV10 sentence
327 POS_SNS_GPS_NMEA_SNO_GSV11, //!< \~english GSV11 sentence
328 POS_SNS_GPS_NMEA_SNO_GSV12, //!< \~english GSV12 sentence
329 POS_SNS_GPS_NMEA_SNO_GSV13, //!< \~english GSV13 sentence
330 POS_SNS_GPS_NMEA_SNO_RESERVE1, //!< \~english Reserved
331 POS_SNS_GPS_NMEA_SNO_RESERVE2, //!< \~english Reserved
333 POS_SNS_GPS_NMEA_SNO_MAX //!< \~english MAX sentence(invalid)
334 } POS_SNS_GPS_NMEA_SNO;
338 * \~english type of Sensor
341 LSDRV_GYRO_X, //!< \~english Gyro X-Axis
342 LSDRV_GYRO_Y, //!< \~english Gyro Y-Axis
343 LSDRV_GYRO_Z, //!< \~english Gyro Z-Axis
344 LSDRV_SPEED_PULSE, //!< \~english Speed pulse
345 LSDRV_SPEED_PULSE_FLAG, //!< \~english Speed pulse Flag
346 LSDRV_SPEED_KMPH, //!< \~english Speed km/h
347 LSDRV_GYRO_EXT, //!< \~english extend Gyro
348 LSDRV_REV, //!< \~english Reverse
349 LSDRV_GYRO_TEMP, //!< \~english Gyro temperature
350 LSDRV_GSENSOR_X, //!< \~english G-sensor X-Axis
351 LSDRV_GSENSOR_Y, //!< \~english G-sensor Y-Axis
352 LSDRV_GSENSOR_Z, //!< \~english G-sensor Z-Axis
353 LSDRV_PULSE_TIME, //!< \~english Pulse time
354 LSDRV_SNS_COUNTER, //!< \~english Sensor counter
355 LSDRV_GPS_INTERRUPT_FLAG, //!< \~english GPS Interrupt Flag
356 LSDRV_KINDS_MAX //!< \~english MAX
362 * \~english Thread id notified to positioning when starting or terminating each thread is completed.
364 typedef enum EnumTidPos {
366 //!< \~english Thread for vehicle sensor(unused in hal)
368 //!< \~english Thread for receive sensor
370 //!< \~english Thread for GPS NMEA analysis and delivery message
372 //!< \~english Thread for receive GPS
373 ETID_POS_GPS_ROLLOVER,
374 //!< \~english Thread for monitoring GPS rollover
376 //!< \~english Max thread id
380 * @struct LsdrvLsdata
381 * \~english Struct of LineSensor message
383 typedef struct LsdrvLsdata {
384 u_int32 ul_did; //!< \~english data ID
385 u_int8 uc_size; //!< \~english data size
386 u_int8 uc_rcvflag; //!< \~english receive flag
387 u_int8 uc_sns_cnt; //!< \~english sensor count
388 u_int8 u_reserve; //!< \~english reserve
389 u_int8 uc_data[132]; //!< \~english data contents
393 * @struct LsdrvLsdataG
394 * \~english Struct of LineSensorG message
396 typedef struct LsdrvLsdataG {
397 u_int32 ul_did; //!< \~english data ID
398 u_int8 uc_size; //!< \~english data size
399 u_int8 uc_rcv_flag; //!< \~english receive flag
400 u_int8 uc_sns_cnt; //!< \~english sensor count
401 u_int8 reserve; //!< \~english reserve
402 u_int8 uc_data[132]; //!< \~english data content
406 * @struct LsdrvLsdataFstGyroX
407 * \~english Struct of X axis of of gyro data(first sensor message)
409 typedef struct LsdrvLsdataFstGyroX {
410 u_int32 ul_did; //!< \~english data ID
411 u_int16 uc_size; //!< \~english data size
412 u_int8 uc_partition_max; //!< \~english total of partition
413 u_int8 uc_partition_num; //!< \~english data number
414 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_X]; //!< \~english data contents
415 } LSDRV_LSDATA_FST_GYRO_X;
418 * @struct LsdrvLsdataFstGyroY
419 * \~english Struct of Y axis of of gyro data(first sensor message)
421 typedef struct LsdrvLsdataFstGyroY {
422 u_int32 ul_did; //!< \~english data ID
423 u_int16 uc_size; //!< \~english data size
424 u_int8 uc_partition_max; //!< \~english total of partition
425 u_int8 uc_partition_num; //!< \~english data number
426 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_Y]; //!< \~english data contents
427 } LSDRV_LSDATA_FST_GYRO_Y;
430 * @struct LsdrvLsdataFstGyroZ
431 * \~english Struct of Z axis of of gyro data(first sensor message)
433 typedef struct LsdrvLsdataFstGyroZ {
434 u_int32 ul_did; //!< \~english data ID
435 u_int16 uc_size; //!< \~english data size
436 u_int8 uc_partition_max; //!< \~english total of partition
437 u_int8 uc_partition_num; //!< \~english data number
438 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_Z]; //!< \~english data contents
439 } LSDRV_LSDATA_FST_GYRO_Z;
442 * @struct LsdrvLsdataFstSpeed
443 * \~english Struct of speed data(first sensor message)
445 typedef struct LsdrvLsdataFstSpeed {
446 u_int32 ul_did; //!< \~english data ID
447 u_int16 uc_size; //!< \~english data size
448 u_int8 uc_partition_max; //!< \~english total of partition
449 u_int8 uc_partition_num; //!< \~english data number
450 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_SPEED]; //!< \~english data contents
451 } LSDRV_LSDATA_FST_SPEED;
454 * @struct LsdrvLsdataFstSpeedPulseFlag
455 * \~english Struct of speed pulse data(first sensor message)
457 typedef struct LsdrvLsdataFstSpeedPulseFlag {
458 u_int32 ul_did; //!< \~english data ID
459 u_int16 uc_size; //!< \~english data size
460 u_int8 uc_partition_max; //!< \~english total of partition
461 u_int8 uc_partition_num; //!< \~english data number
462 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_SPEED_FLG]; //!< \~english data contents
463 } LSDRV_LSDATA_FST_SPEED_PULSE_FLAG;
466 * @struct LsdrvLsdataFstRev
467 * \~english Struct of reverse data(first sensor message)
469 typedef struct LsdrvLsdataFstRev {
470 u_int32 ul_did; //!< \~english data ID
471 u_int16 uc_size; //!< \~english data size
472 u_int8 uc_partition_max; //!< \~english total of partition
473 u_int8 uc_partition_num; //!< \~english data number
474 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_REV]; //!< \~english data contents
475 } LSDRV_LSDATA_FST_REV;
478 * @struct LsdrvLsdataFstGyroTemp
479 * \~english Struct of gyro temperature data(first sensor message)
481 typedef struct LsdrvLsdataFstGyroTemp {
482 u_int32 ul_did; //!< \~english data ID
483 u_int16 uc_size; //!< \~english data size
484 u_int8 uc_partition_max; //!< \~english total of partition
485 u_int8 uc_partition_num; //!< \~english data number
486 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_TEMP]; //!< \~english data contents
487 } LSDRV_LSDATA_FST_GYRO_TEMP;
490 * @struct LsdrvLsdataFstGsensorX
491 * \~english Struct of X axis of Gsns data(first sensor message)
493 typedef struct LsdrvLsdataFstGsensorX {
494 u_int32 ul_did; //!< \~english data ID
495 u_int16 uc_size; //!< \~english data size
496 u_int8 uc_partition_max; //!< \~english total of partition
497 u_int8 uc_partition_num; //!< \~english data number
498 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GSENSOR_X]; //!< \~english data contents
499 } LSDRV_LSDATA_FST_GSENSOR_X;
502 * @struct LsdrvLsdataFstGsensorY
503 * \~english Struct of Y axis of Gsns data(first sensor message)
505 typedef struct LsdrvLsdataFstGsensorY {
506 u_int32 ul_did; //!< \~english data ID
507 u_int16 uc_size; //!< \~english data size
508 u_int8 uc_partition_max; //!< \~english total of partition
509 u_int8 uc_partition_num; //!< \~english data number
510 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GSENSOR_Y]; //!< \~english data contents
511 } LSDRV_LSDATA_FST_GSENSOR_Y;
514 * @struct LsdrvLsdataFstGsensorZ
515 * \~english Struct of Z axis of Gsns data(first sensor message)
517 typedef struct LsdrvLsdataFstGsensorZ {
518 u_int32 ul_did; //!< \~english data ID
519 u_int16 uc_size; //!< \~english data size
520 u_int8 uc_partition_max; //!< \~english total of partition
521 u_int8 uc_partition_num; //!< \~english data number
522 u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GSENSOR_Z]; //!< \~english data contents
523 } LSDRV_LSDATA_FST_GSENSOR_Z;
526 * @struct LsdrvMsgLsdataDatFst
527 * \~english Struct of LineSensor data (first sensor message)
529 typedef struct LsdrvMsgLsdataDatFst {
530 LSDRV_LSDATA_FST_GYRO_X st_gyro_x; //!< \~english data of X axis of gyro
531 LSDRV_LSDATA_FST_GYRO_Y st_gyro_y; //!< \~english data of Y axis of gyro
532 LSDRV_LSDATA_FST_GYRO_Z st_gyro_z; //!< \~english data of Z axis of gyro
533 LSDRV_LSDATA_FST_SPEED st_speed; //!< \~english data of speed
534 LSDRV_LSDATA_FST_SPEED_PULSE_FLAG st_spd_pulse_flg; //!< \~english data of speed pulse
535 LSDRV_LSDATA_FST_REV st_rev; //!< \~english data of reverse
536 LSDRV_LSDATA_FST_GYRO_TEMP st_gyro_temp; //!< \~english data of gyro temperature
537 LSDRV_LSDATA_FST_GSENSOR_X st_gsns_x; //!< \~english data of X axis of Gsns
538 LSDRV_LSDATA_FST_GSENSOR_Y st_gsns_y; //!< \~english data of Y axis of Gsns
539 LSDRV_LSDATA_FST_GSENSOR_Z st_gsns_z; //!< \~english data of Z axis of Gsns
540 } LSDRV_MSG_LSDATA_DAT_FST;
543 * @struct LsdrvMsgLsdataDat
544 * \~english Struct of LineSensor package data
546 typedef struct LsdrvMsgLsdataDat {
547 u_int8 uc_data_num; //!< \~english data number
548 u_int8 reserve[3]; //!< \~english reserve
549 LSDRV_LSDATA st_data[12]; //!< \~english data
550 } LSDRV_MSG_LSDATA_DAT;
553 * @struct LsdrvMsgLsdata
554 * \~english Struct of LineSensor message data
556 typedef struct LsdrvMsgLsdata {
557 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
558 LSDRV_MSG_LSDATA_DAT st_para; //!< \~english data of gyro
562 * @struct LsdrvMsgLsdataDatG
563 * \~english Struct of LineSensorG package data
565 typedef struct LsdrvMsgLsdataDatG {
566 u_int8 uc_data_num; //!< \~english data number
567 u_int8 reserve[3]; //!< \~english reserve
568 LSDRV_LSDATA_G st_data[15]; //!< \~english data
569 } LSDRV_MSG_LSDATA_DAT_G;
572 * @struct LsdrvMsgLsdataG
573 * \~english Struct of LineSensorG message data
575 typedef struct LsdrvMsgLsdataG {
576 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
577 LSDRV_MSG_LSDATA_DAT_G st_para; //!< \~english data of message
578 } LSDRV_MSG_LSDATA_G;
581 * @struct LsdrvMsgLsdataDatGyroTrouble
582 * \~english Struct of Gyro trouble
584 typedef struct LsdrvMsgLsdataDatGyroTrouble {
585 u_int32 ul_did; //!< \~english data ID
586 u_int8 uc_size; //!< \~english data size
587 u_int8 reserve; //!< \~english reserve
588 u_int8 uc_data; //!< \~english data content
589 u_int8 reserve2; //!< \~english reserve
590 } LSDRV_MSG_LSDATA_DAT_GYRO_TROUBLE;
593 * @struct LsdrvMsgLsdataGyroTrouble
594 * \~english Struct of message about Gyro trouble
596 typedef struct LsdrvMsgLsdataGyroTrouble {
597 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
598 LSDRV_MSG_LSDATA_DAT_GYRO_TROUBLE st_para; //!< \~english data of message
599 } LSDRV_MSG_LSDATA_GYRO_TROUBLE;
602 * @struct LsdrvMsgLsdataDatGpsInterruptSignal
603 * \~english Struct of Gps interrupt signal data
605 typedef struct LsdrvMsgLsdataDatGpsInterruptSignal {
606 u_int32 ul_did; //!< \~english data ID
607 u_int8 uc_size; //!< \~english data size
608 u_int8 reserve; //!< \~english reserve
609 u_int8 uc_data; //!< \~english data content
610 u_int8 reserve2; //!< \~english reserve
611 } LSDRV_MSG_LSDATA_DAT_GPS_INTERRUPT_SIGNAL;
614 * @struct LsdrvMsgLsdataGpsInterruptSignal
615 * \~english Struct of message about Gps interrupt signal
617 typedef struct LsdrvMsgLsdataGpsInterruptSignal {
618 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
619 LSDRV_MSG_LSDATA_DAT_GPS_INTERRUPT_SIGNAL st_para; //!< \~english data of message
620 } LSDRV_MSG_LSDATA_GPS_INTERRUPT_SIGNAL;
623 * @struct LsdrvMsgLsdataDatGyroConnectStatus
624 * \~english Struct of Gyro connect status
626 typedef struct LsdrvMsgLsdataDatGyroConnectStatus {
627 u_int32 ul_did; //!< \~english data ID
628 u_int8 uc_size; //!< \~english data size
629 u_int8 reserve; //!< \~english reserve
630 u_int8 uc_data; //!< \~english data content
631 u_int8 reserve2; //!< \~english reserve
632 } LSDRV_MSG_LSDATA_DAT_GYRO_CONNECT_STATUS;
635 * @struct LsdrvMsgLsdataGyroConnectStatus
636 * \~english Struct of message about Gyro connect status
638 typedef struct LsdrvMsgLsdataGyroConnectStatus {
639 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
640 LSDRV_MSG_LSDATA_DAT_GYRO_CONNECT_STATUS st_para; //!< \~english data of message
641 } LSDRV_MSG_LSDATA_GYRO_CONNECT_STATUS;
644 * @struct LsdrvMsgLsdataDatGpsAntennaStatus
645 * \~english Struct of Gps Antenna Status
647 typedef struct LsdrvMsgLsdataDatGpsAntennaStatus {
648 u_int32 ul_did; //!< \~english data ID
649 u_int8 uc_size; //!< \~english data size
650 u_int8 uc_rcv_flag; //!< \~english receive flag
651 u_int8 uc_sns_cnt; //!< \~english sensor count
652 u_int8 uc_data; //!< \~english data content
653 } LSDRV_MSG_LSDATA_DAT_GPS_ANTENNA_STATUS;
656 * @struct LsdrvMsgLsdataGpsAntennaStatus
657 * \~english Struct of message about Gps Antenna Status
659 typedef struct LsdrvMsgLsdataGpsAntennaStatus {
660 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
661 LSDRV_MSG_LSDATA_DAT_GPS_ANTENNA_STATUS st_para; //!< \~english data of message
662 } LSDRV_MSG_LSDATA_GPS_ANTENNA_STATUS;
665 * @struct LsdrvLsdataFst
666 * \~english Struct of sensor data (first sensor message)
668 typedef struct LsdrvLsdataFst {
669 u_int32 ul_did; //!< \~english data ID
670 u_int16 uc_size; //!< \~english data size
671 u_int8 uc_partition_max; //!< \~english total of partition
672 u_int8 uc_partition_num; //!< \~english data number
673 u_int8 uc_data[60]; //!< \~english data contents
677 * @struct LsdrvMsgLsdataFst
678 * \~english Struct of message about sensor data (first sensor message)
680 typedef struct LsdrvMsgLsdataFst {
681 T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header
682 LSDRV_MSG_LSDATA_DAT_FST st_para; //!< \~english data of message
683 } LSDRV_MSG_LSDATA_FST;
686 * @struct SensorMsgGpsdataDat
687 * \~english Struct of Gps data
688 * \~english @par Detail
689 * This data structure can have 7 types of data that identified by data ID.\n
690 * The contents are as follows.\n
691 * | data ID | content | data format |
692 * |:----------------------------------|:------------------------------------------|:------------------------------|
693 * | @ref POSHAL_DID_GPS_NMEA | NMEA data | @ref MdevGpsNmea "MDEV_GPS_NMEA" |
694 * | @ref POSHAL_DID_GPS_CUSTOMDATA | GPS custom data | @ref MdevGpsCustomDataMgs "MDEV_GPS_CUSTOMDATA" |
695 * | @ref POSHAL_DID_GPS_CLOCK_DRIFT | clock drift | @ref int32_t |
696 * | @ref POSHAL_DID_GPS_CLOCK_FREQ | clock frequency | @ref int32_t |
697 * | @ref POSHAL_DID_GPS_WKNROLLOVER | GPS week number | @ref SensorWknRollOverHal |
698 * | @ref POSHAL_DID_GPS_CONNECT_ERROR | GPS signal error(TRUE:Error, FALSE:Normal)| @ref BOOL |
699 * | @ref POSHAL_DID_GPS_TIME (_RAW) | GPS time information | @ref SENSOR_GPSTIME |
701 typedef struct SensorMsgGpsdataDat {
702 u_int32 ul_did; //!< \~english data ID
703 u_int16 us_size; //!< \~english data size
704 u_int8 uc_rcv_flag; //!< \~english receive flag
705 u_int8 uc_sns_cnt; //!< \~english sensor count
706 u_int8 uc_gps_cnt_flag; //!< \~english GPS count
707 u_int8 reserve[3]; //!< \~english reserve
708 u_int8 uc_data[SENSOR_MSG_VSINFO_DSIZE]; //!< \~english data contents
709 } SENSOR_MSG_GPSDATA_DAT;
712 * @struct SensorMsgGpsdata
713 * \~english Struct of message about GPS data
715 typedef struct SensorMsgGpsdata {
716 T_APIMSG_MSGBUF_HEADER st_head;
717 //!< \~english message header(see vs-positioning-base-library)
718 SENSOR_MSG_GPSDATA_DAT st_para;
719 //!< \~english data of message
720 } SENSOR_MSG_GPSDATA;
723 * @struct TG_GPS_RET_TIMESET_MSG
724 * \~english Struct of message about GPS time set response
727 T_APIMSG_MSGBUF_HEADER header; //!< \~english message header
728 uint64_t status; //!< \~english response status
729 } TG_GPS_RET_TIMESET_MSG;
732 * @struct TG_GPS_NMEA_SENTENCE_INFO
733 * \~english Struct of GPS NMEA sentence info
736 uint8_t uc_size; //!< \~english sentence size
737 uint8_t reserve; //!< \~english reserve
738 uint16_t us_offset; //!< \~english sentence start offset
739 } TG_GPS_NMEA_SENTENCE_INFO;
742 * @struct TG_GPS_NMEA_INFO
743 * \~english Struct of GPS NMEA info
746 uint32_t ul_rcvsts; //!< \~english NMEA receive info
747 uint8_t reserve[4]; //!< \~english reserve
748 TG_GPS_NMEA_SENTENCE_INFO st_nmea_sentence_info[POS_SNS_GPS_NMEA_SNO_MAX];
749 //!< \~english sentence infomation
752 /////////////////////////////////////////////////////////////////////////////////////
753 /// \ingroup positioning_hal
754 /// \~english @par Brief
755 /// - start thread of NMEA analysis and delivery message
756 /// \~english @param [in] h_app
759 /// \~english @retval eFrameworkunifiedStatusOK Success
760 /// \~english @retval eFrameworkunifiedStatusFail Failed
762 /// \~english @par Prerequisite
764 /// \~english @par Change of internal state
765 /// - This API can not change internal state
766 /// \~english @par Conditions of processing failure
768 /// \~english @par Detail
769 /// - start thread of NMEA analysis and delivery message
770 /// - the API can only be used by 1 process
771 /// \~english @par Classification
773 /// \~english @par Type
777 /////////////////////////////////////////////////////////////////////////////////////
778 EFrameworkunifiedStatus StartGpsMainThreadPositioning(HANDLE h_app);
780 /////////////////////////////////////////////////////////////////////////////////////
781 /// \ingroup positioning_hal
782 /// \~english @par Brief
783 /// - start thread for receive GPS manager
784 /// \~english @param [in] h_app
787 /// \~english @retval eFrameworkunifiedStatusOK Success
788 /// \~english @retval eFrameworkunifiedStatusFail Failed
790 /// \~english @par Prerequisite
792 /// \~english @par Change of internal state
793 /// - This API can not change internal state.
794 /// \~english @par Conditions of processing failure
796 /// \~english @par Detail
797 /// - start model for receive GPS manager
798 /// - the API can only be used by 1 process
799 /// \~english @par Classification
801 /// \~english @par Type
805 /////////////////////////////////////////////////////////////////////////////////////
806 EFrameworkunifiedStatus StartGpsRecvThreadPositioning(HANDLE h_app);
808 /////////////////////////////////////////////////////////////////////////////////////
809 /// \ingroup positioning_hal
810 /// \~english @par Brief
811 /// - start thread for receive sensor
812 /// \~english @param [in] h_app
815 /// \~english @retval eFrameworkunifiedStatusOK Success
816 /// \~english @retval eFrameworkunifiedStatusFail Failed
818 /// \~english @par Prerequisite
820 /// \~english @par Change of internal state
821 /// - This API can not change internal state.
822 /// \~english @par Conditions of processing failure
824 /// \~english @par Detail
825 /// - start thread for receive sensor
826 /// - the API can only be used by 1 process
827 /// \~english @par Classification
829 /// \~english @par Type
833 /////////////////////////////////////////////////////////////////////////////////////
834 EFrameworkunifiedStatus StartLineSensorThreadPositioning(HANDLE h_app);
836 /////////////////////////////////////////////////////////////////////////////////////
837 /// \ingroup positioning_hal
838 /// \~english @par Brief
839 /// - start monitoring thread of GPS rollover
840 /// \~english @param [in] h_app
843 /// \~english @retval eFrameworkunifiedStatusOK Success
844 /// \~english @retval eFrameworkunifiedStatusFail Failed
846 /// \~english @par Prerequisite
848 /// \~english @par Change of internal state
849 /// - This API can not change internal state.
850 /// \~english @par Conditions of processing failure
851 /// - The parameter hApp is NULL [eFrameworkunifiedStatusFail]
852 /// - When fail to start thread. [return value of FrameworkunifiedStartChildThread]
853 /// \~english @par Detail
854 /// - start monitoring thread of GPS rollover
855 /// - the API can only be used by 1 process
856 /// \~english @par Classification
858 /// \~english @par Type
861 /// FrameworkunifiedCreateChildThread, FrameworkunifiedStartChildThread
862 /////////////////////////////////////////////////////////////////////////////////////
863 EFrameworkunifiedStatus StartGpsRolloverThreadPositioning(HANDLE h_app);
865 /** @}*/ // end of positioning_hal
866 /** @}*/ // end of positioning
868 /*---------------------------------------------------------------------------*/
869 #endif // HAL_API_POSITIONING_HAL_H_
871 /*---------------------------------------------------------------------------*/