summaryrefslogtreecommitdiffstats
path: root/vehicleservice/positioning/client/include
diff options
context:
space:
mode:
Diffstat (limited to 'vehicleservice/positioning/client/include')
-rw-r--r--vehicleservice/positioning/client/include/CanInput_API.h98
-rw-r--r--vehicleservice/positioning/client/include/CanInput_API_private.h68
-rw-r--r--vehicleservice/positioning/client/include/Clock_API.h258
-rw-r--r--vehicleservice/positioning/client/include/CommonDefine.h72
-rw-r--r--vehicleservice/positioning/client/include/DR_API.h148
-rw-r--r--vehicleservice/positioning/client/include/DeadReckoning_DbgLogSim.h50
-rw-r--r--vehicleservice/positioning/client/include/Dead_Reckoning_API.h229
-rw-r--r--vehicleservice/positioning/client/include/Dead_Reckoning_Local_Api.h147
-rw-r--r--vehicleservice/positioning/client/include/Gps_API_private.h64
-rw-r--r--vehicleservice/positioning/client/include/INI_API.h259
-rw-r--r--vehicleservice/positioning/client/include/Naviinfo_API.h110
-rw-r--r--vehicleservice/positioning/client/include/POS_common_private.h62
-rw-r--r--vehicleservice/positioning/client/include/POS_private.h981
-rw-r--r--vehicleservice/positioning/client/include/POS_sensor_private.h163
-rw-r--r--vehicleservice/positioning/client/include/SensorLocation_API.h124
-rw-r--r--vehicleservice/positioning/client/include/SensorLocation_API_private.h39
-rw-r--r--vehicleservice/positioning/client/include/SensorMotion_API.h178
-rw-r--r--vehicleservice/positioning/client/include/Sensor_API.h36
-rw-r--r--vehicleservice/positioning/client/include/Sensor_API_private.h174
-rw-r--r--vehicleservice/positioning/client/include/Sensor_Common_API.h193
-rw-r--r--vehicleservice/positioning/client/include/VehicleDebug_API.h110
-rw-r--r--vehicleservice/positioning/client/include/Vehicle_API.h115
-rw-r--r--vehicleservice/positioning/client/include/Vehicle_API_Dummy.h142
-rw-r--r--vehicleservice/positioning/client/include/Vehicle_API_private.h129
-rw-r--r--vehicleservice/positioning/client/include/vehicle_service/POS_common_API.h1663
-rw-r--r--vehicleservice/positioning/client/include/vehicle_service/POS_define.h134
-rw-r--r--vehicleservice/positioning/client/include/vehicle_service/POS_gps_API.h1135
-rw-r--r--vehicleservice/positioning/client/include/vehicle_service/POS_sensor_API.h716
-rw-r--r--vehicleservice/positioning/client/include/vehicle_service/positioning.h46
29 files changed, 7643 insertions, 0 deletions
diff --git a/vehicleservice/positioning/client/include/CanInput_API.h b/vehicleservice/positioning/client/include/CanInput_API.h
new file mode 100644
index 00000000..1449b25a
--- /dev/null
+++ b/vehicleservice/positioning/client/include/CanInput_API.h
@@ -0,0 +1,98 @@
+/*
+ * @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 name : CanInput_API.h
+ * System name : PastModel002
+ * Sub System name : CanInput_API library
+ ******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_CANINPUT_API_H_
+#define POSITIONING_CLIENT_INCLUDE_CANINPUT_API_H_
+
+/************************************************************************
+ * Include *
+ ***********************************************************************/
+#include <vehicle_service/positioning_base_library.h> /* for type definitions */
+
+/************************************************************************
+* Definition *
+************************************************************************/
+/*----------------------------------------------------------------------*
+ * CAN_INPUT_RET_API Definition *
+ *----------------------------------------------------------------------*/
+/* Normal */
+#define CAN_INPUT_RET_NORMAL 0 /* Successful completion */
+
+/* Abnormal */
+#define CAN_INPUT_RET_ERROR (-1) /* An error has occurred */
+#define CAN_INPUT_RET_ERROR_PARAM (-2) /* Parameter error */
+
+/*----------------------------------------------------------------------*
+ * Message Definition *
+ *----------------------------------------------------------------------*/
+/* Command ID */
+#define CANINPUT_CID_LOCALTIME_NOTIFICATION 0x0220
+
+/*----------------------------------------------------------------------*
+ * Localtime status Definition *
+ *----------------------------------------------------------------------*/
+#define CANINPUT_LOCALTIME_STATUS_INVALID 0U
+#define CANINPUT_LOCALTIME_STATUS_INIT 1U
+#define CANINPUT_LOCALTIME_STATUS_PLAUSIBLE 2U
+#define CANINPUT_LOCALTIME_STATUS_NEW 3U
+#define CANINPUT_LOCALTIME_STATUS_DIAG 4U
+#define CANINPUT_LOCALTIME_STATUS_INCOMPLETE 5U
+
+/************************************************************************
+* type Definition *
+************************************************************************/
+typedef RET_API CAN_INPUT_RET_API; /* API return value */
+
+/************************************************************************
+* struct Definition *
+************************************************************************/
+/************************************************************************
+ * TAG : CANINPUT_MSG_LOCALTIMEINFO_DAT
+ * ABSTRACT : Localtime data structure
+ * NOTE :
+ ************************************************************************/
+typedef struct {
+ u_int8 status; /* status : Refer to Localtime status Definition */
+ u_int8 year; /* year : 0..99 (FFh:invalid) */
+ u_int8 month; /* month : 1..12 (FFh:invalid) */
+ u_int8 date; /* date : 1..31 (FFh:invalid) */
+ u_int8 hour; /* hour : 0..23 (FFh:invalid) */
+ u_int8 minute; /* minute : 0..59 (FFh:invalid) */
+ u_int8 second; /* second : 0..59 (FFh:invalid) */
+ u_int8 reserve; /* reserve */
+} CANINPUT_MSG_LOCALTIMEINFO_DAT;
+
+/************************************************************************
+ * Function prototypes *
+ ************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*[CanInput_API Public API]*/
+CAN_INPUT_RET_API CanInputInitialize(void);
+CAN_INPUT_RET_API CanInputSndMsg(PNO pno, CID cid, u_int16 msg_len, const void *msg_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_CANINPUT_API_H_
diff --git a/vehicleservice/positioning/client/include/CanInput_API_private.h b/vehicleservice/positioning/client/include/CanInput_API_private.h
new file mode 100644
index 00000000..d7c8e8e5
--- /dev/null
+++ b/vehicleservice/positioning/client/include/CanInput_API_private.h
@@ -0,0 +1,68 @@
+/*
+ * @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 name : CanInput_API_private.h
+ * System name : PastModel002
+ * Sub System name : CanInput_API library
+ ******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_CANINPUT_API_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_CANINPUT_API_PRIVATE_H_
+
+/************************************************************************
+ * Include *
+ ***********************************************************************/
+
+/************************************************************************
+* Definition *
+************************************************************************/
+/*----------------------------------------------------------------------*
+ * Message Definition *
+ *----------------------------------------------------------------------*/
+/* Message body size (byte) */
+#define CANINPUT_MSGBUF_DSIZE 8 /* Maximum message body size */
+
+/************************************************************************
+* type Definition *
+************************************************************************/
+
+/************************************************************************
+* struct Definition *
+************************************************************************/
+/*****************************************************************************
+ * TAG : CANINPUT_MSG_INFO
+ * ABSTRACT : CanInput_API message structure
+ * NOTE : Message structure
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ uint8_t data[CANINPUT_MSGBUF_DSIZE]; /* Message data (Localtime) */
+} CANINPUT_MSG_INFO;
+
+/************************************************************************
+ * Function prototypes *
+ ************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*[CanInput_API Private API]*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_CANINPUT_API_PRIVATE_H_
diff --git a/vehicleservice/positioning/client/include/Clock_API.h b/vehicleservice/positioning/client/include/Clock_API.h
new file mode 100644
index 00000000..19879994
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Clock_API.h
@@ -0,0 +1,258 @@
+/*
+ * @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.
+ */
+
+/*******************************************************************************
+* $Header:: $
+* $Revision:: $
+*******************************************************************************/
+
+/******************************************************************************
+* File name :Clock_API.h
+* System name :_CWORD107__PND-A
+* Subsystem name :System common functions header file
+* Program name :
+* Publishing department
+****************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_CLOCK_API_H_
+#define POSITIONING_CLIENT_INCLUDE_CLOCK_API_H_
+
+#include <vehicle_service/positioning_base_library.h>
+#include "CommonDefine.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ Macro definitions
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* For time calculation */
+#define CLOCK_TIMESTAMP_GETTIME(x) ((x) & (0x00FFFFFFU)) /* Macros that Get Time Counter Values */
+#define CLOCK_TIMESTAMP_GETFLAG(x) (((x) & (0xE0000000U)) >> (29U)) /* Macros that Get Your Own Count Values */
+#define CLOCK_TIMESTAMP_NORMAL (0U) /* Normal count */
+#define CLOCK_TIMESTAMP_INDIPENDENT (1U) /* Own count */
+
+#define CLOCK_TIMESTAMP_UNION(x, y) (((x) << (29U)) | (y)) /* Macro that combines the unique count value (x) and the time counter value (y) */
+
+ /* Timestamp Shared Memory Related */
+#define TIMESTAMP_RETRY_COUNTE (10U) /* Number of time stamp retries */
+#define TIMESTAMP_RETRY_INTERVAL (10U) /* Time stamp retry interval(100[msec]) */
+
+ /* Time Management Shared Memory Related */
+#define CLKMNG_RETRY_COUNTE (10U) /* Time management retries */
+#define CLKMNG_RETRY_INTERVAL (10U) /* Time Management Retry Interval(100[msec]) */
+
+ /* Day of the week definition */
+#define CLKMNG_SUN (0U) /* Sunday */
+#define CLKMNG_MON (1U) /* Mondays */
+#define CLKMNG_TUE (2U) /* Tuesdays */
+#define CLKMNG_WED (3U) /* Wednesdays */
+#define CLKMNG_THU (4U) /* Thursdays */
+#define CLKMNG_FRI (5U) /* Fridays */
+#define CLKMNG_SAT (6U)
+
+ /* Related to the accuracy of time */
+#define CLOCK_CORRECTED_TIME (0U) /* GPS corrected time completed */
+#define CLOCK_NOT_CORRECTED_TIME (1U) /* GPS uncorrected time */
+#define CLOCK_RTC_TIME (2U) /* GPS RTC time */
+#define CLOCK_INVALID_TIME (3U) /* GPS error time */
+
+ /* Time Stamp Status Storage Data Module Related Definition */
+#define TIMESTAMPDM_NAME "TIMESTAMP_DATA" /* Name of time stamp status storage data module */
+#define TIMESTAMPDM_SEM_NAME "TIMESTAMP_SEM" /* Timestamp status storage data module semaphore name */
+
+ /* Time Management Status Storage Data Module Related Definition */
+#define CLKMNG_DM_NAME "CLOCK_GPS_DATA" /* Name of time management status storage data module */
+#define CLKMNG_DM_SEM_NAME "CLOCK_GPS_SEM" /* Time management status storage data module semaphore name */
+
+ /* Messaging communication */
+#define CLKMNG_MSG_BUF_SIZE (128U) /* Message communication buffer size */
+#define CLKMNG_SETTIME_MSGBODYSIZE (4U) /* Date/Time Setting Response Notification Data Size */
+#define CLKMNG_NOTIOBSERVERS_MSGSZ (4U) /* Time change notification data body size */
+#define CLKMNG_NOTIACCURACY_MSGSZ (4U) /* Change notification data body size from time accuracy */
+#define CLKMNG_NOTIOBSERVERS_ENTRY_MSGSZ (4U) /* Time change notification registration data body size */
+#define CLKMNG_NOTIACCURACY_ENTRY_MSGSZ (0U) /* Change Notification Stored Data Size from Time Accuracy */
+
+ /* Semaphore Related Extensions */
+#define CLOCK_SEM_RETRY_INTERVAL (10) /* Retry interval for semaphore acquisition/release processing 10ms */
+
+/*
+ Data typing
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* Time-stamped data */
+typedef struct TagTimestampData {
+ u_int16 trip; /* Trip counters */
+ u_int16 reserve; /* Reservation(Always 0) */
+ u_int32 time; /* Time counter */
+ u_int8 day; /* Number of days */
+ u_int8 hour; /* Time */
+ u_int8 min; /* Minutes */
+ u_int8 sec; /* Second */
+} TimestampData;
+
+/* TIMESTAMP INTERNAL COUNTER MODULE STRUCTURE DEFINITION */
+typedef struct {
+ u_int16 trip; /* Trip counters */
+ u_int32 time; /* Time counter */
+} TIMESTAMP_CNT;
+
+/* Time management status storage area */
+typedef struct TagClockStatus {
+ u_int8 status; /* GPS status */
+ u_int8 hour; /* Time of final correction */
+ u_int8 min; /* Minutes */
+ u_int8 sec; /* Second */
+} ClockStatus;
+
+/* Status storage area for writing time management shared memory */
+typedef struct TagClkMngTimerSetTime {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ u_int8 reserve1[1]; /* (Not used) */
+ u_int8 gps_timer_state; /* GPS time status */
+ u_int16 year; /* Year */
+ u_int8 month; /* Month */
+ u_int8 day; /* Day */
+ u_int8 hour; /* Hour */
+ u_int8 min; /* Minutes */
+ u_int8 sec; /* Second */
+ u_int8 reserve2[3]; /* (Not used) */
+} CLKMNG_TIMER_SET_TIME;
+
+/* Existing sys_timerapi.h data */
+
+/* User time status */
+#define TIMEDATA_INVALID 0 /* Time invalid */
+#define TIMEDATA_VALID 1 /* Time valid */
+
+/* Time Definition AM/PM */
+#define CLOCK_AM 0
+#define CLOCK_PM 1
+/* Change to Enumeration */
+/* Time notification unit */
+typedef enum TagNotifyUnit {
+ CLOCK_NOTIFY_SECOND = (1U), /* Second notifications */
+ CLOCK_NOTIFY_MINUTE, /* Minute Notification */
+ CLOCK_NOTIFY_HOUR /* Hourly notification */
+} NOTIFYUNIT;
+
+/* Return value definition */
+typedef enum TagClockReturn {
+ CLOCK_OK, /* Normal completion */
+ CLOCK_ERROR, /* ABENDs */
+ CLOCK_ERROR_ARGUMENTS /* Invalid argument */
+} CLOCK_RETURN;
+
+/* Time Type Definition */
+typedef struct TagTimeData {
+ u_int16 year; /* Year */
+ u_int8 month; /* Month */
+ u_int8 day; /* Day */
+ u_int8 hour; /* Hour */
+ u_int8 minute; /* Minutes */
+ u_int8 second; /* Second */
+} TimeData;
+
+/* Offset time type definition */
+typedef struct TagOffsetData {
+ BOOL sign; /* Operator */
+ TimeData time; /* Date and time */
+} OffsetData;
+
+/* Data Definition for System Time Delivery Registration */
+typedef struct TagSystemTimeRegistData {
+ NOTIFYUNIT unit; /* Notification unit(Hour,Minutes,One of the seconds) */
+} SYSTEMTIME_REGISTDATA;
+
+/* Data Definition for Setting User Time */
+typedef struct TagUserTimSetData {
+ TimeData time; /* Time */
+ u_int8 day_of_week; /* Day-of-week */
+} USERTIME_SETDATA;
+
+/* Data Definition for User Time Delivery Registration */
+typedef struct TagUserTimeRegistData {
+ NOTIFYUNIT unit; /* Notification unit(Hour,Minutes,One of the seconds) */
+} USERTIME_REGISTDATA;
+
+
+/*
+ Time Management Thread -> External Message Definition
+- - - - - - - - - - - - - - - - - - - - - - */
+/* Message data type */
+typedef struct TagClkMngRecMsg {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ u_int8 data[CLKMNG_MSG_BUF_SIZE];
+} CLKMNG_RCV_MSG;
+
+/* For time management Time Set Response Message */
+typedef struct TagClkMngRetTimeMsg { /* Time Set Response Message */
+ T_APIMSG_MSGBUF_HEADER header; /* Message header */
+ int8 result; /* Processing result */
+ int8 dummy[3];
+} CLKMNG_RETTIME_MSG;
+
+/* Change Notification Message from Time for Time Management */
+typedef struct TagClkMngNotiAccuracyMsg {
+ T_APIMSG_MSGBUF_HEADER header; /* Message header */
+ u_int8 gps_status; /* GPS time status(Likelihood) */
+ int8 dummy[3];
+} CLKMNG_NOTIACCURACY_MSG;
+
+/* Time change notification message for time management */
+typedef struct TagClkMngNotiObserversMsg {
+ T_APIMSG_MSGBUF_HEADER header; /* Message header */
+ u_int8 hour; /* Hour */
+ u_int8 min; /* Minutes */
+ u_int8 sec; /* Second */
+ int8 dummy[1];
+} CLKMNG_NOTIOBSERVERS_MSG;
+
+/*
+ Time Management API -> Time Management Thread Message Definition
+- - - - - - - - - - - - - - - - - - - - - - */
+/* Change Notification Registration Message from the Accuracy of Time for Time Management */
+typedef struct TagClkMngNotAccuracyEntryMsg {
+ T_APIMSG_MSGBUF_HEADER header; /* Message header */
+} CLKMNG_NOTIACCURACY_ENTRY_MSG;
+
+/* Time change notification registration message for time management */
+typedef struct TagClkMngNotiObserversEntryMsg {
+ T_APIMSG_MSGBUF_HEADER header; /* Message header */
+ u_int8 notify_time; /* Notification unit (Hour,Minutes,One of the seconds) */
+ int8 dummy[3];
+} CLKMNG_NOTIOBSERVERS_ENTRY_MSG;
+
+/*
+ API Function Prototype Declaration
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+RET_API ClockInitApi(void); /* API initialization processing */
+RET_API ClockGetLocalTime(RealTimeData *real_time, TimestampData *timestamp); /* Current time reference processing */
+RET_API ClockGetLocalTimeBcd(RealTimeDataBcd *real_time_bcd, TimestampData *timestamp); /* Current time reference processing(BCD) */
+RET_API ClockGetUtcTime(RealTimeData* real_time, TimestampData *timestamp); /* Current UTC time reference processing */
+RET_API ClockCnvDateToSec(const LPSYSTEMTIME sys_time, u_int32* sec); /* Date and time,Total seconds conversion */
+RET_API ClockCnvSecToDate(const u_int32* sec, LPSYSTEMTIME sys_time); /* Total seconds,Date and time conversion */
+RET_API ClockGetAddOpeTime(u_int32 *ope_time); /* Accumulated operating time reference processing */
+RET_API ClockSetSystemTime(PNO snd_pno, const SysTimeData* sys_time, u_int8 gps_status); /* System time setting process */
+
+RET_API ClockNotifyObserversClock(PNO snd_pno, u_int8 rsc_id, u_int8 notify_time); /* Fixed period time change notification registration */
+RET_API ClockNotifyObserversAccuracy(PNO snd_pno, u_int8 rsc_id); /* Register change notification based on the time probability */
+RET_API ClockNotifyObserversAdjustClock(PNO snd_pno, u_int8 rsc_id); /* System time setting change notification registration */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_CLOCK_API_H_
diff --git a/vehicleservice/positioning/client/include/CommonDefine.h b/vehicleservice/positioning/client/include/CommonDefine.h
new file mode 100644
index 00000000..2e9e3e6c
--- /dev/null
+++ b/vehicleservice/positioning/client/include/CommonDefine.h
@@ -0,0 +1,72 @@
+/*
+ * @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.
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_COMMONDEFINE_H_
+#define POSITIONING_CLIENT_INCLUDE_COMMONDEFINE_H_
+
+/**
+ * @file CommonDefine.h
+ */
+
+/** @addtogroup vehicle_service
+ * @{
+ */
+/** @addtogroup positioning
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/*---------------------------------------------------------------------------------*
+ * Incluce *
+ *---------------------------------------------------------------------------------*/
+#include <vehicle_service/POS_sensor_API.h>
+#include <vehicle_service/POS_define.h>
+#include <vehicle_service/pos_message_header.h>
+
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+/* Date and Time Status Definition */
+#define NAVIINFO_NAVI_GPS_TD_STS_NOTFIX (0)
+//!< \~english time has not been adjusted after GPS receiver reset
+#define NAVIINFO_NAVI_GPS_TD_STS_RTCBACKUP (1) // !<\~english time output from RTC Backup(have time adjustment)
+#define NAVIINFO_NAVI_GPS_TD_STS_FIX (2) //!< \~english time adjustment completed
+
+/* Vehicle sensor data information */
+#define POS_SNS_CONNECTION (0x01U) //!< \~english connected
+#define POS_SNS_UNCONNECTION (0x00U) //!< \~english not connected
+#define POS_SNS_SHORT (0x02U) //!< \~english short
+#define POS_SNS_UNSPECIFIED (0x03U) //!< \~english not specified
+
+/* NMEA Receive Flag(_CWORD82_) */
+#define POS_SNS__CWORD82__DRMC (0x01U) //!< \~english DRMC sentence
+#define POS_SNS__CWORD82__GSA (0x02U) //!< \~english GSA sentence
+#define POS_SNS__CWORD82__GSV_1 (0x04U) //!< \~english GSV_1 sentence
+#define POS_SNS__CWORD82__GSV_2 (0x08U) //!< \~english GSV_2 sentence
+#define POS_SNS__CWORD82__GSV_3 (0x10U) //!< \~english GSV_3 sentence
+#define POS_SNS__CWORD82__PJRDC_GP_3 (0x20U) //!< \~english PJRDC_GP_3 sentence
+
+/* NMEA Receive Flag */
+#define POS_SNS_GPS_NMEA_PASCD (0x01000000U) //!< \~english pascd sentence
+
+typedef u_int16 PNO; //!< \~english PNo.
+
+/*---------------------------------------------------------------------------------*
+ * Struct declaration *
+ *---------------------------------------------------------------------------------*/
+
+/** @}*/ // end of positioning
+/** @}*/ // end of vehicle_service
+#endif // POSITIONING_CLIENT_INCLUDE_COMMONDEFINE_H_
diff --git a/vehicleservice/positioning/client/include/DR_API.h b/vehicleservice/positioning/client/include/DR_API.h
new file mode 100644
index 00000000..6362f8cf
--- /dev/null
+++ b/vehicleservice/positioning/client/include/DR_API.h
@@ -0,0 +1,148 @@
+/*
+ * @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 DR_API.h
+@detail DR_API external header file<BR>
+ DR_API External public header
+******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_DR_API_H_
+#define POSITIONING_CLIENT_INCLUDE_DR_API_H_
+
+/*****************************************************************************
+ * Include *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Define *
+ *****************************************************************************/
+/* Command ID */
+#define CID_DR_MAP_MATCHING_DATA (0x0209)
+#define CID_DR_CLEAR_BACKUP_DATA (0x020F)
+
+/* DR_EXT_RET_API definition */
+#define DR_EXT_RET_NORMAL (0) /* Successful completion */
+#define DR_EXT_RET_ERROR (-1) /* Setup failure */
+
+/*****************************************************************************
+ * Typedef *
+ *****************************************************************************/
+typedef int32 DR_EXT_RET_API;
+
+/*****************************************************************************
+ * Enumeration *
+ *****************************************************************************/
+typedef enum {
+ NAVI_DATA_STATUS_2D_FIX = 0x00,
+ NAVI_DATA_STATUS_3D_FIX,
+ NAVI_DATA_STATUS_DR_COMBINED,
+ NAVI_DATA_STATUS_DR_ONLY,
+ NAVI_DATA_STATUS_MAP_2D_GPS_FIX,
+ NAVI_DATA_STATUS_MAP_3D_GPS_FIX,
+ NAVI_DATA_STATUS_MAP_DR_COMBINED,
+ NAVI_DATA_STATUS_MAP_DR_ONLY,
+ NAVI_DATA_STATUS_MAP_NO_FIX,
+ NAVI_DATA_STATUS_AWAITING_FIRST_FIX,
+ NAVI_DATA_STATUS_DATA_INVALID,
+ NAVI_DATA_STATUS_NO_FIX,
+ NAVI_DATA_STATUS_TIME_ONLY_FIX
+} NAVI_DATA_STATUS;
+
+typedef enum {
+ NAVI_DATA_INVALID = 0x00,
+ NAVI_DATA_VALID
+} NAVI_DATA_AVAILABLE;
+
+/*****************************************************************************
+ * Struct *
+ *****************************************************************************/
+/*****************************************************************************
+ * TAG : POSITION_INFO
+ * ABSTRACT : Position information structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ int32 latitude; /* 10^-7deg North : plus, South : minus */
+ int32 longitude; /* 10^-7deg East : plus, West : minus */
+ NAVI_DATA_AVAILABLE status; /* Status of data */
+} POSITION_INFO;
+
+/*****************************************************************************
+ * TAG : RATE_INFO
+ * ABSTRACT : Rate information structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 rate; /* 10^-2m/sec */
+ u_int8 reserve[2]; /* reserve */
+ NAVI_DATA_AVAILABLE status; /* Status of data */
+} RATE_INFO;
+
+/*****************************************************************************
+ * TAG : ORIENT_INFO
+ * ABSTRACT : Orient information structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 orient; /* 10^-2deg N : 0, E : 90, S : 180, W : 270 */
+ u_int8 reserve[2]; /* reserve */
+ NAVI_DATA_AVAILABLE status; /* Status of data */
+} ORIENT_INFO;
+
+/*****************************************************************************
+ * TAG : MAP_MATCHING_DATA
+ * ABSTRACT : Map-Matching information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ POSITION_INFO position_info; /* Position information */
+ RATE_INFO rate_info; /* Rate information */
+ ORIENT_INFO orient_info; /* Orient information */
+ NAVI_DATA_STATUS status; /* Status */
+} MAP_MATCHING_DATA;
+
+/*****************************************************************************
+ * TAG : DR_MSG_MAP_MATCHING_DATA
+ * ABSTRACT : Map-Matching information data message buffer structure
+ * NOTE : Message structure(User -> VehicleSens)
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ MAP_MATCHING_DATA data; /* Message data (Map-Matching information) */
+} DR_MSG_MAP_MATCHING_DATA;
+
+/*****************************************************************************
+ * TAG : DR_MSG_CLEAR_BACKUP_DATA
+ * ABSTRACT : Clear backup data message buffer structure
+ * NOTE : Message structure(User -> VehicleSens)
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+} DR_MSG_CLEAR_BACKUP_DATA;
+
+/*****************************************************************************
+* Function prototypes *
+*****************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern DR_EXT_RET_API DrSetMapMatchingData(PNO pno, MAP_MATCHING_DATA* map_matching_data);
+extern DR_EXT_RET_API DrClearBackupData(PNO pno);
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_DR_API_H_
diff --git a/vehicleservice/positioning/client/include/DeadReckoning_DbgLogSim.h b/vehicleservice/positioning/client/include/DeadReckoning_DbgLogSim.h
new file mode 100644
index 00000000..bd57de70
--- /dev/null
+++ b/vehicleservice/positioning/client/include/DeadReckoning_DbgLogSim.h
@@ -0,0 +1,50 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_DEADRECKONING_DBGLOGSIM_H_
+#define POSITIONING_CLIENT_INCLUDE_DEADRECKONING_DBGLOGSIM_H_
+
+/*******************************************************************************
+ FILE : DeadReckoning_DbgLogSim.h
+ SYSTEM : _CWORD64_ platform development
+ SUBSYSTEM : Log Simulator for Debugging
+ PROGRAM : PastModel002*1 log read
+ FUNC LIST :
+--------------------------------------------------------------------------------
+
+*******************************************************************************/
+
+#include "Dead_Reckoning_API.h"
+
+#define DR_DBG_LOG_PACKET_HEAD_SIZE (4) /* DR_LOG_PACKET_HEAD_SIZE */
+#define DR_DBG_LOG_SIM_BUFF_SIZE (0x200)
+
+#define DR_DBG_LOG_SIM_DATA_NONE (-1)
+#define DR_DBG_LOG_SIM_DATA_GPS (1)
+#define DR_DBG_LOG_SIM_DATA_SENSOR (2)
+
+/*
+ * prototype
+ * public functions
+ */
+
+void DeadReckoningDbgLogSimInit(void);
+void DeadReckoningDbgLogSimDispose(void);
+
+BOOL DeadReckoningDbgLogSimIsDbgLogSimMode(void);
+int DeadReckoningDbgLogSimReadPacket(u_int8 *, size_t, int16 *);
+
+#endif // POSITIONING_CLIENT_INCLUDE_DEADRECKONING_DBGLOGSIM_H_
diff --git a/vehicleservice/positioning/client/include/Dead_Reckoning_API.h b/vehicleservice/positioning/client/include/Dead_Reckoning_API.h
new file mode 100644
index 00000000..bd2e0318
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Dead_Reckoning_API.h
@@ -0,0 +1,229 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_DEAD_RECKONING_API_H_
+#define POSITIONING_CLIENT_INCLUDE_DEAD_RECKONING_API_H_
+/****************************************************************************
+ * File name :Dead_Reckoning_API.h
+ * System name :PastModel002
+ * Subsystem name :
+ ******************************************************************************/
+
+/*****************************************************************************
+ * Include *
+ *****************************************************************************/
+#include <vehicle_service/positioning_base_library.h>
+#include "Sensor_Common_API.h"
+#include <native_service/frameworkunified_types.h>
+
+/*****************************************************************************
+ * Define *
+ *****************************************************************************/
+#define NUM_OF_100msData (10) /* Number of gyro data items delivered every 100 ms */
+
+/*****************************************************************************
+ * Typedef *
+ *****************************************************************************/
+typedef RET_API DR_RET_API;
+
+/*****************************************************************************
+ * Enumeration *
+ *****************************************************************************/
+/*******************************************************************************
+ TAG : NAVI_MATCHING_STATUS
+ ABSTRACT : Map matching data(Status)
+ NOTE :
+*******************************************************************************/
+typedef enum NaviMatchingStatus {
+ NAVI_MATCHING_STS_2D_FIX = 0x00,
+ NAVI_MATCHING_STS_3D_FIX,
+ NAVI_MATCHING_STS_DR_COMBINED,
+ NAVI_MATCHING_STS_DR_ONLY,
+ NAVI_MATCHING_STS_MAP_2D_GPS_FIX,
+ NAVI_MATCHING_STS_MAP_3D_GPS_FIX,
+ NAVI_MATCHING_STS_MAP_DR_COMBINED,
+ NAVI_MATCHING_STS_MAP_DR_ONLY,
+ NAVI_MATCHING_STS_MAP_NO_FIX,
+ NAVI_MATCHING_STS_AWAITING_FIRST_FIX,
+ NAVI_MATCHING_STS_DATA_INVALID,
+ NAVI_MATCHING_STS_NO_FIX,
+ NAVI_MATCHING_STS_TIME_ONLY_FIX
+} NAVI_MATCHING_STATUS;
+
+/*******************************************************************************
+ TAG : NAVI_MATCHING_DATA_AVAILABLE
+ ABSTRACT : Map matching data(Availability)
+ NOTE :
+*******************************************************************************/
+typedef enum {
+ NAVI_MATCHING_DATA_INVALID = 0x00,
+ NAVI_MATCHING_DATA_VALID
+} NAVI_MATCHING_DATA_AVAILABLE;
+
+/*****************************************************************************
+ * Struct *
+ *****************************************************************************/
+/* Sensor data */
+/*******************************************************************************
+ TAG : Struct_PulseRevTbl
+ ABSTRACT : Vehicle speed/REV data table structure
+ NOTE : 4byte
+*******************************************************************************/
+typedef struct {
+ u_int8 reverse_flag; /* 0:Forward march 1:Backward 3:Disabled Reverse signal status */
+ u_int8 pulse_flag; /* Vehicle speed pulse flag */
+ /* 0:Enabled 1:Receive invalid value from CAN 2:Unable to receive at download timing */
+ u_int16 pulse_sum_cyclic; /* Vehicle speed pulse counter value */
+} Struct_PulseRevTbl;
+/*******************************************************************************
+ TAG : Struct_GyroTbl
+ ABSTRACT : Gyro Data Table Structure
+ NOTE : 20byte
+*******************************************************************************/
+typedef struct {
+ u_int16 gyro_data[NUM_OF_100msData]; /* A/D-converted gyro data */
+} Struct_GyroTbl;
+/*******************************************************************************
+ TAG : Struct_SensData
+ ABSTRACT : Sensor data structure
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ u_int8 sens_cnt_flag; /* Sensor data transmission counter flag */
+ /* 0:Disabled(->Initial Sensor) 1:Enabled(->100 ms periodic transmission) */
+ /* Set "0" for initial sensor transmission and "1" for periodic transmission. */
+ u_int8 sens_cnt; /* Sensor data transmission counter value Set "0" at initial transmission of sensor */
+ Struct_PulseRevTbl pulse_rev_tbl; /* Vehicle speed/REV Data table */
+ Struct_GyroTbl gyro_x_tbl; /* Gyro(X axis) data table */
+ Struct_GyroTbl gyro_y_tbl; /* Gyro(Y axis) data table */
+ Struct_GyroTbl gyro_z_tbl; /* Gyro(Z axis) data table */
+} Struct_SensData;
+
+/* GPS data */
+/*******************************************************************************
+ TAG : Struct_GpsData
+ ABSTRACT : GPS data structure
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ u_int8 sens_cnt; /* Sensor data transmission counter value */
+ u_int8 sens_cnt_flag; /* Sensor data transmission counter flag */
+ /* 0:Disabled(Incorrect GPS sensor counter) */
+ /* 1:Enabled */
+ u_int16 gps_data_size; /* GPS data storage area size */
+ DID did; /* Data ID */
+ const void* gps_data; /* GPS data storage area */
+} Struct_GpsData;
+
+/* Estimated Navigation Calculation Result */
+/*******************************************************************************
+ TAG : Struct_DR_DATA
+ ABSTRACT : Estimated Navigation Calculation Result
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ int64_t latitude; /* Latitude(WGS-84) 10^-7deg */
+ int64_t longitude; /* Longitude(WGS-84) 10^-7deg */
+ int64_t altitude; /* Altitude 10^-2m */
+ u_int16 rate; /* Speeds 10^-2m/sec */
+ u_int16 heading; /* Orientation North-reference clockwise 10^-2deg */
+ u_int16 reserve; /* RESERVE */
+ u_int8 dr_status; /* DR calculation status */
+ u_int8 positioning_time; /* Sensor Counter */
+} Struct_DR_DATA;
+
+/*******************************************************************************
+ TAG : DR_CALC_INFO
+ ABSTRACT : Estimated navigation information
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ u_int16 gyro_offset; /* Correction coefficient:Gyro offset */
+ u_int8 gyro_scale_factor; /* Correction coefficient:Gyro Sensitivity */
+ u_int8 gyro_scale_factor_level; /* Learning Level(Gyro Sensitivity) */
+ u_int16 speed_pulse_scale_factor; /* Correction coefficient:Vehicle speed factor */
+ u_int8 speed_pulse_scale_factor_level; /* Learning Level(Vehicle speed factor) */
+ u_int8 reserve; /* Reserve(1Byte) */
+} DR_CALC_INFO;
+
+/*******************************************************************************
+ TAG : DR_POSITION_INFO
+ ABSTRACT : Location information
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ int64_t latitude;
+ int64_t longitude;
+ NAVI_MATCHING_DATA_AVAILABLE status;
+} DR_POSITION_INFO;
+
+/*******************************************************************************
+ TAG : DR_RATE_INFO
+ ABSTRACT : Location information
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ u_int16 rate;
+ u_int8 reserve[2];
+ NAVI_MATCHING_DATA_AVAILABLE status;
+} DR_RATE_INFO;
+
+/*******************************************************************************
+ TAG : DR_ORIENT_INFO
+ ABSTRACT : Location information
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ u_int16 orient;
+ u_int8 reserve[2];
+ NAVI_MATCHING_DATA_AVAILABLE status;
+} DR_ORIENT_INFO;
+
+/*******************************************************************************
+ TAG : NAVI_MATCHING_DATA
+ ABSTRACT : Map matching data
+ NOTE :
+*******************************************************************************/
+typedef struct {
+ DR_POSITION_INFO position_info;
+ DR_RATE_INFO rate_info;
+ DR_ORIENT_INFO orient_info;
+ NAVI_MATCHING_STATUS status;
+} NAVI_MATCHING_DATA;
+
+/************************************************************************
+* Function prototype *
+************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DR_RET_API DeadReckoningLibraryInit(void);
+DR_RET_API SetGpsData(Struct_GpsData *st_gps_data);
+DR_RET_API CalculateDeadReckoningData(Struct_SensData *st_sensor_data,
+ Struct_DR_DATA *st_dr_data, DR_CALC_INFO *dr_calc_data);
+DR_RET_API SetMatchingData(NAVI_MATCHING_DATA *st_matching_data);
+
+DR_RET_API ClearBackupData(void); /* Clear DR backup data */
+/* BOOL Problem Avoidance */
+DR_RET_API GetLocationLogSetting(int *log_sw, unsigned char *severity); /* Location log output ON/OFF acquisition */
+DR_RET_API SetLocationLogStatus(int log_sw, unsigned char severity); /* Location log output ON/OFF setting */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_DEAD_RECKONING_API_H_
diff --git a/vehicleservice/positioning/client/include/Dead_Reckoning_Local_Api.h b/vehicleservice/positioning/client/include/Dead_Reckoning_Local_Api.h
new file mode 100644
index 00000000..c513e9b0
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Dead_Reckoning_Local_Api.h
@@ -0,0 +1,147 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_DEAD_RECKONING_LOCAL_API_H_
+#define POSITIONING_CLIENT_INCLUDE_DEAD_RECKONING_LOCAL_API_H_
+/****************************************************************************
+ * File name :Dead_Reckoning_Local_Api.h
+ * System name :PastModel002
+ * Subsystem name :
+ ******************************************************************************/
+
+#include <vehicle_service/positioning_base_library.h>
+#include "Sensor_Common_API.h"
+#include "SensorLocation_API.h"
+#include "SensorMotion_API.h"
+#include "DR_API.h"
+
+/************************************************************************
+* Macro definitions *
+************************************************************************/
+
+/*----------------------------------------------------------------------*
+ * DEADRECKONING_RET_API define *
+ *----------------------------------------------------------------------*/
+/* Normal system */
+#define DEAD_RECKONING_RET_NORMAL 0 /* Normal completion */
+/* Abnormal system */
+#define DEADRECKONING_RET_ERROR_PID (-1) /* Thread ID error */
+#define DEADRECKONING_RET_ERROR_DID (-2) /* Unregistered DID */
+#define DEADRECKONING_RET_ERROR_PARAM (-4) /* Parameter error */
+#define DEADRECKONING_RET_ERROR_BUFFULL (-5) /* FULL of registered numbers */
+#define DEADRECKONING_RET_ERROR_CREATE_EVENT (-6) /* Event generation failure */
+#define DEADRECKONING_RET_ERROR_OUTOF_MEMORY (-8) /* Shared memory allocation failed */
+#define DEADRECKONING_RET_ERROR_SIZE (-9) /* Storage destination size error */
+#define DEADRECKONING_RET_ERROR_MIN (-10)
+
+/*----------------------------------------------------------------------*
+ * DEADRECKONING delivery registry APIs *
+ *----------------------------------------------------------------------*/
+/* Delivery control */
+#define DEADRECKONING_DELIVERY_REGIST 0x01 /* Delivery registration */
+
+/* Delivery timing */
+#define DEADRECKONING_DELIVERY_TIMING_UPDATE 0x01 /* Updating */
+
+/*----------------------------------------------------------------------*
+ * Command ID *
+ *----------------------------------------------------------------------*/
+/* Vehicle Sensor -> Vehicle Sensor(DR) */
+#define CID_DEAD_RECKONING_DELIVERY_ENTRY 0x0310 /* DR Transmission Registration Signal Notification */
+
+/* Vehicle Sensor -> Vehicle Sensor(DR) */
+#define CID_DEAD_RECKONING_SENS_DATA 0x0311 /* DR data signal notification */
+#define CID_DEAD_RECKONING_GPS_DATA 0x0312 /* DR data signal notification */
+#define CID_DEAD_RECKONING_SENS_FST_DATA 0x0313 /* DR data signal notification */
+
+/* Message Data Size(byte) */
+#define DEADRECKONING_MSGBUF_DSIZE 512 /* Message body MAX */
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+/* Semaphore name(MAX 32Byte) Synchronize with VehicleDebug_API_private.h */
+#define SENSOR_LOG_SETTING_SEMAPHO_NAME ("SEBSIR_GET_LOG_SETTING_SEMAPHO")
+
+/* Shared memory name(MAX 32Byte) Synchronize with VehicleDebug_API_private */
+#define LOG_SETTING_SHARE_MEMORY_NAME ("LOG_SETTING_SHARE_MEMORY")
+
+/************************************************************************
+* typedef Definition *
+************************************************************************/
+typedef RET_API DEAD_RECKONING_RET_API; /* API return value */
+
+/************************************************************************
+* Struct definitions *
+************************************************************************/
+
+/************************************************************************
+* TAG : DEADRECKONING_MSG_BUF
+* ABSTRACT : message buffer
+************************************************************************/
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ u_int8 data[DEADRECKONING_MSGBUF_DSIZE]; /* Message data */
+} DEADRECKONING_MSG_BUF;
+
+/************************************************************************
+* TAG : DEADRECKONING_MSG_DELIVERY_ENTRY
+* ABSTRACT : Registration message delivery vehicle sensor information(->Vehicle sensor)
+************************************************************************/
+typedef struct {
+ DID did; /* ID data corresponding to the vehicle sensor information */
+ PNO pno; /* Shipping addressPNO */
+ u_int8 delivery_timing; /* Delivery opportunity */
+ u_int8 ctrl_flg; /* Delivery control */
+ EventID event_id; /* Event ID */
+} DEADRECKONING_MSG_DELIVERY_ENTRY_DAT;
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ DEADRECKONING_MSG_DELIVERY_ENTRY_DAT data; /* Message data */
+} DEADRECKONING_MSG_DELIVERY_ENTRY;
+
+/************************************************************************
+* TAG : DEADRECKONING_MSG_GET_DR_DATA
+* ABSTRACT : Vehicle sensor information acquisition message(->Vehicle sensor)
+************************************************************************/
+typedef struct {
+ DID did; /* Data ID corresponding to vehicle sensor information */
+ PNO pno; /* Destination PNO */
+ u_int16 offset; /* Offset to shared memory storage area */
+ u_int16 size; /* Size of shared memory storage area */
+ u_int8 reserve[2];
+ EventID event_id; /* Event ID */
+} DEADRECKONING_MSG_GET_DR_DATA_DAT;
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ DEADRECKONING_MSG_GET_DR_DATA_DAT data; /* Message data */
+} DEADRECKONING_MSG_GET_DR_DATA;
+
+/************************************************************************
+* Function prototype *
+************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_DEAD_RECKONING_LOCAL_API_H_
diff --git a/vehicleservice/positioning/client/include/Gps_API_private.h b/vehicleservice/positioning/client/include/Gps_API_private.h
new file mode 100644
index 00000000..7026ce97
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Gps_API_private.h
@@ -0,0 +1,64 @@
+/*
+ * @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
+ * Gps_API_private.h
+ * @brief
+ * Definition for GPS Internal I/F Liblary
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_GPS_API_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_GPS_API_PRIVATE_H_
+
+/*---------------------------------------------------------------------------------*
+ * Incluce *
+ *---------------------------------------------------------------------------------*/
+#include <vehicle_service/positioning_base_library.h>
+
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+/*--- for message ---*/
+
+/*---------------------------------------------------------------------------------*
+ * Typedef declaration *
+ *---------------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------------*
+ * Struct declaration *
+ *---------------------------------------------------------------------------------*/
+/*!
+ @brief message delivery GPS reset information
+ */
+typedef struct {
+ uint8_t mode; /**< Reset mode */
+ uint8_t reserve[3]; /**< reserve */
+ PNO snd_pno; /**< Caller PNO */
+ PNO res_pno; /**< Destination PNO */
+} POS_RESETINFO;
+
+/*---------------------------------------------------------------------------------*
+ * Prototype Declaration *
+ *---------------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_GPS_API_PRIVATE_H_
diff --git a/vehicleservice/positioning/client/include/INI_API.h b/vehicleservice/positioning/client/include/INI_API.h
new file mode 100644
index 00000000..f16a4c62
--- /dev/null
+++ b/vehicleservice/positioning/client/include/INI_API.h
@@ -0,0 +1,259 @@
+/*
+ * @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 name : INI_API.h
+* System name : _CWORD107_
+* Subsystem name : Staged Start and Termination Framework
+* Title : Staged Start and End Framework API Header Files
+************************************************************************/
+
+#ifndef POSITIONING_CLIENT_INCLUDE_INI_API_H_
+#define POSITIONING_CLIENT_INCLUDE_INI_API_H_
+
+#include <vehicle_service/positioning_base_library.h>
+
+/*
+***** DEFINE *****
+*/
+
+#define INI_EXTMEM_DUM 0 /* Message buffer header extension member */
+
+/* Return value */
+#define INI_SUCCESS 0 /* Normal */
+#define INI_FALSE (-1) /* Fail */
+#define INI_ERRNOTRDY (-2) /* No destination process(Not wakeup) */
+
+/* Stage start completion notification ID related Note: ACC-OFF process completion notification is also used. */
+#define GINI_COMPID_INI 0x00000000 /* Initial value of completion notification ID */
+#define GINI_COMPID_MASK 0x80000000 /* Completion notification ID mask value(Startup completion or for event completion determination) */
+
+/* ID for Phase Start Event Completion Notification */
+
+#define INI_INITCOMP_BTCOM_PRT 0x80000001 /* BT Communication Protocol Thread Startup Complete */
+#define INI_INITCOMP_BTCOM_MNG 0x80000002 /* BT Communication Protocol Thread Startup Complete */
+#define INI_INITCOMP_BTCOM_RCV 0x80000004 /* BT Communication Protocol Thread Startup Complete */
+#define INI_INITCOMP_MC_UPCHK 0x80000008 /* To receive the confirmation notice of connection between microcomputers */
+
+/************************************************************************
+ ID for Phase Start Event Completion Notification (For VUP)
+ ************************************************************************/
+#define INI_FWRDCOMP__CWORD24_ 0x80000008 /* _CWORD24_ transmission completed */
+#define INI_FWRDCOMP_VUP 0x80000010 /* VUPLoader transmission completed */
+#define INI_INITCOMP_MFT 0x80000020 /* Module transfer thread start completion */
+#define INI_INITCOMP_UPCHK 0x80000040 /* Receive Start Type Confirmation Notification */
+
+/* ID for Phase ACC-OFF Event Completion Notification ID */
+
+/* Boot phase */
+/*************************************************************************
+ Note: Maintenance Precautions*
+ Initial only affects the addition and deletion of startup parameters.
+ For addition or deletion of shared memory creation,The primary of each process is also affected
+*************************************************************************/
+/* --->CHG */
+enum IniStep {
+ GINI_STEPFORK_INI = 0, /* Initial state */
+ GINI_STEPFORK_COMMEM, /* Shared Memory Generation */
+ GINI_STEPFORK_FIRST, /* First start */
+ GINI_STEPFORK_SECOND, /* 2nd start */
+ GINI_STEPFORK_THIRD, /* 3rd start */
+ GINI_STEPFORK_FOURTH, /* 4th start */
+ GINI_STEPFORK_BUPCHK, /* Backup Data Check/Initialization */
+ GINI_STEPFORK_FIFTH, /* 5th start */
+ GINI_STEPFORK_SIXTH, /* 6th start */
+ GINI_STEPFORK_SEVENTH, /* 7th start */
+ GINI_STEPFORK_EIGHTH, /* 8th start */
+ GINI_STEPFORK_NINTH, /* 9th start */
+ GINI_STEPFORK_TENTH, /* 10th start */
+ GINI_STEPFORK_ELEVENTH, /* 11th start */
+ GINI_STEPFORK_TWELFTH, /* 12th start */
+ GINI_STEPFORK_THIRTEENTH, /* 13th start */
+ GINI_STEPFORK_FOURTEENTH, /* 14th start */
+ GINI_STEPFORK_FIFTEENTH, /* 15th Start */
+ GINI_STEPFORK_SIXTEENTH, /* 16th start */
+ GINI_STEPFORK_SEVENTEENTH, /* 17th Start */
+ GINI_STEPFORK_EIGHTEENTH, /* 18th Start */
+ GINI_STEPFORK_MAX /* Total number of startup phases */
+};
+/* <--- CHG */
+
+/* ACC-OFF phase */
+enum AccOffStep {
+ GINI_ACCOFF_INI = 0, /* Early stage(Normal state) */
+ GINI_ACCOFF_FIRST, /* Stage 1 */
+ GINI_ACCOFF_SECOND, /* Step 2 */
+ GINI_ACCOFF_THIRD, /* Step 3 */
+ GINI_ACCOFF_FOURTH, /* Step 4 */
+ GINI_ACCOFF_FIFTH, /* Step 5 */
+ GINI_ACCOFF_MAX /* Total number of ACC-OFF steps */
+};
+
+/* Backup data check process type */
+enum IniDramBkup {
+ INI_BUPCHK_SRAM_INIT = 0, /* Initialization of SRAM */
+ INI_BUPCHK_SRAM_CHK, /* SRAM range-checking process */
+ INI_BUPCHK_USER_INIT, /* Initialization of personal information */
+ INI_BUPCHK_DRAM_INIT /* Initializing DRAM backups */
+};
+
+/* ---> */
+/*************************************************
+ Startup identification
+*************************************************/
+enum {
+ INI_CND_UNSET = 0, /* Startup identification value not set */
+ INI_CND_UNKNOWN, /* Startup identification unknown */
+ INI_CND_CLSTART, /* COLD START */
+ INI_CND_HTSTART, /* HOT START */
+ INI_CND_ERRRESET, /* Error Reset */
+ INI_CND_USERCL /* User-specified COLD */
+};
+
+/*************************************************
+ Startup Security State
+*************************************************/
+enum {
+ INI_ANTITHEFT_UNSET = 0, /* Not set condition */
+ INI_ANTITHEFT_UNLOCK, /* Unlocked status */
+ INI_ANTITHEFT_LOCK, /* Lock state */
+ INI_ANTITHEFT_INITIAL /* Initial state(Not used) */
+};
+
+/*************************************************
+ Version upgrade completion information
+*************************************************/
+enum {
+ INI_VUP_INFO_UNSET = 0, /* VUP information not set */
+ INI_VUP_INFO_NORMAL, /* VUP Information Normal(VUP not executed) */
+ INI_VUP_INFO_ERROR, /* VUP information error(VUP incomplete) */
+ INI_VUP_INFO_VUPFIN /* Completion of VUP information */
+};
+
+/*************************************************
+ +B Disconnect Information
+*************************************************/
+enum {
+ INI_BATTERY_INFO_UNSET = 0, /* +B Information not set */
+ INI_BATTERY_INFO_NORMAL, /* +B Information Normal(no disconnected) */
+ INI_BATTERY_INFO_DISCON /* +B Information with disconnected */
+};
+
+/*************************************************
+ User information initialization information
+*************************************************/
+enum {
+ INI_INITUSERDAT_UNSET = 0, /* User information not set */
+ INI_INITUSERDAT_ON, /* Personal Information Initialization Status Setting ON */
+ INI_INITUSERDAT_OFF /* Personal information initialization status setting OFF */
+};
+
+/*************************************************
+ DRAM back-up status at startup
+*************************************************/
+enum {
+ INI_DRAMBKUP_UNSET = 0, /* DRAM back-up status not set */
+ INI_DRAMBKUP_OK, /* DRAM back-up status OK */
+ INI_DRAMBKUP_NG /* DRAM backup status NG */
+};
+
+/****** STRUCT ******/
+/*************************************************
+ Startup system information
+*************************************************/
+typedef struct {
+ u_int8 boot_type; /* Startup identification */
+ u_int8 security_sts; /* Startup Security State */
+ u_int8 vup_info; /* Version upgrade completion information */
+ u_int8 battery_off_info; /* +B Disconnect Information */
+ u_int8 usrdat_init_info; /* User data initialization information */
+ u_int8 dram_bup_sts; /* DRAM back-up status */
+ u_int8 reserve[2]; /* Reserved */
+ u_int32 boot_time; /* Passed Time */
+} T_INI_BOOTINFO;
+
+/* <--- */
+
+/*
+***** STRUCTURE *****
+*/
+/******************************************************************************
+* TAG : T_PRIM_FORKCOMP
+* ABSTRACT : Stage-up completion notification structure
+* NOTE : Body portion of messages generated from API (Staged Start Completion Notification)
+******************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER head; /* Message buffer header */
+ u_int32 id; /* ID for start phase completion notification */
+} T_PRIM_FORKCOMP;
+
+/******************************************************************************
+* TAG : T_PRIM_ACCOFFSTART
+* ABSTRACT : Structures for ACC-OFF Process Instructions
+* NOTE : Body of messages generated from API(ACC-OFF process instructions)
+******************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER head; /* Message buffer header */
+ u_int32 id; /* ID for start phase completion notification */
+} T_PRIM_ACCOFFSTART;
+
+/******************************************************************************
+* TAG : T_PRIM_ACCOFFCOMP
+* ABSTRACT : Structures for notifying completion of ACC-OFF process
+* NOTE : Main body of messages generated from API(ACC-OFF process completion notification)
+******************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER head; /* Message buffer header */
+ u_int32 id; /* Identifier for notifying completion of ACC-OFF process */
+} T_PRIM_ACCOFFCOMP;
+
+/******************************************************************************
+* TAG : T_PRIM_INTERNAL_ACCOFFSTART
+* ABSTRACT : Structures for in-function ACC-OFF indication
+* NOTE : Body portion of messages generated from API (notification of completion of ACC-OFF process in function)
+******************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER head; /* Message buffer header */
+ u_int32 id; /* Identifier for notifying completion of ACC-OFF process */
+} T_PRIM_INTERNAL_ACCOFFSTART;
+
+/******************************************************************************
+* TAG : T_PRIM_INTERNAL_ACCOFFCOMP
+* ABSTRACT : Structures for notifying completion of ACC-OFF in functions
+* NOTE : Body portion of messages generated from NOTEAPI (notification of completion of ACC-OFF process in function)
+******************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER head; /* Message buffer header */
+ u_int32 id; /* Identifier for notifying completion of ACC-OFF process */
+} T_PRIM_INTERNAL_ACCOFFCOMP;
+
+/*
+***** PROTOTYPE *****
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int32 IniInternalAccOffComp(PNO pno , u_int32 id);
+void IniNotifyInit_CWORD69_Comp(void);
+void IniWaitInit_CWORD69_Comp(void);
+BOOL IniIsInit_CWORD69_Comp(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_INI_API_H_
diff --git a/vehicleservice/positioning/client/include/Naviinfo_API.h b/vehicleservice/positioning/client/include/Naviinfo_API.h
new file mode 100644
index 00000000..12caa84f
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Naviinfo_API.h
@@ -0,0 +1,110 @@
+/*
+ * @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 Naviinfo_API.h
+@detail Naviinfo_API external header file<BR>
+ Naviinfo_API External Public Header
+******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_NAVIINFO_API_H_
+#define POSITIONING_CLIENT_INCLUDE_NAVIINFO_API_H_
+
+/*****************************************************************************
+ * Include *
+ *****************************************************************************/
+#include <vehicle_service/positioning_base_library.h>
+#include "Sensor_Common_API.h"
+#include "Vehicle_API.h"
+#include "Sensor_API.h"
+#include <vehicle_service/POS_gps_API.h>
+
+/*****************************************************************************
+ * Define *
+ *****************************************************************************/
+/* Command ID Definition */
+#define CID_NAVIINFO_DELIVER (0x0205) /* Navigation information setting CID */
+#define CID_NAVIINFO_SPEED_DELIVER (0x0206) /* Vehicle speed setting CID */
+#define CID_NAVIINFO_SETGPSTIME (0x0207) /* GPS time delivery CID */
+
+/* Positioning Level/GPS Information Positioning Status Information Definition */
+#define NAVIINFO_DIAG_GPS_FIX_STS_NON (0) /* Not fix */
+#define NAVIINFO_DIAG_GPS_FIX_STS_2D (1) /* 2D positioning */
+#define NAVIINFO_DIAG_GPS_FIX_STS_3D (2) /* 3D positioning */
+
+/* Reception status definition */
+#define NAVIINFO_DIAG_GPS_RCV_STS_NOTUSE (0) /* Not used */
+#define NAVIINFO_DIAG_GPS_RCV_STS_SEARCHING (1) /* Searching */
+#define NAVIINFO_DIAG_GPS_RCV_STS_TRACHING (2) /* Tracking in progress */
+#define NAVIINFO_DIAG_GPS_RCV_STS_NOTUSEFIX (3) /* Positioning not used */
+#define NAVIINFO_DIAG_GPS_RCV_STS_USEFIX (4) /* Positioning use */
+
+/* Date and Time Status Definition */
+#define NAVIINFO_NAVI_GPS_TD_STS_NOTFIX (0)
+/* Time not calibrated after receiver reset */
+#define NAVIINFO_NAVI_GPS_TD_STS_RTCBACKUP (1)
+/* Time output by RTC backup(Time Calibration Result)*/
+#define NAVIINFO_NAVI_GPS_TD_STS_FIX (2) /* Time calibration completed */
+
+/* ++ Porting from PastModel002 enabled APIs */
+#define CID_VEHICLEIF_GET_VEHICLE_DATA 0x0102 /* Vehicle sensor information acquisition CID */
+#define CID_VEHICLEIF_COMM_WATCH 0x0103 /* Vehicle Sensor Information Disruption Monitoring CID */
+#define CID_SENSORIF__CWORD82__REQUEST 0x0800 /* Vehicle sensor information setting CID */
+
+#define VEHICLE_RET_ERROR_OUTOF_MEMORY (-8) /* Shared memory allocation failure */
+#define VEHICLE_RET_ERROR_INVALID (-10) /* CANID undetermined */
+
+/* -- Porting from PastModel002 enabled APIs */
+
+/*****************************************************************************
+ * Typedef *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Struct *
+ *****************************************************************************/
+/*****************************************************************************
+ * TAG : NAVIINFO_DELIVER_MSG
+ * ABSTRACT : Navigation information delivery message structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ NAVIINFO_ALL dat; /* Message data section */
+} NAVIINFO_DELIVER_MSG;
+
+/*****************************************************************************
+ * TAG : NAVIINFO_SPEED_DELIVER_MSG
+ * ABSTRACT : Navigation Information (Vehicle Speed) Delivery Message Structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ u_int16 navi_speed; /* Vehicle speed information */
+ u_int8 reserve[2]; /* reserve */
+} NAVIINFO_SPEED_DELIVER_MSG;
+
+/*****************************************************************************
+* Function prototype *
+*****************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int32 VehicleSetVehicleData(PNO pid, VEHICLE_MSG_SEND_DAT *p_data);
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_NAVIINFO_API_H_
diff --git a/vehicleservice/positioning/client/include/POS_common_private.h b/vehicleservice/positioning/client/include/POS_common_private.h
new file mode 100644
index 00000000..4dd98a25
--- /dev/null
+++ b/vehicleservice/positioning/client/include/POS_common_private.h
@@ -0,0 +1,62 @@
+/*
+ * @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
+ * POS_common_private.h
+ * @brief
+ * Definition for Common Internal I/F Liblary
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_POS_COMMON_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_POS_COMMON_PRIVATE_H_
+
+/*---------------------------------------------------------------------------------*
+ * Incluce *
+ *---------------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+/*--- for message ---*/
+/*
+ * Maximum receive message size
+ * - Set the value based on the message receiving buffer size of the local thread
+ */
+#define MAX_MSG_BUF_SIZE (4096)
+
+/* command ID */
+#define CID_POSIF_SET_DATA 0x0790 /* set data command ID */
+
+/*---------------------------------------------------------------------------------*
+ * Typedef declaration *
+ *---------------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------------*
+ * Struct declaration *
+ *---------------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------------*
+ * Prototype Declaration *
+ *---------------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_POS_COMMON_PRIVATE_H_
diff --git a/vehicleservice/positioning/client/include/POS_private.h b/vehicleservice/positioning/client/include/POS_private.h
new file mode 100644
index 00000000..9f022028
--- /dev/null
+++ b/vehicleservice/positioning/client/include/POS_private.h
@@ -0,0 +1,981 @@
+/*
+ * @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
+ * POS_private.h
+ * @brief
+ * Inner functions of Positoning API
+ *
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_POS_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_POS_PRIVATE_H_
+
+/*---------------------------------------------------------------------------------*
+ * Include Files *
+ *---------------------------------------------------------------------------------*/
+#include <vehicle_service/positioning_base_library.h>
+#include <vehicle_service/POS_define.h>
+#include "Vehicle_API_Dummy.h"
+#include "Vehicle_API_private.h"
+#include "Naviinfo_API.h"
+#include "POS_common_private.h"
+#include <asm/unistd.h>
+#include <other_service/VP_GetEnv.h>
+#include <other_service/env_vehicleparameterlibrary.h>
+#include "CommonDefine.h"
+/*---------------------------------------------------------------------------------*
+ * Function Prototype *
+ *---------------------------------------------------------------------------------*/
+/* Shared Library Value Area Check Function */
+inline UNIT_TYPE GetEnvSupportInfo(void);
+inline BOOL ChkUnitType(UNIT_TYPE type);
+inline RET_API MunMapDeviceIo(HANDLE dev, uint32_t map_size);
+inline RET_API MilliSecSleep(uint32_t mill_time);
+inline POS_RET_API PosChkParam8(int8_t data, int8_t min, int8_t max, const char* fn, int32_t line);
+inline POS_RET_API PosChkParam16(int16_t data, int16_t min, int16_t max, const char* fn, int32_t line);
+inline POS_RET_API PosChkParam32(int32_t data, int32_t min, int32_t max, const char* fn, int32_t line);
+inline POS_RET_API PosChkParamU8(uint8_t data, uint8_t min, uint8_t max, const char* fn, int32_t line);
+inline POS_RET_API PosChkParamU16(uint16_t data, uint16_t min, uint16_t max, const char* fn, int32_t line);
+inline POS_RET_API PosChkParamU32(uint32_t data, uint32_t min, uint32_t max, const char* fn, int32_t line);
+
+/* Shared Intra-Library Core Functions */
+inline POS_RET_API PosSetProc(DID did, void *p_data, uint16_t size, uint8_t is_event);
+inline POS_RET_API PosGetProc(DID did, void *p_data, uint16_t dest_size);
+inline SENSOR_RET_API PosRegisterListenerProc(PCSTR notify_name,
+ DID did, u_int8 ctrl_flg, u_int8 delivery_timing);
+
+/* General Functions in Shared Libraries */
+inline EventID VehicleCreateEvent(PNO pno);
+inline RET_API VehicleDeleteEvent(EventID event_id);
+inline RET_API VehicleLinkShareData(void **share_top, uint32_t *share_size, uint16_t *offset);
+inline RET_API VehicleUnLinkShareData(VEHICLE_SHARE *share_top, uint16_t offset);
+inline RET_API VehicleSndMsg(PNO pno_src, PNO pno_dest, CID cid, uint16_t msg_len, const void *msg_data);
+inline BOOL VehicleGetResource(void);
+inline void VehicleReleaseResource(void);
+inline uint32_t GetTid(void);
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+#define POS_CHKPARAM8(data, min, max) PosChkParam8(data, min, max, __func__, __LINE__)
+#define POS_CHKPARAM16(data, min, max) PosChkParam16(data, min, max, __func__, __LINE__)
+#define POS_CHKPARAM32(data, min, max) PosChkParam32(data, min, max, __func__, __LINE__)
+#define POS_CHKPARAMU8(data, min, max) PosChkParamU8(data, min, max, __func__, __LINE__)
+#define POS_CHKPARAMU16(data, min, max) PosChkParamU16(data, min, max, __func__, __LINE__)
+#define POS_CHKPARAMU32(data, min, max) PosChkParamU32(data, min, max, __func__, __LINE__)
+#define POS_API_TIME_OUT_MS 5000 /* Timeout period(ms) */
+
+/*---------------------------------------------------------------------------------*
+ * Inline Functions *
+ *---------------------------------------------------------------------------------*/
+UNIT_TYPE GetEnvSupportInfo(void) {
+ UNIT_TYPE ret_type = UNIT_TYPE_GRADE1;
+
+ char env_area[VP_MAX_LENGTH];
+ char env_grade[VP_MAX_LENGTH];
+ char* p_env_grade = env_grade;
+ char* p_env_area = env_area;
+
+ /*
+ * Note.
+ * This feature branches processing depending on the area and grade type.
+ */
+
+ VP_GetEnv(VP_VEHICLEPARAMETERLIBRARY_AREA, p_env_area);
+
+ if (0 == strcmp(p_env_area, "AREA1")) {
+ ret_type = UNIT_TYPE_GRADE2;
+ } else if (0 == strcmp(p_env_area, "AREA2")) {
+ memset(&env_grade, 0x00, sizeof(env_grade));
+ VP_GetEnv(VP_VEHICLEPARAMETERLIBRARY_GRADE, p_env_grade);
+ if (0 == strcmp(p_env_grade, "_CWORD95_") ||
+ 0 == strcmp(p_env_grade, "_CWORD101_") ||
+ 0 == strcmp(p_env_grade, "_CWORD61_")) {
+ ret_type = UNIT_TYPE_GRADE2;
+ }
+ } else {
+ // NOP
+ }
+
+ return ret_type;
+}
+
+BOOL ChkUnitType(UNIT_TYPE type) {
+ UNIT_TYPE type_temp;
+ BOOL ret;
+
+ type_temp = GetEnvSupportInfo();
+ if ((type_temp & type) != 0) {
+ ret = TRUE;
+ } else {
+ ret = FALSE;
+ }
+
+ return ret;
+}
+
+RET_API MunMapDeviceIo(HANDLE dev, uint32_t map_size) {
+ return RET_NORMAL;
+}
+
+RET_API MilliSecSleep(uint32_t mill_time) {
+ switch (mill_time) {
+ case 0:
+ {
+ /* Discard the time slice */
+ sched_yield();
+ break;
+ }
+ case INFINITE:
+ {
+ /* Abort processing indefinitely */
+ while (1) {
+ sleep(INFINITE);
+ }
+ }
+ default:
+ /* Sleep for Specified Time */
+ usleep(mill_time * 1000);
+ break;
+ }
+
+ return RET_NORMAL;
+}
+
+/**
+ * @brief
+ * Data Valid Value Determination(int8)
+ *
+ * @param[in] date int8_t Object data
+ * @param[in] min int8_t Target Data Valid Value Range(Minimum value)
+ * @param[in] max int8_t Target Data Valid Value Range(Maximum value)
+ * @param[in] fn const char* Pointer to the function name
+ * @param[in] line int32_t Number of lines
+ *
+ * @return POS_RET_NORMAL Within the valid range<br>
+ * POS_RET_ERROR Out of scope<br>
+ * POS_RET_ERROR_PARAM Argument error
+ */
+inline POS_RET_API PosChkParam8(int8_t data, int8_t min, int8_t max, const char* fn, int32_t line) {
+ POS_RET_API ret = POS_RET_NORMAL;
+
+ if (fn == NULL) {
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Argument ERROR!! fn=%p", fn);
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ if ((data < min) || (max < data)) {
+ ret = POS_RET_ERROR;
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
+ "%s/%d/Out of range!! data=%d[%d, %d]",
+ fn, line, data, min, max);
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Data Valid Value Determination(int16)
+ *
+ * @param[in] date int16_t Object data
+ * @param[in] min int16_t Target Data Valid Value Range(Minimum value)
+ * @param[in] max int16_t Target Data Valid Value Range(Maximum value)
+ * @param[in] fn const char* Pointer to the function name
+ * @param[in] line int32_t Number of lines
+ *
+ * @return POS_RET_NORMAL Within the valid range<br>
+ * POS_RET_ERROR Out of scope<br>
+ * POS_RET_ERROR_PARAM Argument error
+ */
+inline POS_RET_API PosChkParam16(int16_t data, int16_t min, int16_t max, const char* fn, int32_t line) {
+ POS_RET_API ret = POS_RET_NORMAL;
+
+ if (fn == NULL) {
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Argument ERROR!! fn=%p", fn);
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ if ((data < min) || (max < data)) {
+ ret = POS_RET_ERROR;
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
+ "%s/%d/Out of range!! data=%d[%d, %d]",
+ fn, line, data, min, max);
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Data Valid Value Determination(int32)
+ *
+ * @param[in] date int32_t Object data
+ * @param[in] min int32_t Target Data Valid Value Range(Minimum value)
+ * @param[in] max int32_t Target Data Valid Value Range(Maximum value)
+ * @param[in] fn const char* Pointer to the function name
+ * @param[in] line int32_t Number of lines
+ *
+ * @return POS_RET_NORMAL Within the valid range<br>
+ * POS_RET_ERROR Out of scope<br>
+ * POS_RET_ERROR_PARAM Argument error
+ */
+inline POS_RET_API PosChkParam32(int32_t data, int32_t min, int32_t max, const char* fn, int32_t line) {
+ POS_RET_API ret = POS_RET_NORMAL;
+
+ if (fn == NULL) {
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Argument ERROR!! fn=%p", fn);
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ if ((data < min) || (max < data)) {
+ ret = POS_RET_ERROR;
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
+ "%s/%d/Out of range!! data=%d[%d, %d]",
+ fn, line, data, min, max);
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Data Valid Value Determination(unsigned int8)
+ *
+ * @param[in] date uint8_t Object data
+ * @param[in] min uint8_t Target Data Valid Value Range(Minimum value)
+ * @param[in] max uint8_t Target Data Valid Value Range(Maximum value)
+ * @param[in] fn const char* Pointer to the function name
+ * @param[in] line int32_t Number of lines
+ *
+ * @return POS_RET_NORMAL Within the valid range<br>
+ * POS_RET_ERROR Out of scope<br>
+ * POS_RET_ERROR_PARAM Argument error
+ */
+inline POS_RET_API PosChkParamU8(uint8_t data, uint8_t min, uint8_t max, const char* fn, int32_t line) {
+ POS_RET_API ret = POS_RET_NORMAL;
+
+ if (fn == NULL) {
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Argument ERROR!! fn=%p", fn);
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ if ((data < min) || (max < data)) {
+ ret = POS_RET_ERROR;
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
+ "%s/%d/Out of range!! data=%u[%u, %u]",
+ fn, line, data, min, max);
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Data Valid Value Determination(unsigned int16)
+ *
+ * @param[in] date uint16_t Object data
+ * @param[in] min uint16_t Target Data Valid Value Range(Minimum value)
+ * @param[in] max uint16_t Target Data Valid Value Range(Maximum value)
+ * @param[in] fn const char* Pointer to the function name
+ * @param[in] line int32_t Number of lines
+ *
+ * @return POS_RET_NORMAL Within the valid range<br>
+ * POS_RET_ERROR Out of scope<br>
+ * POS_RET_ERROR_PARAM Argument error
+ */
+inline POS_RET_API PosChkParamU16(uint16_t data, uint16_t min, uint16_t max, const char* fn, int32_t line) {
+ POS_RET_API ret = POS_RET_NORMAL;
+
+ if (fn == NULL) {
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Argument ERROR!! fn=%p", fn);
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ if ((data < min) || (max < data)) {
+ ret = POS_RET_ERROR;
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
+ "%s/%d/Out of range!! data=%u[%u, %u]",
+ fn, line, data, min, max);
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Data Valid Value Determination(unsigned int32)
+ *
+ * @param[in] date uint32_t Object data
+ * @param[in] min uint32_t Target Data Valid Value Range(Minimum value)
+ * @param[in] max uint32_t Target Data Valid Value Range(Maximum value)
+ * @param[in] fn const char* Pointer to the function name
+ * @param[in] line int32_t Number of lines
+ *
+ * @return POS_RET_NORMAL Within the valid range<br>
+ * POS_RET_ERROR Out of scope<br>
+ * POS_RET_ERROR_PARAM Argument error
+ */
+inline POS_RET_API PosChkParamU32(uint32_t data, uint32_t min, uint32_t max, const char* fn, int32_t line) {
+ POS_RET_API ret = POS_RET_NORMAL;
+
+ if (fn == NULL) {
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Argument ERROR!! fn=%p", fn);
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ if ((data < min) || (max < data)) {
+ ret = POS_RET_ERROR;
+ FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
+ "%s/%d/Out of range!! data=%u[%u, %u]",
+ fn, line, data, min, max);
+ }
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Data setting process(Internal processing)
+ *
+ * Set the specified information
+ *
+ * @param[in] did DID - Data ID
+ * @param[in] p_data void* - Configuration data
+ * @param[in] size uint16_t - Setting data size
+ * @param[in] is_event uint8_t - Event wait status(TRUE/FALSE)
+ *
+ * @return POS_RET_NORMAL Normal completion(Include illegal)<br>
+ * POS_RET_ERROR_PARAM Parameter error<br>
+ * POS_RET_ERROR_INNER Internal error
+ */
+inline POS_RET_API PosSetProc(DID did, void *p_data, uint16_t size, uint8_t is_event) {
+ POS_RET_API ret = POS_RET_NORMAL; /* Return value of this function */
+ RET_API ret_api = RET_NORMAL; /* API return value */
+ POS_MSGINFO snd_msg; /* Message */
+ EventID event_id; /* Event ID */
+ int32_t event_val; /* Event value */
+ PNO pno; /* Calling thread PNO */
+ uint32_t pid; /* Process ID */
+ uint32_t tid; /* Thread ID */
+ char name[128];
+
+ /* Data size check */
+ if (POS_MSG_INFO_DSIZE < size) {
+ ret = POS_RET_ERROR_PARAM;
+ } else {
+ /* Resource acquisition */
+ if (VehicleGetResource() == TRUE) {
+ /* Message data */
+ /* _CWORD71_ processing speed(Memset modification) */
+ /* Initialization of areas that do not contain values */
+ snd_msg.pno = 0;
+ snd_msg.rcv_flag = 0;
+ snd_msg.reserve = 0;
+
+ snd_msg.did = did;
+ snd_msg.size = size;
+ memcpy(snd_msg.data, p_data, size);
+
+ if (TRUE == is_event) {
+ /* After requesting data setting,Wait for the setting completion(Event Wait) */
+
+ /* Event Generation */
+ pid = static_cast<uint32_t>(getpid());
+ tid = GetTid();
+
+ snprintf(name, sizeof(name), "PS_p%u_t%u", pid, tid);
+ pno = _pb_CnvName2Pno(name);
+ event_id = VehicleCreateEvent(pno);
+
+ /* Set the source Pno of message data */
+ snd_msg.pno = pno;
+
+ if (0 != event_id) {
+ /* Successful event generation */
+
+ /* Send NAVI Sensor Data Setting to Vehicle Sensor */
+ ret_api = VehicleSndMsg(pno,
+ PNO_VEHICLE_SENSOR,
+ CID_POSIF_SET_DATA,
+
+ (uint16_t)sizeof(POS_MSGINFO) - POS_MSG_INFO_DSIZE + snd_msg.size, /* variable length */
+ (const void *)&snd_msg);
+
+ if (RET_NORMAL == ret_api) {
+ /* If the data setup process is successful,Wait for a completion event */
+ ret_api = _pb_WaitEvent(event_id,
+ SAPI_EVWAIT_VAL,
+ VEHICLE_RET_ERROR_MIN,
+ VEHICLE_RET_NORMAL, &event_val, POS_API_TIME_OUT_MS);
+ if (RET_NORMAL != ret_api) {
+ /* Return an internal error */
+ ret = POS_RET_ERROR_INNER;
+ } else {
+ /* Return from Event Wait */
+ /* Set event value (processing result) as return value */
+ ret = (POS_RET_API)event_val;
+ }
+ } else {
+ /* Message transmission processing failed */
+ ret = POS_RET_ERROR_INNER;
+ }
+ /* Event deletion */
+ ret_api = VehicleDeleteEvent(event_id);
+ } else {
+ /* Event generation failure */
+ ret = POS_RET_ERROR_INNER;
+ }
+ } else {
+ /* After setting data,Immediate termination */
+
+ /* Send NAVI Sensor Data Setting to Vehicle Sensor */
+ ret_api = _pb_SndMsg_Ext(POS_THREAD_NAME,
+ CID_POSIF_SET_DATA,
+ sizeof(POS_MSGINFO), reinterpret_cast<void*>(&snd_msg), 0);
+ if (ret_api != RET_NORMAL) {
+ /* Message transmission failure */
+ ret = POS_RET_ERROR_INNER;
+ }
+ }
+ } else {
+ /* Insufficient resource */
+ ret = POS_RET_ERROR_RESOURCE;
+ }
+ /* Resource release */
+ VehicleReleaseResource();
+ }
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Sensor information acquisition(Internal processing)
+ *
+ * @param[in] did DID - Data ID for vehicle information
+ * @param[in] p_data void* - Pointer representing the storage destination of vehicle sensor information
+ * @param[in] dest_size uint16_t - Storage destination size of vehicle sensor information(byte)
+ *
+ * @return 0 or more Stored data size(Include illegal)<br>
+ * POS_RET_ERROR_CREATE_EVENT Event generation failure<br>
+ * POS_RET_ERROR_OUTOF_MEMORY Shared memory allocation failed<br>
+ * POS_RET_ERROR_SIZE Storage destination size error<br>
+ * POS_RET_ERROR_DID Unregistered ID<br>
+ */
+inline POS_RET_API PosGetProc(DID did, void *p_data, uint16_t dest_size) {
+ POS_RET_API ret; /* Return value */
+ RET_API ret_api; /* System API return value */
+ EventID event_id; /* Event ID */
+ int32_t event_val; /* Event value */
+ void *share_top; /* Start address of shared memory */
+ uint32_t share_size; /* Size of shared memory area */
+ uint16_t offset; /* Offset to free shared memory area */
+ VEHICLE_SHARE_BLOCK_DAT *share_dat; /* Address of free shared memory area */
+ VEHICLE_MSG_GET_VEHICLE_DATA_DAT data; /* Message data */
+ PNO pno; /* Calling thread PNO */
+ uint32_t pid; /* Process ID */
+ uint32_t tid; /* Thread ID */
+ char name[128];
+
+ /* Resource acquisition */
+ if (VehicleGetResource() == TRUE) {
+ /* Initialization */
+ event_id = 0;
+ event_val = 0;
+ memset(reinterpret_cast<void *>(&data), 0, sizeof(VEHICLE_MSG_GET_VEHICLE_DATA_DAT));
+
+ /* Event Generation */
+ pid = static_cast<uint32_t>(getpid());
+ tid = GetTid();
+
+ snprintf(name, sizeof(name), "PG_p%u_t%u", pid, tid);
+ pno = _pb_CnvName2Pno(name);
+ event_id = VehicleCreateEvent(pno);
+
+ if (0 != event_id) {
+ /* Successful event generation */
+
+ /* Allocate shared memory */
+ ret_api = VehicleLinkShareData(reinterpret_cast<void **>(&share_top), &share_size, &offset);
+ if (RET_NORMAL != ret_api) {
+ /* Failed to allocate shared memory */
+ ret = POS_RET_ERROR_OUTOF_MEMORY;
+ } else { /* When the shared memory is allocated successfully */
+ /* Calculate start address of free shared memory area */
+ share_dat = reinterpret_cast<VEHICLE_SHARE_BLOCK_DAT *>(reinterpret_cast<u_int8 *>(share_top)
+ + offset);
+
+ /* Send vehicle sensor information acquisition message */
+ data.did = did;
+ data.pno = pno;
+ data.offset = offset;
+ data.size = VEHICLE_SHARE_BLOCK_DSIZE;
+
+ /* Messaging */
+ ret_api = VehicleSndMsg(pno,
+ PNO_VEHICLE_SENSOR,
+ CID_VEHICLEIF_GET_VEHICLE_DATA,
+ sizeof(VEHICLE_MSG_GET_VEHICLE_DATA_DAT), (const void *)&data);
+
+ /* Message transmission processing is successful */
+ if (RET_NORMAL == ret_api) {
+ /* Wait for completion event from vehicle sensor thread */
+ ret_api = _pb_WaitEvent(event_id,
+ SAPI_EVWAIT_VAL,
+ VEHICLE_RET_ERROR_MIN,
+ VEHICLE_RET_NORMAL, &event_val, POS_API_TIME_OUT_MS);
+
+ if (RET_NORMAL != ret_api) {
+ /* Return an internal error */
+ ret = POS_RET_ERROR_INNER;
+ } else { /* Return from Event Wait */
+ /* Link to shared memory */
+ ret_api = _pb_LinkShareData(const_cast<char *>(VEHICLE_SHARE_NAME),
+ &share_top, &share_size);
+
+ /* Calculate the address of the shared memory storage area. */
+ share_dat = reinterpret_cast<VEHICLE_SHARE_BLOCK_DAT *>(reinterpret_cast<u_int8 *>(share_top)
+ + offset);
+
+ if (event_val < 0) {
+ /* Vehicle sensor information acquisition failure */
+ ret = (VEHICLE_RET_API)event_val;
+ } else if (RET_NORMAL != ret_api) {
+ /* Shared memory error */
+ ret = POS_RET_ERROR_OUTOF_MEMORY;
+ } else if (dest_size < share_dat->size) {
+ /* Storage destination size error */
+ ret = POS_RET_ERROR_SIZE;
+ } else { /* Vehicle sensor information acquisition success */
+ /* Copy from shared memory to user memory */
+ memcpy(p_data, share_dat->data, (size_t)share_dat->size);
+
+ /* Set Write Size to Return Value */
+ ret = static_cast<int32>(share_dat->size);
+ }
+ }
+ } else { /* Message transmission processing failed */
+ /* Return an event generation failure */
+ ret = POS_RET_ERROR_CREATE_EVENT;
+ }
+ /* Free shared memory */
+ (void)VehicleUnLinkShareData(reinterpret_cast<VEHICLE_SHARE*>(share_top), offset);
+ }
+ /* Event deletion */
+ ret_api = VehicleDeleteEvent(event_id);
+ } else {
+ /* Event generation failure */
+ ret = POS_RET_ERROR_CREATE_EVENT;
+ }
+ } else {
+ /* Insufficient resource */
+ ret = POS_RET_ERROR_RESOURCE;
+ }
+ /* Resource release */
+ VehicleReleaseResource();
+
+ return ret;
+}
+
+/**
+ * @brief
+ * Delivery registration process(Internal processing)
+ *
+ * @param[in] notify_name Destination thread name
+ * @param[in] did Pointer to an array of data IDs for vehicle information
+ * @param[in] ctrl_flg Delivery control<br>
+ * Delivery registration: SENSOR_DELIVERY_REGIST<br>
+ * Delivery stop: SENSOR_DELIVERY_STOP (Note: Not mounted)<br>
+ * Resume delivery: SENSOR_DELIVERY_RESTART (Note: Not mounted)
+ * @param[in] delivery_timing Delivery timing<br>
+ * Updating : SENSOR_DELIVERY_TIMING_UPDATE<br>
+ * Changing : SENSOR_DELIVERY_TIMING_CHANGE
+ *
+ * @return SENSOR_RET_NORMAL Successful registration<br>
+ * SENSOR_RET_ERROR_CREATE_EVENT Event generation failure<br>
+ * SENSOR_RET_ERROR_PARAM Parameter error<br>
+ * SENSOR_RET_ERROR_DID Unregistered ID<br>
+ * SENSOR_RET_ERROR_BUFFULL FULL of delivery registers<br>
+ * SENSOR_RET_ERROR_INNER Internal abnormality<br>
+ */
+inline SENSOR_RET_API PosRegisterListenerProc(PCSTR notify_name, DID did, u_int8 ctrl_flg, u_int8 delivery_timing) {
+ SENSOR_RET_API ret; /* Return value */
+ RET_API ret_api; /* System API return value */
+ EventID event_id; /* Event ID */
+ int32 event_val; /* Event value */
+ VEHICLE_MSG_DELIVERY_ENTRY_DAT data; /* Message data */
+ PNO pno; /* Converted internal PNO */
+
+ /* Resource acquisition */
+ if (VehicleGetResource() == TRUE) {
+ /* Initialization */
+ event_id = 0;
+ event_val = 0;
+
+ /* Get PNO from Thread Name */
+ pno = _pb_CnvName2Pno(notify_name);
+
+ /* Event Generation */
+ event_id = VehicleCreateEvent(pno);
+
+ if (0 != event_id) {
+ /* Successful event generation */
+
+ /*--------------------------------------------------------------*
+ * Send Vehicle Sensor Information Delivery Registration Message *
+ *--------------------------------------------------------------*/
+ /* Create Message Data */
+ data.did = did;
+ data.pno = pno;
+ data.delivery_timing = delivery_timing;
+ data.ctrl_flg = ctrl_flg;
+ data.event_id = event_id;
+
+ /* Messaging */
+ ret_api = VehicleSndMsg(pno,
+ PNO_VEHICLE_SENSOR,
+ CID_VEHICLEIF_DELIVERY_ENTRY,
+ (uint16_t)sizeof(VEHICLE_MSG_DELIVERY_ENTRY_DAT), (const void *)&data);
+
+ if (RET_NORMAL == ret_api) {
+ /* Message transmission processing is successful */
+ /* Wait for completion event from vehicle sensor thread */
+ ret_api = _pb_WaitEvent(event_id,
+ SAPI_EVWAIT_VAL,
+ VEHICLE_RET_ERROR_MIN,
+ VEHICLE_RET_NORMAL, &event_val, POS_API_TIME_OUT_MS);
+ if (RET_NORMAL != ret_api) {
+ /* Return an internal error */
+ ret = SENSOR_RET_ERROR_INNER;
+ } else {
+ /* Return from Event Wait */
+ /* Set event value (processing result) as return value */
+ ret = (SENSOR_RET_API)event_val;
+ }
+ } else {
+ /* Message transmission processing failed */
+ /* Return an internal error */
+ ret = SENSOR_RET_ERROR_INNER;
+ }
+ /* Event deletion */
+ ret_api = VehicleDeleteEvent(event_id);
+ } else {
+ /* Event generation failure */
+ ret = SENSOR_RET_ERROR_CREATE_EVENT;
+ }
+ } else {
+ /* Insufficient resource */
+ ret = SENSOR_RET_ERROR_RESOURCE;
+ }
+ /* Resource release */
+ VehicleReleaseResource();
+
+ return ret;
+}
+
+/*******************************************************************************
+ * MODULE : VehicleCreateEvent
+ * ABSTRACT : Event creation process
+ * FUNCTION : Generate an event
+ * ARGUMENT : pno : Thread ID
+ * NOTE :
+ * RETURN : Non-zero : Event ID
+ * : Zero : Event generation failure
+ ******************************************************************************/
+inline EventID VehicleCreateEvent(PNO pno) {
+ EventID event_id; /* Event ID */
+ char event_name[32]; /* Event name character string buffer */
+ RET_API ret_api; /* System API return value */
+
+
+ /* Initialization of event name character string buffer */
+ memset(reinterpret_cast<void *>(event_name), 0, sizeof(event_name));
+ /* Event name creation */
+ snprintf(event_name, sizeof(event_name), "VEHICLE_%X", pno);
+
+ /* Event Generation */
+ event_id = _pb_CreateEvent(FALSE, 0, event_name);
+
+ if (0 != event_id) {
+ /* For successful event generation */
+
+ /* Initialize the event */
+ ret_api = _pb_SetEvent(event_id, SAPI_EVSET_ABSOLUTE, VEHICLE_EVENT_VAL_INIT);
+ if (RET_NORMAL != ret_api) {
+ /* Event initialization failed */
+ /* Delete Event and Return Event Generation Failed */
+ ret_api = VehicleDeleteEvent(event_id);
+ event_id = 0;
+ }
+ }
+
+ return(event_id);
+}
+
+/*******************************************************************************
+ * MODULE : VehicleDeleteEvent
+ * ABSTRACT : Event deletion processing
+ * FUNCTION : Delete events
+ * ARGUMENT : event_id : Event ID of the event to delete
+ * NOTE :
+ * RETURN : RET_NORMAL : Normal completion
+ * : RET_EV_NONE : Specified event does not exist
+ ******************************************************************************/
+inline RET_API VehicleDeleteEvent(EventID event_id) {
+ return(_pb_DeleteEvent(event_id));
+}
+
+/*******************************************************************************
+ * MODULE : VehicleLinkShareData
+ * ABSTRACT : Link to shared memory
+ * FUNCTION : Link to shared memory
+ * ARGUMENT : **share_top : Storage destination of shared memory top address
+ * : *share_size : Storage destination of shared memory area size
+ * : *offset : Offset storage destination to free shared memory area
+ * NOTE :
+ * RETURN : RET_NORMAL : Normal completion
+ * : RET_ERROR : There is no shared memory area.
+ ******************************************************************************/
+inline RET_API VehicleLinkShareData(void **share_top, uint32_t *share_size, uint16_t *offset) {
+ RET_API ret_api; /* System API return value */
+ SemID sem_id; /* Semaphore ID */
+ VEHICLE_SHARE *share_top_tmp;
+ int32 i;
+
+ /* Initialization */
+ ret_api = RET_ERROR;
+
+ /* Create Semaphore */
+ sem_id = _pb_CreateSemaphore(const_cast<char *>(VEHICLE_SEMAPHO_NAME));
+ if (0 != sem_id) {
+ /* Semaphore Lock */
+ ret_api = _pb_SemLock(sem_id);
+ if (RET_NORMAL == ret_api) {
+ /* Link to shared memory */
+ ret_api = _pb_LinkShareData(const_cast<char *>(VEHICLE_SHARE_NAME), share_top, share_size);
+ if (RET_NORMAL == ret_api) {
+ /* By searching the free shared memory area,Offset is calculated if there is free space. */
+ share_top_tmp = reinterpret_cast<VEHICLE_SHARE *>(*share_top);
+
+ /* Because the first block of the shared memory area is the control area,Loop from i = 1 */
+ for (i = 1; i < VEHICLE_SHARE_BLOCK_NUM; i++) {
+ if (VEHICLE_SHARE_UNLOCK == share_top_tmp->mng.lock_info[i]) {
+ break;
+ }
+ }
+ if (i < VEHICLE_SHARE_BLOCK_NUM) {
+ /* Empty space */
+ /* Lock the block */
+ share_top_tmp->mng.lock_info[i] = VEHICLE_SHARE_LOCK;
+
+ /* Calculate the offset to the block */
+ *offset = static_cast<u_int16>(i * VEHICLE_SHARE_BLOCK_SIZE);
+
+ /* Normal completion */
+ ret_api = RET_NORMAL;
+ } else {
+ /* No free space */
+ ret_api = RET_ERROR;
+ }
+ } else {
+ /* Failed link to shared memory */
+ ret_api = RET_ERROR;
+ }
+ /* Semaphore unlock */
+ _pb_SemUnlock(sem_id);
+ } else {
+ /* Semaphore lock failed */
+ ret_api = RET_ERROR;
+ }
+ } else {
+ /* Semaphore creation failed */
+ ret_api = RET_ERROR;
+ }
+
+ return(ret_api);
+}
+
+/*******************************************************************************
+ * MODULE : VehicleUnLinkShareData
+ * ABSTRACT : Unlinking shared memory
+ * FUNCTION : Unlink shared memory
+ * ARGUMENT : *share_top : Start address of shared memory
+ * : offset : Offset to shared memory free area
+ * NOTE :
+ * RETURN : RET_NORMAL : Normal completion
+ * : RET_ERROR : There is no shared memory area./semaphore error
+ ******************************************************************************/
+inline RET_API VehicleUnLinkShareData(VEHICLE_SHARE *share_top, uint16_t offset) {
+ RET_API ret_api; /* System API return value */
+ SemID sem_id; /* Semaphore ID */
+ int32 i;
+
+ /* Initialization */
+ ret_api = RET_ERROR;
+
+ /* Create Semaphore */
+ sem_id = _pb_CreateSemaphore(const_cast<char *>(VEHICLE_SEMAPHO_NAME));
+ if (0 != sem_id) {
+ /* Semaphore Lock */
+ ret_api = _pb_SemLock(sem_id);
+ if (RET_NORMAL == ret_api) {
+ /* Unlock the block */
+ i = static_cast<int32>(offset) / VEHICLE_SHARE_BLOCK_SIZE;
+ share_top->mng.lock_info[i] = VEHICLE_SHARE_UNLOCK;
+
+ /* Semaphore unlock */
+ _pb_SemUnlock(sem_id);
+
+ /* Normal completion */
+ ret_api = RET_NORMAL;
+ } else {
+ /* Semaphore lock failed */
+ ret_api = RET_ERROR;
+ }
+ } else {
+ /* Semaphore creation failed */
+ ret_api = RET_ERROR;
+ }
+
+ return(ret_api);
+}
+
+/*******************************************************************************
+ * MODULE : VehicleSndMsg
+ * ABSTRACT : Message transmission processing
+ * FUNCTION : Send a message to the specified PNO
+ * ARGUMENT : pno_src : Source PNO
+ * : pno_dest : Destination PNO
+ * : cid : Command ID
+ * : msg_len : Message data body length
+ * : *msg_data : Pointer to message data
+ * NOTE :
+ * RETURN : RET_NORMAL : Normal completion
+ * : RET_ERRNOTRDY : Destination process is not wakeup
+ * : RET_ERRMSGFULL : Message queue overflows
+ * : RET_ERRPARAM : Buffer size error
+ ******************************************************************************/
+inline RET_API VehicleSndMsg(PNO pno_src, PNO pno_dest, CID cid, uint16_t msg_len, const void *msg_data) {
+ VEHICLE_MSG_BUF msg_buf; /* message buffer */
+ T_APIMSG_MSGBUF_HEADER *msg_hdr; /* Pointer to the message header */
+ RET_API ret_api; /* Return value */
+ PCSTR thread_name; /* Destination thread name */
+
+
+ /* Internal debug log output */
+ FRAMEWORKUNIFIEDLOG(ZONE_26, __FUNCTION__,
+ "+ [pno_src = 0x%x, pno_dest = 0x%x]", pno_src, pno_dest);
+
+ /* _CWORD71_ processing speed(Memset modification) */
+ /* Initializing the header of the message buffer */
+ memset(reinterpret_cast<void *>(&msg_buf.hdr), 0, sizeof(T_APIMSG_MSGBUF_HEADER));
+
+ /* Get pointer to send buffer */
+ msg_hdr = reinterpret_cast<T_APIMSG_MSGBUF_HEADER *>(reinterpret_cast<void *>(&msg_buf));
+
+ /*--------------------------------------------------------------*
+ * Create message headers *
+ *--------------------------------------------------------------*/
+ msg_hdr->hdr.sndpno = pno_src; /* Source PNO */
+ msg_hdr->hdr.cid = cid; /* Command ID */
+ msg_hdr->hdr.msgbodysize = msg_len; /* Message data body length */
+
+ /*--------------------------------------------------------------*
+ * Create message data *
+ *--------------------------------------------------------------*/
+ if ((0 != msg_data) && (0 != msg_len)) {
+ /* Set the message data */
+ memcpy(reinterpret_cast<void *>(msg_buf.data), msg_data, (size_t)msg_len);
+ }
+ /*--------------------------------------------------------------*
+ * Send messages *
+ *--------------------------------------------------------------*/
+ /* Get Thread Name from PNO */
+ if (pno_dest <= SYS_PNO_MAX) {
+ thread_name = POS_THREAD_NAME;
+ } else {
+ thread_name = _pb_CnvPno2Name(pno_dest);
+ }
+
+ if ((pno_dest <= SYS_PNO_MAX) && (pno_src <= SYS_PNO_MAX)) {
+ /* Internal debug log output */
+ FRAMEWORKUNIFIEDLOG(ZONE_26, __FUNCTION__, "[LOG pno_dest = 0x%x]", pno_dest);
+
+ /* Internal Process Transmission and Reception Messages */
+ ret_api = _pb_SndMsg(pno_dest,
+ (uint16_t)(sizeof(T_APIMSG_MSGBUF_HEADER) + msg_len),
+ reinterpret_cast<void *>(&msg_buf), 0);
+ } else {
+ /* External Process Transmission and Reception Messages */
+ ret_api = _pb_SndMsg_Ext(thread_name,
+ cid,
+ (uint16_t)(msg_len), /* Ignore->MISRA-C++:2008 Rule 5-0-5 */
+ reinterpret_cast<void *>(&(msg_buf.data)), 0);
+ }
+ FRAMEWORKUNIFIEDLOG(ZONE_26, __FUNCTION__, "-");
+
+ return(ret_api);
+}
+
+/**
+ * @brief
+ * Resource Acquisition Decision
+ *
+ * @param[in] none
+ *
+ * @return TRUE Normal<br>
+ * FALSE Abnormality(Insufficient resource)
+ */
+inline BOOL VehicleGetResource(void) {
+ BOOL ret[4] = {TRUE, TRUE, TRUE, TRUE};
+ uint8_t idx;
+
+ ret[1] = _pb_GetMsgResource();
+ ret[2] = _pb_GetMutexResource();
+ ret[3] = _pb_GetOtherResource();
+
+ for (idx = 1; idx < 4; idx++) {
+ if (ret[idx] == FALSE) {
+ ret[0] = FALSE;
+ }
+ }
+
+ return ret[0];
+}
+
+/**
+ * @brief
+ * Resource release
+ *
+ * @param[in] none
+ *
+ * @return none
+ */
+inline void VehicleReleaseResource(void) {
+ _pb_ReleaseMsgResource();
+ _pb_ReleaseMutexResource();
+ _pb_ReleaseOtherResource();
+
+ return;
+}
+
+inline uint32_t GetTid(void) {
+ return (uint32_t)syscall(__NR_gettid);
+}
+
+
+#endif // POSITIONING_CLIENT_INCLUDE_POS_PRIVATE_H_
diff --git a/vehicleservice/positioning/client/include/POS_sensor_private.h b/vehicleservice/positioning/client/include/POS_sensor_private.h
new file mode 100644
index 00000000..1e1497f9
--- /dev/null
+++ b/vehicleservice/positioning/client/include/POS_sensor_private.h
@@ -0,0 +1,163 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_POS_SENSOR_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_POS_SENSOR_PRIVATE_H_
+/******************************************************************************
+ * file name :POS_sensor_private.h
+ * system name :Positioning
+ * sub system name :Positioning internal interface library
+ ******************************************************************************/
+
+#include <vehicle_service/POS_sensor_API.h>
+#include <vehicle_service/pos_message_header.h>
+#include <native_service/frameworkunified_types.h>
+/************************************************************************
+* definition *
+************************************************************************/
+/*----------------------------------------------------------------------*
+ * for message *
+ *----------------------------------------------------------------------*/
+/* command ID */
+#define CID_SENSOR_PKG_INFO 0x0700 /* vehicle sensor package notification ID */
+
+/*----------------------------------------------------------------------*
+ * definition for GPS response *
+ *----------------------------------------------------------------------*/
+#define GPS_BUFFERFUL 2 /* transmit buffer full(rejection) */
+#define GPS_INITIAL 3 /* initialization state(rejection) */
+#define GPS_CONNECTNG 4 /* connection error(rejection) */
+
+/*----------------------------------------------------------------------*
+ * definition clock status *
+ *----------------------------------------------------------------------*/
+#define CLOCK_VALID (1U)
+#define CLOCK_INVALID (0U)
+
+/*----------------------------------------------------------------------*
+ * Message Related Extensions *
+ *----------------------------------------------------------------------*/
+#define CID_SENSORIF_SET_GPSTIME 0x0701 /* GPS time information setting CID */
+
+/*----------------------------------------------------------------------*
+ * GPS version-related definitions *
+ *----------------------------------------------------------------------*/
+#define GPS__CWORD82__VERSION_LEN (7U) /* _CWORD82_ version data length */
+
+/************************************************************************
+* struct declaration *
+************************************************************************/
+/************************************************************************
+* TAG : SENSOR_MSG_DELIVERY_ENTRY
+* ABSTRACT : vehicle sensor delivery message (to vehicle sensor)
+************************************************************************/
+typedef struct {
+ PNO pno; /* destination process number */
+ u_int8 pkg_num; /* number of package data (1 - 16) */
+ u_int8 delivery_timing; /* delivery timing */
+ u_int8 ctrl_flg; /* delivery control flag */
+ u_int8 reserve[3];
+ EventID event_id; /* event ID */
+ DID did[SENSOR_PKG_DELIVERY_MAX]; /* data ID array */
+} SENSOR_MSG_DELIVERY_ENTRY_DAT;
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* message header */
+ SENSOR_MSG_DELIVERY_ENTRY_DAT data; /* message body */
+} SENSOR_MSG_DELIVERY_ENTRY;
+
+/************************************************************************
+* TAG : SENSOR_MSG_GET_SENSOR_DATA
+* ABSTRACT : vehicle sensor getter message (to vehicle sensor)
+************************************************************************/
+typedef struct {
+ PNO pno; /* destination process number */
+ u_int8 pkg_num; /* number of package data (1 - 16) */
+ u_int8 reserve;
+ u_int16 offset; /* share memory offset */
+ u_int16 size; /* share memory allocation size */
+ EventID event_id; /* event ID */
+ DID did[SENSOR_PKG_DELIVERY_MAX]; /* data ID about vehicle sensor */
+} SENSOR_MSG_GET_SENSOR_DATA_DAT;
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* message header */
+ SENSOR_MSG_GET_SENSOR_DATA_DAT data; /* message body */
+} SENSOR_MSG_GET_SENSOR_DATA;
+
+/************************************************************************
+* TAG : SENSOR_INTERNAL_MSG_BUF
+* ABSTRACT : message buffer
+************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* message header */
+ u_int8 data[SENSOR_MSGBUF_DSIZE]; /* message body */
+} SENSOR_INTERNAL_MSG_BUF;
+
+/********************************************************************************
+ * TAG :TG_GPSTIME
+ * ABSTRACT :GPS Absolute Time Structure
+ * NOTE :
+ ********************************************************************************/
+typedef struct {
+ u_int16 year; /* Year information(4-digit year) */
+ u_int8 month; /* Month information */
+ u_int8 day; /* Day information */
+ u_int8 hour; /* Hour information */
+ u_int8 minute; /* Minute information */
+ u_int8 second; /* Second information */
+ u_int8 reserve; /* reserve */
+} TG_GPSTIME;
+
+/********************************************************************************
+ * TAG :TG_GPS_RTCBKUP_DATA
+ * ABSTRACT :RTC backup-related data structures
+ * NOTE :RTC-backup-related data stored in the SRAM alternate DRAM
+ ********************************************************************************/
+typedef struct {
+ u_int8 time_status; /* Time Status */
+ u_int8 reserve1[3]; /* Reserve 1 */
+ TG_GPSTIME gps_time; /* GPS Absolute Time */
+} TG_GPS_RTCBKUP_DATA; /* */
+
+/************************************************************************
+ * TAG : GPS_INTERRUPT
+ * ABSTRACT : GPS interrupt status
+ * NOTE :
+************************************************************************/
+typedef struct {
+ u_int8 _CWORD102__interrupt; /* from GPS to _CWORD102_ interrupt status */
+ u_int8 _CWORD56__interrupt; /* from GPS to _CWORD56_ interrupt status */
+} GPS_INTERRUPT;
+
+/********************************************************************************
+ * TAG :LOCALTIME
+ * ABSTRACT :LocalTime data structure
+ * NOTE :
+ ********************************************************************************/
+typedef struct {
+ u_int8 status; /* status : valid or invalid */
+ u_int8 reserve[3]; /* reserve */
+ u_int16 year; /* year : 2000..2099 (FFFFh:invalid) */
+ u_int8 month; /* month : 1..12 (FFh:invalid) */
+ u_int8 day; /* date : 1..31 (FFh:invalid) */
+ u_int8 hour; /* hour : 0..23 (FFh:invalid) */
+ u_int8 min; /* minute : 0..59 (FFh:invalid) */
+ u_int8 sec; /* second : 0..59 (FFh:invalid) */
+ u_int8 reserve2; /* reserve */
+} LOCALTIME;
+
+#endif // POSITIONING_CLIENT_INCLUDE_POS_SENSOR_PRIVATE_H_
diff --git a/vehicleservice/positioning/client/include/SensorLocation_API.h b/vehicleservice/positioning/client/include/SensorLocation_API.h
new file mode 100644
index 00000000..ae7f20a0
--- /dev/null
+++ b/vehicleservice/positioning/client/include/SensorLocation_API.h
@@ -0,0 +1,124 @@
+/*
+ * @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 SensorLocation_API.h
+@detail SensorLocation_API external header file<BR>
+ SensorLocation_API External public header
+******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_SENSORLOCATION_API_H_
+#define POSITIONING_CLIENT_INCLUDE_SENSORLOCATION_API_H_
+
+/*****************************************************************************
+ * Include *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Define *
+ *****************************************************************************/
+/* Command ID */
+#define CID_VEHICLE_SENSORLOCATION_LONLAT (0x0201)
+/* Vehicle sensor information notification CID (Latitude and longitude information)*/
+#define CID_VEHICLE_SENSORLOCATION_ALTITUDE (0x0202)
+/* Vehicle sensor information notification CID (Altitude Information) */
+
+/* SENSORLOCATION_RET_API definition */
+#define SENSORLOCATION_RET_NORMAL (0) /* Successful completion */
+#define SENSORLOCATION_RET_ERROR_PARAM (-1) /* Parameter error */
+#define SENSORLOCATION_RET_ERROR_BUFFULL (-2) /* Number of registered FULL */
+#define SENSORLOCATION_RET_ERROR_INNER (-3) /* Internal error */
+
+/* Delivery opportunity definition */
+#define SENSORLOCATION_DELIVERY_TIMING_CHANGE (0) /* Change */
+#define SENSORLOCATION_DELIVERY_TIMING_UPDATE (1) /* UpDate */
+
+/* Presence information definitions DR */
+#define SENSORLOCATION_EXISTDR_NODR (0) /* Without DR */
+#define SENSORLOCATION_EXISTDR_DR (1) /* There DR */
+
+/* DR state definition */
+#define SENSORLOCATION_DRSTATUS_INVALID (0) /* Invalid */
+#define SENSORLOCATION_DRSTATUS_GPS_NODR (1) /* Information use GPS, not yet implemented DR */
+#define SENSORLOCATION_DRSTATUS_NOGPS_DR (2) /* No information available GPS, DR implementation */
+#define SENSORLOCATION_DRSTATUS_GPS_DR (3) /* Information use GPS, DR implementation */
+
+/* LONLAT initial value definition */
+#define SENSORLOCATION_LATITUDE_INIT_VALUE 0x7FFFFFFFL /* initial value */
+#define SENSORLOCATION_LONGITUDE_INIT_VALUE 0x7FFFFFFFL /* initial value */
+
+/*****************************************************************************
+ * Typedef *
+ *****************************************************************************/
+typedef int32 SENSORLOCATION_RET_API;
+
+/*****************************************************************************
+ * Struct *
+ *****************************************************************************/
+/*****************************************************************************
+ * TAG : SENSORLOCATION_LONLATINFO_DAT
+ * ABSTRACT : Latitude and longitude information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int8 sensor_cnt; /* Sensor counter value */
+ u_int8 is_exist_dr; /* Presence or absence information DR */
+ u_int8 dr_status; /* DR state */
+ u_int8 reserve[3]; /* Reserve */
+ int32 longitude; /* Longitude */
+ int32 latitude; /* Latitude */
+} SENSORLOCATION_MSG_LONLATINFO_DAT;
+
+/*****************************************************************************
+ * TAG : SENSORLOCATION_ALTITUDEINFO_DAT
+ * ABSTRACT : Altitude information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int8 sensor_cnt; /* Sensor counter value */
+ u_int8 is_exist_dr; /* Presence or absence information DR */
+ u_int8 dr_status; /* DR state */
+ u_int8 reserve[3]; /* Reserve */
+ int32 altitude; /* Altitude(0.01m) */
+} SENSORLOCATION_MSG_ALTITUDEINFO_DAT;
+
+/*****************************************************************************
+ * TAG : LONLAT
+ * ABSTRACT : Latitude and Longitude data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ int32 latitude; /* Latitude */
+ int32 longitude; /* Longitude */
+} LONLAT;
+
+/*****************************************************************************
+* Function prototypes *
+*****************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern SENSORLOCATION_RET_API SensorLocationRegisterListenerLonLat(PNO pno, u_int8 delivery_timing);
+extern SENSORLOCATION_RET_API SensorLocationRegisterListenerAltitude(PNO pno, u_int8 delivery_timing);
+extern SENSORLOCATION_RET_API SensorLocationGetLonLat(SENSORLOCATION_MSG_LONLATINFO_DAT *dat);
+extern SENSORLOCATION_RET_API SensorLocationGetAltitude(SENSORLOCATION_MSG_ALTITUDEINFO_DAT *dat);
+extern SENSORLOCATION_RET_API SensorLocationGetLonLatOnShutdown(LONLAT *lonlat);
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_SENSORLOCATION_API_H_
diff --git a/vehicleservice/positioning/client/include/SensorLocation_API_private.h b/vehicleservice/positioning/client/include/SensorLocation_API_private.h
new file mode 100644
index 00000000..d37d9eb3
--- /dev/null
+++ b/vehicleservice/positioning/client/include/SensorLocation_API_private.h
@@ -0,0 +1,39 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_SENSORLOCATION_API_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_SENSORLOCATION_API_PRIVATE_H_
+/******************************************************************************
+ * File name :SensorLocation_API_private.h
+ * System name :PastModel002
+ * Subsystem name :Vehicle I/F library
+ ******************************************************************************/
+
+/************************************************************************
+* Macro definitions *
+************************************************************************/
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+#define LONLAT_SEMAPHO_NAME ("LONLAT_SHARE_SEMAPHO") /* Semaphore name(MAX 32Byte) */
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+#define LONLAT_SHARE_NAME ("LONLAT_SHARE_MEMORY") /* Shared memory name(MAX 32Byte) */
+
+#endif // POSITIONING_CLIENT_INCLUDE_SENSORLOCATION_API_PRIVATE_H_ */
diff --git a/vehicleservice/positioning/client/include/SensorMotion_API.h b/vehicleservice/positioning/client/include/SensorMotion_API.h
new file mode 100644
index 00000000..2db5511b
--- /dev/null
+++ b/vehicleservice/positioning/client/include/SensorMotion_API.h
@@ -0,0 +1,178 @@
+/*
+ * @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 SensorMotion_API.h
+@detail SensorMotion_API external header file<BR>
+ SensorMotion_API External public header
+******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_SENSORMOTION_API_H_
+#define POSITIONING_CLIENT_INCLUDE_SENSORMOTION_API_H_
+
+/*****************************************************************************
+ * Include *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Define *
+ *****************************************************************************/
+/* Command ID */
+/* Vehicle sensor information notification CID (Rate information) */
+#define CID_VEHICLE_SENSORMOTION_SPEED (0x0203)
+/* Vehicle sensor information notification CID (Orientation information) */
+#define CID_VEHICLE_SENSORMOTION_HEADING (0x0204)
+
+/* Vehicle sensor information notification CID (GyroTrouble information) */
+#define CID_VEHICLE_SENSORMOTION_GYROTROUBLE (0x020A)
+/* Vehicle sensor information notification CID (GyroParameter information) */
+#define CID_VEHICLE_SENSORMOTION_GYROPARAMETER (0x020B)
+/* Vehicle sensor information notification CID (SpeedParameter information) */
+#define CID_VEHICLE_SENSORMOTION_SPEEDPULSEPARAMETER (0x020C)
+
+/* SENSORMOTION_RET_API definition */
+#define SENSORMOTION_RET_NORMAL (0) /* Successful completion */
+#define SENSORMOTION_RET_ERROR_PARAM (-1) /* Parameter error */
+#define SENSORMOTION_RET_ERROR_BUFFULL (-2) /* Number of registered FULL */
+#define SENSORMOTION_RET_ERROR_INNER (-3) /* Internal error */
+
+/* Delivery opportunity definition */
+#define SENSORMOTION_DELIVERY_TIMING_CHANGE (0) /* Change */
+#define SENSORMOTION_DELIVERY_TIMING_UPDATE (1) /* UpDate */
+
+/* Presence information definitions DR */
+#define SENSORMOTION_EXISTDR_NODR (0) /* Without DR */
+#define SENSORMOTION_EXISTDR_DR (1) /* There DR */
+
+/* DR state definition */
+#define SENSORMOTION_DRSTATUS_INVALID (0) /* Invalid */
+#define SENSORMOTION_DRSTATUS_GPS_NODR (1) /* Information use GPS, not yet implemented DR */
+#define SENSORMOTION_DRSTATUS_NOGPS_DR (2) /* No information available GPS, DR implementation */
+#define SENSORMOTION_DRSTATUS_GPS_DR (3) /* Information use GPS, DR implementation */
+
+/*----------------------------------------------------------------------*
+ * General Purpose Definition
+ *----------------------------------------------------------------------*/
+#define SENSORMOTION_NORMAL (0U)
+#define SENSORMOTION_ERROR (1U)
+#define SENSORMOTION_UNFIXED (2U)
+
+/*****************************************************************************
+ * Typedef *
+ *****************************************************************************/
+typedef int32 SENSORMOTION_RET_API;
+
+/*****************************************************************************
+ * Struct *
+ *****************************************************************************/
+/*****************************************************************************
+ * TAG : SENSORMOTION_SPEEDINFO_DAT
+ * ABSTRACT : Vehicle speed information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int8 sensor_cnt; /* Sensor counter value */
+ u_int8 is_exist_dr; /* Presence or absence information DR */
+ u_int8 dr_status; /* DR state */
+ u_int8 reserve; /* Reserve */
+ u_int16 speed; /* Speed(0.01m/sec) */
+} SENSORMOTION_MSG_SPEEDINFO_DAT;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_HEADINGINFO_DAT
+ * ABSTRACT : Orientation information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int8 sensor_cnt; /* Sensor counter value */
+ u_int8 is_exist_dr; /* Presence or absence information DR */
+ u_int8 dr_status; /* DR state */
+ u_int8 reserve; /* Reserve */
+ u_int16 heading; /* Heading */
+} SENSORMOTION_MSG_HEADINGINFO_DAT;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_GYROTROUBLEINFO_DAT
+ * ABSTRACT : GyroTrouble information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int8 gyro_trouble; /* Gyro Trouble Status */
+ u_int8 reserve; /* Reserve */
+} SENSORMOTION_MSG_GYROTROUBLEINFO_DAT;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_GYROTROUBLEINFO
+ * ABSTRACT : Delivery of the message GyroTrouble information
+ * NOTE : Message structure(VehicleSens -> User)
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ SENSORMOTION_MSG_GYROTROUBLEINFO_DAT data; /* Delivery data (GyroTrouble) */
+} SENSORMOTION_MSG_GYROTROUBLEINFO;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_GYROPARAMETERINFO_DAT
+ * ABSTRACT : GyroParameter information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int16 gyro_offset; /* Gyro Offset */
+ u_int8 gyro_scale_factor; /* Gyro Scale Factor */
+ u_int8 gyro_scale_factor_level; /* Gyro Scale Factor Level */
+ u_int8 reserve[2]; /* Reserve */
+} SENSORMOTION_MSG_GYROPARAMETERINFO_DAT;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_GYROPARAMETERINFO
+ * ABSTRACT : Delivery of the message GyroParameter information
+ * NOTE : Message structure(VehicleSens -> User)
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ SENSORMOTION_MSG_GYROPARAMETERINFO_DAT data; /* Delivery data (GyroParameter) */
+} SENSORMOTION_MSG_GYROPARAMETERINFO;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_SPEEDPULSEPARAMETERINFO_DAT
+ * ABSTRACT : SpeedPulseParameter information data structure
+ * NOTE :
+ *****************************************************************************/
+typedef struct {
+ u_int16 size; /* Size */
+ u_int16 speed_pulse_scale_factor; /* Speed Pulse Scale Factor */
+ u_int8 speed_pulse_scale_factor_level; /* Speed Pulse Scale Factor Level */
+ u_int8 reserve[3]; /* Reserve */
+} SENSORMOTION_MSG_SPEEDPULSEPARAMETERINFO_DAT;
+
+/*****************************************************************************
+ * TAG : SENSORMOTION_MSG_SPEEDPULSEPARAMETERINFO
+ * ABSTRACT : Delivery of the message SpeedPulseParameter information
+ * NOTE : Message structure(VehicleSens -> User)
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ SENSORMOTION_MSG_SPEEDPULSEPARAMETERINFO_DAT data; /* Delivery data (SpeedPulseParameter) */
+} SENSORMOTION_MSG_SPEEDPULSEPARAMETERINFO;
+
+/*****************************************************************************
+ * Function prototypes *
+ *****************************************************************************/
+
+#endif // POSITIONING_CLIENT_INCLUDE_SENSORMOTION_API_H_
diff --git a/vehicleservice/positioning/client/include/Sensor_API.h b/vehicleservice/positioning/client/include/Sensor_API.h
new file mode 100644
index 00000000..b49b4ac5
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Sensor_API.h
@@ -0,0 +1,36 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_SENSOR_API_H_
+#define POSITIONING_CLIENT_INCLUDE_SENSOR_API_H_
+/******************************************************************************
+ * file name :Sensor_API.h
+ * system name :GPF
+ * sub system name :sensor interface library
+ ******************************************************************************/
+#include <vehicle_service/positioning_base_library.h>
+#include "Sensor_Common_API.h"
+#include <vehicle_service/POS_sensor_API.h>
+#include "POS_sensor_private.h"
+
+/*!
+ @brief GPS Rollover Based Week Number Structure
+*/
+typedef struct {
+ uint16_t wkn; /**< GPS rollover base week number */
+} SENSOR_WKNROLLOVER;
+
+#endif // POSITIONING_CLIENT_INCLUDE_SENSOR_API_H_
diff --git a/vehicleservice/positioning/client/include/Sensor_API_private.h b/vehicleservice/positioning/client/include/Sensor_API_private.h
new file mode 100644
index 00000000..c3b5f54d
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Sensor_API_private.h
@@ -0,0 +1,174 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_SENSOR_API_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_SENSOR_API_PRIVATE_H_
+/******************************************************************************
+ * File name :Sensor_API_private.h
+ * System name :GPF
+ * Subsystem name Vehicle I/F library
+ ******************************************************************************/
+
+/************************************************************************
+* Macro definitions *
+************************************************************************/
+#define SENSOR_PUBLIC_DID_NUM 31
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+#define SENSOR_SHARE_LOCK 0xFF /* Locking */
+#define SENSOR_SHARE_UNLOCK 0x00 /* Unlocking */
+
+#define SENSOR_SHARE_BLOCK_MNUM 1 /* Number of shared memory control blocks */
+#define SENSOR_SHARE_BLOCK_DNUM 10 /* Number of shared memory data blocks */
+/* Number of shared memory blocks */
+#define SENSOR_SHARE_BLOCK_NUM (SENSOR_SHARE_BLOCK_MNUM+SENSOR_SHARE_BLOCK_DNUM)
+
+#define SENSOR_SHARE_BLOCK_SIZE 512 /* Shared Memory Block Size(byte) */
+#define SENSOR_SHARE_HEAD_SIZE 40 /* Vehicle Sensor Information Header( (4)+1+3+16*2) */
+/* Shared Memory Data Size */
+#define SENSOR_SHARE_BLOCK_DSIZE (SENSOR_SHARE_BLOCK_SIZE - SENSOR_SHARE_HEAD_SIZE)
+/* Size of shared memory allocation area */
+#define SENSOR_SHARE_SIZE (SENSOR_SHARE_BLOCK_SIZE * SENSOR_SHARE_BLOCK_NUM)
+
+#define SENSOR_SEMAPHO_NAME ("SENSOR_SHARE_SEMAPHO") /* Semaphore name */
+#define GPS_INTERRUPT_SIGNAL_SEMAPHO_NAME ("GPS_INT_SIGNAL_SHARE_SEMAPHO") /* Semaphore name(MAX 32Byte) */
+#define GYRO_CONNECT_STATUS_SEMAPHO_NAME ("GYRO_CONNECT_STTS_SHARE_SEMAPHO") /* Semaphore name(MAX 32Byte) */
+#define EPHEMERIS_NUM_SEMAPHO_NAME ("EPHEMERIS_NUM_SHARE_SEMAPHO") /* Semaphore name(MAX 32Byte) */
+#define LOCALTIME_SEMAPHO_NAME ("LOCALTIME_SHARE_SEMAPHO") /* Semaphore name(MAX 32Byte) */
+
+/*----------------------------------------------------------------------*
+ * Event Related Extensions *
+ *----------------------------------------------------------------------*/
+#define SENSOR_EVENT_VAL_INIT (SENSOR_RET_ERROR_MIN - 1) /* Event initial value */
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+#define SENSOR_SHARE_NAME ("SENSOR_SHARE_MEMORY") /* Shared memory name */
+#define GPS_INTERRUPT_SIGNAL_SHARE_NAME ("GPS_INT_SIGNAL_SHARE_MEMORY") /* Shared memory name(MAX 32Byte) */
+#define GYRO_CONNECT_STATUS_SHARE_NAME ("GYRO_CONNECT_STTS_SHARE_MEMORY") /* Shared memory name(MAX 32Byte) */
+#define EPHEMERIS_NUM_SHARE_NAME ("EPHEMERIS_NUM_SHARE_MEMORY") /* Shared memory name(MAX 32Byte) */
+#define LOCALTIME_SHARE_NAME ("LOCALTIME_SHARE_MEMORY") /* Shared memory name(MAX 32Byte) */
+
+/*-----------------------------------------------------------------------------
+ * GPS local CID define
+ *----------------------------------------------------------------------------*/
+#define CID_DEV_REQGPS MAKECID(CID_DEVHIGH, 0x00) /* GPS request */
+#define CID_DEV_REQRST MAKECID(CID_DEVHIGH, 0x01) /* GPS reset request */
+
+#define CID_GPS_SERIAL0 (CID)0x0100 /* GPS reset request function definition */
+/* GPS reset request CID */
+
+/*---------------------------------------------------------------------------
+ * GPS error log output
+ ---------------------------------------------------------------------------*/
+#define GPS_DBGMSG 0 /* Product Shipping Log Output(WPF_DEBUGMSG) */
+#define GPS_RTLMSG 1 /* Development test log output(WPF_RETAILMSG) */
+
+/*----------------------------------------------------------------------*
+ * for message *
+ *----------------------------------------------------------------------*/
+#define CID_SENSORIF_PKG_DELIVERY_ENTRY_EXT 0x0602 /* sensor extra package register command ID */
+
+/*----------------------------------------------------------------------*
+ * for JudgeDid *
+ *----------------------------------------------------------------------*/
+#define MODE_REGISTER_LISTENER_PKG_SENS_DATA 0 /* POS_RegisterListenerPkgSensData */
+#define MODE_REGISTER_LISTENER_SENSDATA 1 /* POS_RegisterListenerSensData */
+#define MODE_GET_SENSDATA 2 /* POS_GetSensData */
+
+/************************************************************************
+* Typedef definitions *
+************************************************************************/
+
+/************************************************************************
+* Struct definitions *
+************************************************************************/
+
+/************************************************************************
+* TAG : SENSOR_SHARE_MNG
+* ABSTRACT : Shared memory management area
+************************************************************************/
+typedef struct {
+ uint8_t lock_info[SENSOR_SHARE_BLOCK_NUM]; /* Usages */
+ uint8_t reserve[501]; /* 512-11 */
+} SENSOR_SHARE_MNG;
+
+/************************************************************************
+* TAG : SENSOR_SHARE_BLOCK_DAT_DAT
+* ABSTRACT : Shared memory data area(Data section details)
+************************************************************************/
+typedef struct {
+ uint8_t pkg_num; /* Number of packages */
+ uint8_t reserve[3];
+ uint16_t offset[SENSOR_PKG_DELIVERY_MAX]; /* Offset value */
+ uint8_t data[SENSOR_SHARE_BLOCK_DSIZE]; /* Data portion */
+} SENSOR_SHARE_BLOCK_DAT_DAT;
+
+/************************************************************************
+* TAG : SENSOR_SHARE_BLOCK_DAT
+* ABSTRACT : Shared memory data area(One block)
+************************************************************************/
+typedef struct {
+ uint16_t size; /* Size of the data */
+ uint8_t reserve[2];
+ SENSOR_SHARE_BLOCK_DAT_DAT data; /* Data portion */
+} SENSOR_SHARE_BLOCK_DAT;
+
+/************************************************************************
+* TAG : SENSOR_SHARE_BLOCK_MNG
+* ABSTRACT : Areas of memory that are shared
+************************************************************************/
+typedef struct {
+ SENSOR_SHARE_MNG mng; /* Shared memory management information */
+ SENSOR_SHARE_BLOCK_DAT data[SENSOR_SHARE_BLOCK_DNUM]; /* Shared memory data portion */
+} SENSOR_SHARE;
+
+/**
+ * @brief Return code list structure
+ */
+typedef struct {
+/*
+ * Note.
+ * This feature needs to be defined according to the unit type.
+ */
+ BOOL GRADE2_ret; /**< Return code in GRADE2 */
+ BOOL GRADE1_ret; /**< Return code in GARDE1 */
+ DID did; /**< DID */
+} SENSOR_RET_PKG;
+
+
+/************************************************************************
+* Function prototype *
+************************************************************************/
+RET_API PosDeleteEvent(EventID event_id);
+RET_API SensorLinkShareData(void **share_top, uint32_t *share_size, uint16_t *offset);
+RET_API SensorUnLinkShareData(SENSOR_SHARE *share_top, uint16_t offset);
+
+EventID PosCreateEvent(PNO pno);
+void SensorSetShareData(void *share_top, uint16_t offset, const void *data_src, uint16_t size_src);
+RET_API PosSndMsg(PNO pno_src, PNO pno_dest, CID cid, uint16_t msg_len, const void *msg_data);
+
+BOOL SensorJudgeDid(DID did, uint8_t mode);
+
+/* Function macro */
+#define SENSOR_DID_JUDGE_REGLIS_PKG(did) SensorJudgeDid(did, MODE_REGISTER_LISTENER_PKG_SENS_DATA)
+#define SENSOR_DID_JUDGE_REGLIS(did) SensorJudgeDid(did, MODE_REGISTER_LISTENER_SENSDATA)
+#define SENSOR_DID_JUDGE_GET(did) SensorJudgeDid(did, MODE_GET_SENSDATA)
+
+#endif // POSITIONING_CLIENT_INCLUDE_SENSOR_API_PRIVATE_H_ */
diff --git a/vehicleservice/positioning/client/include/Sensor_Common_API.h b/vehicleservice/positioning/client/include/Sensor_Common_API.h
new file mode 100644
index 00000000..5631e837
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Sensor_Common_API.h
@@ -0,0 +1,193 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_SENSOR_COMMON_API_H_
+#define POSITIONING_CLIENT_INCLUDE_SENSOR_COMMON_API_H_
+/******************************************************************************
+ * File name :Sensor_Common_API.h
+ * System name :PastModel002
+ * Sub System name :Vehicle I/F Liblary,Sensor I/F Liblary
+ ******************************************************************************/
+
+#include <vehicle_service/positioning_base_library.h>
+#include <vehicle_service/POS_sensor_API.h>
+#include "CommonDefine.h"
+
+/************************************************************************
+ * Definition *
+ ************************************************************************/
+/*----------------------------------------------------------------------*
+ * ID data corresponding to the vehicle sensor information *
+ *----------------------------------------------------------------------*/
+
+/*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+
+/* VEHICLE__DID */
+
+/* ++ PastModel002 Support_UBX_Protocol_DID */
+#define VEHICLE_DID_GPS_UBLOX_NAV_POSLLH 0x80000060
+#define VEHICLE_DID_GPS_UBLOX_NAV_STATUS 0x80000061
+#define VEHICLE_DID_GPS_UBLOX_NAV_TIMEUTC 0x80000062
+#define VEHICLE_DID_GPS_UBLOX_NAV_VELNED 0x80000063
+#define VEHICLE_DID_GPS_UBLOX_NAV_DOP 0x80000064
+#define VEHICLE_DID_GPS_UBLOX_NAV_TIMEGPS 0x80000065
+#define VEHICLE_DID_GPS_UBLOX_NAV_SVINFO 0x80000066
+#define VEHICLE_DID_GPS_UBLOX_NAV_CLOCK 0x80000067
+#define VEHICLE_DID_GPS_UBLOX_MON_HW 0x80000068
+#define VEHICLE_DID_GPS_UBLOX_ACK_ACK 0x80000069
+#define VEHICLE_DID_GPS_UBLOX_ACK_NAK 0x8000006A
+#define VEHICLE_DID_GPS_UBLOX_CFG_RST 0x8000006B
+#define VEHICLE_DID_GPS_UBLOX_AID_INI 0x8000006C
+#define VEHICLE_DID_GPS_UBLOX_AID_EPH 0x8000006D
+#define VEHICLE_DID_GPS_UBLOX_CFG_MSG 0x8000006E
+#define VEHICLE_DID_GPS_UBLOX_CFG_NAVX5 0x8000006F
+/* -- PastModel002 Support_UBX_Protocol_DID */
+
+/* ++ used internally by the DR */
+#define VEHICLE_DID_GPS_COUNTER 0x8000001B
+#define VEHICLE_DID_GYRO_EXT 0x80000027
+
+#define VEHICLE_DID_DR_LONGITUDE 0x80000070
+#define VEHICLE_DID_DR_LATITUDE 0x80000071
+#define VEHICLE_DID_DR_ALTITUDE 0x80000072
+#define VEHICLE_DID_DR_SPEED 0x80000073
+#define VEHICLE_DID_DR_HEADING 0x80000074
+#define VEHICLE_DID_DR_SNS_COUNTER 0x80000075
+#define VEHICLE_DID_DR_GYRO_OFFSET 0x80000078
+#define VEHICLE_DID_DR_GYRO_SCALE_FACTOR 0x80000079
+#define VEHICLE_DID_DR_GYRO_SCALE_FACTOR_LEVEL 0x8000007A
+#define VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR 0x8000007B
+#define VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR_LEVEL 0x8000007C
+
+/* -- used internally by the DR */
+
+/* ++ PastModel002 Support_DID */
+#define VEHICLE_DID_GYRO_TROUBLE 0x80000080
+#define VEHICLE_DID_MAIN_GPS_INTERRUPT_SIGNAL 0x80000081
+#define VEHICLE_DID_SYS_GPS_INTERRUPT_SIGNAL 0x80000082
+#define VEHICLE_DID_GYRO_CONNECT_STATUS 0x80000083
+#define VEHICLE_DID_VALID_EPH_NUM 0x80000084
+/* -- PastModel002 Support_DID */
+
+/* ++ Not supported by UBX_Protocol */
+#define VEHICLE_DID_LOCATION 0x80000020
+#define VEHICLE_DID_GPS__CWORD82__NMEA POS_DID_GPS__CWORD82__NMEA
+#define VEHICLE_DID_GPS__CWORD82__SETINITIAL POS_DID_GPS__CWORD82__SETINITIAL
+#define VEHICLE_DID_GPS__CWORD82__SETRMODE 0x80000034
+#define VEHICLE_DID_GPS__CWORD82__SETRMODEEX POS_DID_GPS__CWORD82__SETRMODEEX
+#define VEHICLE_DID_GPS__CWORD82__SELSENT POS_DID_GPS__CWORD82__SELSENT
+#define VEHICLE_DID_GPS__CWORD82__SETSBAS 0x80000037
+#define VEHICLE_DID_GPS__CWORD82__SETCONF1 0x80000038
+#define VEHICLE_DID_GPS__CWORD82__SETCONF2 0x80000039
+#define VEHICLE_DID_GPS__CWORD82__NMEA_GGA_INTERNAL 0xA050
+#define VEHICLE_DID_GPS__CWORD82__NMEA_DGGA_INTERNAL 0xA051
+#define VEHICLE_DID_GPS__CWORD82__NMEA_VTG_INTERNAL 0xA052
+#define VEHICLE_DID_GPS__CWORD82__NMEA_RMC_INTERNAL 0xA053
+#define VEHICLE_DID_GPS__CWORD82__NMEA_DRMC_INTERNAL 0xA054
+#define VEHICLE_DID_GPS__CWORD82__NMEA_GLL_INTERNAL 0xA055
+#define VEHICLE_DID_GPS__CWORD82__NMEA_DGLL_INTERNAL 0xA056
+#define VEHICLE_DID_GPS__CWORD82__NMEA_GSA_INTERNAL 0xA057
+#define VEHICLE_DID_GPS__CWORD82__NMEA_GSV1_INTERNAL 0xA058
+#define VEHICLE_DID_GPS__CWORD82__NMEA_GSV2_INTERNAL 0xA059
+#define VEHICLE_DID_GPS__CWORD82__NMEA_GSV3_INTERNAL 0xA060
+#define VEHICLE_DID_GPS__CWORD82__NMEA_PJRDC_GP_3_INTERNAL 0xA061
+#define VEHICLE_DID_LOCATION_LONLAT 0x80000095
+#define VEHICLE_DID_LOCATION_ALTITUDE 0x80000096
+#define VEHICLE_DID_MOTION_SPEED 0x80000062
+#define VEHICLE_DID_MOTION_HEADING 0x80000097
+#define VEHICLE_DID_GPS_TIME 0x80000098
+#define VEHICLE_DID_NAVIINFO_DIAG_GPS 0x80000099
+#define VEHICLE_DID_GPSWEEKCOR_CNT 0x8000009A
+
+#define VEHICLE_DID_GPS_CUSTOMDATA_NAVI 0x800000A0
+#define VEHICLE_DID_LOCATION_LONLAT_NAVI 0x800000A1
+#define VEHICLE_DID_LOCATION_ALTITUDE_NAVI 0x800000A2
+#define VEHICLE_DID_MOTION_SPEED_NAVI 0x800000A3
+#define VEHICLE_DID_MOTION_HEADING_NAVI 0x800000A4
+#define VEHICLE_DID_SETTINGTIME 0x800000A5
+
+#define VEHICLE_DID_LOCATIONINFO_NMEA_NAVI 0x800000A6
+
+#define VEHICLE_DID_MOTION_SPEED_INTERNAL 0x800000B0
+
+#define VEHICLE_DID_GPS_TIME_RAW 0x800000B1U /* QAC 1281 */
+#define VEHICLE_DID_GPS_WKNROLLOVER 0x800000B2U /* QAC 1281 */
+
+#define VEHICLE_DID_SPEED_PULSE_VEHICLE (0x80000044UL)
+
+/* -- Not supported by UBX_Protocol */
+
+/*----------------------------------------------------------------------*
+ * Vehicle sensor data information *
+ *----------------------------------------------------------------------*/
+#define VEHICLE_SNS_BATTERY_SHORT 0x02 /* BATTERY SHORT */
+#define VEHICLE_SNS_THERMAL_SHUT_DOWN 0x04 /* THERMAL SHUT DOWN */
+#define VEHICLE_SNS_UNKNOWN 0x05 /* UNKNOWN */
+
+/* Missing information data */
+#define VEHICLE_SNS_BREAK 0x01 /* Data without continuity */
+#define VEHICLE_SNS_NORMAL 0x00 /* Continuity of data */
+
+/*-------------------------------------------------------------------------------
+ * Time Status Return Values
+ -------------------------------------------------------------------------------*/
+#define GPS_TIMESTS_OK (0x00U) /* Exact values from the satellites */
+/* Ignore->MISRA-C++ Rule 16-2-2 */
+#define GPS_TIMESTS_NOTUTC (0x01U) /* Time from satellite but UTC uncorrected */
+/* Ignore->MISRA-C++ Rule 16-2-2 */
+#define GPS_TIMESTS_RTC (0x02U) /* RTC time */
+/* Ignore->MISRA-C++ Rule 16-2-2 */
+#define GPS_TIMESTS_NG (0x03U) /* Anomaly Time */
+/* Ignore->MISRA-C++ Rule 16-2-2 */
+
+/*-------------------------------------------------------------------------------
+ * NMEA Receive Flag
+ -------------------------------------------------------------------------------*/
+#define VEHICLE_SNS__CWORD82__DRMC POS_SNS__CWORD82__DRMC
+#define VEHICLE_SNS__CWORD82__GSA POS_SNS__CWORD82__GSA
+#define VEHICLE_SNS__CWORD82__GSV_1 POS_SNS__CWORD82__GSV_1
+#define VEHICLE_SNS__CWORD82__GSV_2 POS_SNS__CWORD82__GSV_2
+#define VEHICLE_SNS__CWORD82__GSV_3 POS_SNS__CWORD82__GSV_3
+#define VEHICLE_SNS__CWORD82__PJRDC_GP_3 POS_SNS__CWORD82__PJRDC_GP_3
+#define VEHICLE_SNS__CWORD82__PJRDC_GP_4 (0x40U) /* Ignore->MISRA-C++ Rule 16-2-2 */
+
+/************************************************************************
+* enum Definition *
+*************************************************************************/
+
+/*-------------------------------------------------------------------------------
+ * _CWORD71_ UNIT type
+ -------------------------------------------------------------------------------*/
+typedef enum {
+ POS_TYPE_NONE = (0U), /* Undefined */
+ POS_TYPE_GRADE1, /* GRADE1 (Integrated) */
+ POS_TYPE_GRADE2 /* GRADE2 (Binary type) */
+} POS_TYPE;
+
+/************************************************************************
+* typedef Definition *
+*************************************************************************/
+
+typedef u_int32 DID; /* DataID */
+
+/************************************************************************
+* struct Definition *
+*************************************************************************/
+
+#endif // POSITIONING_CLIENT_INCLUDE_SENSOR_COMMON_API_H_
diff --git a/vehicleservice/positioning/client/include/VehicleDebug_API.h b/vehicleservice/positioning/client/include/VehicleDebug_API.h
new file mode 100644
index 00000000..e0c9ef20
--- /dev/null
+++ b/vehicleservice/positioning/client/include/VehicleDebug_API.h
@@ -0,0 +1,110 @@
+/*
+ * @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 name : VehicleDebug_API.h
+ * System name : PastModel002
+ * Sub System name : VehicleDebug_API library
+ ******************************************************************************/
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLEDEBUG_API_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLEDEBUG_API_H_
+
+/************************************************************************
+ * Include *
+ ***********************************************************************/
+
+/************************************************************************
+* Definition *
+************************************************************************/
+/*----------------------------------------------------------------------*
+ * VEHICLEDEBUG_RET_API Definition *
+ *----------------------------------------------------------------------*/
+/* Normal */
+#define VEHICLEDEBUG_RET_NORMAL 0 /* Successful completion */
+
+/* Abnormal */
+#define VEHICLEDEBUG_RET_ERROR (-1) /* An error has occurred */
+#define VEHICLEDEBUG_RET_ERROR_PARAM (-2) /* Parameter error */
+
+/*----------------------------------------------------------------------*
+ * Message Definition *
+ *----------------------------------------------------------------------*/
+/* Command ID */
+#define CID_VEHICLEDEBUG_LOG_SET 0x020D
+#define CID_VEHICLEDEBUG_LOG_GET 0x020E
+
+/* Message Length */
+#define VEHICLEDEBUG_MSGBUF_DSIZE 36U
+
+/*----------------------------------------------------------------------*
+ * Log Kind Definition *
+ *----------------------------------------------------------------------*/
+#define LOG_KIND_NUM 32U
+
+/*----------------------------------------------------------------------*
+ * Log Mask Definition *
+ *----------------------------------------------------------------------*/
+#define LOG_MASK_LOCATION_LOG 0x00000001UL
+
+/*----------------------------------------------------------------------*
+ * Log Severity Definition *
+ *----------------------------------------------------------------------*/
+/* Unused */
+
+/************************************************************************
+* type Definition *
+************************************************************************/
+typedef RET_API VEHICLEDEBUG_RET_API; /* API return value */
+
+/************************************************************************
+* struct Definition *
+************************************************************************/
+/************************************************************************
+ * TAG : VEHICLEDEBUG_MSG_LOGINFO_DAT
+ * ABSTRACT : Log data structure
+ * NOTE :
+ ************************************************************************/
+typedef struct {
+ u_int32 log_sw; /* Kind of log */
+ u_int8 severity[LOG_KIND_NUM]; /* Output level(unused) */
+} VEHICLEDEBUG_MSG_LOGINFO_DAT;
+
+/*****************************************************************************
+ * TAG : VEHICLEDEBUG_MSG_BUF
+ * ABSTRACT : VehicleDebug_API message buffer structure
+ * NOTE : Message structure
+ *****************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ u_int8 data[VEHICLEDEBUG_MSGBUF_DSIZE]; /* Message data */
+} VEHICLEDEBUG_MSG_BUF;
+
+/************************************************************************
+ * Function prototypes *
+ ************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*[VehicleDebug_API Public API]*/
+VEHICLEDEBUG_RET_API SensorGetLogSetting(PNO pno, u_int32 *log_sw, u_int8 *severity);
+VEHICLEDEBUG_RET_API SensorSetLogStatus(PNO pno, u_int32 log_sw, u_int8 *severity);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLEDEBUG_API_H_
diff --git a/vehicleservice/positioning/client/include/Vehicle_API.h b/vehicleservice/positioning/client/include/Vehicle_API.h
new file mode 100644
index 00000000..78450c54
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Vehicle_API.h
@@ -0,0 +1,115 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_API_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_API_H_
+/******************************************************************************
+ * File name :Vehicle_API.h
+ * System name :GPF
+ * Sub System name :Vehicle I/F Liblary
+ ******************************************************************************/
+#include <vehicle_service/positioning_base_library.h>
+#include <vehicle_service/POS_define.h>
+#include "Sensor_Common_API.h"
+
+/****************************************************************************
+* Definition *
+*****************************************************************************/
+/*--------------------------------------------------------------------------*
+ * VECHILE_RET_API Definition *
+ *--------------------------------------------------------------------------*/
+/* Normal system */
+#define VEHICLE_RET_NORMAL 0 /* Successful completion */
+
+/* Abnormal system */
+#define VEHICLE_RET_ERROR_DID (-2) /* NoneDID */
+#define VEHICLE_RET_ERROR_PARAM (-4) /* Parameter error */
+#define VEHICLE_RET_ERROR_BUFFULL (-5) /* registration number FULL */
+#define VEHICLE_RET_ERROR_CREATE_EVENT (-6) /* Failure event generation */
+#define VEHICLE_RET_ERROR_MIN POS_RET_ERROR_MIN
+
+/*----------------------------------------------------------------------*
+ * API-related registration information delivery vehicle sensor *
+ *----------------------------------------------------------------------*/
+/* Delivery control */
+#define VEHICLE_DELIVERY_REGIST 0x01 /* Shipping register */
+
+/* Delivery opportunity */
+#define VEHICLE_DELIVERY_TIMING_UPDATE 0x01 /* Update */
+#define VEHICLE_DELIVERY_TIMING_CHANGE 0x02 /* Change */
+
+/*----------------------------------------------------------------------*
+ * Message Definition *
+ *----------------------------------------------------------------------*/
+/* Command ID */
+
+/* Registration information delivery vehicle sensor CID */
+#define CID_VEHICLEIF_DELIVERY_ENTRY 0x0101
+
+/* Vehicle sensor information notification CID */
+#define CID_VEHICLESENS_VEHICLE_INFO 0x0200
+
+/* GPS time notification CID */
+#define CID_VEHICLESENS_VEHICLE_INFO_GPS_TIME 0x0201
+
+/************************************************************************
+* typedef Definition *
+************************************************************************/
+typedef RET_API VEHICLE_RET_API; /* API return value */
+
+/************************************************************************
+* struct Definition *
+************************************************************************/
+
+/************************************************************************
+* TAG : VEHICLE_MSG_VSINFO_DAT
+* ABSTRACT : message delivery vehicle sensor information
+************************************************************************/
+typedef struct {
+ DID did;
+ u_int16 size;
+ u_int8 rcv_flag;
+ u_int8 sensor_cnt;
+ u_int8 data[256];
+} VEHICLE_MSG_VSINFO_DAT;
+
+/* ++ GPS _CWORD82_ support */
+
+/************************************************************************
+* TAG : VEHICLE_MSG_SEND_DAT
+* ABSTRACT : Vehicle sensor information setting message(-> Vehicle sensor)
+************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ VEHICLE_MSG_SEND_DAT data; /* Message data */
+} VEHICLE_MSG_SEND;
+
+/* -- GPS _CWORD82_ support */
+
+/************************************************************************
+* Function prototypes *
+************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*[VEHICLE_API Public API]*/
+VEHICLE_RET_API VehicleInitialize(u_int32(*sighand)(void)); /* QAC 3001 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_API_H_
diff --git a/vehicleservice/positioning/client/include/Vehicle_API_Dummy.h b/vehicleservice/positioning/client/include/Vehicle_API_Dummy.h
new file mode 100644
index 00000000..b242ac6d
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Vehicle_API_Dummy.h
@@ -0,0 +1,142 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_API_DUMMY_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_API_DUMMY_H_
+/******************************************************************************
+ * File name : Vehicle_API_Dummy.h
+ * System name : GPF
+ * Sub System name : Vehicle I/F Liblary
+ ******************************************************************************/
+
+#include "Sensor_Common_API.h"
+
+/****************************************************************************
+* Definition *
+*****************************************************************************/
+/*--------------------------------------------------------------------------*
+ * VECHILE_RET_API Definition *
+ *--------------------------------------------------------------------------*/
+/* Normal system */
+#define VEHICLE_RET_NORMAL 0 /* Successful completion */
+
+/* Abnormal system */
+#define VEHICLE_RET_ERROR_PID (-1) /* Abnormal thread ID */
+#define VEHICLE_RET_ERROR_DID (-2) /* NoneDID */
+#define VEHICLE_RET_ERROR_DID_DIS (-3) /* Non-ID data CANID */
+#define VEHICLE_RET_ERROR_PARAM (-4) /* Parameter error */
+#define VEHICLE_RET_ERROR_BUFFULL (-5) /* registration number FULL */
+#define VEHICLE_RET_ERROR_CREATE_EVENT (-6) /* Failure event generation */
+#define VEHICLE_RET_ERROR_TIMER (-7) /* Generation failure timer */
+#define VEHICLE_RET_ERROR_OUTOF_MEMORY (-8) /* Shared memory allocation failure */
+#define VEHICLE_RET_ERROR_SIZE (-9) /* Size error destination */
+#define VEHICLE_RET_ERROR_INVALID (-10) /* CANID undetermined */
+#define VEHICLE_RET_ERROR_MIN POS_RET_ERROR_MIN
+
+/*----------------------------------------------------------------------*
+ * API-related registration information delivery vehicle sensor *
+ *----------------------------------------------------------------------*/
+/* Delivery control */
+#define VEHICLE_DELIVERY_REGIST 0x01 /* Shipping register */
+
+/* Delivery opportunity */
+#define VEHICLE_DELIVERY_TIMING_UPDATE 0x01 /* Update */
+#define VEHICLE_DELIVERY_TIMING_CHANGE 0x02 /* Change */
+
+/*----------------------------------------------------------------------*
+ * Message Definition *
+ *----------------------------------------------------------------------*/
+/* Command ID */
+
+/* Registration information delivery vehicle sensor CID */
+#define CID_VEHICLEIF_DELIVERY_ENTRY 0x0101
+
+/* Vehicle sensor information notification CID */
+#define CID_VEHICLESENS_VEHICLE_INFO 0x0200
+
+#define CID_VEHICLEIF_GET_DR_DATA 0x0205
+
+/* The message body size data(byte) */
+#define VEHICLE_MSGBUF_DSIZE (SENSOR_MSG_VSINFO_DSIZE + 12)
+/* Header size of SENSOR_MSG_VSINFO_DSIZE + SENSOR_MSG_GPSDATA_DAT (12) */
+
+/************************************************************************
+* typedef Definition *
+************************************************************************/
+
+/************************************************************************
+* struct Definition *
+************************************************************************/
+
+/************************************************************************
+* TAG : VEHICLE_MSG_BUF
+* ABSTRACT : Message buffer
+************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ u_int8 data[VEHICLE_MSGBUF_DSIZE]; /* Message data */
+} VEHICLE_MSG_BUF;
+
+/************************************************************************
+* TAG : VEHICLE_MSG_GET_VEHICLE_DATA
+* ABSTRACT : Vehicle sensor information acquisition message(-> Vehicle sensor)
+************************************************************************/
+typedef struct {
+ DID did; /* Data ID corresponding to vehicle sensor information */
+ PNO pno; /* Destination PNO */
+ u_int16 offset; /* Offset to shared memory storage area */
+ u_int16 size; /* Size of shared memory storage area */
+ u_int8 reserve[2];
+ EventID event_id; /* Event ID */
+} VEHICLE_MSG_GET_VEHICLE_DATA_DAT;
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ VEHICLE_MSG_GET_VEHICLE_DATA_DAT data; /* Message data */
+} VEHICLE_MSG_GET_VEHICLE_DATA;
+
+/************************************************************************
+* TAG : VEHICLE_MSG_DELIVERY_ENTRY
+* ABSTRACT : Registration message delivery vehicle sensor information(->Vehicle sensor)
+************************************************************************/
+typedef struct {
+ DID did; /* ID data corresponding to the vehicle sensor information */
+ PNO pno; /* Shipping addressPNO */
+ u_int8 delivery_timing; /* Delivery opportunity */
+ u_int8 ctrl_flg; /* Delivery control */
+ EventID event_id; /* Event ID */
+} VEHICLE_MSG_DELIVERY_ENTRY_DAT;
+
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ VEHICLE_MSG_DELIVERY_ENTRY_DAT data; /* Message data */
+} VEHICLE_MSG_DELIVERY_ENTRY;
+
+/************************************************************************
+* Function prototypes *
+************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*[VEHICLE_API Public API]*/
+
+int32 VehicleGetDrData(PNO pno, DID did, void *dest_data, u_int16 dest_size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_API_DUMMY_H_
diff --git a/vehicleservice/positioning/client/include/Vehicle_API_private.h b/vehicleservice/positioning/client/include/Vehicle_API_private.h
new file mode 100644
index 00000000..ad92ddbf
--- /dev/null
+++ b/vehicleservice/positioning/client/include/Vehicle_API_private.h
@@ -0,0 +1,129 @@
+/*
+ * @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.
+ */
+
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_API_PRIVATE_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_API_PRIVATE_H_
+/******************************************************************************
+ * File name :Vehicle_API_private.h
+ * System name :GPF
+ * Subsystem name :Vehicle I/F library
+ ******************************************************************************/
+#include <vehicle_service/POS_sensor_API.h>
+#include "Vehicle_API.h"
+
+/************************************************************************
+* Macro definitions *
+************************************************************************/
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+#define VEHICLE_SHARE_LOCK 0xFF /* Locking */
+#define VEHICLE_SHARE_UNLOCK 0x00 /* Unlocking */
+
+#define VEHICLE_SHARE_BLOCK_MNUM 1 /* Number of shared memory control blocks */
+#define VEHICLE_SHARE_BLOCK_DNUM 10 /* Number of shared memory data blocks */
+/* Number of shared memory blocks */
+#define VEHICLE_SHARE_BLOCK_NUM (VEHICLE_SHARE_BLOCK_MNUM+VEHICLE_SHARE_BLOCK_DNUM)
+
+#define VEHICLE_SHARE_BLOCK_SIZE 512 /* Shared Memory Block Size(byte) */
+#define VEHICLE_SHARE_BLOCK_DSIZE SENSOR_MSG_VSINFO_DSIZE /* Shared Memory Data Size */
+/* Size of shared memory allocation area */
+#define VEHICLE_SHARE_SIZE (VEHICLE_SHARE_BLOCK_SIZE * VEHICLE_SHARE_BLOCK_NUM)
+
+#define VEHICLE_SEMAPHO_NAME ("VEHICLE_SHARE_SEMAPHO") /* Semaphore name */
+
+#define VEHICLE_INVALID 0 /* Disabled */
+#define VEHICLE_EFFECTIVE 1 /* Enabled */
+#define VEHICLE_BIT31 0x80000000
+
+/* ++ PastModel002 compliant_error compliant */
+/* Message Data Size(byte) */
+#define VEHICLE_VSINFO_DSIZE 504 /* Vehicle sensor information */
+/* -- PastModel002 compliant_error compliant */
+
+/*----------------------------------------------------------------------*
+ * Event Related Extensions *
+ *----------------------------------------------------------------------*/
+#define VEHICLE_EVENT_VAL_INIT (VEHICLE_RET_ERROR_MIN-1) /* Event initial value */
+
+/*----------------------------------------------------------------------*
+ * Shared Memory Related Extensions *
+ *----------------------------------------------------------------------*/
+#define VEHICLE_SHARE_NAME ("POS_VEHICLE_SHARE_MEMORY") /* Shared memory name */
+
+/************************************************************************
+* Typedef definitions *
+************************************************************************/
+
+/************************************************************************
+* Struct definitions *
+************************************************************************/
+
+/* ++ PastModel002 compliant_error compliant */
+
+/************************************************************************
+* TAG : VEHICLE_MSG_VSINFO_DAT
+* ABSTRACT : Vehicle sensor information notification message(-> User)
+************************************************************************/
+typedef struct {
+ T_APIMSG_MSGBUF_HEADER hdr; /* Message header */
+ VEHICLE_MSG_VSINFO_DAT data; /* Message data */
+} VEHICLE_MSG_VSINFO;
+
+/* -- PastModel002 compliant_error compliant */
+
+/************************************************************************
+* TAG : VEHICLE_SHARE_MNG
+* ABSTRACT : Shared memory management area
+************************************************************************/
+typedef struct {
+ u_int8 lock_info[VEHICLE_SHARE_BLOCK_NUM]; /* Usages */
+ u_int8 reserve[501];
+} VEHICLE_SHARE_MNG;
+
+/************************************************************************
+* TAG : VEHICLE_SHARE_BLOCK_DAT
+* ABSTRACT : Shared memory data area(One block)
+************************************************************************/
+typedef struct {
+ u_int16 size; /* Size of the data */
+ u_int8 reserve[2];
+ u_int8 data[VEHICLE_SHARE_BLOCK_DSIZE]; /* Data */
+} VEHICLE_SHARE_BLOCK_DAT;
+
+/************************************************************************
+* TAG : VEHICLE_SHARE_BLOCK_MNG
+* ABSTRACT : Areas of memory that are shared
+************************************************************************/
+typedef struct {
+ VEHICLE_SHARE_MNG mng; /* Shared memory management information */
+ VEHICLE_SHARE_BLOCK_DAT data[VEHICLE_SHARE_BLOCK_DNUM]; /* Shared memory data portion */
+} VEHICLE_SHARE;
+
+/************************************************************************
+* Function prototype *
+************************************************************************/
+RET_API VehicleDeleteEvent(EventID event_id);
+RET_API VehicleLinkShareData(void **share_top, uint32_t *share_size, uint16_t *offset);
+RET_API VehicleUnLinkShareData(VEHICLE_SHARE *share_top, u_int16 offset);
+EventID VehicleCreateEvent(PNO pno);
+void PosSetShareData(void *share_top, u_int16 offset, const void *data_src, u_int16 size_src);
+RET_API VehicleSndMsg(PNO pno_src, PNO pno_dest, CID cid, u_int16 msg_len, const void *msg_data);
+
+SENSOR_RET_API PosRegisterListenerProc(PCSTR notify_name, DID did, u_int8 ctrl_flg, u_int8 delivery_timing);
+
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_API_PRIVATE_H_ */
diff --git a/vehicleservice/positioning/client/include/vehicle_service/POS_common_API.h b/vehicleservice/positioning/client/include/vehicle_service/POS_common_API.h
new file mode 100644
index 00000000..5ee30055
--- /dev/null
+++ b/vehicleservice/positioning/client/include/vehicle_service/POS_common_API.h
@@ -0,0 +1,1663 @@
+/*
+ * @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.
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_COMMON_API_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_COMMON_API_H_
+
+/**
+ * @file POS_common_API.h
+ * @brief API definition file for common function
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup positioning
+ * @ingroup vehicle_service
+ * @{
+ */
+/*---------------------------------------------------------------------------------*
+ * Incluce *
+ *---------------------------------------------------------------------------------*/
+#include <vehicle_service/POS_define.h>
+#include <gps_hal.h>
+
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+/* State definitions can be used */
+#define SENSORLOCATION_STATUS_DISABLE (0) //!< \~english Not available
+#define SENSORLOCATION_STATUS_ENABLE (1) //!< \~english Available
+
+/* State definitions can be used */
+#define SENSORMOTION_STATUS_DISABLE (0) //!< \~english Not available
+#define SENSORMOTION_STATUS_ENABLE (1) //!< \~english Available
+/* Acquisition method */
+#define SENSOR_GET_METHOD_AUTO (0) //!< \~english Not specified
+#define SENSOR_GET_METHOD_GPS (1) //!< \~english GPS
+#define SENSOR_GET_METHOD_NAVI (2) //!< \~english Navigation
+#define SENSOR_GET_METHOD_DR (3) //!< \~english Dead Reckoning
+#define SENSOR_GET_METHOD_POS (4) //!< \~english positioning (Internal)
+
+
+#define LOCATIONINFO_NMEA_MAX (1020)
+//!< \~english Max length of 'Location Information'
+
+/* Command ID */
+/* Vehicle sensor information notification CID (Rate information) */
+
+/**
+ * \~english @brief Delivery speed command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkUnifiedAttachCallbackToDispatcher(h_app, POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_SPEED, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_SPEED (0x0203)
+
+/**
+ * \~english @brief Delivery longitude and latitude command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkUnifiedAttachCallbackToDispatcher(h_app, POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_LONLAT, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_LONLAT 0x0781
+
+/**
+ * \~english @brief Delivery altitude command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkUnifiedAttachCallbackToDispatcher(h_app, POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_ALTITUDE, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_ALTITUDE 0x0782
+
+/**
+ * \~english @brief Delivery heading command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkUnifiedAttachCallbackToDispatcher(h_app, POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_HEADING, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_HEADING 0x0783
+
+/*---------------------------------------------------------------------------------*
+ * Typedef declaration *
+ *---------------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------------*
+ * Struct declaration *
+ *---------------------------------------------------------------------------------*/
+/**
+ * @struct POS_POSDATA
+ * \~english position information
+ */
+typedef struct {
+ int8_t status; //!< \~english data status
+ uint8_t posSts; //!< \~english position status
+ uint16_t posAcc; //!< \~english position accuracy
+ int32_t longitude; //!< \~english current longitude
+ int32_t latitude; //!< \~english current latitude
+ int32_t altitude; //!< \~english current altitude
+ int16_t heading; //!< \~english current heading
+ uint8_t reserved[2]; //!< \~english reserve
+} POS_POSDATA;
+
+/**
+ * @struct SENSORLOCATION_MSG_LONLATINFO
+ * \~english longitude and latitude information data delivery message
+ */
+typedef struct {
+ SENSORLOCATION_LONLATINFO_DAT data;
+ //!< \~english longitude and latitude information data
+} SENSORLOCATION_MSG_LONLATINFO;
+
+/**
+ * @struct SENSORLOCATION_MSG_ALTITUDEINFO
+ * \~english altitude information data delivery message
+ */
+typedef struct {
+ SENSORLOCATION_ALTITUDEINFO_DAT data; //!< \~english altitude information data
+} SENSORLOCATION_MSG_ALTITUDEINFO;
+
+/**
+ * @struct SENSORMOTION_MSG_HEADINGINFO
+ * \~english heading information data delivery message
+ */
+typedef struct {
+ SENSORMOTION_HEADINGINFO_DAT data; //!< \~english heading information data
+} SENSORMOTION_MSG_HEADINGINFO;
+
+/**
+ * @struct SENSORMOTION_MSG_SPEEDINFO
+ * \~english speed information data delivery message
+ */
+typedef struct {
+ SENSORMOTION_SPEEDINFO_DAT data; //!< \~english speed information data
+} SENSORMOTION_MSG_SPEEDINFO;
+
+
+/**
+ * @struct POS_LOCATIONINFO_NMEA
+ * \~english Structure of Location Information (NMEA)
+ */
+typedef struct {
+ uint32_t length; //!< \~english length
+ uint8_t data[LOCATIONINFO_NMEA_MAX]; //!< \~english data
+} POS_LOCATIONINFO_NMEA;
+
+
+/*---------------------------------------------------------------------------------*
+ * Prototype Declaration *
+ *---------------------------------------------------------------------------------*/
+/* SENSOR_API public API */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register for longitude and lattitude delivery
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(GPS/Navigation/Not specified)
+///
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register for specified logtitude and latitude delivery
+/// - Please note if call this function for multiple times, the data will be deliveried for multiple times.
+/// - The specified longitude and latitude will be deliveried during the registration(first delivery)
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change. Specified longitude and latitude will be deliveried \n
+/// only when it has been changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update. Specified longitude and latitude will be deliveried \n
+/// every time that has been updated by the vehicle sensors.
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_GPS - GPS. The longitude and latitude from GPS will be deliveried.
+/// - SENSOR_GET_METHOD_NAVI - Navi. The longitude and latitude from Navigation will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified. The specified longitude and latitude will be deliveried \n
+/// according to the current environment.
+/// - Avaliable method is descriped as following:\n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.\n
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_BUFFULL the register count is full
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of the internal status
+/// - There is no changes of the internal status by this API
+///
+/// \~english @par Failure condition
+/// - The parameter ucDeliveryTiming is neither update(SENSOR_DELIVERY_TIMING_UPDATE) nor change \n
+/// (SENSOR_DELIVERY_TIMING_CHANGE) [POS_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [POS_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to the max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to the max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to the max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference to the event \n
+/// is reach to the max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference to the event \n
+/// is reach to the max [POS_RET_ERROR_INNER]
+/// - Memory allocate failed during the event table creation for the event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been registered. \n
+/// [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between process. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer failed between process. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during waiting event. \n
+/// [POS_RET_ERROR_INNER]
+/// - The count of thread beyond max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during getting event. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - Getting event timeout. [POS_RET_ERROR_INNER]
+/// - Error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The result of positioning service returned is SENSOR_RET_ERROR_PARAM. [POS_RET_ERROR_PARAM]
+/// - The result of positioning service returned is SENSOR_RET_ERROR_BUFFULL. [POS_RET_ERROR_BUFFULL]
+/// - The result of positioning service returned is SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of positioning service returned is not SENSOR_RET_ERROR_PARAM and SENSOR_RET_ERROR_BUFFULL \n
+/// and SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to register longitude and latitude information delivery.\n
+/// This API return the result of registered.
+/// \n
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same time.
+/// - After call this API, if the delivery destination thread name has been changed, please call this API again.
+///
+/// \~english @par
+/// Notification of message
+/// - After registered successfully, vehicle sensor information will been sent as system API \n
+/// message with following format.\n
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_LONLAT \n
+/// message structure
+/// \~english @code
+/// typedef struct {
+/// SENSORLOCATION_LONLATINFO_DAT data; /* message data */
+/// } SENSORLOCATION_MSG_LONLATINFO;
+/// @endcode
+/// message data structure \n
+///
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* Synchrony count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t posSts; /* position status */
+/// uint16_t posAcc; /* Position accuracy */
+/// int32_t Longitude; /* Longitude */
+/// int32_t Latitude; /* Latitude */
+/// } SENSORLOCATION_LONLATINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_GPS - longitude and latitude from GPS
+/// - SENSOR_GET_METHOD_NAVI - longitude and latitude from Navigation
+/// - Synchrony count(SyncCnt)
+/// - Count for position data synchronous \n
+/// When delivery altitude and heading data, position data can be synchronized by SyncCnt.\n
+/// But the data of different method can not be synchronized by SyncCnt.\n
+/// Example 1: [LonLat from GPS] and [Heading from GPS] can be synchronized by SyncCnt.\n
+/// Example 2: [LonLat from GPS] and [LonLat from Navi] can not be synchronized by SyncCnt.\n
+/// Caution: The sensor count in sensor data delivery is another data.
+/// - Enable or not(isEnable) \n
+/// To describe this delivery message is whether can be used or not
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - when GPS data is specified,longitude and latitude is invalid at following condition:\n
+/// so [not avaliable] provieded
+/// - After system start, GPS unit has not received current location data and GPS unit \n
+/// status is not positioning fixed.
+/// - If it is not initialized status, certainly provide [avaliable] when Navigation data specified
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Position status(posSts)
+/// - Bit0 : GPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_GSP)
+/// - Bit1 : DGPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DGPS)
+/// - Bit2 : DR data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DR)
+/// - Bit3 : MapMatching data used result(1:used, 0:not used, definition of \n
+/// maskbit:POS_LOC_INFO_USE_MAPMATCHING)
+/// - Position accuracy(posAcc)
+/// - Detected accruray of current position:1LSB=1m \n
+/// - Longitude : (WGS-84)(10^-7degree as 1) \n
+/// East longitude is positive value and west longitude is negative value.
+/// - Latitude : (WGS-84)(10^-7degree as 1) \n
+/// North latitude positive value and south latitude is negative value.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - POS_GetLonLat
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_RegisterListenerLonLat(HANDLE hApp, PCSTR notifyName, uint8_t ucCtrlFlg, uint8_t ucDeliveryTiming,
+ uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register altitude delivery
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(GPS/Not specified)
+///
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register specified altitude delivery
+/// - Please note that if the same data delivery has been registered for multiple times, the data will \n
+/// also be deliveried for registered multiple times.
+/// - The specified altitude will be deliveried at registered time (first delivery).
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change. Specified altitude will be deliveried only when it is changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update. Specified altitude will be deliveried when it is updated by \n
+/// vehicle sensor.
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_GPS - GPS. The altitude from GPS will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified. The altitude will be deliveried according to \n
+/// the current environment
+/// - Avaliable method is descriped as following in each environment. \n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_BUFFULL the register count is full
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the dispatcher \n
+/// for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter ucDeliveryTiming is neither update(SENSOR_DELIVERY_TIMING_UPDATE) nor change \n
+/// (SENSOR_DELIVERY_TIMING_CHANGE) [POS_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not registered(SENSOR_DELIVERY_REGIST) [POS_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reached to the max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reached to the max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reached to the max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference to the event \n
+/// is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference to the event \n
+/// is reach to the max [POS_RET_ERROR_INNER]
+/// - Memory allocate failed during the event table creation for that event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been registered. \n
+/// [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during event waiting. \n
+/// [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting.[POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - Getting event timeout. [POS_RET_ERROR_INNER]
+/// - Error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The result of positioning service is SENSOR_RET_ERROR_PARAM. [POS_RET_ERROR_PARAM]
+/// - The result of positioning service is SENSOR_RET_ERROR_BUFFULL. [POS_RET_ERROR_BUFFULL]
+/// - The result of positioning service is SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of positioning service is not SENSOR_RET_ERROR_PARAM and SENSOR_RET_ERROR_BUFFULL and \n
+/// SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to register altitude delivery. \n
+/// This API will finish when get the return value.
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After call this API, if the delivery destination thread name is changed, please call this API again.
+///
+/// \~english @par
+/// Notification of message
+/// - After registered successfully, vehicle sensor will send system API message with following format. \n
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_ALTITUDE \n
+/// message structure
+/// \~english @code
+/// typedef struct {
+/// SENSORLOCATION_ALTITUDEINFO_DAT data; /* message data */
+/// } SENSORLOCATION_MSG_ALTITUDEINFO;
+/// @endcode
+/// message data structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* synchrony count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t Reserve[3]; /* Reserve */
+/// int32_t Altitude; /* Altitude(unit:0.01m) */
+/// } SENSORLOCATION_ALTITUDEINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_GPS - altitude from GPS
+/// - Synchrony count(SyncCnt)
+/// - Count for position data synchronous \n
+/// When delivery altitude and heading data, position data can be synchronized by SyncCnt. \n
+/// But the data of different method can not be synchronized by SyncCnt.\n
+/// example: [longitude and latitude from GPS] and [heading from GPS] can be synchronized by SyncCnt.\n
+/// synchronized by SyncCnt. \n
+/// Caution: The sensor count in sensor data delivery is another data.
+/// - Enable or not(isEnable) \n
+/// To describe this delivery message is whether can be used or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - when GPS data specified, Altitude is invalid at following condition(so [not avaliable] provieded):
+/// - Immediately after system start, GPS unit has not received current location data and GPS unit status \n
+/// is not positioning fix
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Altitude
+/// - altitude data(unit 0.01m)
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see delivery
+/// - POS_GetAltitude
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_RegisterListenerAltitude(HANDLE hApp, PCSTR notifyName, uint8_t ucCtrlFlg, uint8_t ucDeliveryTiming,
+ uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register speed delivery
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(POS/Navi/Not specified)
+///
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register specified speed delivery
+/// - Please note that if the same data delivery has been registered for multiple times, the data will \n
+/// also be deliveried for registered mutiple times.
+/// - The specified speed will be deliveried at registered time (first delivery).
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change. Specified speed will be deliveried only when it is changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update. Specified speed will be deliveried when it is updated by \n
+/// vehicle sensor.
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_POS - The speed calculated in positioning based on speed pulse will be deliveried.
+/// - SENSOR_GET_METHOD_NAVI - Navi The speed from Navi will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified The speed will be deliveried according to the current environment
+/// deliveried.
+/// - Avaliable method is descriped as following in each environment. \n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+///
+/// \~english @retval POS_RET_NORMAL normal end
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_BUFFULL the register count is full
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the Dispatcher for App \n
+/// are completed.
+/// - Availability of service positioning is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter ucDeliveryTiming is neither update(SENSOR_DELIVERY_TIMING_UPDATE) \n
+/// nor change(SENSOR_DELIVERY_TIMING_CHANGE) [POS_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [POS_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate failed during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been registered. \n
+/// [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer between processes.\n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during event waiting. \n
+/// [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - Getting event timeout. [POS_RET_ERROR_INNER]
+/// - Error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The result of positioning service is SENSOR_RET_ERROR_PARAM. [POS_RET_ERROR_PARAM]
+/// - The result of positioning service is SENSOR_RET_ERROR_BUFFULL. [POS_RET_ERROR_BUFFULL]
+/// - The result of positioning service is SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of positioning service is not SENSOR_RET_ERROR_PARAM and SENSOR_RET_ERROR_BUFFULL \n
+/// and SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to register speed delivery. \n
+/// This API will finish when get the return value.
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After call this API, if the delivery destination thread name is changed, please call this API again.
+///
+/// \~english @par
+/// Notification of message
+/// - After registered successfully, vehicle sensor will send system API message with following format. \n
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_SPEED \n
+/// message structure
+/// \~english @code
+/// typedef struct {
+/// SENSORMOTION_SPEEDINFO_DAT data; /* message data */
+/// } SENSORMOTION_MSG_SPEEDINFO;
+/// @endcode
+/// message data structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* synchrony count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t Reserve1[3]; /* Reserve */
+/// uint16_t Speed; /* speed(unit:0.01m/sec) */
+/// uint8_t Reserve2[2]; /* Reserve */
+/// } SENSORMOTION_SPEEDINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_POS - The speed calculated in positioning based on speed pulse will be deliveried.
+/// - SENSOR_GET_METHOD_NAVI - speed from Navi
+/// - Synchrony count(SyncCnt)
+/// - 0 (not change).
+/// - Enable or not(isEnable) \n
+/// To describe this data is whether enable or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - Speed is invalid at following condition when speed pulse specified, so [not avaliable] provieded
+/// - Immediately after system start, the sensor data have not been received from SYS micon
+/// - If it is not initialization status, certainly provide [avaliable] when Navi data specified
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Speed
+/// - speed data(unit 0.01m/sec)
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - POS_GetSpeed
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_RegisterListenerSpeed(HANDLE hApp, PCSTR notifyName, uint8_t ucCtrlFlg, uint8_t ucDeliveryTiming,
+ uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register heading delivery
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(GPS/Navi/Not specified)
+///
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register specified heading delivery
+/// - Please note that if the same data delivery has been registered for mutiple times, the data will \n
+/// also be deliveried for registered mutiple times.
+/// - The specified heading will be deliveried at registered time (first delivery).
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change. Specified heading will be deliveried only when it is changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update. Specified heading will be deliveried when it is updated by \n
+/// vehicle sensor.
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_GPS - GPS. The heading from GPS will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified. The heading will be deliveried \n
+/// according to the current environment
+/// - Avaliable method is descriped as following in each environment. \n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_BUFFULL the register count is full
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the Dispatcher \n
+/// for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter ucDeliveryTiming is neither update(SENSOR_DELIVERY_TIMING_UPDATE) nor change \n
+/// (SENSOR_DELIVERY_TIMING_CHANGE) [POS_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [POS_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate failed during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already \n
+/// been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer between \n
+/// processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during event waiting. \n
+/// [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - Getting event timeout. [POS_RET_ERROR_INNER]
+/// - Error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The result of positioning service is SENSOR_RET_ERROR_PARAM. [POS_RET_ERROR_PARAM]
+/// - The result of positioning service is SENSOR_RET_ERROR_BUFFULL. [POS_RET_ERROR_BUFFULL]
+/// - The result of positioning service is SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of positioning service is not SENSOR_RET_ERROR_PARAM and SENSOR_RET_ERROR_BUFFULL \n
+/// and SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to register heading delivery.
+/// This API will finish when get the return value.
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After call this API, if the delivery destination thread name is changed, please call this API again.
+///
+/// \~english @par
+/// Notification of message
+/// - After registered successfully, vehicle sensor will send system API message with following format. \n
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_HEADING \n
+/// message structure
+/// \~english @code
+/// typedef struct {
+/// SENSORMOTION_HEADINGINFO_DAT data; /* message data */
+/// } SENSORMOTION_MSG_HEADINGINFO;
+/// @endcode
+/// message data structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* sync count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t posSts; /* position status */
+/// uint8_t Reserve1[2]; /* Reserve */
+/// uint16_t Heading; /* heading(unit:0.01degree) */
+/// uint8_t Reserve2[2]; /* Reserve */
+/// } SENSORMOTION_HEADINGINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_GPS - Heading from GPS
+/// - SENSOR_GET_METHOD_NAVI - Heading from Navi
+/// - Synchrony count(SyncCnt)
+/// - Count for position data synchronous \n
+/// When delivery altitude and heading data, position data can be synchronized by this count. \n
+/// But the data of different method can not be synchronized by this count.\n
+/// example 1: [longitude and latitude from GPS] and [heading from GPS] can be synchronized by the count. \n
+/// example 2: [longitude and latitude from GPS] and [longitude and latitude from Navi] can not be \n
+/// synchronized by the count. \n
+/// Caution: The sensor count in sensor data delivery is another data.
+/// - Enable or not(isEnable) \n
+/// To describe this data is whether enable or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - Heading is invalid at following condition when GPS data specified, so [not avaliable] provieded \n
+/// - Immediately after system start, GPS unit has not received current location data and GPS unit status \n
+/// is not positioning fix
+/// - If it is not initialization status, certainly provide [avaliable] when Navi data specified
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Position status(posSts)
+/// - Bit0 : GPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_GSP)
+/// - Bit1 : DGPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DGPS)
+/// - Bit2 : DR data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DR)
+/// - Bit3 : MapMatching data used result(1:used, 0:not used, definition of \n
+/// maskbit:POS_LOC_INFO_USE_MAPMATCHING)
+/// - Heading
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - POS_GetHeading
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_RegisterListenerHeading(HANDLE hApp, PCSTR notifyName, uint8_t ucCtrlFlg, uint8_t ucDeliveryTiming,
+ uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get longitude and latitude information
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [out] dat
+/// - SENSORLOCATION_LONLATINFO_DAT* - output pointer to longitude and latitude informaiton
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(GPS/Navi/Not specified)
+///
+/// \~english @par
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_GPS - GPS The longitude and latitude from GPS will be deliveried.
+/// - SENSOR_GET_METHOD_NAVI - Navi The longitude and latitude from Navi will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified The longitude and latitude will be deliveried \n
+/// according to the current environment.
+/// - Avaliable method is descriped as following in each environment. \n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+/// \~english @par
+/// - SENSORLOCATION_LONLATINFO_DAT structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* sync count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t posSts; /* position status */
+/// uint16_t posAcc; /* Position accuracy */
+/// int32_t Longitude; /* Longitude */
+/// int32_t Latitude; /* Latitude */
+/// } SENSORLOCATION_LONLATINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_GPS - longitude and latitude from GPS
+/// - SENSOR_GET_METHOD_NAVI - longitude and latitude from Navi
+/// - Synchrony count(SyncCnt)
+/// - Count for position data synchronous\n
+/// When delivery altitude and heading data, position data can be synchronized by this count. \n
+/// But the data of different method can not be synchronized by this count. \n
+/// example 1: [longitude and latitude from GPS] and [heading from GPS] can be synchronized by this count. \n
+/// example 2: [longitude and latitude from GPS] and [longitude and latitude from Navi] can not be \n
+/// synchronized by this count. \n
+/// Caution: The sensor count in sensor data delivery is another data.
+/// - Enable or not(isEnable) \n
+/// To describe this data is whether enable or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - longitude and latitude is invalid at following condition when GPS data specified, \n
+/// so [not avaliable] provieded
+/// - Immediately after system start, GPS unit has not received current location data and \n
+/// GPS unit status is not positioning fix
+/// - If it is not initialization status, certainly provide [avaliable] when Navi data specified\n
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Position status(posSts)
+/// - Bit0 : GPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_GSP)
+/// - Bit1 : DGPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DGPS)
+/// - Bit2 : DR data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DR)
+/// - Bit3 : MapMatching data used result(1:used, 0:not used, definition of \n
+/// maskbit:POS_LOC_INFO_USE_MAPMATCHING)
+/// - Position accuracy(posAcc)
+/// - Detected accruray of current position:1LSB=1m
+/// - Longitude : (WGS-84)(10^-7degree as 1) \n
+/// East longitude is positive value and west longitude is minus value.
+/// - Latitude : (WGS-84)(10^-7degree as 1)\n
+/// North latitudeis positive value and south latitude is minus value.
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the Dispatcher \n
+/// for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter dat is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate failed during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been registered. \n
+/// [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - The memory for storing semaphore control data allocate failed. [POS_RET_ERROR_INNER]
+/// - Specified semaphore ID has not been registered when lock semaphore. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE is NULL when lock mutex. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE has not been registered in mutex table when lock mutex. [POS_RET_ERROR_INNER]
+/// - The owner of specified mutex is not itself when lock mutex. [POS_RET_ERROR_INNER]
+/// - Mutex has been multiple locked [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory map. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory management. [POS_RET_ERROR_INNER]
+/// - Can not open share memory. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory. [POS_RET_ERROR_INNER]
+/// - No empty field in share memory. [POS_RET_ERROR_INNER]
+/// - Failed to guarantee share memory. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between processes. \n
+/// [POS_RET_ERROR_INNER]
+/// - Message transfer failed between process. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during event waiting. \n
+/// [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing received data. \n
+/// [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory map allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory management allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Can not open share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - The size of data stored in share memory is larger than the size of received data. [POS_RET_ERROR_INNER]
+/// - The result of getting sensor data get is POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of getting sensor data get is not POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to get longitude and latitude from vehicle sensor
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_RegisterListenerLonLat
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_GetLonLat(HANDLE hApp, SENSORLOCATION_LONLATINFO_DAT *dat, uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get altitude data
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [out] dat
+/// - SENSORLOCATION_ALTITUDEINFO_DAT* - output pointer to altitude data
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(GPS/Not specified)
+///
+/// \~english @par
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_GPS - GPS The altitude from GPS will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified The altitude will be deliveried \n
+/// according to the current environment
+/// - Avaliable method is descriped as following in each environment. \n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+/// \~english @par
+/// - SENSORLOCATION_ALTITUDEINFO_DAT structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* sync count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t Reserve[3]; /* Reserve */
+/// int32_t Altitude; /* Altitude(unit:0.01m) */
+/// } SENSORLOCATION_ALTITUDEINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_GPS - altitude from GPS
+/// - Synchrony count(SyncCnt)
+/// - Count for position data synchronous \n
+/// When delivery altitude and heading data, position data can be synchronized by this count. \n
+/// But the data of different method can not be synchronized by this count. \n
+/// example: [longitude and latitude from GPS] and [heading from GPS] can be synchronized by the count. \n
+/// synchronized by the count. \n
+/// Caution: The sensor count in sensor data delivery is another data.
+/// - Enable or not(isEnable)\n
+/// To describe this data is whether enable or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - Altitude is invalid at following condition when GPS data specified, so [not avaliable] provieded
+/// - Immediately after system start, GPS unit has not received current location data and GPS unit \n
+/// status is not positioning fix
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Altitude
+/// - altitude data(unit 0.01m)
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of \n
+/// the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter dat is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate falied during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been \n
+/// registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - The memory for storing semaphore control data allocate failed. [POS_RET_ERROR_INNER]
+/// - Specified semaphore ID has not been registered when lock semaphore. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE is NULL when lock mutex. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE has not been registered in mutex table when lock mutex. [POS_RET_ERROR_INNER]
+/// - The owner of specified mutex is not itself when lock mutex. [POS_RET_ERROR_INNER]
+/// - Mutex has been multiple locked [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory map. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory management. [POS_RET_ERROR_INNER]
+/// - Can not open share memory. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory. [POS_RET_ERROR_INNER]
+/// - No empty field in share memory. [POS_RET_ERROR_INNER]
+/// - Failed to guarantee share memory. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message \n
+/// transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing
+/// received data. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory map allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory management allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Can not open share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - The size of data stored in share memory is larger than the size of received data. [POS_RET_ERROR_INNER]
+/// - The result of getting sensor data is POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of getting sensor data is not POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to get altitude from vehicle sensor
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_RegisterListenerAltitude
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_GetAltitude(HANDLE hApp, SENSORLOCATION_ALTITUDEINFO_DAT *dat, uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get speed data
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [out] dat
+/// - SENSORMOTION_SPEEDINFO_DAT* - output buffer pointer to store speed data
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(POS/Navi/Not specified)
+///
+/// \~english @par
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_POS - The speed calculated in positioning based on speed pulse will be deliveried.
+/// - SENSOR_GET_METHOD_NAVI - Navi The speed from Navi will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified The speed will be deliveried according to current \n
+/// environment.
+/// - Avaliable method is descriped as following in each environment. \n
+/// In the following environment, if the SENSOR_GET_METHOD_AUTO is set,treated as default \n
+/// In the following environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+///
+/// \~english @par
+/// - SENSORMOTION_SPEEDINFO_DAT structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* sync count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t Reserve1[3]; /* Reserve */
+/// uint16_t Speed; /* speed(unit:0.01m/sec) */
+/// uint8_t Reserve2[2]; /* Reserve */
+/// } SENSORMOTION_SPEEDINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_POS - The speed calculated in positioning based on speed pulse will be deliveried.
+/// - Sync count(SyncCnt)
+/// - 0.
+/// - Enable or not(isEnable) \n
+/// To describe this data is whether enable or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - Speed is invalid at following condition when speed pulse specified, so [not avaliable] provieded
+/// - Immediately after system start, the sensor data have not been received from SYS micon
+/// - If it is not initialization status, certainly provide [avaliable] when Navi data specified
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Speed
+/// - speed data(unit 0.01m/sec)
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter dat is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate falied when the event table creation that for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table when the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been \n
+/// registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full when event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed when event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - The memory for storing semaphore control data allocate failed. [POS_RET_ERROR_INNER]
+/// - Specified semaphore ID has not been registered when semaphore lock. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE is NULL when mutex lock. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE has not been registered in mutex table when mutex lock. [POS_RET_ERROR_INNER]
+/// - The owner of specified mutex is not itself when mutex lock. [POS_RET_ERROR_INNER]
+/// - Mutex has been multiple locked [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory map. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory management. [POS_RET_ERROR_INNER]
+/// - Can not open share memory. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory. [POS_RET_ERROR_INNER]
+/// - No empty field in share memory. [POS_RET_ERROR_INNER]
+/// - Failed to guarantee share memory. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer \n
+/// between processes [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between \n
+/// processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during event \n
+/// waiting. [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing \n
+/// received data. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory map allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory management allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Can not open share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - The size of data stored in share memory is larger than the size of received data. [POS_RET_ERROR_INNER]
+/// - The result of getting sensor data is POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of getting sensor data is not POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to get speed from vehicle sensor.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_RegisterListenerSpeed
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_GetSpeed(HANDLE hApp, SENSORMOTION_SPEEDINFO_DAT *dat, uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get heading data
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [out] dat
+/// - SENSORMOTION_HEADINGINFO_DAT* - output buffer pointer to store heading data
+/// \~english @param [in] ucGetMethod
+/// - uint8_t - Get method(GPS/Navi/Not specified)
+///
+/// \~english @par
+/// - Get method(ucGetMethod)
+/// - SENSOR_GET_METHOD_GPS - GPS The heading from GPS will be deliveried.
+/// - SENSOR_GET_METHOD_NAVI - Navi The heading from Navi will be deliveried.
+/// - SENSOR_GET_METHOD_AUTO - Not specified The heading which most suitable in current environment \n
+/// - Avaliable method is descriped as following in each environment. \n
+/// In corresponding environment, the SENSOR_GET_METHOD_AUTO is set as default. \n
+/// In corresponding environment, if the unsupported method has been specified, \n
+/// POS_RET_ERROR_PARAM will be returned.
+/// \~english @par
+/// - SENSORMOTION_HEADINGINFO_DAT structure
+/// \~english @code
+/// typedef struct {
+/// uint8_t getMethod; /* get method */
+/// uint8_t SyncCnt; /* sync count */
+/// uint8_t isEnable; /* enable or not */
+/// uint8_t posSts; /* position status */
+/// uint8_t Reserve1[2]; /* Reserve */
+/// uint16_t Heading; /* heading(unit:0.01degree) */
+/// uint8_t Reserve2[2]; /* Reserve */
+/// } SENSORMOTION_HEADINGINFO_DAT;
+/// @endcode
+/// - Get method(getMethod)
+/// - SENSOR_GET_METHOD_GPS - Heading from GPS
+/// - SENSOR_GET_METHOD_NAVI - Heading from Navi
+/// - Synchrony count(SyncCnt)
+/// - Count for position data synchronous \n
+/// When delivery altitude and heading data, position data can be synchronized by this count. \n
+/// But the data of different method can not be synchronized by this count. \n
+/// example 1: [longitude and latitude from GPS] and [heading from GPS] can be synchronized by the count. \n
+/// example 2: [longitude and latitude from GPS] and [longitude and latitude from Navi] can not be \n
+/// synchronized by the count. \n
+/// Caution: The sensor count in sensor data delivery is another data.
+/// - Enable or not(isEnable) \n
+/// To describe this data is whether enable or not.
+/// - 0 - not avaliable
+/// - not 0 - avaliable
+/// - Heading is invalid at following condition when GPS data specified, so [not avaliable] provieded
+/// - Immediately after system start, GPS unit has not received current location data and GPS unit \n
+/// status is not positioning fix
+/// - If it is not initialization status, certainly provide [avaliable] when Navi data specified
+/// - If the status is [not avaliable], data following can not be guaranteed.
+/// - Position status(posSts)
+/// - Bit0 : GPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_GSP)
+/// - Bit1 : DGPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DGPS)
+/// - Bit2 : DR data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DR)
+/// - Bit3 : MapMatching data use result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_MAPMATCHING)
+/// - Heading
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the Dispatcher
+/// - for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter dat is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate falied during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been \n
+/// registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - The memory for storing semaphore control data allocate failed. [POS_RET_ERROR_INNER]
+/// - Specified semaphore ID has not been registered when semaphore lock. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE is NULL when mutex lock. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE has not been registered in mutex table when mutex lock. [POS_RET_ERROR_INNER]
+/// - The owner of specified mutex is not itself when mutex lock. [POS_RET_ERROR_INNER]
+/// - Mutex has been multiple locked [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory map. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory management. [POS_RET_ERROR_INNER]
+/// - Can not open share memory. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory. [POS_RET_ERROR_INNER]
+/// - No empty field in share memory. [POS_RET_ERROR_INNER]
+/// - Failed to guarantee share memory. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message transfered \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered between \n
+/// processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table \n
+/// during event waiting[POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing received \n
+/// data. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory map allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory management allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Can not open share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - The size of data stored in share memory is larger than the size of received data. [POS_RET_ERROR_INNER]
+/// - The result of getting sensor data is POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of getting sensor data is not POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to get heading from vehicle sensor.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_RegisterListenerHeading
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_GetHeading(HANDLE hApp, SENSORMOTION_HEADINGINFO_DAT *dat, uint8_t ucGetMethod);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Set speed information
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] navispeed
+/// - uint16_t - speed data[unit: 1.0km/h]
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of \n
+/// the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The data size is larger than specified value(POS_MSG_INFO_DSIZE) [POS_RET_ERROR_RESOURCE]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The message queue name has not been registered in control table. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table. [POS_RET_ERROR_INNER]
+/// - Speed data setting message transfer failed. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to set speed to vehicle sensor. \n
+/// This API will finish when get the return value. \n
+/// The speed set by this API is saved in positioning as the speed calculated by Navi.
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+/// - This API is only called by Navi proxy.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Fire and Forget
+///
+/// \~english @see
+/// - None
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_SetSpeedInfo(HANDLE hApp, uint16_t navispeed);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Set location information
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] pstPosData
+/// - POS_POSDATA * - pointer to location information
+///
+/// \~english @par
+/// - POS_POSDATA structure
+/// \~english @code
+/// typedef struct
+/// {
+/// int8_t status; /* data status */
+/// uint8_t posSts; /* position status */
+/// uint16_t posAcc; /* Position accuracy 1LSB=1m */
+/// int32_t Longitude; /* Longitude(unit:1/128sec) */
+/// int32_t Latitude; /* Latitude(unit:1/128sec) */
+/// int32_t altitude; /* altitude (unit:0.01m) */
+/// int16_t heading; /* heading (unit:1degree) */
+/// uint8_t reserved[2]; /* reserve */
+/// } POS_POSDATA;
+/// @endcode
+///
+/// \~english @par
+/// - data status(status) \n
+/// Do not set the invalid data(do not update data).
+/// - data valid/invalid status
+/// - Bit0 : latitude(1:valid, 0:invalid, definition of maskbit:POS_LOC_INFO_LAT)
+/// - Bit1 : longitude(1:valid, 0:invalid, definition of maskbit:POS_LOC_INFO_LON)
+/// - Bit2 : altitude (1:valid, 0:invalid, definition of maskbit:POS_LOC_INFO_ALT)
+/// - Bit3 : heading (1:valid, 0:invalid, definition of maskbit:POS_LOC_INFO_HEAD)
+/// - Bit4~7 : reserve
+/// - Position status(posSts)
+/// - Bit0 : GPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_GSP)
+/// - Bit1 : DGPS data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DGPS)
+/// - Bit2 : DR data used result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_DR)
+/// - Bit3 : MapMatching data use result(1:used, 0:not used, definition of maskbit:POS_LOC_INFO_USE_MAPMATCHING)
+/// - Bit4~7 : reserve
+/// - Position accuracy(posAcc)
+/// - Detected accruray of current position:1LSB=1m
+/// - longitude
+/// - data range: -180deg ~ +180deg
+/// - +: east longitude -: west longitude
+/// - latitude
+/// - data range:-90deg ~ +90deg
+/// - +: north latitude -: south latitude
+/// - heading
+/// - data range:-179deg ~ +180deg
+/// - Based on north, west(counter-clockwise) is +, east(clockwise) is -
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the Dispatcher \n
+/// for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter pstPosData is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The data status in parameter pstPosData is invalid value(0). [POS_RET_ERROR_PARAM]
+/// - The data status in parameter pstPosData is abnormal value(<15). [POS_RET_ERROR_PARAM]
+/// - The data size is larger than specified value(POS_MSG_INFO_DSIZE) [POS_RET_ERROR_RESOURCE]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The message queue name has not been registered in control table. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table. [POS_RET_ERROR_INNER]
+/// - Location data setting message transfer failed. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to set location to vehicle sensor. \n
+/// This API will finish when get the return value. \n
+/// The location set by this API is saved in positioning as the location calculated by Navi. \n
+/// If one of longitude and latitude is valid, the another data will be used as valid data no \n
+/// matter what status it is. \n
+/// If one of longitude and latitude is valid, the position accuracy data will be used as valid data.
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+/// - This API is only called by Navi proxy.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Fire and Forget
+///
+/// \~english @see
+/// - None
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_SetLocationInfo(HANDLE hApp, POS_POSDATA* pstPosData);
+
+#ifdef __cplusplus
+}
+#endif
+/** @}*/ // end of positioning
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_COMMON_API_H_
diff --git a/vehicleservice/positioning/client/include/vehicle_service/POS_define.h b/vehicleservice/positioning/client/include/vehicle_service/POS_define.h
new file mode 100644
index 00000000..2ea918da
--- /dev/null
+++ b/vehicleservice/positioning/client/include/vehicle_service/POS_define.h
@@ -0,0 +1,134 @@
+/*
+ * @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.
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_DEFINE_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_DEFINE_H_
+
+/**
+ * @file POS_define.h
+ * @brief Header file to define the constants and structure
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup positioning
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#include <native_service/frameworkunified_types.h>
+#include <gps_hal.h>
+
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+#define POS_AVAILABILITY "Positioning/Availability" //!< \~english Availability
+
+/* message sender thread */
+#define POS_NTFY_SEND_THREAD "POS_Main" //!< \~english POS_Main thread
+#define POS_NTFY_SEND_THREAD_GPS "POS_Gps" //!< \~english POS_Gps thread
+
+/* SENSOR_RET_API */
+#define SENSOR_RET_NORMAL 0 //!< \~english normal finish
+#define SENSOR_RET_ERROR_PID (-1) //!< \~english thread ID error
+#define SENSOR_RET_ERROR_DID (-2) //!< \~english unregistered data ID error
+#define SENSOR_RET_ERROR_DID_DIS (-3) //!< \~english data ID not CAN ID
+#define SENSOR_RET_ERROR_PARAM (-4) //!< \~english parameter error
+#define SENSOR_RET_ERROR_BUFFULL (-5) //!< \~english buffer full error
+#define SENSOR_RET_ERROR_CREATE_EVENT (-6) //!< \~english create event error
+#define SENSOR_RET_ERROR_TIMER (-7) //!< \~english create timer error
+#define SENSOR_RET_ERROR_OUTOF_MEMORY (-8)
+//!< \~english share memory allocation size error
+
+#define SENSOR_RET_ERROR_SIZE (-9) //!< \~english memory size error
+#define SENSOR_RET_ERROR (-10) //!< \~english error occured
+#define SENSOR_RET_ERROR_NOSUPPORT (-11) //!< \~english no support
+#define SENSOR_RET_ERROR_INNER (-12) //!< \~english Internal error
+#define SENSOR_RET_ERROR_RESOURCE (-13) //!< \~english lack of resources
+#define SENSOR_RET_ERROR_MIN POS_RET_ERROR_MIN //!< \~english min value of error
+
+/* Data Status Definition */
+#define POS_LOC_INFO_LAT 0x01
+//!< \~english current position latitude(bit0) 1:valid 0:invalid
+
+#define POS_LOC_INFO_LON 0x02
+//!< \~english current position longitude(bit1) 1:valid 0:invalid
+
+#define POS_LOC_INFO_ALT 0x04
+//!< \~english current position altitude(bit2) 1:valid 0:invalid
+
+#define POS_LOC_INFO_HEAD 0x08
+//!< \~english current position heading(bit3) 1:valid 0:invalid
+
+/* Definition of positioning system */
+#define POS_LOC_INFO_USE_GSP 0x01
+//!< \~english GPS data used result(bit0) 1:valid 0:invalid
+
+#define POS_LOC_INFO_USE_DGPS 0x02
+//!< \~english DGPS data used result(bit1) 1:valid 0:invalid
+
+#define POS_LOC_INFO_USE_DR 0x04
+//!< \~english Dead Reckoning used result(bit2) 1:valid 0:invalid
+
+#define POS_LOC_INFO_USE_MAPMATCHING 0x08
+//!< \~english MapMatching result(bit3) 1:valid 0:invalid
+
+/*--- for message ---*/
+/* message body size (byte) */
+/* move to gps_hal.h */
+
+/*--- for register listener API ---*/
+/* control delivery */
+#define SENSOR_DELIVERY_REGIST 0x01 //!< \~english register delivery
+
+/* delivery timing control */
+#define SENSOR_DELIVERY_TIMING_UPDATE 0x01 //!< \~english delivery update timing
+#define SENSOR_DELIVERY_TIMING_CHANGE 0x02 //!< \~english delivery change timing
+
+/* POS_RET_API */
+#define POS_RET_NORMAL 0 //!< \~english normal finish
+#define POS_RET_ERROR (-1) //!< \~english error occured
+#define POS_RET_ERROR_DID (-2) //!< \~english data ID error
+#define POS_RET_ERROR_INNER (-3) //!< \~english internal error
+#define POS_RET_ERROR_PARAM (-4) //!< \~english parameter error
+#define POS_RET_ERROR_BUFFULL (-5) //!< \~english buffer full error
+#define POS_RET_ERROR_CREATE_EVENT (-6) //!< \~english create event error
+#define POS_RET_ERROR_OUTOF_MEMORY (-8)
+//!< \~english share memory allocation size error
+
+#define POS_RET_ERROR_SIZE (-9) //!< \~english memory size error
+#define POS_RET_ERROR_TIMEOUT (-10) //!< \~english timeout error
+#define POS_RET_ERROR_NOSUPPORT (-11) //!< \~english no support
+#define POS_RET_ERROR_BUSY (-12) //!< \~english busy
+#define POS_RET_ERROR_RESOURCE (-13) //!< \~english lack of resources
+#define POS_RET_ERROR_MIN (-13) //!< \~english min value of error
+
+/*---------------------------------------------------------------------------------*
+ * Typedef declaration *
+ *---------------------------------------------------------------------------------*/
+typedef int32_t SENSOR_RET_API; //!< \~english API return value
+typedef int32_t POS_RET_API; //!< \~english API return value
+typedef uint32_t DID; //!< \~english data ID
+typedef int32_t RET_API; //!< \~english _CWORD64_ API return value
+
+/** @}*/ // end of positioning
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_DEFINE_H_
diff --git a/vehicleservice/positioning/client/include/vehicle_service/POS_gps_API.h b/vehicleservice/positioning/client/include/vehicle_service/POS_gps_API.h
new file mode 100644
index 00000000..41e8e01e
--- /dev/null
+++ b/vehicleservice/positioning/client/include/vehicle_service/POS_gps_API.h
@@ -0,0 +1,1135 @@
+/*
+ * @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.
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_GPS_API_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_GPS_API_H_
+/**
+ * @file POS_gps_API.h
+ * @brief API definition file for GPS function
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup positioning
+ * @ingroup vehicle_service
+ * @{
+ */
+
+
+/*---------------------------------------------------------------------------------*
+ * Incluce *
+ *---------------------------------------------------------------------------------*/
+#include <vehicle_service/POS_define.h>
+#include <gps_hal.h>
+
+/*---------------------------------------------------------------------------------*
+ * Typedef declaration *
+ *---------------------------------------------------------------------------------*/
+typedef int32_t NAVIINFO_RET_API;
+//!< \~english define return value of Get/Set GPS information API
+
+/*---------------------------------------------------------------------------------*
+ * Event declaration *
+ *---------------------------------------------------------------------------------*/
+
+
+/**
+ * \~english @brief GPS time setting result delivery command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkunifiedAttachCallbackToDispatcher(h_app,POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_GPS_TIME_SET_REQ, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_GPS_TIME_SET_REQ 0x0780
+
+/*---------------------------------------------------------------------------------*
+ * Struct declaration *
+ *---------------------------------------------------------------------------------*/
+/**
+ * @struct SENSOR_MSG_SEND_DAT
+ * \~english message for setting vehicle sensor data(to vehicle sensor)
+ */
+typedef struct {
+ DID did; //!< \~english data ID
+ uint16_t usSize; //!< \~english data size
+ uint8_t data[502]; //!< \~english data body
+} SENSOR_MSG_SEND_DAT;
+
+/*---------------------------------------------------------------------------------*
+ * Prototype Declaration *
+ *---------------------------------------------------------------------------------*/
+/* GPS_API public API */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - GPS setting request
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] p_data
+/// - SENSOR_MSG_SEND_DAT * - pointer of GPS setting data
+///
+/// \~english @par
+/// - SENSOR_MSG_SEND_DAT structure
+/// \~english @code
+/// typedef struct
+/// {
+/// DID did; /* Data ID */
+/// uint16_t usSize; /* Data size */
+/// uint8_t data[502]; /* Data body */
+/// } SENSOR_MSG_SEND_DAT;
+/// @endcode
+///
+/// \~english @par
+/// - Data ID(did)
+/// - POS_DID_GPS__CWORD82__SETINITIAL - setting initial location and time data to GPS \n
+/// (reference to initial location, time setting(_CWORD82_))
+/// - POS_DID_GPS__CWORD82__SETRMODEEX - setting GPS receiver mode(pull extension sentence) \n
+/// (reference to GPS receiver mode setting(_CWORD82_))
+/// - POS_DID_GPS__CWORD82__SELSENT - setting command to GPS that output any sentence \n
+/// (reference to output any sentence setting(_CWORD82_))
+///
+///
+/// \~english @retval SENSOR_RET_NORMAL normal finish
+/// \~english @retval SENSOR_RET_ERROR_CREATE_EVENT event create error
+/// \~english @retval SENSOR_RET_ERROR_PARAM parameter error
+/// \~english @retval SENSOR_RET_ERROR_DID data ID not registered
+/// \~english @retval SENSOR_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval SENSOR_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status by this API
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter p_data is NULL [SENSOR_RET_ERROR_PARAM]
+/// - Data ID(p_data->did) is not supported [SENSOR_RET_ERROR_DID]
+/// - GPS setting data size(p_data->usSize) is not same with the data \n
+/// that related to data ID [SENSOR_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The message queue name has not been registered in control table when GPS \n
+/// setting message transfer between processes. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Message transfer HANDLE create failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Message transfer HANDLE get failed from internal table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - GPS setting message transfer failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+///
+/// \~english @par Detail
+/// - Call this API to set GPS data. \n
+/// The GPS data specified by the parameter p_data will be set in positioning.
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+/// - This API is only called by Navigation proxy.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Fire and Forget
+///
+/// \~english @see
+/// - None
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+int32_t POS_ReqGPSSetting(HANDLE hApp, SENSOR_MSG_SEND_DAT *p_data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Set GPS information
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] navilocinfo
+/// - NAVIINFO_ALL * - pointer of GPS information
+///
+/// \~english @par
+/// - NAVIINFO_ALL structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint8_t ucSensorCnt; /* sensor count */
+/// uint8_t reserve[3]; /* reserve */
+/// NAVIINFO_DIAG_GPS stDiagGps; /* position fix related information */
+/// NAVIINFO_NAVI_GPS stNaviGps; /* other GPS related information */
+/// } NAVIINFO_ALL;
+/// @endcode
+/// - sensor count \n
+/// sensor count value when GPS data received
+///
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS structure
+/// \~english @code
+/// typedef struct
+/// {
+/// NAVIINFO_DIAG_GPS_FIX stFix; /* position fix information */
+/// NAVIINFO_DIAG_GPS_SAT stSat; /* all satellite information */
+/// } NAVIINFO_DIAG_GPS;
+/// @endcode
+/// \n
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_FIX structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint8_t ucFixSts; /* position fix status */
+/// uint8_t ucReserve[3]; /* reserve */
+/// NAVIINFO_DIAG_GPS_FIX_CNT stCnt; /* position fix count data */
+/// NAVIINFO_DIAG_GPS_FIX_XYZ stWgs84; /* lonlat data(WGS84 geodetic) */
+/// } NAVIINFO_DIAG_GPS_FIX;
+/// @endcode
+/// - position fix status(ucFixSts)
+/// - NAVIINFO_DIAG_GPS_FIX_STS_NON:not fixed
+/// - NAVIINFO_DIAG_GPS_FIX_STS_2D :2D fix
+/// - NAVIINFO_DIAG_GPS_FIX_STS_3D :3D fix
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_FIX_CNT structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint32_t ulCnt3d; /* position fix ratio:3D(unit:sec) */
+/// uint32_t ulCnt2d; /* position fix ratio:2D(unit:sec) */
+/// uint32_t ulCntElse; /* position fix ratio:not fix(unit:sec) */
+/// } NAVIINFO_DIAG_GPS_FIX_CNT;
+/// @endcode
+///
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_FIX_XYZ structure
+/// \~english @code
+/// typedef struct
+/// {
+/// int32_t lLat; /* GPS latitude(unit:1/256sec) (+: north latitude,-: south latitude) */
+/// int32_t lLon; /* GPS longitude(unit:1/256sec) (+: east longitude, -: west longitude) */
+/// } NAVIINFO_DIAG_GPS_FIX_XYZ;
+/// @endcode
+///
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_SAT structure
+/// \~english @code
+/// typedef struct
+/// {
+/// NAVIINFO_DIAG_GPS_PRN stPrn[12]; /* all satellite information */
+/// } NAVIINFO_DIAG_GPS_SAT;
+/// @endcode
+///
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_PRN structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint8_t ucRcvSts; /* reception status */
+/// uint8_t ucPrn; /* satellite No. */
+/// uint8_t ucelv; /* satellite angle(unit:1.0deg) */
+/// uint8_t ucLv; /* satellite level */
+/// uint16_t usAzm; /* satellite azimuth(unit:1.0deg) (clockwise from north) */
+/// uint8_t ucReserve[2]; /* reserve */
+/// } NAVIINFO_DIAG_GPS_PRN;
+/// @endcode
+/// - reception status(ucRcvSts)
+/// - NAVIINFO_DIAG_GPS_RCV_STS_NOTUSE :not used
+/// - NAVIINFO_DIAG_GPS_RCV_STS_SEARCHING :searching
+/// - NAVIINFO_DIAG_GPS_RCV_STS_TRACHING :tracking
+/// - NAVIINFO_DIAG_GPS_RCV_STS_NOTUSEFIX :not used for position fix
+/// - NAVIINFO_DIAG_GPS_RCV_STS_USEFIX :used for position fix
+/// \~english @par
+/// - NAVIINFO_NAVI_GPS structure
+/// \~english @code
+/// typedef struct
+/// {
+/// int32_t altitude; /* altitude(unit:1m) */
+/// uint16_t speed; /* speed(unit:1.00km/h) */
+/// uint16_t heading; /* heading(unit:0.1deg) (clockwise from north) */
+/// NAVIINFO_UTCTIME utc; /* UTC time */
+/// uint8_t tdsts; /* date and time status */
+/// uint8_t reserve[3]; /* reserve */
+/// } NAVIINFO_NAVI_GPS;
+/// @endcode
+/// - altitude(altitude) \n
+/// As the altitude is used as unit [0.01m] in internal, \n
+/// the altitude data range is (-21,474,839~21,474,839).
+/// - UTC(utc)
+/// - The time set after rollover.
+/// - date and time status(tdsts)
+/// - 0= time has not been adjusted after GPS receiver reset(time input or master reset or CSF start)
+/// - 1= time output from RTC Backup(have time adjustment result)
+/// - 2= time adjustment completed
+/// \~english @par
+/// - NAVIINFO_UTCTIME structure
+/// \~english @code
+/// typedef struct {
+/// uint16_t year; /* A.D. (1~) */
+/// uint8_t month; /* month(1~12) */
+/// uint8_t date; /* date(1~31) */
+/// uint8_t hour; /* hour(0~23) */
+/// uint8_t minute; /* minute(0~59) */
+/// uint8_t second; /* second(0~59) */
+/// uint8_t reserved; /* not used */
+/// } NAVIINFO_UTCTIME;
+/// @endcode
+///
+/// \~english @retval NAVIINFO_RET_NORMAL normal finish
+/// \~english @retval NAVIINFO_RET_ERROR_PARAM parameter error
+/// \~english @retval NAVIINFO_RET_ERROR_INNER internal error
+/// \~english @retval NAVIINFO_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval NAVIINFO_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter navilocinfo is NULL [NAVIINFO_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [NAVIINFO_RET_ERROR_PARAM]
+/// - GPS setting data size(p_data->usSize) is not same as the data that \n
+/// related to data ID [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The count of message in message queue is reach to max [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The message queue name has not been registered in control table. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table. [NAVIINFO_RET_ERROR_INNER]
+/// - GPS setting message transfer failed between processes. [NAVIINFO_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to set GPS information to vehicle sensor.\n
+/// - This API will finish when get the return value.
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+/// - This API is only called by Navigation proxy.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Fire and Forget and Method and Fire and Forget and Fire and Forget
+///
+/// \~english @see
+/// - POS_GetGPSInfo
+////////////////////////////////////////////////////////////////////////////////////////////
+NAVIINFO_RET_API POS_SetGPSInfo(HANDLE hApp, NAVIINFO_ALL *navilocinfo);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get GPS data
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [out] navidiaginfo
+/// - NAVIINFO_DIAG_GPS* - pointer to get GPS data
+///
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS structure
+/// \~english @code
+/// typedef struct
+/// {
+/// NAVIINFO_DIAG_GPS_FIX stFix; /* position fix information */
+/// NAVIINFO_DIAG_GPS_SAT stSat; /* all satellite information */
+/// } NAVIINFO_DIAG_GPS;
+/// @endcode
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_FIX structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint8_t ucFixSts; /* position fix status */
+/// uint8_t ucReserve[3]; /* reserve */
+/// NAVIINFO_DIAG_GPS_FIX_CNT stCnt; /* position fix count data */
+/// NAVIINFO_DIAG_GPS_FIX_XYZ stWgs84; /* lonlat data(WGS84 geodetic) */
+/// } NAVIINFO_DIAG_GPS_FIX;
+/// @endcode
+/// - position fix status(ucFixSts)
+/// - NAVIINFO_DIAG_GPS_FIX_STS_NON:not fixed
+/// - NAVIINFO_DIAG_GPS_FIX_STS_2D :2D fix
+/// - NAVIINFO_DIAG_GPS_FIX_STS_3D :3D fix
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_FIX_CNT structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint32_t ulCnt3d; /* position fix count:3D(unit:sec) */
+/// uint32_t ulCnt2d; /* position fix count:2D(unit:sec) */
+/// uint32_t ulCntElse; /* position fix count:not fix(unit:sec) */
+/// } NAVIINFO_DIAG_GPS_FIX_CNT;
+/// @endcode
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_FIX_XYZ structure
+/// \~english @code
+/// typedef struct
+/// {
+/// int32_t lLat; /* GPS latitude(unit:1/256sec) (+: north latitude, -: south latitude) */
+/// int32_t lLon; /* GPS longitude(unit:1/256sec) (+: east longitude, -: west longitude) */
+/// } NAVIINFO_DIAG_GPS_FIX_XYZ;
+/// @endcode
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_SAT structure
+/// \~english @code
+/// typedef struct
+/// {
+/// NAVIINFO_DIAG_GPS_PRN stPrn[12]; /* all satellite information */
+/// } NAVIINFO_DIAG_GPS_SAT;
+/// @endcode
+/// \~english @par
+/// - NAVIINFO_DIAG_GPS_PRN structure
+/// \~english @code
+/// typedef struct
+/// {
+/// uint8_t ucRcvSts; /* reception status */
+/// uint8_t ucPrn; /* satellite No. */
+/// uint8_t ucelv; /* satellite angle(unit:1.0deg) */
+/// uint8_t ucLv; /* satellite level */
+/// uint16_t usAzm; /* satellite azimuth(unit:1.0deg) (clockwise from north) */
+/// uint8_t ucReserve[2]; /* reserve */
+/// } NAVIINFO_DIAG_GPS_PRN;
+/// @endcode
+/// - reception status(ucRcvSts)
+/// - NAVIINFO_DIAG_GPS_RCV_STS_NOTUSE : not used
+/// - NAVIINFO_DIAG_GPS_RCV_STS_SEARCHING : searching
+/// - NAVIINFO_DIAG_GPS_RCV_STS_TRACHING : tracking
+/// - NAVIINFO_DIAG_GPS_RCV_STS_NOTUSEFIX : not used for position fix
+/// - NAVIINFO_DIAG_GPS_RCV_STS_USEFIX : used for position fix
+///
+/// \~english @retval NAVIINFO_RET_NORMAL normal finish
+/// \~english @retval NAVIINFO_RET_ERROR_PARAM parameter error
+/// \~english @retval NAVIINFO_RET_ERROR_INNER internal error
+/// \~english @retval NAVIINFO_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval NAVIINFO_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter navidiaginfo is NULL [NAVIINFO_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [NAVIINFO_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [NAVIINFO_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [NAVIINFO_RET_ERROR_INNER]
+/// - Memory allocate falied during the event table creation for event \n
+/// registering. [NAVIINFO_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [NAVIINFO_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [NAVIINFO_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already \n
+/// been registered. [NAVIINFO_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [NAVIINFO_RET_ERROR_INNER]
+/// - The event table is full during event creation. [NAVIINFO_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [NAVIINFO_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [NAVIINFO_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but \n
+/// failed. [NAVIINFO_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been \n
+/// registered. [NAVIINFO_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [NAVIINFO_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [NAVIINFO_RET_ERROR_INNER]
+/// - Initialize event object failed. [NAVIINFO_RET_ERROR_INNER]
+/// - The memory for storing semaphore control data allocate failed. [NAVIINFO_RET_ERROR_INNER]
+/// - Specified semaphore ID has not been registered when semaphore lock. [NAVIINFO_RET_ERROR_INNER]
+/// - Internal mutex HANDLE is NULL when mutex lock. [NAVIINFO_RET_ERROR_INNER]
+/// - Internal mutex HANDLE has not been registered in mutex table when mutex lock. [NAVIINFO_RET_ERROR_INNER]
+/// - The owner of specified mutex is not itself when mutex lock. [NAVIINFO_RET_ERROR_INNER]
+/// - Mutex has been multiple locked [NAVIINFO_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address. [NAVIINFO_RET_ERROR_INNER]
+/// - Can not get usable share memory address. [NAVIINFO_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory map. [NAVIINFO_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory management. [NAVIINFO_RET_ERROR_INNER]
+/// - Can not open share memory. [NAVIINFO_RET_ERROR_INNER]
+/// - Failed to mapping share memory. [NAVIINFO_RET_ERROR_INNER]
+/// - No empty field in share memory. [NAVIINFO_RET_ERROR_INNER]
+/// - Failed to guarantee share memory. [NAVIINFO_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message \n
+/// transfered between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message \n
+/// transfer between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [NAVIINFO_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [NAVIINFO_RET_ERROR_INNER]
+/// - The count of thread arrived max in event management table during event waiting. [NAVIINFO_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [NAVIINFO_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [NAVIINFO_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [NAVIINFO_RET_ERROR_INNER]
+/// - The interruption happened during event getting [NAVIINFO_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [NAVIINFO_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing \n
+/// received data. [NAVIINFO_RET_ERROR_INNER]
+/// - Can not get usable share memory address for accessing received data. [NAVIINFO_RET_ERROR_INNER]
+/// - Memory for share memory map allocate failed for accessing received data. [NAVIINFO_RET_ERROR_INNER]
+/// - Memory for share memory management allocate failed for accessing received data. [NAVIINFO_RET_ERROR_INNER]
+/// - Can not open share memory for accessing received data. [NAVIINFO_RET_ERROR_INNER]
+/// - Failed to mapping share memory for accessing received data. [NAVIINFO_RET_ERROR_INNER]
+/// - The size of data stored in share memory is larger than the size of \n
+/// received data. [NAVIINFO_RET_ERROR_INNER]
+/// - The result of sensor data get processing is POS_RET_ERROR_RESOURCE. [NAVIINFO_RET_ERROR_RESOURCE]
+/// - The result of sensor data get processing is not POS_RET_ERROR_RESOURCE. [NAVIINFO_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to get GPS data for diag. \n
+/// This API will finish when get the return value.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_SetGPSInfo
+////////////////////////////////////////////////////////////////////////////////////////////
+NAVIINFO_RET_API POS_GetGPSInfo(HANDLE hApp, NAVIINFO_DIAG_GPS *navidiaginfo);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - GPS reset request
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] ResName
+/// - PCSTR - response thread name
+/// \~english @param [in] mode
+/// - uint8_t - reset mode
+///
+/// \~english @par
+/// - reset mode(mode) \n
+/// If the mode is not one of the following, return POS_RET_ERROR_PARAM
+/// - GPS_RST_COLDSTART - GPS reset request(cold start) \n
+/// Automatic search, track satellite and position fix after RAM initialized(all config \n
+/// items be initialized to default value).\n
+/// Initialize data objects:almanac/ ephemeris data, current position, GPS receiver mode and etc.\n
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_BUSY GPS device is still in setting
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter ResName is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter mode is not GPS_RST_COLDSTART [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate falied when the event table creation that for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table when the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been \n
+/// registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full when event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed when event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when GPS reset \n
+/// message transfer between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when GPS reset message transfered \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when GPS reset message \n
+/// transfered between processes. [POS_RET_ERROR_INNER]
+/// - GPS reset message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event waiting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event waiting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event waiting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event waiting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event waiting. [POS_RET_ERROR_INNER]
+/// - The result of sensor data get processing is POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of sensor data get processing is not POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to reset GPS device.
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+/// - This API is only called by Navigation proxy.
+///
+/// \~english @par
+/// Notification of message
+/// - The result of communication with GPS device will be sent by system API message with following format. \n
+/// Command ID : CID_POSIF_REQ_GPS_RESET \n
+/// message structure
+/// \~english @code
+/// typedef struct
+/// {
+/// TG_GPS_RET_RESET data; /* GPS reset status data */
+/// } TG_GPS_RET_RESET_MSG;
+/// @endcode
+/// - message data body structure
+/// \~english @code
+/// typedef struct {
+/// unsigned long ret_rst_status; /* response GPS reset status */
+/// } TG_GPS_RET_RESET;
+/// @endcode
+/// - response GPS reset status(ret_rst_status)
+/// - GPS_SENDOK:acknowledge
+/// - GPS_SENDNG:connection error
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Fire and Forget
+///
+/// \~english @see
+/// - None
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_ReqGPSReset(HANDLE hApp, PCSTR ResName, uint8_t mode);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register GPS time setting request delivery
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+///
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_BUFFULL the register count is full
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of \n
+/// the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate falied during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already been \n
+/// registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message \n
+/// transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed in process. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [POS_RET_ERROR_INNER]
+/// - The count of thread arrived max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The result from positioning service is SENSOR_RET_ERROR_PARAM. [POS_RET_ERROR_PARAM]
+/// - The result from positioning service is SENSOR_RET_ERROR_BUFFULL. [POS_RET_ERROR_BUFFULL]
+/// - The result from positioning service is SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result from positioning service is not SENSOR_RET_ERROR_PARAM or \n
+/// SENSOR_RET_ERROR_BUFFULL or SENSOR_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to register GPS time setting request delivery. \n
+/// This API will finish when get the return value.
+///
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After call this API, if the delivery destination thread name has been changed, please call this API again.
+///
+/// \~english @par
+/// Notification of message
+/// - After registered successfully, vehicle sensor information will be sent by system \n
+/// API message with following format. \n
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_GPS_TIME_SET_REQ \n
+/// time info structure \n
+/// The year, month, date, hour, minute and second should be the format set to GPS
+/// \~english @code
+/// typedef struct {
+/// uint16_t year; /* A.D.(1~) */
+/// uint8_t month; /* month(1~12) */
+/// uint8_t date; /* date(1~31) */
+/// uint8_t hour; /* hour(0~23) */
+/// uint8_t minute; /* minute(0~59) */
+/// uint8_t second; /* second(0~59) */
+/// uint8_t reserved; /* not used */
+/// } POS_DATETIME;
+/// @endcode
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - None
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_RegisterListenerGPSTimeSetReq(HANDLE hApp, PCSTR notifyName, uint8_t ucCtrlFlg);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Temporarily set GPS time from Diag function
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] pstDateTime
+/// - POS_DATETIME * - pointer of GPS time
+///
+/// \~english @par
+/// - POS_DATETIME structure
+/// \~english @code
+/// typedef struct {
+/// uint16_t year; /* A.D.(1~) */
+/// uint8_t month; /* month(1~12) */
+/// uint8_t date; /* date(1~31) */
+/// uint8_t hour; /* hour(0~23) */
+/// uint8_t minute; /* minute(0~59) */
+/// uint8_t second; /* second(0~59) */
+/// uint8_t reserved; /* not used */
+/// } POS_DATETIME;
+/// @endcode
+///
+/// \~english @retval NAVIINFO_RET_NORMAL normal finish
+/// \~english @retval NAVIINFO_RET_ERROR_PARAM parameter error
+/// \~english @retval NAVIINFO_RET_ERROR_INNER internal error
+/// \~english @retval NAVIINFO_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval NAVIINFO_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter pstDateTime is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - GPS time Data size is larger than 144 [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The message queue name has not been registered in control table. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table. [POS_RET_ERROR_INNER]
+/// - GPS time setting message transfer failed. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to set GPS time data to vehicle sensor. \n
+/// This API will finish when get the return value.
+///
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - This API will not notify the result of setting time to GPS device. \n
+/// Return normal only there is no error such as parameter error.
+/// - If want to get the result of setting time to GPS device, use \n
+/// POS_RegisterListnerGpsTime to get GPS time and judge it.
+/// - This API is only called by Diag service.
+/// - While GPS data is receiving from GPS device, the GPS time set by this API is ignored \n
+/// and it is set actual GPS time notified by positioning_hal.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Fire and Forget
+///
+/// \~english @see
+/// - POS_GetGPStime
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_SetGPStime(HANDLE hApp, POS_DATETIME* pstDateTime);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register GPS time delivery
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+///
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register specified data delivery
+/// - Please note that if the same data delivery has been registered for multiple \n
+/// times, the data will also be deliveried for registered multiple times.
+/// - The specified GPS time information will be deliveried at registered time (first delivery).
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change Specified data will be deliveried only when it changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update Specified data will be deliveried as \n
+/// long as it updated by vehicle sensor.
+///
+/// \~english @retval SENSOR_RET_NORMAL normal finish
+/// \~english @retval SENSOR_RET_ERROR_CREATE_EVENT event creation error
+/// \~english @retval SENSOR_RET_ERROR_PARAM parameter error
+/// \~english @retval SENSOR_RET_ERROR_INNER internal error
+/// \~english @retval SENSOR_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval SENSOR_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of \n
+/// the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ucDeliveryTiming is neither update(SENSOR_DELIVERY_TIMING_UPDATE) \n
+/// nor change(SENSOR_DELIVERY_TIMING_CHANGE) [SENSOR_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to \n
+/// max [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event is created in system, but the count of reference is reach to max [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Memory allocate falied during the event table creation for event \n
+/// registering. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The thread can not register in the event table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Memory allocate failed in event table during the thread table creation. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - After register the thread table in event table, the event flag has already been \n
+/// registered. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - After register the thread table in event table, the event flag register \n
+/// failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event table is full during event creation. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The memory for event HANDLE allocate failed during event table creation. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The thread can not be registered in event table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - In event table, try to allocate the memory of the thread table creation, but \n
+/// failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - After register the thread in event table, the event flag has already been \n
+/// registered. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - After register the thread in event table, the event flag register failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Specified event ID has not been registered in table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Initialize event object failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - ProcessNo has not been registered in message control table when message \n
+/// transfered between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [SENSOR_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message \n
+/// transfer between processes. [SENSOR_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [SENSOR_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [SENSOR_RET_ERROR_INNER]
+/// - The count of thread arrived max in event management table during event waiting. [SENSOR_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event get. [SENSOR_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event get. [SENSOR_RET_ERROR_INNER]
+/// - The flagID has not been registered during event get. [SENSOR_RET_ERROR_INNER]
+/// - The interruption happened during event get [SENSOR_RET_ERROR_INNER]
+/// - Whatever error happened during event get. [SENSOR_RET_ERROR_INNER]
+/// - Get event timeout. [SENSOR_RET_ERROR_INNER]
+/// - Error happened during event get. [SENSOR_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to register GPS time delivery. \n
+/// This API will finish when get the return value.
+///
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After call this API, if the delivery destination thread name has changed, please call this API again.
+///
+/// \~english @par
+/// Notification of message
+/// - After registered successfully, vehicle sensor will send GPS time data \n
+/// as system API message with following format.
+/// - If the register successed, certainly delivery first data. And then \n
+/// delivery data according to the delivery timing.
+/// - Command ID : CID_VEHICLESENS_VEHICLE_INFO_GPS_TIME\n
+/// - SENSOR_MSG_GPSTIME structure
+/// \~english @code
+/// typedef struct {
+/// NAVIINFO_UTCTIME utc; /* UTC time */
+/// uint8_t tdsts; /* time status */
+/// uint8_t reserve[3]; /* reserve */
+/// } SENSOR_MSG_GPSTIME;
+/// @endcode
+/// - time status(tdsts)
+/// - 0= time has not been adjusted after GPS receiver reset(time input or master reset or CSF start)
+/// - 1= time output from RTC Backup(have time adjustment result)
+/// - 2= time adjustment completed
+///
+/// \~english @par
+/// - NAVIINFO_UTCTIME structure
+/// \~english @code
+/// typedef struct {
+/// uint16_t year; /* A.D.(1~) */
+/// uint8_t month; /* month(1~12) */
+/// uint8_t date; /* date(1~31) */
+/// uint8_t hour; /* hour(0~23) */
+/// uint8_t minute; /* minute(0~59) */
+/// uint8_t second; /* second(0~59) */
+/// uint8_t reserved; /* not used */
+/// } POS_DATETIME;
+/// @endcode
+///
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - None
+////////////////////////////////////////////////////////////////////////////////////////////
+SENSOR_RET_API POS_RegisterListenerGPStime(HANDLE hApp, PCSTR notifyName, uint8_t ucCtrlFlg, uint8_t ucDeliveryTiming);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get GPS time
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [out] dat
+/// - SENSOR_GPSTIME* - output buffer pointer to store GPS time
+///
+/// \~english @par
+/// - SENSOR_GPSTIME structure
+/// \~english @code
+/// typedef struct {
+/// NAVIINFO_UTCTIME utc; /* UTC time */
+/// uint8_t tdsts; /* date amd time status */
+/// uint8_t reserve[3]; /* reserve */
+/// } SENSOR_GPSTIME;
+/// @endcode
+/// - date amd time status(tdsts)
+/// - 0= time has not been adjusted after GPS receiver reset(time input or master reset or CSF start)
+/// - 1= time output from RTC Backup(have time adjustment result)
+/// - 2= time adjustment completed
+///
+/// \~english @par
+/// - NAVIINFO_UTCTIME structure
+/// \~english @code
+/// typedef struct {
+/// uint16_t year; /* A.D.(1~) */
+/// uint8_t month; /* month(1~12) */
+/// uint8_t date; /* date(1~31) */
+/// uint8_t hour; /* hour(0~23) */
+/// uint8_t minute; /* minute(0~59) */
+/// uint8_t second; /* second(0~59) */
+/// uint8_t reserved; /* not used */
+/// } NAVIINFO_UTCTIME;
+/// @endcode
+///
+/// \~english @retval POS_RET_NORMAL normal finish
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the Dispatcher for App are completed.
+/// - Availability of positioning service is TRUE.
+///
+/// \~english @par changes of internal status
+/// - There is no changes of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter dat is NULL [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_INNER]
+/// - Memory allocate falied during the event table creation for event registering. [POS_RET_ERROR_INNER]
+/// - The thread can not register in the event table. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag has already \n
+/// been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread table in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - The event table is full during event creation. [POS_RET_ERROR_INNER]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_INNER]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_INNER]
+/// - In event table, try to allocate the memory of the thread table creation, but failed. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag has already been registered. [POS_RET_ERROR_INNER]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_INNER]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_INNER]
+/// - Initialize event object failed. [POS_RET_ERROR_INNER]
+/// - The memory for storing semaphore control data allocate failed. [POS_RET_ERROR_INNER]
+/// - Specified semaphore ID has not been registered when semaphore lock. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE is NULL when mutex lock. [POS_RET_ERROR_INNER]
+/// - Internal mutex HANDLE has not been registered in mutex table when mutex lock. [POS_RET_ERROR_INNER]
+/// - The owner of specified mutex is not itself when mutex lock. [POS_RET_ERROR_INNER]
+/// - Mutex has been multiple locked [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory map. [POS_RET_ERROR_INNER]
+/// - Memory allocate failed for share memory management. [POS_RET_ERROR_INNER]
+/// - Can not open share memory. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory. [POS_RET_ERROR_INNER]
+/// - No empty field in share memory. [POS_RET_ERROR_INNER]
+/// - Failed to guarantee share memory. [POS_RET_ERROR_INNER]
+/// - ProcessNo has not been registered in message control table when message \n
+/// transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message \n
+/// transfer between processes. [POS_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [POS_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [POS_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [POS_RET_ERROR_INNER]
+/// - The count of thread arrived max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event getting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event getting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event getting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event getting. [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing \n
+/// received data. [POS_RET_ERROR_INNER]
+/// - Can not get usable share memory address for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory map allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Memory for share memory management allocate failed for accessing received data. [POS_RET_ERROR_INNER]
+/// - Can not open share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - Failed to mapping share memory for accessing received data. [POS_RET_ERROR_INNER]
+/// - The size of data stored in share memory is larger than the size of received data. [POS_RET_ERROR_INNER]
+/// - The result of sensor data getting process is POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_RESOURCE]
+/// - The result of sensor data getting process is not POS_RET_ERROR_RESOURCE. [POS_RET_ERROR_INNER]
+///
+/// \~english @par Detail
+/// - Call this API to get GPS time from vehicle sensor.
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+///
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_SetGPStime
+////////////////////////////////////////////////////////////////////////////////////////////
+POS_RET_API POS_GetGPStime(HANDLE hApp, SENSOR_GPSTIME* dat);
+
+#ifdef __cplusplus
+}
+#endif
+/** @}*/ // end of positioning
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_GPS_API_H_
diff --git a/vehicleservice/positioning/client/include/vehicle_service/POS_sensor_API.h b/vehicleservice/positioning/client/include/vehicle_service/POS_sensor_API.h
new file mode 100644
index 00000000..a7a35c4a
--- /dev/null
+++ b/vehicleservice/positioning/client/include/vehicle_service/POS_sensor_API.h
@@ -0,0 +1,716 @@
+/*
+ * @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.
+ */
+#ifndef POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_SENSOR_API_H_
+#define POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_SENSOR_API_H_
+/**
+ * @file POS_sensor_API.h
+ * @brief API definition file for Sensor function
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup positioning
+ * @ingroup vehicle_service
+ * @{
+ */
+/*---------------------------------------------------------------------------------*
+ * Incluce *
+ *---------------------------------------------------------------------------------*/
+#include <vehicle_service/POS_define.h>
+
+/*---------------------------------------------------------------------------------*
+ * Definition *
+ *---------------------------------------------------------------------------------*/
+/* POSITIONING_DID */
+#define POS_DID_SPEED_PULSE 0x80000012 //!< \~english Data ID of speed pulse
+#define POS_DID_SPEED_KMPH 0x80000013 //!< \~english Data ID of KMPH speed
+#define POS_DID_SNS_COUNTER 0x8000001A
+//!< \~english Data ID of sensor counter
+#define POS_DID_GYRO_X 0x80000014 //!< \~english Data ID of X axis gyro
+#define POS_DID_GYRO_Y 0x80000085 //!< \~english Data ID of Y axis gyro
+#define POS_DID_GYRO_Z 0x80000086 //!< \~english Data ID of Z axis gyro
+#define POS_DID_GYRO POS_DID_GYRO_X
+//!< \~english Data ID of POS_DID_GYRO is same as POS_DID_GYRO_X
+#define POS_DID_GSNS_X 0x80000015 //!< \~english Data ID of x axis gsensor
+#define POS_DID_GSNS_Y 0x80000016 //!< \~english Data ID of Y axis gsensor
+#define POS_DID_GSNS_Z 0x80000026 //!< \~english Data ID of Z axis gsensor
+#define POS_DID_REV 0x80000017 //!< \~english Data ID of reverse signal
+#define POS_DID_GPS_ANTENNA 0x80000019
+//!< \~english Data ID of GPS antenna status
+#define POS_DID_SPEED_PULSE_FST 0x80000028
+//!< \~english Data ID of first time speed pulse
+#define POS_DID_GYRO_X_FST 0x80000029 //!< \~english Data ID of first time X axis gyro
+#define POS_DID_GYRO_Y_FST 0x80000043 //!< \~english Data ID of first time Y axis gyro
+#define POS_DID_GYRO_Z_FST 0x80000023 //!< \~english Data ID of first time Z axis gyro
+#define POS_DID_GYRO_FST POS_DID_GYRO_X_FST
+//!< \~~english Data ID of POS_DID_GYRO_FST is same as POS_DID_GYRO_X_FST
+#define POS_DID_REV_FST 0x8000007E
+//!< \~english Data ID of first time reverse signal
+#define POS_DID_GYRO_TEMP 0x80000090 //!< \~english Data ID of gyro temperature
+#define POS_DID_GYRO_TEMP_FST 0x80000091
+//!< \~english Data ID of first time gyro temperature
+#define POS_DID_GSNS_X_FST 0x80000087
+//!< \~english Data ID of first time x axis gsensor
+#define POS_DID_GSNS_Y_FST 0x80000088
+//!< \~english Data ID of first time Y axis gsensor
+#define POS_DID_GSNS_Z_FST 0x80000089
+//!< \~english Data ID of first time Z axis gsensor
+#define POS_DID_PULSE_TIME 0x8000003A //!< \~english Data ID of pulse time
+
+#define POS_DID_GPS__CWORD82__NMEA 0x80000030U
+//!< \~english Data ID of _CWORD82_ GPS NMEA sentence
+#define POS_DID_GPS__CWORD82___CWORD44_GP4 0x80000031U
+//!< \~english Data ID of _CWORD82_ GPS _CWORD44_GP4 data
+#define POS_DID_GPS__CWORD82__FULLBINARY 0x80000032U
+//!< \~english Data ID of _CWORD82_ GPS full binary data
+#define POS_DID_GPS_NMEA 0x8000009AU
+//!< \~english Data ID of GPS NMEA sentence
+#define POS_DID_GPS_CLOCK_DRIFT 0x800000B3U
+//!< \~english Data ID of GPS time drift data
+#define POS_DID_GPS_CLOCK_FREQ 0x800000B4U
+//!< \~english Data ID of GPS time frequency data
+
+/**
+ * \~english @brief Delivery sensor extra package command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkUnifiedAttachCallbackToDispatcher(h_app, POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_PKG_SENSOR_DATA, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_PKG_SENSOR_DATA 0x0700
+
+/**
+ * \~english @brief Delivery sensor information command ID
+ * \~english @brief If you want to catch above envents, use NSFW like below.
+ * \~english @code
+ * l_eStatus = FrameworkUnifiedAttachCallbackToDispatcher(h_app, POS_NTFY_SEND_THREAD, CID_POSIF_REGISTER_LISTENER_SENSOR_DATA, CBCallbackA);
+ * @endcode
+ */
+#define CID_POSIF_REGISTER_LISTENER_SENSOR_DATA 0x0200
+
+#define SENSOR_MSGBUF_DSIZE 4096
+//!< \~english message body maximum size
+
+#define SENSOR_VSHEAD_DSIZE 36
+//!< \~english vehicle sensor header size(1+3+16*2)
+
+#define SENSOR_VSINFO_DSIZE (SENSOR_MSGBUF_DSIZE - SENSOR_VSHEAD_DSIZE)
+//!< \~english vehicle sensor data size
+
+// Same name/value is defined, but client doesn't include HAL header.
+// It defines SENSOR_MSG_VSINFO_DSIZE if not included HAL.
+#ifndef HAL_API_POSITIONING_HAL_H_
+#define SENSOR_MSG_VSINFO_DSIZE 1904u
+//!< \~english vehicle sensor message body maximum size
+#endif
+
+#define SENSOR_PKG_DELIVERY_MAX 16
+//!< \~english number of data ID per a package
+
+/*---------------------------------------------------------------------------------*
+ * Typedef declaration *
+ *---------------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------------*
+ * Struct declaration *
+ *---------------------------------------------------------------------------------*/
+/**
+ * @struct SENSOR_PKG_MSG_VSINFO
+ * \~english positioning sensor notification message (to User)
+ */
+typedef struct {
+ uint8_t ucDNum; //!< \~english number of data
+ uint8_t ucDataBreak; //!< \~english data lack infomation
+ uint8_t ucDivideCnt; //!< \~english total partition
+ uint8_t ucDivideSendCnt; //!< \~english partition transmit count
+ uint16_t usOffset[SENSOR_PKG_DELIVERY_MAX]; //!< \~english offset
+ uint8_t ucData[SENSOR_VSINFO_DSIZE]; //!< \~english data body
+} SENSOR_PKG_MSG_VSINFO;
+
+/**
+ * @struct SENSOR_MSG_VSINFO
+ * \~english message delivery positioning sensor information
+ */
+typedef struct {
+ DID did; //!< \~english data ID
+ uint16_t size; //!< \~english data size
+ uint8_t rcvFlag; //!< \~english reception flag
+ uint8_t reserve; //!< \~english reserve
+ uint8_t data[SENSOR_MSG_VSINFO_DSIZE]; //!< \~english data body
+} SENSOR_MSG_VSINFO;
+
+/*---------------------------------------------------------------------------------*
+ * Prototype Declaration *
+ *---------------------------------------------------------------------------------*/
+/* SENSOR_API public API */
+#ifdef __cplusplus
+extern "C" {
+#endif
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Send the extra package when first delivery.
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ucPkgNum
+/// - uint8_t - data number in package(1 to 16)
+/// \~english @param [in] pulDid
+/// - DID * - buffer pointer of the data ID array in package
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+///
+/// \~english @par
+/// - data number in package(ucPkgNum) \n
+/// The following 8 data ID can be registered. And the register data number range is 1~16.
+/// - buffer pointer of the data ID array in package(pulDid) \n
+/// The data ID set to the first in pulDid is the delivery key. \n
+/// If the data ID not one of the following be set, return SENSOR_RET_ERROR_PARAM.
+/// - POS_DID_SNS_COUNTER - sensor counter
+/// - POS_DID_GYRO_X - gyro output (X axis)
+/// - POS_DID_GYRO_Y - gyro output (Y axis)
+/// - POS_DID_GYRO_Z - gyro output (Z axis)
+/// - POS_DID_SPEED_PULSE - speed pulse
+/// - POS_DID_REV - REV signal(0:forward 1:backward)
+/// - POS_DID_GSNS_X - Gsensor output X axis
+/// - POS_DID_GSNS_Y - Gsensor output Y axis
+/// - POS_DID_GSNS_Z - Gsensor output Z axis
+/// - POS_DID_GYRO_TEMP - gyro temperature
+/// - POS_DID_PULSE_TIME - pulse time\n
+/// \~english @par
+/// - Because positioning is G/W between Navi and HAL, value depends on the design of HAL.
+/// \~english @par
+/// - Note:The Gsensor output is 0 in the environment without Gsensor hardware.\n
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register specified LonLat delivery
+/// - Please note that if the same data delivery has been registered for multiple times, \n
+/// the data will also be deliveried for registered multiple times.
+/// - The specified LonLat will be deliveried at register time no matter what delivery \n
+/// timing has been registered (first delivery).
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change Specified LonLat be deliveried only when it is changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update Specified Lonlat be deliveried as long as \n
+/// it is updated by vehicle sensor.
+///
+///
+/// \~english @retval SENSOR_RET_NORMAL normal end
+/// \~english @retval SENSOR_RET_ERROR_CREATE_EVENT event create failed
+/// \~english @retval SENSOR_RET_ERROR_PARAM parameter error
+/// \~english @retval SENSOR_RET_ERROR_INNER internal error
+/// \~english @retval SENSOR_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval SENSOR_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization \n
+/// (FrameworkunifiedCreateDispatcherWithoutLoop and etc.) of the Dispatcher for App are completed.
+/// - Availability of service positioning is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ucDeliveryTiming is neither update(SENSOR_DELIVERY_TIMING_UPDATE) \n
+/// nor change(SENSOR_DELIVERY_TIMING_CHANGE) [SENSOR_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ucPkgNum is 0 or it is larger than 16 [SENSOR_RET_ERROR_PARAM]
+/// - The parameter pulDid is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The data ID in paramter buffer pulDid is not avaliable value [SENSOR_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The event has been registered in event table and created in same process, \n
+/// but the count of reference is reach to max [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table and created in system, but the \n
+/// count of reference is reach to max [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, but memory for the thread event table \n
+/// creation allocate falied. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, but the thread can not be registered in \n
+/// event table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, but memory for thread table creation \n
+/// allocate falied. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, and the event flag has already been \n
+/// registered. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, and the event flag register failed. \n
+/// [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - No empty field for registering the event HANDLE into event table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Memory for event HANDLE get failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table and not finished registering \n
+/// [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table, and memory for thread table \n
+/// creation allocate falied. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table, and the event flag has already been \n
+/// registered. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table, and the event flag register failed. \n
+/// [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - ProcessNo has not been registered in message control table when message transfered \n
+/// between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered in process. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer failed in process. [SENSOR_RET_ERROR_INNER]
+/// - The destination process name is NULL. [SENSOR_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message transfer \n
+/// between processes. [SENSOR_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer failed between processes. [SENSOR_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during event \n
+/// waiting. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The count of thread is reach to max in event management table during event \n
+/// waiting. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The EV_FLAG_BIT is not set in flagID during event getting. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The ID of message event queue has not been created during event getting. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The flagID has not been registered during event getting. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The interruption happened during event getting [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Whatever error happened during event getting. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Got event is SENSOR_RET_ERROR_INNER. [SENSOR_RET_ERROR_INNER]
+///
+/// \~english @par Detial
+/// - Call this API to register vehicle sensor data delivery. \n
+/// This API return the result of registering. \n
+/// The data from sensor data received to registering will be deliveried. \n
+/// The first delivery data is the sensor data(max 64 number of sensor counter, \n
+/// reverse signal,gyro temperature, max 640 number of gyro output(X axis), gyro output(X axis), gyro output(Z axis), \n
+/// speed pulse,Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis), max 2048 number of pulse time) in 6.4 second. \n
+/// If the data number is more than max number, delivery the data in newest 6.4 second. \n
+/// If the sensor data accumulated more than max number, set VEHICLE_SNS_BREAK to data missing information. \n
+/// If sensor data number is more than the data number send in one time(10 number of \n
+/// sensor counter,reverse signal,gyro temperature, 100 number of gyro output(X axis), gyro output(X axis), gyro output(Z axis), \n
+/// speed pulse, Gsensor output(X axis),Gsensor output(Y axis), Gsensor output(Z axis), 320 number of pulse time), \n
+/// the old data is divided into partitions(every partition with 10 number of sensor counter, \n
+/// reverse signal,gyro temperature, 100 number of gyro output(X axis), gyro output(X axis), gyro output(Z axis), \n
+/// speed pulse,Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis), 320 number of pulse time) to delivery. \n
+/// The last message for first delivery is the message that the partition count equal to partition No. \n
+/// After first delivery, the message data(1 number of sensor counter,reverse signal, \n
+/// gyro temperature, 10 number of gyro output(X axis), gyro output(X axis), gyro output(Z axis),speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis), 32 number of pulse time) deliveried. \n
+/// And because the data missing information, divided partition count, \n
+/// diveided partition No is not used, they will be set to 0 in message.\n
+/// (sample)The sensor data in 6.4 second divided to delivery
+/// - 1st message(sensor counter, reverse signal, gyro temperature=10 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=100 number, pulse time=320 number), divided \n
+/// partition count=7, divided partition No=1)
+/// - 2nd message(sensor counter, reverse signal, gyro temperature=10 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=100 number, pulse time=320 number), divided \n
+/// partition count=7, divided partition No=2)
+/// - 3rd message(sensor counter, reverse signal, gyro temperature=10 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=100 number, pulse time=320 number), divided \n
+/// partition count=7,divided partition No=3)
+/// - 4th message(sensor counter, reverse signal, gyro temperature=10 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=100 number, pulse time=320 number), divided \n
+/// partition count=7,divided partition No=4)
+/// - 5th message(sensor counter, reverse signal, gyro temperature=10 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=100 number, pulse time=320 number), divided \n
+/// partition count=7,divided partition No=5)
+/// - 6th message(sensor counter, reverse signal, gyro temperature=10 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=100 number, pulse time=320 number), divided \n
+/// partition count=7,divided partition No=6)
+/// - 7th message(sensor counter, reverse signal, gyro temperature=4 number, gyro output(X axis), gyro output(Y axis), gyro output(Z axis), speed pulse, \n
+/// Gsensor output(X axis), Gsensor output(Y axis), Gsensor output(Z axis)=40 number, pulse time=128 number), divided \n
+/// partition count=7,divided partition No=7)
+///
+/// \~english @par
+/// - Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After delivery the sensor data accumulated in 6.4 second(first delivery), the sensor data \n
+/// will not be accumulated any more. So the same data will be deliveried as first \n
+/// delivery when registered again.
+/// - This API is only called by Navi proxy.
+/// - After call this API, if the delivery destination thread name is changed, please call this API again.
+///
+/// \~english @par
+/// message structure
+/// - After success to register, vehicle sensor will send message as system API message with following format.
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_PKG_SENSOR_DATA \n
+/// Definition of structure
+/// \~english @code
+/// #define SENSOR_MSGBUF_DSIZE 4096 /* max size of message body */
+/// #define SENSOR_VSHEAD_DSIZE 36 /* vehicle sensor header size(1+3+16*2) */
+/// #define SENSOR_PKG_DELIVERY_MAX 16 /* max number of Data ID in package */
+/// #define SENSOR_VSINFO_DSIZE (SENSOR_MSGBUF_DSIZE - SENSOR_VSHEAD_DSIZE)
+/// typedef struct {
+/// uint8_t ucDNum; /* number of data */
+/// uint8_t ucDataBreak; /* data missing information */
+/// uint8_t ucDivideCnt; /* divided partition count */
+/// uint8_t ucDivideSendCnt; /* divided partition No. */
+/// uint16_t usOffset[SENSOR_PKG_DELIVERY_MAX]; /* offset */
+/// uint8_t ucData[SENSOR_VSINFO_DSIZE]; /* vehicle sensor data */
+/// } SENSOR_PKG_MSG_VSINFO;
+/// @endcode
+/// - number of data \n
+/// Data number in package
+/// - data missing information \n
+/// VEHICLE_SNS_BREAK:not continuous data \n
+/// VEHICLE_SNS_NORMAL:continuous data
+/// - divided partition count \n
+/// All divided partition count \n
+/// If it is more than 1, data divided to delivery
+/// - divided partition No. \n
+/// The No. of the divided partition. If it equal to the divided partition count, \n
+/// that meanings this message is the last divided partition of the package.
+/// - offset \n
+/// The array of the offset from the head of vehicle sensor data
+/// - vehicle sensor data
+/// - Data ID(4Byte)
+/// - Data size(2Byte)
+/// - reception flag(1Byte)
+/// - If the data get from CAN, direct line, GPS, set to 0x01
+/// - If data has not been received, set to 0x00
+/// - reserve(1Byte)\n
+/// - Data body is cycle fit with the packaged data.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - POS_RegisterListenerSensData, POS_GetSensData
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+SENSOR_RET_API POS_RegisterListenerPkgSensData(HANDLE hApp, PCSTR notifyName, uint8_t ucPkgNum, DID *pulDid,
+ uint8_t ucCtrlFlg, uint8_t ucDeliveryTiming);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Register sensor data delivery.
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] notifyName
+/// - PCSTR - Destination thread name
+/// \~english @param [in] ulDid
+/// - DID - Data ID of vehicle info
+/// \~english @param [in] ucCtrlFlg
+/// - uint8_t - Delivery control flag(register)
+/// \~english @param [in] ucDeliveryTiming
+/// - uint8_t - Delivery timing(change/update)
+///
+/// \~english @par
+/// - Data ID of vehicle info(ulDid) \n
+///
+/// \~english @par
+/// - Note:The Gsensor output is 0 in the environment without Gsensor hardware.
+/// \~english @par
+/// - Delivery control flag(ucCtrlFlg)
+/// - SENSOR_DELIVERY_REGIST - register
+/// - Register specified LonLat delivery
+/// - Please note that if the same data delivery has been registered for multiple times, \n
+/// the data will also be deliveried for registered multiple times.
+/// - The specified LonLat will be deliveried at register time no matter what delivery \n
+/// timing has been registered (first delivery).
+/// - Delivery timing(ucDeliveryTiming)
+/// - SENSOR_DELIVERY_TIMING_CHANGE - change Specified LonLat be deliveried only when it is changed.
+/// - SENSOR_DELIVERY_TIMING_UPDATE - update Specified Lonlat be deliveried \n
+/// as long as it is updated by vehicle sensor.
+///
+/// \~english @retval SENSOR_RET_NORMAL normal end
+/// \~english @retval SENSOR_RET_ERROR_CREATE_EVENT event create failed
+/// \~english @retval SENSOR_RET_ERROR_PARAM parameter error
+/// \~english @retval SENSOR_RET_ERROR_INNER internal error
+/// \~english @retval SENSOR_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval SENSOR_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the Dispatcher for App are completed.
+/// - Availability of service positioning is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter ucDeliveryTiming is neither update \n
+/// (SENSOR_DELIVERY_TIMING_UPDATE) nor change(SENSOR_DELIVERY_TIMING_CHANGE) [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ucCtrlFlg is not register(SENSOR_DELIVERY_REGIST) [SENSOR_RET_ERROR_PARAM]
+/// - The parameter hApp is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter notifyName is NULL [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ulDID is not avaliable value [SENSOR_RET_ERROR_PARAM]
+/// - The parameter ulDID is a value can not specified [SENSOR_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [SENSOR_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to \n
+/// max [SENSOR_RET_ERROR_RESOURCE]
+/// - The event has been registered in event table and created in same process, \n
+/// but the count of reference is reach to max [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table and created in system, but the count \n
+/// of reference is reach to max [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, but memory for the thread event table \n
+/// creation allocate falied. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, but the thread can not be registered \n
+/// in event table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, but memory for thread table creation \n
+/// allocate falied. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, and the event flag has already been \n
+/// registered. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has been registered in event table, and the event flag register failed. \n
+/// [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - No empty field for registering the event HANDLE into event table. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Memory for event HANDLE get failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table and not finished registering \n
+/// [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table, and memory for thread table \n
+/// creation allocate falied. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table, and the event flag has already \n
+/// been registered. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The event has not been registered in event table, and the event flag register \n
+/// failed. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - ProcessNo has not been registered in message control table when message transfered \n
+/// in process. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed when message transfered in process. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer failed in process. [SENSOR_RET_ERROR_INNER]
+/// - The destination process name is NULL. [SENSOR_RET_ERROR_INNER]
+/// - The destination process name size is larger than 20 characters when message \n
+/// transfer between process. [SENSOR_RET_ERROR_INNER]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between process. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE create failed when message transfered between process. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between process. [SENSOR_RET_ERROR_INNER]
+/// - Message transfer failed between process. [SENSOR_RET_ERROR_INNER]
+/// - Specified event HANDLE has not been registered in event HANDLE table during waiting \n
+/// event. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The count of thread is reach to max in event management table during waiting \n
+/// event. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The EV_FLAG_BIT is not set in flagID during getting event. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The ID of message event queue has not been created during getting event. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The flagID has not been registered during getting event. [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - The interruption happened during getting event [SENSOR_RET_ERROR_CREATE_EVENT]
+/// - Whatever error happened during getting event. [SENSOR_RET_ERROR_CREATE_EVENT]
+///
+/// \~english @par Detial
+/// - Call this API to register vehicle sensor data delivery. \n
+/// This API return the result of registering.
+///
+/// \~english @par
+/// Please note the following points when use this API.
+/// - Duplication registering
+/// - The same destination thread name has already been registered
+/// - The registered delivery data updated and normal return.(first delivery)
+/// - To one delivery destination, the same data will not be duplication deliveried at same timing.
+/// - After call this API, if the delivery destination thread name is changed, please call this API again.
+///
+/// \~english @par
+/// message structure
+/// - After success to register, vehicle sensor will send message as system API message with following format.
+/// - If the register successed, certainly delivery first data. And then delivery data according to
+/// the delivery timing. \n
+/// Command ID : @ref CID_POSIF_REGISTER_LISTENER_SENSOR_DATA \n
+///
+/// \~english @code
+/// #define SENSOR_MSG_VSINFO_DSIZE 1904 /* max size of message body */
+/// typedef struct
+/// {
+/// DID did; /* data ID */
+/// uint16_t size; /* data size of vehicle sensor data */
+/// uint8_t rcvFlag; /* reception flag */
+/// uint8_t reserve; /* reserve */
+/// uint8_t data[SENSOR_MSG_VSINFO_DSIZE]; /* vehicle sensor data */
+/// } SENSOR_MSG_VSINFO;
+/// @endcode
+/// - reception flag(1Byte)
+/// - If the data get from CAN or direct line, set to 0x01
+/// - If data has not been received, set to 0x00
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Method
+///
+/// \~english @see
+/// - POS_RegisterListenerPkgSensData, POS_GetSensData
+///
+////////////////////////////////////////////////////////////////////////////////////////////
+SENSOR_RET_API POS_RegisterListenerSensData(HANDLE hApp, PCSTR notifyName, DID ulDid, uint8_t ucCtrlFlg,
+ uint8_t ucDeliveryTiming);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup tag_Positioning
+/// \~english @par Brief
+/// - Get vehicle sensor data.
+///
+/// \~english @param [in] hApp
+/// - HANDLE - App Handle
+/// \~english @param [in] ulDid
+/// - DID - Data ID of vehicle info
+/// \~english @param [out] pDestData
+/// - void* - pointer of buffer for storing vehicle sensor data
+/// \~english @param [in] usDestSize
+/// - uint16_t - vehicle sensor data buffer size
+///
+/// \~english @par
+/// - Data ID of vehicle info(ulDid)
+/// - POS_DID_SPEED_PULSE - speed pulse(count of pulse)
+/// - POS_DID_GYRO_X - gyro output (X axis)
+/// - POS_DID_GYRO_Y - gyro output (Y axis)
+/// - POS_DID_GYRO_Z - gyro output (Z axis)
+/// - POS_DID_GSNS_X - Gsensor output (X axis)
+/// - POS_DID_GSNS_Y - Gsensor output (Y axis)
+/// - POS_DID_GSNS_Z - Gsensor output (Z axis)
+/// - POS_DID_GPS_ANTENNA - GPS antenna connection status
+/// - POS_DID_GPS__CWORD82__NMEA - GPS NMEA(_CWORD82_)
+/// - POS_DID_GPS__CWORD82__FULLBINARY - GPS _CWORD82_ full binary(_CWORD82_)
+/// - POS_DID_GPS_NMEA - GPS NMEA
+/// - POS_DID_GYRO_TEMP - gyro temperature
+/// - POS_DID_GPS_CLOCK_DRIFT - GPS clock drift
+/// - POS_DID_GPS_CLOCK_FREQ - GPS clock frequency
+/// - The avaliable data ID of each hardware type is as following.
+/// \~english @par
+/// - Because positioning is G/W between Navi and HAL, value depends on the design of HAL.
+/// \~english @par
+/// - Note:The Gsensor output is 0 in the environment without Gsensor hardware.
+/// - vehicle sensor data buffer size(usDestSize) \n
+/// Please note it is the size of output buffer, not the size of data.
+///
+/// \~english @retval more than 0 data size
+/// \~english @retval POS_RET_ERROR_CREATE_EVENT event create failed
+/// \~english @retval POS_RET_ERROR_OUTOF_MEMORY share memory guarantee failed
+/// \~english @retval POS_RET_ERROR_PARAM parameter error
+/// \~english @retval POS_RET_ERROR_SIZE buffer size error
+/// \~english @retval POS_RET_ERROR_INNER internal error
+/// \~english @retval POS_RET_ERROR_NOSUPPORT unsupported
+/// \~english @retval POS_RET_ERROR_RESOURCE lack of resource
+///
+/// \~english @par Precondition
+/// - The creation/initialization(FrameworkunifiedCreateDispatcherWithoutLoop and etc.) \n
+/// of the Dispatcher for App are completed.
+/// - Availability of service positioning is TRUE.
+///
+/// \~english @par change of internal status
+/// - There is no change of internal status
+///
+/// \~english @par Failure condition
+/// - The parameter hApp is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter pDestData is NULL [POS_RET_ERROR_PARAM]
+/// - The parameter ulDid is not avaliable value in current hardware environment [POS_RET_ERROR_PARAM]
+/// - The count of message in message queue is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of mutex is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The count of item in ProcessName-ProcessNo convert table is reach to max [POS_RET_ERROR_RESOURCE]
+/// - The event is created in same process, but the count of reference is reach to max \n
+/// [POS_RET_ERROR_CREATE_EVENT]
+/// - The event is created in system, but the count of reference is reach to max [POS_RET_ERROR_CREATE_EVENT]
+/// - Memory allocate falied during the event table creation for \n
+/// event registering. [POS_RET_ERROR_CREATE_EVENT]
+/// - The thread can not register in the event table. [POS_RET_ERROR_CREATE_EVENT]
+/// - Memory allocate failed in event table during the thread table creation. [POS_RET_ERROR_CREATE_EVENT]
+/// - After register the thread table in event table, the event flag has already \n
+/// been registered. [POS_RET_ERROR_CREATE_EVENT]
+/// - After register the thread table in event table, the event flag register \n
+/// failed. [POS_RET_ERROR_CREATE_EVENT]
+/// - The event table is full during event creation. [POS_RET_ERROR_CREATE_EVENT]
+/// - The memory for event HANDLE allocate failed during event table creation. [POS_RET_ERROR_CREATE_EVENT]
+/// - The thread can not be registered in event table. [POS_RET_ERROR_CREATE_EVENT]
+/// - In event table, to allocate the memory of the thread table creation, \n
+/// but failed. [POS_RET_ERROR_CREATE_EVENT]
+/// - After register the thread in event table, the event flag has already been \n
+/// registered. [POS_RET_ERROR_CREATE_EVENT]
+/// - After register the thread in event table, the event flag register failed. [POS_RET_ERROR_CREATE_EVENT]
+/// - Specified event ID has not been registered in table. [POS_RET_ERROR_CREATE_EVENT]
+/// - Initialize event object failed. [POS_RET_ERROR_CREATE_EVENT]
+/// - There is no empty field in semaphore table for semaphore creation [POS_RET_ERROR_OUTOF_MEMORY]
+/// - The memory for storing semaphore control data allocate failed. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Specified semaphore ID has not been registered when semaphore lock. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Internal mutex HANDLE is NULL when mutex lock. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Internal mutex HANDLE has not been registered in mutex table when mutex lock. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - The owner of specified mutex is not itself when mutex lock. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Mutex has been multiple locked [POS_RET_ERROR_OUTOF_MEMORY]
+/// - The HANDLE is NULL when getting usable share memory address. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Can not get usable share memory address. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Memory allocate failed for share memory map. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Memory allocate failed for share memory management. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Can not open share memory. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Failed to mapping share memory. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - No empty field in share memory. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - ProcessNo has not been registered in message control table when message \n
+/// transfered between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - Message transfer HANDLE get failed when message transfered between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - Message transfer failed between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - The destination process name size is larger than 20 characters when message \n
+/// transfer between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - The message queue name has not been registered in control table when message \n
+/// transfer between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - Message transfer HANDLE create failed when message transfered between processes. \n
+/// [POS_RET_ERROR_CREATE_EVENT]
+/// - Message transfer HANDLE get failed from internal table when message transfered \n
+/// between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - Message transfer failed between processes. [POS_RET_ERROR_CREATE_EVENT]
+/// - Specified event HANDLE has not been registered in event HANDLE table during \n
+/// event waiting. [POS_RET_ERROR_INNER]
+/// - The count of thread is reach to max in event management table during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during event waiting. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during event waiting. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during event waiting. [POS_RET_ERROR_INNER]
+/// - The interruption happened during event waiting [POS_RET_ERROR_INNER]
+/// - Whatever error happened during event waiting. [POS_RET_ERROR_INNER]
+/// - The EV_FLAG_BIT is not set in flagID during getting event. [POS_RET_ERROR_INNER]
+/// - The ID of message event queue has not been created during getting event. [POS_RET_ERROR_INNER]
+/// - The flagID has not been registered during getting event. [POS_RET_ERROR_INNER]
+/// - The interruption happened during getting event [POS_RET_ERROR_INNER]
+/// - Whatever error happened during getting event. [POS_RET_ERROR_INNER]
+/// - The HANDLE is NULL when getting usable share memory address for accessing \n
+/// received data. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Can not get usable share memory address for accessing received data. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Memory for share memory map allocate failed for accessing received data. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Memory for share memory management allocate failed for accessing received \n
+/// data. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Can not open share memory for accessing received data. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Failed to mapping share memory for accessing received data. [POS_RET_ERROR_OUTOF_MEMORY]
+/// - Can not get share memory normally [POS_RET_ERROR_OUTOF_MEMORY]
+/// - The size of data stored in share memory is larger than the size of received data. [POS_RET_ERROR_SIZE]
+///
+/// \~english @par Detial
+/// - Call this API to get vehicle sensor data. \n
+/// This vehicle sensor data stored in the output buffer of the parameter, this API return.
+///
+/// \~english @par Classification
+/// - Public
+///
+/// \~english @par Type
+/// - Sync
+///
+/// \~english @see
+/// - POS_RegisterListenerPkgSensData, POS_RegisterListenerSensData
+///
+
+POS_RET_API POS_GetSensData(HANDLE hApp, DID ulDid, void *pDestData, uint16_t usDestSize);
+
+#ifdef __cplusplus
+}
+#endif
+/** @}*/ // end of positioning
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+#endif // POSITIONING_CLIENT_INCLUDE_VEHICLE_SERVICE_POS_SENSOR_API_H_
diff --git a/vehicleservice/positioning/client/include/vehicle_service/positioning.h b/vehicleservice/positioning/client/include/vehicle_service/positioning.h
new file mode 100644
index 00000000..a5a1e562
--- /dev/null
+++ b/vehicleservice/positioning/client/include/vehicle_service/positioning.h
@@ -0,0 +1,46 @@
+//
+// @copyright Copyright (c) 2017-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.
+//
+
+
+#ifndef VEHICLESERVICE_POSITIONING_H_ // NOLINT(build/header_guard)
+#define VEHICLESERVICE_POSITIONING_H_ // NOLINT(build/header_guard)
+
+/**
+ * @file positioning.h
+ * @brief Common header of positioning
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup positioning
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#include <vehicle_service/POS_define.h>
+#include <vehicle_service/POS_sensor_API.h>
+#include <vehicle_service/POS_gps_API.h>
+#include <vehicle_service/POS_common_API.h>
+
+/** @}*/ // end of positioning
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+#endif // VEHICLESERVICE_POSITIONING_H_