Init basesystem source codes.
[staging/basesystem.git] / video_in_hal / positioning_hal / hal_api / positioning_hal.h
1 /*
2  * @copyright Copyright (c) 2018-2020 TOYOTA MOTOR CORPORATION.
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #ifndef HAL_API_POSITIONING_HAL_H_
18 #define HAL_API_POSITIONING_HAL_H_
19
20 /**
21  * @file positioning_hal.h
22  */
23
24 /** @addtogroup positioning
25  *  @{
26  */
27 /** @addtogroup positioning_hal
28  *  @ingroup positioning
29  *  @{
30  */
31
32 /*---------------------------------------------------------------------------*/
33 // Include files
34
35 #include <native_service/frameworkunified_types.h>
36 #include <vehicle_service/pos_message_header.h>
37 #include <vehicle_service/std_types.h>
38
39 /*---------------------------------------------------------------------------*/
40 // Value define
41
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
50
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
129
130 #define CONFIG_SENSOR_EXT_VALID 1  //!< \~english for first sensor
131
132 #define CID_LINESENS_VEHICLE_DATA 0x0300  //!< \~english vehicle notify ID
133
134 /**
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
142  */
143 #define CID_LINESENS_VEHICLE_DATA_G   0x0303
144
145 /**
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
152  */
153 #define CID_LINESENS_VEHICLE_DATA_GYRO_TROUBLE  0x0304
154
155 /**
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
162  */
163 #define CID_LINESENS_VEHICLE_DATA_SYS_GPS_INTERRUPT_SIGNAL  0x0305
164
165
166 /**
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
173  */
174 #define CID_LINESENS_VEHICLE_DATA_GYRO_CONNECT_STATUS       0x0306
175
176
177 /**
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
184  */
185 #define CID_LINESENS_VEHICLE_DATA_GPS_ANTENNA_STATUS        0x0307
186
187
188 /**
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
205  */
206 #define CID_LINESENS_VEHICLE_DATA_FST                       0x0302
207
208 /**
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
215  */
216 #define CID_GPS_DATA                                        0x0301
217
218 /**
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
224  */
225 #define CID_EPH_NUM_NOTIFICATION                            0x0310
226
227
228 #define LSDRV_FSTSNS_SENSOR_FIRST_SAVE_NUM                  50
229 //!< \~english number of save first sensor
230
231 #define LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM                  30
232 //!< \~english number of send first sensor
233
234 #define LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM                 10
235 //!< \~english number of gyro including detail data
236
237 #define LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM              10
238 //!< \~english number of Gsns includeing detail data
239
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
256
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
261
262 #define SENSOR_MSG_VSINFO_DSIZE  1904  //!< \~english message body max size
263
264
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
269
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
275
276 // NMEA receive flag
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
301
302
303 /**
304  * @enum POS_SNS_GPS_NMEA_SNO
305  * \~english type of NMEA
306  */
307 typedef enum {
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
332
333   POS_SNS_GPS_NMEA_SNO_MAX        //!< \~english MAX sentence(invalid)
334 } POS_SNS_GPS_NMEA_SNO;
335
336 /**
337  * @enum LsDrvKind
338  * \~english type of Sensor
339  */
340 typedef enum {
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
357 } LsDrvKind;
358
359
360 /**
361  * @enum EnumTidPos
362  * \~english  Thread id notified to positioning when starting or terminating each thread is completed.
363  */
364 typedef enum EnumTidPos {
365   ETID_POS_MAIN = 0,
366   //!< \~english Thread for vehicle sensor(unused in hal)
367   ETID_POS_SENS,
368   //!< \~english Thread for receive sensor
369   ETID_POS_GPS,
370   //!< \~english Thread for GPS NMEA analysis and delivery message
371   ETID_POS_GPS_RECV,
372   //!< \~english Thread for receive GPS
373   ETID_POS_GPS_ROLLOVER,
374   //!< \~english Thread for monitoring GPS rollover
375   ETID_POS_MAX
376   //!< \~english Max thread id
377 } EnumTID_POS;
378
379 /**
380  * @struct LsdrvLsdata
381  * \~english  Struct of LineSensor message
382  */
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
390 } LSDRV_LSDATA;
391
392 /**
393  * @struct LsdrvLsdataG
394  * \~english  Struct of LineSensorG message
395  */
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
403 } LSDRV_LSDATA_G;
404
405 /**
406  * @struct LsdrvLsdataFstGyroX
407  * \~english  Struct of X axis of of gyro data(first sensor message)
408  */
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;
416
417 /**
418  * @struct LsdrvLsdataFstGyroY
419  * \~english  Struct of Y axis of of gyro data(first sensor message)
420  */
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;
428
429 /**
430  * @struct LsdrvLsdataFstGyroZ
431  * \~english  Struct of Z axis of of gyro data(first sensor message)
432  */
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;
440
441 /**
442  * @struct LsdrvLsdataFstSpeed
443  * \~english  Struct of speed data(first sensor message)
444  */
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;
452
453 /**
454  * @struct LsdrvLsdataFstSpeedPulseFlag
455  * \~english  Struct of speed pulse data(first sensor message)
456  */
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;
464
465 /**
466  * @struct LsdrvLsdataFstRev
467  * \~english  Struct of reverse data(first sensor message)
468  */
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;
476
477 /**
478  * @struct LsdrvLsdataFstGyroTemp
479  * \~english  Struct of gyro temperature data(first sensor message)
480  */
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;
488
489 /**
490  * @struct LsdrvLsdataFstGsensorX
491  * \~english  Struct of X axis of Gsns data(first sensor message)
492  */
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;
500
501 /**
502  * @struct LsdrvLsdataFstGsensorY
503  * \~english  Struct of Y axis of Gsns data(first sensor message)
504  */
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;
512
513 /**
514  * @struct LsdrvLsdataFstGsensorZ
515  * \~english  Struct of Z axis of Gsns data(first sensor message)
516  */
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;
524
525 /**
526  * @struct LsdrvMsgLsdataDatFst
527  * \~english  Struct of LineSensor data (first sensor message)
528  */
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;
541
542 /**
543  * @struct LsdrvMsgLsdataDat
544  * \~english  Struct of LineSensor package data
545  */
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;
551
552 /**
553  * @struct LsdrvMsgLsdata
554  * \~english  Struct of LineSensor message data
555  */
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
559 } LSDRV_MSG_LSDATA;
560
561 /**
562  * @struct LsdrvMsgLsdataDatG
563  * \~english  Struct of LineSensorG package data
564  */
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;
570
571 /**
572  * @struct LsdrvMsgLsdataG
573  * \~english  Struct of LineSensorG message data
574  */
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;
579
580 /**
581  * @struct LsdrvMsgLsdataDatGyroTrouble
582  * \~english  Struct of Gyro trouble
583  */
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;
591
592 /**
593  * @struct LsdrvMsgLsdataGyroTrouble
594  * \~english  Struct of message about Gyro trouble
595  */
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;
600
601 /**
602  * @struct LsdrvMsgLsdataDatGpsInterruptSignal
603  * \~english  Struct of Gps interrupt signal data
604  */
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;
612
613 /**
614  * @struct LsdrvMsgLsdataGpsInterruptSignal
615  * \~english  Struct of message about Gps interrupt signal
616  */
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;
621
622 /**
623  * @struct LsdrvMsgLsdataDatGyroConnectStatus
624  * \~english  Struct of Gyro connect status
625  */
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;
633
634 /**
635  * @struct LsdrvMsgLsdataGyroConnectStatus
636  * \~english  Struct of message about Gyro connect status
637  */
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;
642
643 /**
644  * @struct LsdrvMsgLsdataDatGpsAntennaStatus
645  * \~english  Struct of Gps Antenna Status
646  */
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;
654
655 /**
656  * @struct LsdrvMsgLsdataGpsAntennaStatus
657  * \~english  Struct of message about Gps Antenna Status
658  */
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;
663
664 /**
665  * @struct LsdrvLsdataFst
666  * \~english  Struct of sensor data (first sensor message)
667  */
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
674 } LSDRV_LSDATA_FST;
675
676 /**
677  * @struct LsdrvMsgLsdataFst
678  * \~english  Struct of message about sensor data (first sensor message)
679  */
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;
684
685 /**
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           |
700  */
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;
710
711 /**
712  * @struct SensorMsgGpsdata
713  * \~english  Struct of message about GPS data
714  */
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;
721
722 /**
723  * @struct TG_GPS_RET_TIMESET_MSG
724  * \~english  Struct of message about GPS time set response
725  */
726 typedef struct {
727   T_APIMSG_MSGBUF_HEADER  header;     //!< \~english message header
728   uint64_t                status;     //!< \~english response status
729 } TG_GPS_RET_TIMESET_MSG;
730
731 /**
732  * @struct TG_GPS_NMEA_SENTENCE_INFO
733  * \~english  Struct of GPS NMEA sentence info
734  */
735 typedef struct {
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;
740
741 /**
742  * @struct TG_GPS_NMEA_INFO
743  * \~english  Struct of GPS NMEA info
744  */
745 typedef struct {
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
750 } TG_GPS_NMEA_INFO;
751
752 /////////////////////////////////////////////////////////////////////////////////////
753 /// \ingroup positioning_hal
754 /// \~english @par Brief
755 ///        - start thread of NMEA analysis and delivery message
756 /// \~english @param [in] h_app
757 ///        HANDLE - handle
758 ///
759 /// \~english @retval eFrameworkunifiedStatusOK       Success
760 /// \~english @retval eFrameworkunifiedStatusFail     Failed
761 ///
762 /// \~english @par Prerequisite
763 ///        - None
764 /// \~english @par Change of internal state
765 ///        - This API can not change internal state
766 /// \~english @par Conditions of processing failure
767 ///        - None
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
772 ///        Public
773 /// \~english @par Type
774 ///        Sync
775 /// \~english @see
776 ///        None
777 /////////////////////////////////////////////////////////////////////////////////////
778 EFrameworkunifiedStatus StartGpsMainThreadPositioning(HANDLE h_app);
779
780 /////////////////////////////////////////////////////////////////////////////////////
781 /// \ingroup positioning_hal
782 /// \~english @par Brief
783 ///        - start thread for receive GPS manager
784 /// \~english @param [in] h_app
785 ///        HANDLE - handle
786 ///
787 /// \~english @retval eFrameworkunifiedStatusOK       Success
788 /// \~english @retval eFrameworkunifiedStatusFail     Failed
789 ///
790 /// \~english @par Prerequisite
791 ///        - None
792 /// \~english @par Change of internal state
793 ///        - This API can not change internal state.
794 /// \~english @par Conditions of processing failure
795 ///        - None
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
800 ///        Public
801 /// \~english @par Type
802 ///        Sync
803 /// \~english @see
804 ///        None
805 /////////////////////////////////////////////////////////////////////////////////////
806 EFrameworkunifiedStatus  StartGpsRecvThreadPositioning(HANDLE h_app);
807
808 /////////////////////////////////////////////////////////////////////////////////////
809 /// \ingroup positioning_hal
810 /// \~english @par Brief
811 ///        -   start thread for receive sensor
812 /// \~english @param [in] h_app
813 ///        HANDLE - handle
814 ///
815 /// \~english @retval eFrameworkunifiedStatusOK       Success
816 /// \~english @retval eFrameworkunifiedStatusFail     Failed
817 ///
818 /// \~english @par Prerequisite
819 ///        - None
820 /// \~english @par Change of internal state
821 ///        - This API can not change internal state.
822 /// \~english @par Conditions of processing failure
823 ///        - None
824 /// \~english @par Detail
825 ///        - start thread for receive sensor
826 ///        - the API can only be used by 1 process
827 /// \~english @par Classification
828 ///        Public
829 /// \~english @par Type
830 ///        Sync
831 /// \~english @see
832 ///        None
833 /////////////////////////////////////////////////////////////////////////////////////
834 EFrameworkunifiedStatus StartLineSensorThreadPositioning(HANDLE h_app);
835
836 /////////////////////////////////////////////////////////////////////////////////////
837 /// \ingroup positioning_hal
838 /// \~english @par Brief
839 ///        - start monitoring thread of GPS rollover
840 /// \~english @param [in] h_app
841 ///        HANDLE - handle
842 ///
843 /// \~english @retval eFrameworkunifiedStatusOK       Success
844 /// \~english @retval eFrameworkunifiedStatusFail     Failed
845 ///
846 /// \~english @par Prerequisite
847 ///        - None
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
857 ///        Public
858 /// \~english @par Type
859 ///        Sync
860 /// \~english @see
861 ///        FrameworkunifiedCreateChildThread, FrameworkunifiedStartChildThread
862 /////////////////////////////////////////////////////////////////////////////////////
863 EFrameworkunifiedStatus  StartGpsRolloverThreadPositioning(HANDLE h_app);
864
865 /** @}*/  // end of positioning_hal
866 /** @}*/  // end of positioning
867
868 /*---------------------------------------------------------------------------*/
869 #endif  // HAL_API_POSITIONING_HAL_H_
870
871 /*---------------------------------------------------------------------------*/
872 /*EOF*/