From 947c78887e791596d4a5ec2d1079f8b1a049628b Mon Sep 17 00:00:00 2001 From: takeshi_hoshina Date: Tue, 27 Oct 2020 11:16:21 +0900 Subject: basesystem 0.1 --- .../positioning/client/include/CanInput_API.h | 98 ++ .../client/include/CanInput_API_private.h | 68 + .../positioning/client/include/Clock_API.h | 258 +++ .../positioning/client/include/CommonDefine.h | 72 + vehicleservice/positioning/client/include/DR_API.h | 148 ++ .../client/include/DeadReckoning_DbgLogSim.h | 50 + .../client/include/Dead_Reckoning_API.h | 229 +++ .../client/include/Dead_Reckoning_Local_Api.h | 147 ++ .../positioning/client/include/Gps_API_private.h | 64 + .../positioning/client/include/INI_API.h | 259 +++ .../positioning/client/include/Naviinfo_API.h | 110 ++ .../client/include/POS_common_private.h | 62 + .../positioning/client/include/POS_private.h | 981 ++++++++++++ .../client/include/POS_sensor_private.h | 163 ++ .../client/include/SensorLocation_API.h | 124 ++ .../client/include/SensorLocation_API_private.h | 39 + .../positioning/client/include/SensorMotion_API.h | 178 +++ .../positioning/client/include/Sensor_API.h | 36 + .../client/include/Sensor_API_private.h | 174 ++ .../positioning/client/include/Sensor_Common_API.h | 193 +++ .../positioning/client/include/VehicleDebug_API.h | 110 ++ .../positioning/client/include/Vehicle_API.h | 115 ++ .../positioning/client/include/Vehicle_API_Dummy.h | 142 ++ .../client/include/Vehicle_API_private.h | 129 ++ .../include/vehicle_service/POS_common_API.h | 1663 ++++++++++++++++++++ .../client/include/vehicle_service/POS_define.h | 134 ++ .../client/include/vehicle_service/POS_gps_API.h | 1135 +++++++++++++ .../include/vehicle_service/POS_sensor_API.h | 716 +++++++++ .../client/include/vehicle_service/positioning.h | 46 + 29 files changed, 7643 insertions(+) create mode 100644 vehicleservice/positioning/client/include/CanInput_API.h create mode 100644 vehicleservice/positioning/client/include/CanInput_API_private.h create mode 100644 vehicleservice/positioning/client/include/Clock_API.h create mode 100644 vehicleservice/positioning/client/include/CommonDefine.h create mode 100644 vehicleservice/positioning/client/include/DR_API.h create mode 100644 vehicleservice/positioning/client/include/DeadReckoning_DbgLogSim.h create mode 100644 vehicleservice/positioning/client/include/Dead_Reckoning_API.h create mode 100644 vehicleservice/positioning/client/include/Dead_Reckoning_Local_Api.h create mode 100644 vehicleservice/positioning/client/include/Gps_API_private.h create mode 100644 vehicleservice/positioning/client/include/INI_API.h create mode 100644 vehicleservice/positioning/client/include/Naviinfo_API.h create mode 100644 vehicleservice/positioning/client/include/POS_common_private.h create mode 100644 vehicleservice/positioning/client/include/POS_private.h create mode 100644 vehicleservice/positioning/client/include/POS_sensor_private.h create mode 100644 vehicleservice/positioning/client/include/SensorLocation_API.h create mode 100644 vehicleservice/positioning/client/include/SensorLocation_API_private.h create mode 100644 vehicleservice/positioning/client/include/SensorMotion_API.h create mode 100644 vehicleservice/positioning/client/include/Sensor_API.h create mode 100644 vehicleservice/positioning/client/include/Sensor_API_private.h create mode 100644 vehicleservice/positioning/client/include/Sensor_Common_API.h create mode 100644 vehicleservice/positioning/client/include/VehicleDebug_API.h create mode 100644 vehicleservice/positioning/client/include/Vehicle_API.h create mode 100644 vehicleservice/positioning/client/include/Vehicle_API_Dummy.h create mode 100644 vehicleservice/positioning/client/include/Vehicle_API_private.h create mode 100644 vehicleservice/positioning/client/include/vehicle_service/POS_common_API.h create mode 100644 vehicleservice/positioning/client/include/vehicle_service/POS_define.h create mode 100644 vehicleservice/positioning/client/include/vehicle_service/POS_gps_API.h create mode 100644 vehicleservice/positioning/client/include/vehicle_service/POS_sensor_API.h create mode 100644 vehicleservice/positioning/client/include/vehicle_service/positioning.h (limited to 'vehicleservice/positioning/client/include') 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 /* 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 +#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 +#include +#include + +/*---------------------------------------------------------------------------------* + * 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
+ 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 +#include "Sensor_Common_API.h" +#include + +/***************************************************************************** + * 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 +#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 + +/*---------------------------------------------------------------------------------* + * 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 + +/* +***** 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
+ Naviinfo_API External Public Header +******************************************************************************/ +#ifndef POSITIONING_CLIENT_INCLUDE_NAVIINFO_API_H_ +#define POSITIONING_CLIENT_INCLUDE_NAVIINFO_API_H_ + +/***************************************************************************** + * Include * + *****************************************************************************/ +#include +#include "Sensor_Common_API.h" +#include "Vehicle_API.h" +#include "Sensor_API.h" +#include + +/***************************************************************************** + * 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 +#include +#include "Vehicle_API_Dummy.h" +#include "Vehicle_API_private.h" +#include "Naviinfo_API.h" +#include "POS_common_private.h" +#include +#include +#include +#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
+ * POS_RET_ERROR Out of scope
+ * 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
+ * POS_RET_ERROR Out of scope
+ * 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
+ * POS_RET_ERROR Out of scope
+ * 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
+ * POS_RET_ERROR Out of scope
+ * 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
+ * POS_RET_ERROR Out of scope
+ * 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
+ * POS_RET_ERROR Out of scope
+ * 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)
+ * POS_RET_ERROR_PARAM Parameter error
+ * 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(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(&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)
+ * POS_RET_ERROR_CREATE_EVENT Event generation failure
+ * POS_RET_ERROR_OUTOF_MEMORY Shared memory allocation failed
+ * POS_RET_ERROR_SIZE Storage destination size error
+ * POS_RET_ERROR_DID Unregistered ID
+ */ +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(&data), 0, sizeof(VEHICLE_MSG_GET_VEHICLE_DATA_DAT)); + + /* Event Generation */ + pid = static_cast(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(&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(reinterpret_cast(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(VEHICLE_SHARE_NAME), + &share_top, &share_size); + + /* Calculate the address of the shared memory storage area. */ + share_dat = reinterpret_cast(reinterpret_cast(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(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(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
+ * Delivery registration: SENSOR_DELIVERY_REGIST
+ * Delivery stop: SENSOR_DELIVERY_STOP (Note: Not mounted)
+ * Resume delivery: SENSOR_DELIVERY_RESTART (Note: Not mounted) + * @param[in] delivery_timing Delivery timing
+ * Updating : SENSOR_DELIVERY_TIMING_UPDATE
+ * Changing : SENSOR_DELIVERY_TIMING_CHANGE + * + * @return SENSOR_RET_NORMAL Successful registration
+ * SENSOR_RET_ERROR_CREATE_EVENT Event generation failure
+ * SENSOR_RET_ERROR_PARAM Parameter error
+ * SENSOR_RET_ERROR_DID Unregistered ID
+ * SENSOR_RET_ERROR_BUFFULL FULL of delivery registers
+ * SENSOR_RET_ERROR_INNER Internal abnormality
+ */ +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(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(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(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(*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(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(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(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(&msg_buf.hdr), 0, sizeof(T_APIMSG_MSGBUF_HEADER)); + + /* Get pointer to send buffer */ + msg_hdr = reinterpret_cast(reinterpret_cast(&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(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(&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(&(msg_buf.data)), 0); + } + FRAMEWORKUNIFIEDLOG(ZONE_26, __FUNCTION__, "-"); + + return(ret_api); +} + +/** + * @brief + * Resource Acquisition Decision + * + * @param[in] none + * + * @return TRUE Normal
+ * 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 +#include +#include +/************************************************************************ +* 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
+ 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
+ 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 +#include "Sensor_Common_API.h" +#include +#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 +#include +#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 +#include +#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 +#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 +#include + +/*---------------------------------------------------------------------------------* + * 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 +#include + +/*---------------------------------------------------------------------------------* + * 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 +#include + +/*---------------------------------------------------------------------------------* + * 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 + +/*---------------------------------------------------------------------------------* + * 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 +#include +#include +#include + +/** @}*/ // end of positioning +/** @}*/ // end of vehicle_service +/** @}*/ // end of BaseSystem +#endif // VEHICLESERVICE_POSITIONING_H_ -- cgit 1.2.3-korg