diff options
Diffstat (limited to 'positioning_hal/hal_api')
-rw-r--r-- | positioning_hal/hal_api/gps_hal.h | 932 | ||||
-rw-r--r-- | positioning_hal/hal_api/positioning_hal.h | 872 |
2 files changed, 1804 insertions, 0 deletions
diff --git a/positioning_hal/hal_api/gps_hal.h b/positioning_hal/hal_api/gps_hal.h new file mode 100644 index 00000000..3321275b --- /dev/null +++ b/positioning_hal/hal_api/gps_hal.h @@ -0,0 +1,932 @@ +/* + * @copyright Copyright (c) 2018-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 HAL_API_GPS_HAL_H_ +#define HAL_API_GPS_HAL_H_ + +/** + * @file gps_hal.h + */ + +/** @addtogroup positioning + * @{ + */ +/** @addtogroup positioning_hal + * @ingroup positioning + * @{ + */ + +/*---------------------------------------------------------------------------*/ +// Include files + +#include <native_service/frameworkunified_types.h> +#include <vehicle_service/pos_message_header.h> +#include <vehicle_service/std_types.h> + +/*---------------------------------------------------------------------------*/ +// Value define + +typedef int32 RET_API; +typedef uint32_t DID; + +/************************************************************************* + * RET_API define + *************************************************************************/ +/*--- for message ---*/ +#define POS_TIMESTS_NG 0x00 +//!< \~english time has not been adjusted after GPS receiver reset(time input or master reset or CSF start) +#define POS_TIMESTS_RTC 0x01 +//!< \~english time output from RTC Backup(have time adjustment) +#define POS_TIMESTS_OK 0x02 //!< \~english time adjustment completed + +/* command ID */ +#define CID_POSIF_REGISTER_LISTENER_GPS_TIME 0x0201 +//!< \~english GPS time delivery command ID + +#define POS_DID_GPS__CWORD82__SETINITIAL 0x80000033 +//!< \~english data ID of setting initial location and time to GPS + +#define POS_DID_GPS__CWORD82__SETRMODEEX 0x80000035 +//!< \~english data ID of setting GPS receiver mode(pull extension sentence) + +#define POS_DID_GPS__CWORD82__SELSENT 0x80000036 +//!< \~english data ID of setting command to GPS that output any sentence + +/* NAVIINFO_RET_API */ +#define NAVIINFO_RET_NORMAL (0) //!< \~english normal finish +#define NAVIINFO_RET_ERROR_PARAM (-1) //!< \~english parameter error +#define NAVIINFO_RET_ERROR_INNER (-2) //!< \~english internal error +#define NAVIINFO_RET_ERROR_BUFFULL (-3) //!< \~english buffer full +#define NAVIINFO_RET_ERROR_NOSUPPORT (-4) //!< \~english no support +#define NAVIINFO_RET_ERROR_RESOURCE (-5) //!< \~english lack of resource + +/* Positioning Level/GPS Information Positioning Status Information Definition */ +#define NAVIINFO_DIAG_GPS_FIX_STS_NON (0) //!< \~english position not fix +#define NAVIINFO_DIAG_GPS_FIX_STS_2D (1) //!< \~english 2D position fix +#define NAVIINFO_DIAG_GPS_FIX_STS_3D (2) //!< \~english 3D position fix + +/* Reception status definition */ +#define NAVIINFO_DIAG_GPS_RCV_STS_NOTUSE (0) //!< \~english not used +#define NAVIINFO_DIAG_GPS_RCV_STS_SEARCHING (1) //!< \~english searching +#define NAVIINFO_DIAG_GPS_RCV_STS_TRACHING (2) //!< \~english tracking +#define NAVIINFO_DIAG_GPS_RCV_STS_NOTUSEFIX (3) //!< \~english not used for position fix +#define NAVIINFO_DIAG_GPS_RCV_STS_USEFIX (4) //!< \~english used for position fix + +/* GPS Response Status Definition */ +#define GPS_SENDOK 0 //!< \~english send result OK +#define GPS_SENDNG 1 //!< \~english send result NG + +/* GPS reset request mode definition */ +#define GPS_RST_COLDSTART 0xff +//!< \~english GPS reset request(cold start) + +#define RET_NORMAL 0 //!< \~english normally end + +#define RET_RCVMSG 1 //!< \~english receive message only +#define RET_RCVSIG 2 //!< \~english receive signal only +#define RET_RCVBOTH 3 //!< \~english receive message and signal +#define RET_NOMSG 4 //!< \~english receive no message + +#define RET_QUE 5 //!< \~english insert signal +#define RET_NOTQUE 6 //!< \~english do not insert signal +#define RET_PROCDOWN 7 //!< \~english sub process down found +#define RET_SLEEP 100 //!< \~english sleep time + + +#define RET_OSERROR (-127) //!< \~english OS system call error + +#define RET_ERROR (-1) +//!< \~english abnormally end(do not know reason) +#define RET_ERRPARAM (-2) //!< \~english parameter error +#define RET_ERRNOTRDY (-3) +//!< \~english port or semphore ID is not created +#define RET_ERRPROC (-4) //!< \~english error occurs in API process +#define RET_ERRTIMEOUT (-5) +//!< \~english timeout occurs but process unfinished +#define RET_ERRMSGFULL (-6) //!< \~english message table full + + +#define RET_ERROVERFLW (-7) +//!< \~english message size exceeds receive buffer size + +#define RET_ERRINIT (-8) //!< \~english abnormally initialization + +#define RET_EV_NONE (-20) //!< \~english event does not exist +#define RET_EV_MAX (-21) //!< \~english event value exceeds max value +#define RET_EV_MIN (-22) +//!< \~english event value is lower than min value + +/* 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 + + +#define NUM_OF_100msData (10) +//!< \~english number of gyro data every 100ms + + +#define CID_GPS_SERIAL1 (CID)0x0101 +//!< \~english Defination of notification about Gps Data has been receiced + +#define CID_GPS_SERIAL2 (CID)0x0102 //!< \~english notification about 1PPS interupt + + +#define CID_GPS_SERIAL3 (CID)0x0103 +//!< \~english Defination of SIF2 Data + +#define CID_GPS_SERIAL4 (CID)0x0104 +//!< \~english Defination of _CWORD82_ command send + +#define CID_GPS_SERIAL5 (CID)0x0105 +//!< \~english Defination of _CWORD82_ command send + +#define CID_GPS_SERIAL6 (CID)0x0106 +//!< \~english Defination of u-blox request data + +#define CID_GPS_SERIAL7 (CID)0x0107 +//!< \~english Defination of u-blox ack data + +#define CID_GPS_RECVDATA (CID)(CID_GPS_BASE | CID_GPS_SERIAL1) +//!< \~english gps data receiced CID + +#define CID_GPS_1PPSINT (CID)(CID_GPS_BASE | CID_GPS_SERIAL2) +//!< \~english 1PPS interupt CID + +#define CID_GPS_SIF2DATA (CID)(CID_GPS_BASE | CID_GPS_SERIAL3) +//!< \~english SIF2 Data CID + +/** + * \~english @brief _CWORD82_ command send CID + * \~english @brief Message structure\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message main structure @ref TgGpsSndData\n + * \~english @brief Message data(Vehicle sensor information setting message) structure @ref VEHICLE_MSG_SEND_DAT\n + */ +#define CID_GPS__CWORD82__REQUEST (CID)(CID_GPS_BASE | CID_GPS_SERIAL4) + +#define CID_GPS_CYCLEDATA_PROV (CID)(CID_GPS_BASE | CID_GPS_SERIAL5) +//!< \~english Gps cycle data CID + +#define CID_GPS_RCV_REQUESTDATA (CID)(CID_GPS_BASE | CID_GPS_SERIAL6) +//!< \~english u-blox request data CID + +#define CID_GPS_RCV_ACKDATA (CID)(CID_GPS_BASE | CID_GPS_SERIAL7) +//!< \~english u-blox ack data CID + +#define CID_GPS_SERIAL8 (CID)0x0108 +//!< \~english Defination of Time Setting request + +#define CID_GPS_SERIAL9 (CID)0x0109 +//!< \~english Defination of Time Setting ack + +#define CID_GPS_SERIAL10 (CID)0x010A +//!< \~english Defination of back up data read request + +#define CID_GPS_SERIAL11 (CID)0x010B +//!< \~english Defination gps of week count request + +/** + * \~english @brief Defination of Time Setting request + * \~english @brief Message structure\n + * \~english @brief Message header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message body structure @ref TgGpsSndData\n + * \~english @brief Positioning information structure @ref POS_MSGINFO\n + * */ +#define CID_GPS_TIMESETTING (CID)(CID_GPS_BASE | CID_GPS_SERIAL8) + +/** + * \~english @brief Defination of Time Setting ack + * \~english @brief Message structure\n + * \~english @brief Message body structure @ref TG_GPS_RET_TIMESET_MSG\n + */ +#define CID_GPS_RETTIMESETTING (CID)(CID_GPS_BASE | CID_GPS_SERIAL9) + +/** + * \~english @brief Read backup data request CID + * \~english @brief When this command is received, the backup data is read.\n + * \~english @brief Message-Related Structures\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER + */ +#define CID_GPS_BACKUPDATA_LOAD (CID)(CID_GPS_BASE | CID_GPS_SERIAL10) + +/** + * \~english @brief Gps Week count request CID + * \~english @brief Message structure\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message data(Gps Week correction count notify message) structure @ref GpsWeekCorCntMsg\n + */ +#define CID_GPSWEEKCOR_CNT_NOTIFICATION (CID)(CID_GPS_BASE | CID_GPS_SERIAL11) + + + +/** + * \~english @brief GPS reset result delivery command ID + * \~english @brief If you want to catch above envents, use NSFW like below. + * \~english @code + * l_eStatus = FrameworkunifiedAttachCallbackToDispatcher(hThread, TN_POSITIONING_GPS, CID_POSIF_REQ_GPS_RESET, OnRecivePosResetMsg); + * @endcode + */ +#define CID_POSIF_REQ_GPS_RESET 0x0784 + +#define POSHAL_DID_GPS_CONNECT_ERROR 0x800000B5U +//!< \~english GPS receive error DID + +#define GPS_READ_LEN 316 +//!< \~english Gps NMEA FULLBINARY max length + +#define GPS_CMD_NMEA_GGA_SZ (71U) //!< \~english GGA +#define GPS_CMD_NMEA_DGGA_SZ (75U) //!< \~english double precison GGA +#define GPS_CMD_NMEA_VTG_SZ (37U) //!< \~english VTG +#define GPS_CMD_NMEA_RMC_SZ (61U) //!< \~english RMC +#define GPS_CMD_NMEA_DRMC_SZ (67U) //!< \~english double precison RMC +#define GPS_CMD_NMEA_GLL_SZ (44U) //!< \~english GLL +#define GPS_CMD_NMEA_DGLL_SZ (50U) //!< \~english double precison GLL +#define GPS_CMD_NMEA_GSA_SZ (66U) //!< \~english GSA +#define GPS_CMD_NMEA_GSV_SZ (70U) //!< \~english GSV +#define GPS_CMD_NMEA__CWORD44__GP_3_SZ (78U) //!< \~english _CWORD44_,GP,3 +#define GPS_CMD_NMEA__CWORD44__GP_4_SZ (25U) //!< \~english _CWORD44_,GP,4 +#define GPS_CMD_NMEA_P_CWORD82_F_GP_0_SZ (50U) //!< \~english _CWORD44_,GP,0 +#define GPS_CMD_NMEA_P_CWORD82_J_GP_1_SZ (31U) //!< \~english _CWORD44_,GP,1 +#define GPS_CMD_NMEA_P_CWORD82_I_GP_SZ (71U) //!< \~english P_CWORD82_I,GP +#define GPS_CMD_NMEA_P_CWORD82_E_GP_0_SZ (50U) //!< \~english P_CWORD82_E,GP,0 +#define GPS_CMD_NMEA_P_CWORD82_J_GP_0_SZ (63U) //!< \~english P_CWORD82_J,GP,0 +#define GPS_CMD_NMEA_P_CWORD82_E_GP_2_SZ (21U) //!< \~english P_CWORD82_E,GP,2 +#define GPS_CMD_NMEA_P_CWORD82_G_GP_0_SZ (34U) //!< \~english P_CWORD82_G,GP,0 +#define GPS_CMD_NMEA_P_CWORD82_J_GP_7_SZ (37U) //!< \~english P_CWORD82_J,GP,7 +#define GPS_CMD_NMEA_P_CWORD82_J_GP_8_SZ (45U) //!< \~english P_CWORD82_J,GP,8 +#define GPS_CMD_BINARY_SZ (81U) //!< \~english standard binary + +#define GPS_CMD_FULLBIN_SZ (316U) +//!< \~english FULL binary(GPS10 format) + +#define GPS_CMD_FULLBIN_VINFO (30U + 160U + 25U + 8U) +//!< \~english FULL bianry version + +#define GPS_NMEA_MAX_SZ (255U) //!< \~english NMEA max size +#define GPS_DATASIZE_RTC (13U) //!< \~english RTC Data size +#define GPS_NMEARCVSTS_SZ (1U) //!< \~english received NMEA size + +#define GPS_GPSANT_SZ (1U) //!< \~english gps antenna status size +#define GPS_SNSCNT_SZ (1U) //!< \~english Sensor Count value size + + +#define GPS_CMD_NMEA_PROV_SZ (GPS_CMD_NMEA_DRMC_SZ + GPS_CMD_NMEA_GSA_SZ + \ + (GPS_CMD_NMEA_GSV_SZ*3) + GPS_CMD_NMEA__CWORD44__GP_3_SZ) +//!< \~english NMEA size + +#define GPS_NMEA_SZ (GPS_NMEARCVSTS_SZ + GPS_GPSANT_SZ + GPS_SNSCNT_SZ + GPS_CMD_NMEA_PROV_SZ) +//!< \~english NEMA size + +#define GPS_FULLBIN_SZ (GPS_GPSANT_SZ + GPS_SNSCNT_SZ + GPS_CMD_FULLBIN_SZ) +//!< \~english FULLBIN size + +#define GPS__CWORD44_GP4_SZ (GPS_GPSANT_SZ + GPS_SNSCNT_SZ + GPS_CMD_NMEA__CWORD44__GP_4_SZ) +//!< \~english _CWORD44_GP4 size + +#define GPS_MSGDATA_SZ_MAX (512U) //!< \~english message maximum data size +#define GPS_TLGRM_LEN 253 //!< \~english message data length +#define GPS_MSG_VSINFO_DSIZE 1904 //!< \~english message body size + +#define POS_MSG_INFO_DSIZE 1028 //!< \~english message body maximum size + +/** + * @enum MdevGpsDataKind + * \~english enumeration of gps data kind + */ +typedef enum MdevGpsDataKind { + MDEV_GPS_DATA_RAWDATA_NMEA = 0, //!< \~english raw NMEA data of GPS + MDEV_GPS_DATA_RAWDATA_FULLBIN, //!< \~english raw binary data of GPS + MDEV_GPS_DATA_RAWDATA__CWORD44_GP4, //!< \~english raw _CWORD44_ data of GPS + MDEV_GPS_DATA_NAVISPEED, //!< \~english speed data + MDEV_GPS_DATA_CUSTOMDATA, //!< \~english position information + MDEV_GPS_DATA_GPSTIME, //!< \~english GPS time + MDEV_GPS_DATA_GPSTIME_RAW, //!< \~english raw time of GPS + MDEV_GPS_DATA_INITIAL //!< \~english initialize data +} MDEV_GPS_DATA_KIND; + +/** + * @struct NAVIINFO_UTCTIME + * \~english UTC time information structure + */ +typedef struct { + uint16_t year; //!< \~english year + uint8_t month; //!< \~english month + uint8_t date; //!< \~english day + uint8_t hour; //!< \~english hour + uint8_t minute; //!< \~english minute + uint8_t second; //!< \~english second + uint8_t reserved; //!< \~english reserve +} NAVIINFO_UTCTIME; + +/** + * @struct SENSORLOCATION_LONLATINFO_DAT + * \~english longitude and latitude information data + * - 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) + * - It is valid only when "Get method is Navigation" and "evironment is _CWORD80_".(otherwise it will be set as 0) + * - 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) + * - 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 + * - It is valid only when "Get method is Navigation" and "evironment is _CWORD80_".(otherwise it will be set as 0)\n + * 0000H:0m \n + * 0001H:1m \n + * :\n + * FFFDH:65533m \n + * FFFEH:65534m and larger than 65534m \n + * FFFFH:no data + * - 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. + */ +typedef struct { + uint8_t getMethod; //!< \~english get method + uint8_t SyncCnt; //!< \~english Synchrony count + uint8_t isEnable; //!< \~english enable or not + uint8_t posSts; //!< \~english position status + uint16_t posAcc; //!< \~english position accuracy + int32_t Longitude; //!< \~english longitude(10^-7degree) + //!< \~english max: +180.0000000degree[east longitude] + //!< \~english min: -170.9999999degree[west longitude] + int32_t Latitude; //!< \~english latitude(10^-7degree) + //!< \~english max: +90.0000000degree[north Latitude] + //!< \~english min: -90.0000000degree[south Latitude] +} SENSORLOCATION_LONLATINFO_DAT; + + +/** + * @struct SENSORLOCATION_ALTITUDEINFO_DAT + * \~english altitude information data + * - Get method(getMethod) + * - SENSOR_GET_METHOD_GPS - altitude from GPS + * - SENSOR_GET_METHOD_NAVI - altitude 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: [longitude and latitude from GPS] and [heading from GPS] can be synchronized by SyncCnt.\n + * example 2: [longitude and latitude from GPS] and [longitude and latitude 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 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 it is not initialization status, certainly provide [avaliable] when Navi data specified + * - If the status is [not avaliable], data following can not be guaranteed. + * - Altitude + * - altitude data(unit 0.01m) + */ +typedef struct { + uint8_t getMethod; //!< \~english get method + uint8_t SyncCnt; //!< \~english Synchrony count + uint8_t isEnable; //!< \~english enable or not + uint8_t Reserved[3]; //!< \~english reserve + int32_t Altitude; //!< \~english altitude(0.01m) +} SENSORLOCATION_ALTITUDEINFO_DAT; + + +/** + * @struct SENSORMOTION_HEADINGINFO_DAT + * \~english heading information data + * - 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) + * - It is valid only when "Get method is Navi" and "evironment is _CWORD80_".(otherwise it will be set as 0) + * - 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) + * - Bit3 : MapMatching data used result(1:used, 0:not used, definition of \n + * maskbit:POS_LOC_INFO_USE_MAPMATCHING) + * - Heading + * - Heading data(0.01degree as 1, based on north and clockwise count)\n + * But in environment _CWORD95_/_CWORD101___CWORD84_,the heading from Navi is a approximate that separate 360 degree \n + * into 16 part. \n + * example: 0, 2300, 4500, ..., 31500, 33800 + */ +typedef struct { + uint8_t getMethod; //!< \~english get method + uint8_t SyncCnt; //!< \~english Synchrony count + uint8_t isEnable; //!< \~english enable or not + uint8_t posSts; //!< \~english position status + uint8_t Reserved1[2]; //!< \~english reserve + uint16_t Heading; //!< \~english heading(0.01degree) + //!< \~english max: 359.99 degree + //!< \~english min: 0.00 degree + uint8_t Reserved2[2]; //!< \~english reserve +} SENSORMOTION_HEADINGINFO_DAT; + +/** + * @struct NAVIINFO_DIAG_GPS_FIX_CNT + * \~english position fix count data structure + */ +typedef struct { + uint32_t ulCnt3d; //!< \~english position fix count:3D + uint32_t ulCnt2d; //!< \~english position fix count:2D + uint32_t ulCntElse; //!< \~english position fix count:not fix +} NAVIINFO_DIAG_GPS_FIX_CNT; + +/** + * @struct NAVIINFO_DIAG_GPS_FIX_XYZ + * \~english longitude and latitude data structure + */ +typedef struct { + int32_t lLat; //!< \~english GPS latitude + int32_t lLon; //!< \~english GPS longitude +} NAVIINFO_DIAG_GPS_FIX_XYZ; + +/** + * @struct NAVIINFO_DIAG_GPS_FIX + * \~english position fix information structure + */ +typedef struct { + uint8_t ucFixSts; //!< \~english fix status + uint8_t ucReserve[3]; //!< \~english reserve + NAVIINFO_DIAG_GPS_FIX_CNT stCnt; //!< \~english fix count data + NAVIINFO_DIAG_GPS_FIX_XYZ stWgs84; //!< \~english longitude and latitude data +} NAVIINFO_DIAG_GPS_FIX; + +/** + * @struct NAVIINFO_DIAG_GPS_PRN + * \~english satellite information structure + * - 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 + */ +typedef struct { + uint8_t ucRcvSts; //!< \~english reception status + uint8_t ucPrn; //!< \~english satellite No. + uint8_t ucelv; //!< \~english satellite dramatic angle + uint8_t ucLv; //!< \~english satellite signal level + uint16_t usAzm; //!< \~english satellite azimuth + uint8_t ucReserve[2]; //!< \~english reserve +} NAVIINFO_DIAG_GPS_PRN; + +/** + * @struct NAVIINFO_DIAG_GPS_SAT + * \~english all satellite information structure + */ +typedef struct { + NAVIINFO_DIAG_GPS_PRN stPrn[12]; //!< \~english all satellite information +} NAVIINFO_DIAG_GPS_SAT; + +/** + * @struct NAVIINFO_DIAG_GPS + * \~english position fixed and satellite information structure + */ +typedef struct { + NAVIINFO_DIAG_GPS_FIX stFix; //!< \~english position fixed information + NAVIINFO_DIAG_GPS_SAT stSat; //!< \~english all satellite information +} NAVIINFO_DIAG_GPS; + +/** + * @struct NAVIINFO_NAVI_GPS + * \~english other GPS related information structure + * - 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 + */ +typedef struct { + int32_t altitude; //!< \~english altitude + uint16_t speed; //!< \~english speed + uint16_t heading; //!< \~english heading + NAVIINFO_UTCTIME utc; //!< \~english UTC time + uint8_t tdsts; //!< \~english date and time status + uint8_t reserve[3]; //!< \~english reserve +} NAVIINFO_NAVI_GPS; + +/** + * @struct NAVIINFO_ALL + * \~english Navi data structure + */ +typedef struct { + uint8_t ucSensorCnt; //!< \~english sensor count + uint8_t reserve[3]; //!< \~english reserve + NAVIINFO_DIAG_GPS stDiagGps; //!< \~english position fix related information + NAVIINFO_NAVI_GPS stNaviGps; //!< \~english other GPS related information +} NAVIINFO_ALL; + +/** + * @struct POS_MSGINFO + * \~english message delivery positioning sensor information + */ +typedef struct { + DID did; //!< \~english data ID + PNO pno; //!< \~english delivery destination PNO + uint16_t size; //!< \~english data body size + uint8_t rcv_flag; //!< \~english received flag + uint8_t reserve; //!< \~english reserve + uint8_t data[POS_MSG_INFO_DSIZE]; //!< \~english data body +} POS_MSGINFO; + +/** + * @struct SENSOR_GPSTIME + * \~english GPS time information + * - 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 + */ +typedef struct { + NAVIINFO_UTCTIME utc; //!< \~english UTC time + uint8_t tdsts; //!< \~english time status + uint8_t reserve[3]; //!< \~english reserve +} SENSOR_GPSTIME; + +#define SENSOR_MSG_GPSTIME SENSOR_GPSTIME //!< \~english GPS time information +#define SENSOR_GPSTIME_RAW SENSOR_GPSTIME //!< \~english GPS time information + +/** + * @struct MdevGpsCustomData + * \~english Struct of Gps custom data + */ +typedef struct MdevGpsCustomData { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + SENSORLOCATION_LONLATINFO_DAT st_lonlat; //!< \~english longtitude,latitude + SENSORLOCATION_ALTITUDEINFO_DAT st_altitude; //!< \~english altitude + SENSORMOTION_HEADINGINFO_DAT st_heading; //!< \~english headings + SENSOR_MSG_GPSTIME st_gps_time; //!< \~english Gps Time + NAVIINFO_DIAG_GPS st_diag_gps; //!< \~english Gps data from diag +} MDEV_GPS_CUSTOMDATA; + +/** + * @struct MdevGpsCustomDataMgs + * \~english Struct of Gps custom data message + */ +typedef struct MdevGpsCustomDataMgs { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header + MDEV_GPS_CUSTOMDATA st_data; //!< \~english Gps Custom Data +} MDEV_GPS_CUSTOMDATA_MGS; + +/** + * @struct MdevGpsRtc + * \~english Struct of Gps RTC data + */ +typedef struct MdevGpsRtc { + u_int32 ul_retsts; //!< \~english return status + u_int8 uc_datalen; //!< \~english data length + u_int8 uc_ctrlcode; //!< \~english control code + u_int8 uc_bcd_year; //!< \~english year + u_int8 uc_bcd_month; //!< \~english month + u_int8 uc_bcd_day; //!< \~english day + u_int8 uc_bcd_hour; //!< \~english hour + u_int8 uc_bcd_min; //!< \~english minute + u_int8 uc_bcd_sec; //!< \~english second + u_int8 uc_status; //!< \~english status + u_int8 u_reserve[3]; //!< \~english reserve +} MDEV_GPS_RTC; + +/** + * @struct MdevGpsGpsTime + * \~english Struct of Gps Time + */ +typedef struct MdevGpsGpsTime { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + MDEV_GPS_RTC st_rtc_data; //!< \~english Gps Time +} MDEV_GPS_GPSTIME; + +/** + * @struct MdevGpsGpsTimeMgs + * \~english Struct of Gps Time message + */ +typedef struct MdevGpsGpsTimeMgs { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header + MDEV_GPS_GPSTIME st_data; //!< \~english Gps Time Data +} MDEV_GPS_GPSTIME_MGS; + +/** + * @struct DevGpsUtcTime + * \~english Struct of Gps UTC time + */ +typedef struct DevGpsUtcTime { + u_int16 us_year; //!< \~english Year + u_int8 uc_month; //!< \~english month + u_int8 uc_date; //!< \~english day + u_int8 uc_hour; //!< \~english hour + u_int8 uc_minute; //!< \~english minute + u_int8 uc_second; //!< \~english second + u_int8 u_reserved; //!< \~english reserve +} DEV_GPS_UTCTIME; + +/** + * @enum MdevGpsFixSts + * \~english enumeration of gps fix status + */ +typedef enum MdevGpsFixSts { + MDEV_GPS_NOTFIX = 0, //!< \~english not fix + MDEV_GPS_FIX //!< \~english fix +} MDEV_GPS_FIX_STS; + +/** + * @struct MdevGpsNmea + * \~english Struct of gps NMEA Data + */ +typedef struct MdevGpsNmea { + u_int8 uc_nmea_data[GPS_MSG_VSINFO_DSIZE]; //!< \~english NMEA Data +} MDEV_GPS_NMEA; + +/** + * @struct MdevGpsFullbin + * \~english Struct of Gps full bin data + */ +typedef struct MdevGpsFullbin { + u_int8 uc_fullbin_data[GPS_FULLBIN_SZ]; //!< \~english gps full bin data + u_int8 u_reserve[3]; //!< \~english reserve +} MDEV_GPS_FULLBIN; + +/** + * @struct MdevGps_CWORD44_gp4 + * \~english Struct of Gps _CWORD44_GP4 data + */ +typedef struct MdevGps_CWORD44_gp4 { + u_int8 uc__CWORD44_gp4_data[GPS__CWORD44_GP4_SZ]; //!< \~english gps _CWORD44_GP4 data + u_int8 u_reserve; //!< \~english reserve +} MDEV_GPS__CWORD44_GP4; + +/** + * @struct MdevGpsCycledata + * \~english Struct of Gps cycle data + */ +typedef struct MdevGpsCycledata { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + u_int8 uc_data[GPS_MSGDATA_SZ_MAX - sizeof(MDEV_GPS_DATA_KIND)]; //!< \~english data +} MDEV_GPS_CYCLEDATA; + +/** + * @struct MdevGpsCycledataMsg + * \~english Struct of Gps cycle data message + */ +typedef struct MdevGpsCycledataMsg { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header + MDEV_GPS_CYCLEDATA st_data; //!< \~english data +} MDEV_GPS_CYCLEDATA_MSG; + +/** + * @struct MdevGpsRawdataNmea + * \~english Struct of Gps NMEA Raw Data + */ +typedef struct MdevGpsRawdataNmea { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + MDEV_GPS_NMEA st_nmea_data; //!< \~english NMEA Data +} MDEV_GPS_RAWDATA_NMEA; + +/** + * @struct MdevGpsRawdataNmeaMsg + * \~english Struct of Gps NMEA Raw Data message + */ +typedef struct MdevGpsRawdataNmeaMsg { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header(see vs-positioning-base-library) + MDEV_GPS_RAWDATA_NMEA st_data; //!< \~english data +} MDEV_GPS_RAWDATA_NMEA_MSG; + +/** + * @struct MdevGpsRawdataFullbin + * \~english Struct of Gps Full Bin Raw Data + */ +typedef struct MdevGpsRawdataFullbin { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + MDEV_GPS_FULLBIN st_fullbin_data; //!< \~english Full Binary Data +} MDEV_GPS_RAWDATA_FULLBIN; + +/** + * @struct MdevGpsRawdataFullbinMsg + * \~english Struct of Gps Full Bin Raw Data message + */ +typedef struct MdevGpsRawdataFullbinMsg { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header + MDEV_GPS_RAWDATA_FULLBIN st_data; //!< \~english Gps Full Bin Data +} MDEV_GPS_RAWDATA_FULLBIN_MSG; + +/** + * @struct MdevGpsRawdata_CWORD44_gp4 + * \~english Struct of Gps _CWORD44_GP4 Raw Data + */ +typedef struct MdevGpsRawdata_CWORD44_gp4 { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + MDEV_GPS__CWORD44_GP4 st__CWORD44_gp4; //!< \~english Gps _CWORD44_GP4 Data +} MDEV_GPS_RAWDATA__CWORD44_GP4; + +/** + * @struct MdevGpsRawdata_CWORD44_gp4Msg + * \~english Struct of Gps _CWORD44_GP4 Raw Data message + */ +typedef struct MdevGpsRawdata_CWORD44_gp4Msg { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header + MDEV_GPS_RAWDATA__CWORD44_GP4 st_data; //!< \~english Gps _CWORD44_GP4 Raw Data +} MDEV_GPS_RAWDATA__CWORD44_GP4_MSG; + +/** + * @struct SENSORMOTION_SPEEDINFO_DAT + * \~english speed information data + * - 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) + */ +typedef struct { + uint8_t getMethod; //!< \~english get method + uint8_t SyncCnt; //!< \~english Synchrony count + uint8_t isEnable; //!< \~english enable or not + uint8_t Reserved1[3]; //!< \~english reserve + uint16_t Speed; //!< \~english speed(0.01m/sec) + uint8_t Reserved2[2]; //!< \~english reserve +} SENSORMOTION_SPEEDINFO_DAT; + +/** + * @struct MdevGpsNavispeed + * \~english Struct of Gps speed data + */ +typedef struct MdevGpsNavispeed { + MDEV_GPS_DATA_KIND e_kind; //!< \~english kind + u_int16 us_speed_kmph; //!< \~english Speed(km/h) + u_int8 u_reserve[2]; //!< \~english reserve + SENSORMOTION_SPEEDINFO_DAT st_speed; //!< \~english speed data +} MDEV_GPS_NAVISPEED; + +/** + * @struct MdevGpsNavispeedMsg + * \~english Struct of Gps speed data message + */ +typedef struct MdevGpsNavispeedMsg { + T_APIMSG_MSGBUF_HEADER h_dr; //!< \~english header + MDEV_GPS_NAVISPEED st_data; //!< \~english Gps Speed Data +} MDEV_GPS_NAVISPEED_MSG; + +/** + * @struct TgGpsSndData + * \~english Struct of _CWORD82_ Gps send data + */ +typedef struct TgGpsSndData { + uint8_t reserve[4]; //!< \~english reserve + u_int16 us_size; //!< \~english send data length + u_int8 ub_data[502]; //!< \~english send data +} TG_GPS_SND_DATA; + +/** + * @struct TgGpsRetPram + * \~english Gps Response data + */ +typedef struct TgGpsRetPram { + unsigned int ret_status; //!< \~english response flag + unsigned char data_len; //!< \~english data size + unsigned char ctrl_code; //!< \~english control code + unsigned char gps_data[GPS_TLGRM_LEN]; //!< \~english data contents +} TG_GPS_RET_PRAM; + +/** + * @struct SensorWknRollOverHal + * \~english Struct of GPS week number + */ +typedef struct SensorWknRollOverHal { + uint16_t us_wkn; //!< \~english GPS week number +} SENSOR_WKN_ROLLOVER_HAL; + +/** + * @struct POS_DATETIME + * \~english GPS time information structure + */ +typedef struct { + uint16_t year; //!< \~english year + uint8_t month; //!< \~english month + uint8_t date; //!< \~english day + uint8_t hour; //!< \~english hour + uint8_t minute; //!< \~english minute + uint8_t second; //!< \~english second + uint8_t reserved; //!< \~english reserve +} POS_DATETIME; + +/** + * @struct TG_GPS_RET_RESET + * \~english GPS reset status + */ +typedef struct { + unsigned long ret_rst_status; //!< \~english response GPS reset status +} TG_GPS_RET_RESET; + +/** + * @struct TG_GPS_RET_RESET_MSG + * \~english GPS reset information message + */ +typedef struct { + TG_GPS_RET_RESET data; //!< \~english GPS reset status data +} TG_GPS_RET_RESET_MSG; + +/** + * @struct VEHICLE_MSG_SEND_DAT + * \~english Vehicle information setting message structure + */ +typedef struct { + DID did; //!< \~english Data ID + u_int16 size; //!< \~english Data size + u_int8 data[502]; //!< \~english Data +} VEHICLE_MSG_SEND_DAT; + +/** + * @struct GpsWeekCorCntMsg + * \~english Gps Week correction count notify message structure + */ +typedef struct GpsWeekCorCntMsg { + T_APIMSG_MSGBUF_HEADER stHead; //!< \~english Message header + u_int8 gpsweekcorcnt; //!< \~english Gps Week correction count + int8 dummy[3]; //!< \~english Alignment adjustment +} CLOCKGPS_GPSWEEKCOR_CNT_MSG; + +/** @}*/ // end of positioning_hal +/** @}*/ // end of positioning + +/*---------------------------------------------------------------------------*/ +#endif // HAL_API_GPS_HAL_H_ + +/*---------------------------------------------------------------------------*/ +/*EOF*/ diff --git a/positioning_hal/hal_api/positioning_hal.h b/positioning_hal/hal_api/positioning_hal.h new file mode 100644 index 00000000..8a74b814 --- /dev/null +++ b/positioning_hal/hal_api/positioning_hal.h @@ -0,0 +1,872 @@ +/* + * @copyright Copyright (c) 2018-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 HAL_API_POSITIONING_HAL_H_ +#define HAL_API_POSITIONING_HAL_H_ + +/** + * @file positioning_hal.h + */ + +/** @addtogroup positioning + * @{ + */ +/** @addtogroup positioning_hal + * @ingroup positioning + * @{ + */ + +/*---------------------------------------------------------------------------*/ +// Include files + +#include <native_service/frameworkunified_types.h> +#include <vehicle_service/pos_message_header.h> +#include <vehicle_service/std_types.h> + +/*---------------------------------------------------------------------------*/ +// Value define + +#define POSHAL_THREAD_NAME_SENS "POS_Sens" +//!< \~english Thread name for receive sensor +#define POSHAL_THREAD_NAME_GPS_MAIN "POS_Gps" +//!< \~english Thread name for GPS NMEA analysis and delivery message +#define POSHAL_THREAD_NAME_GPS_RECV "POS_Gps_Recv" +//!< \~english Thread name for receive GPS +#define POSHAL_THREAD_NAME_GPS_ROLOVR "POS_Gps_Rolovr" +//!< \~english Thread name for monitoring GPS rollover + +#define POSHAL_DID_SNS_COUNTER 0x8000001A +//!< \~english Data ID of sensor counter +#define POSHAL_DID_SPEED_PULSE 0x80000012 +//!< \~english Data ID of speed pulse +#define POSHAL_DID_SPEED_PULSE_FLAG 0x80000076 +//!< \~english Data ID of speed pulse flag +#define POSHAL_DID_SPEED_PULSE_FST 0x80000028 +//!< \~english Data ID of first time speed pulse +#define POSHAL_DID_SPEED_PULSE_FLAG_FST 0x8000007D +//!< \~english Data ID of first time speed pulse flag +#define POSHAL_DID_SPEED_KMPH 0x80000013 +//!< \~english Data ID of KMPH speed +#define POSHAL_DID_PULSE_TIME 0x8000003A +//!< \~english Data ID of pulse time +#define POSHAL_DID_GYRO_X 0x80000014 +//!< \~english Data ID of X axis of gyro +#define POSHAL_DID_GYRO_Y 0x80000085 +//!< \~english Data ID of Y axis of gyro +#define POSHAL_DID_GYRO_Z 0x80000086 +//!< \~english Data ID of Z axis ofgyro +#define POSHAL_DID_GYRO POSHAL_DID_GYRO_X +//!< \~english Data ID of gyro +#define POSHAL_DID_GYRO_X_FST 0x80000029 +//!< \~english Data ID of first time X axis gyro +#define POSHAL_DID_GYRO_Y_FST 0x80000043 +//!< \~english Data ID of first time Y axis gyro +#define POSHAL_DID_GYRO_Z_FST 0x80000023 +//!< \~english Data ID of first time Z axis gyro +#define POSHAL_DID_GYRO_FST POSHAL_DID_GYRO_X_FST +//!< \~english Data ID of first time gyro +#define POSHAL_DID_GYRO_EXT 0x80000027 +//!< \~english Data ID of extend gyro +#define POSHAL_DID_GYRO_TEMP 0x80000090 +//!< \~english Data ID of gyro temperature +#define POSHAL_DID_GYRO_TEMP_FST 0x80000091 +//!< \~english Data ID of first time gyro temperature +#define POSHAL_DID_REV 0x80000017 +//!< \~english Data ID of reverse signal +#define POSHAL_DID_REV_FST 0x8000007E +//!< \~english Data ID of first time reverse signal +#define POSHAL_DID_GSNS_X 0x80000015 +//!< \~english Data ID of x axis gsensor +#define POSHAL_DID_GSNS_Y 0x80000016 +//!< \~english Data ID of Y axis gsensor +#define POSHAL_DID_GSNS_Z 0x80000026 +//!< \~english Data ID of Z axis gsensor +#define POSHAL_DID_GSNS_X_FST 0x80000087 +//!< \~english Data ID of first time x axis gsensor +#define POSHAL_DID_GSNS_Y_FST 0x80000088 +//!< \~english Data ID of first time Y axis gsensor +#define POSHAL_DID_GSNS_Z_FST 0x80000089 +//!< \~english Data ID of first time Z axis gsensor +#define POSHAL_DID_GPS_NMEA 0x8000009AU +//!< \~english Data ID of GPS NMEA sentence +#define POSHAL_DID_GPS_ANTENNA 0x80000019 +//!< \~english Data ID of GPS antenna status +#define POSHAL_DID_GPS_CUSTOMDATA 0x80000094U +//!< \~english Data ID of GPS custom data +#define POSHAL_DID_GPS_CUSTOMDATA_NAVI 0x800000A0 +//!< \~english Data ID of GPS custom data for navi +#define POSHAL_DID_GPS_TIME 0x80000098 +//!< \~english Data ID of GPS time +#define POSHAL_DID_GPS_TIME_RAW 0x800000B1U +//!< \~english Data ID of GPS raw time +#define POSHAL_DID_GPS_VERSION 0x8000001E +//!< \~english Data ID of GPS version +#define POSHAL_DID_GPS__CWORD82___CWORD44_GP4 0x80000031U +//!< \~english Data ID of _CWORD82_ GPS _CWORD44_GP4 data +#define POSHAL_DID_GPS__CWORD82__FULLBINARY 0x80000032U +//!< \~english Data ID of _CWORD82_ GPS full binary data +#define POSHAL_DID_GPS_WKNROLLOVER 0x800000B2U +//!< \~english Data ID of GPS week counter +#define POSHAL_DID_GPS_CLOCK_DRIFT 0x800000B3U +//!< \~english Data ID of GPS time drift data +#define POSHAL_DID_GPS_CLOCK_FREQ 0x800000B4U +//!< \~english Data ID of GPS time frequency data +#define POSHAL_DID_GPS_INTERRUPT_FLAG 0x80000077 +//!< \~english Data ID of GPS interrupt flag + +#define CONFIG_SENSOR_EXT_VALID 1 //!< \~english for first sensor + +#define CID_LINESENS_VEHICLE_DATA 0x0300 //!< \~english vehicle notify ID + +/** + * \~english @brief LineSensor Vehicle Signal Notification + * \~english @brief This command is sent when LineSensor vehicle signals are notified when sensor data is received.\n + * \~english @brief Message related structure @ref LsdrvMsgLsdataG\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref LsdrvMsgLsdataDatG\n + * \~english @brief Message body (vehicle signal notification message information) structure @ref LsdrvLsdataG\n + */ +#define CID_LINESENS_VEHICLE_DATA_G 0x0303 + +/** + * \~english @brief Gyro Failure Status Notification + * \~english @brief This command is sent when giro failure status is notified.\n + * \~english @brief Message related structure @ref LsdrvMsgLsdataGyroTrouble\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGyroTrouble\n + */ +#define CID_LINESENS_VEHICLE_DATA_GYRO_TROUBLE 0x0304 + +/** + * \~english @brief Get SYS GPS Interrupt Signals + * \~english @brief This command is sent when SYS GPS interrupt signal is acquired.\n + * \~english @brief Message related structure @ref LsdrvMsgLsdataGpsInterruptSignal\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGpsInterruptSignal\n + */ +#define CID_LINESENS_VEHICLE_DATA_SYS_GPS_INTERRUPT_SIGNAL 0x0305 + + +/** + * \~english @brief Gyro Connection Status Notification + * \~english @brief This command is sent when giro connection status is notified.\n + * \~english @brief Message related structure @ref LsdrvMsgLsdataGyroConnectStatus\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGyroConnectStatus\n + */ +#define CID_LINESENS_VEHICLE_DATA_GYRO_CONNECT_STATUS 0x0306 + + +/** + * \~english @brief GPS Antenna Connection Status Notification + * \~english @brief This command is sent when the GPS antenna connection status is notified.\n + * \~english @brief Message related structure @ref LsdrvMsgLsdataGpsAntennaStatus\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref LsdrvMsgLsdataDatGpsAntennaStatus\n + */ +#define CID_LINESENS_VEHICLE_DATA_GPS_ANTENNA_STATUS 0x0307 + + +/** + * \~english @brief LineSensor Vehicle Signal Notification(Initial Sensor) + * \~english @brief This command is sent when LineSensor vehicle signals (initial sensor) are notified.\n + * \~english @brief Message related structure @ref LsdrvMsgLsdataFst\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref LsdrvMsgLsdataDatFst\n + * \~english @brief Gyro X-axis @ref LsdrvLsdataFstGyroX\n + * \~english @brief Gyro Y-axis @ref LsdrvLsdataFstGyroY\n + * \~english @brief Gyro Z-axis @ref LsdrvLsdataFstGyroZ\n + * \~english @brief Velocity information @ref LsdrvLsdataFstSpeed\n + * \~english @brief Vehicle speed pulse @ref LsdrvLsdataFstSpeedPulseFlag\n + * \~english @brief REV flag @ref LsdrvLsdataFstRev\n + * \~english @brief Gyro Temperature @ref LsdrvLsdataFstGyroTemp\n + * \~english @brief G-sensor X-axis @ref LsdrvLsdataFstGsensorX\n + * \~english @brief G-sensor Y-axis @ref LsdrvLsdataFstGsensorY\n + * \~english @brief G-sensor Z-axis @ref LsdrvLsdataFstGsensorZ\n + */ +#define CID_LINESENS_VEHICLE_DATA_FST 0x0302 + +/** + * \~english @brief GPS data notification + * \~english @brief This command is used to notify the data input from the GPS receiver device.\n + * \~english @brief Message related structure @ref SensorMsgGpsdata\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message header structure @ref T_APIMSG_HEADER\n + * \~english @brief Message body structure @ref SensorMsgGpsdataDat\n + */ +#define CID_GPS_DATA 0x0301 + +/** + * \~english @brief Notification of effective ephemeris number at shutdown + * \~english @brief This command is sent to notify the effective ephemeris number at shutdown.\n + * \~english @brief Message related structure @ref SensorMsgGpsdata\n + * \~english @brief Message buffer header structure @ref T_APIMSG_MSGBUF_HEADER\n + * \~english @brief Message body structure @ref SensorMsgGpsdata\n + */ +#define CID_EPH_NUM_NOTIFICATION 0x0310 + + +#define LSDRV_FSTSNS_SENSOR_FIRST_SAVE_NUM 50 +//!< \~english number of save first sensor + +#define LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM 30 +//!< \~english number of send first sensor + +#define LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM 10 +//!< \~english number of gyro including detail data + +#define LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM 10 +//!< \~english number of Gsns includeing detail data + +#define LSDRV_FSTSNS_DSIZE_GYRO_X (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM * 2) +//!< \~english data size of X axis of gyro +#define LSDRV_FSTSNS_DSIZE_GYRO_Y (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM * 2) +//!< \~english data size of Y axis of gyro +#define LSDRV_FSTSNS_DSIZE_GYRO_Z (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GYRO_NUM * 2) +//!< \~english data size of Z axis of gyro +#define LSDRV_FSTSNS_DSIZE_SPEED (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * 2) +//!< \~english data size of speed +#define LSDRV_FSTSNS_DSIZE_SPEED_FLG LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM +//!< \~english data size of speed pulse +#define LSDRV_FSTSNS_DSIZE_REV LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM +//!< \~english data size of reverse +#define LSDRV_FSTSNS_DSIZE_GYRO_TEMP (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * 2) +//!< \~english data size of gyro temperature +#define LSDRV_FSTSNS_DSIZE_GSENSOR_X (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM * 2) +//!< \~english data size of X axis of Gsns + +#define LSDRV_FSTSNS_DSIZE_GSENSOR_Y (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM * 2) + //!< \~english data size of Y axis of Gsns +#define LSDRV_FSTSNS_DSIZE_GSENSOR_Z (LSDRV_FSTSNS_SENSOR_FIRST_SEND_NUM * LSDRV_FSTSNS_DETAILED_DATA_GSENSOR_NUM * 2) +//!< \~english data size of Z axis of Gsns + +#define SENSOR_MSG_VSINFO_DSIZE 1904 //!< \~english message body max size + + +// Thread control Command ID +#define CID_THREAD_CREATE_COMP (0x0001) //!< \~english Thread Start Complete Notify Command ID +#define CID_THREAD_STOP_REQ (0x0002) //!< \~english Thread Stop Request Command ID +#define CID_THREAD_STOP_COMP (0x0003) //!< \~english Thread Stop Complete Notify Command ID + +// A vehicle signal of data size +#define LSDRV_SNDMSG_DTSIZE_1 1 //!< \~english SndMSG data size 1Byte +#define LSDRV_SNDMSG_DTSIZE_2 2 //!< \~english SndMSG data size 2Byte +#define LSDRV_SNDMSG_DTSIZE_20 20 //!< \~english SndMSG data size 20Byte +#define LSDRV_SNDMSG_DTSIZE_132 132 //!< \~english SndMSG data size 132Byte + +// NMEA receive flag +#define POS_SNS_GPS_NMEA_GGA (0x00000001U) //!< \~english GGA sentence +#define POS_SNS_GPS_NMEA_GLL (0x00000002U) //!< \~english GLL sentence +#define POS_SNS_GPS_NMEA_GSA1 (0x00000004U) //!< \~english GSA1 sentence +#define POS_SNS_GPS_NMEA_GSA2 (0x00000008U) //!< \~english GSA2 sentence +#define POS_SNS_GPS_NMEA_GSA3 (0x00000010U) //!< \~english GSA3 sentence +#define POS_SNS_GPS_NMEA_GSA4 (0x00000020U) //!< \~english GSA4 sentence +#define POS_SNS_GPS_NMEA_GST (0x00000040U) //!< \~english GST sentence +#define POS_SNS_GPS_NMEA_RMC (0x00000080U) //!< \~english RMC sentence +#define POS_SNS_GPS_NMEA_VTG (0x00000100U) //!< \~english VTG sentence +#define POS_SNS_GPS_NMEA_GSV1 (0x00000200U) //!< \~english GSV1 sentence +#define POS_SNS_GPS_NMEA_GSV2 (0x00000400U) //!< \~english GSV2 sentence +#define POS_SNS_GPS_NMEA_GSV3 (0x00000800U) //!< \~english GSV3 sentence +#define POS_SNS_GPS_NMEA_GSV4 (0x00001000U) //!< \~english GSV4 sentence +#define POS_SNS_GPS_NMEA_GSV5 (0x00002000U) //!< \~english GSV5 sentence +#define POS_SNS_GPS_NMEA_GSV6 (0x00004000U) //!< \~english GSV6 sentence +#define POS_SNS_GPS_NMEA_GSV7 (0x00008000U) //!< \~english GSV7 sentence +#define POS_SNS_GPS_NMEA_GSV8 (0x00010000U) //!< \~english GSV8 sentence +#define POS_SNS_GPS_NMEA_GSV9 (0x00020000U) //!< \~english GSV9 sentence +#define POS_SNS_GPS_NMEA_GSV10 (0x00040000U) //!< \~english GSV10 sentence +#define POS_SNS_GPS_NMEA_GSV11 (0x00080000U) //!< \~english GSV11 sentence +#define POS_SNS_GPS_NMEA_GSV12 (0x00100000U) //!< \~english GSV12 sentence +#define POS_SNS_GPS_NMEA_GSV13 (0x00200000U) //!< \~english GSV13 sentence +#define POS_SNS_GPS_NMEA_RESERVE1 (0x00400000U) //!< \~english Reserved +#define POS_SNS_GPS_NMEA_RESERVE2 (0x00800000U) //!< \~english Reserved + + +/** + * @enum POS_SNS_GPS_NMEA_SNO + * \~english type of NMEA + */ +typedef enum { + POS_SNS_GPS_NMEA_SNO_GGA = 0, //!< \~english GGA sentence + POS_SNS_GPS_NMEA_SNO_GLL, //!< \~english GLL sentence + POS_SNS_GPS_NMEA_SNO_GSA1, //!< \~english GSA1 sentence + POS_SNS_GPS_NMEA_SNO_GSA2, //!< \~english GSA2 sentence + POS_SNS_GPS_NMEA_SNO_GSA3, //!< \~english GSA3 sentence + POS_SNS_GPS_NMEA_SNO_GSA4, //!< \~english GSA4 sentence + POS_SNS_GPS_NMEA_SNO_GST, //!< \~english GST sentence + POS_SNS_GPS_NMEA_SNO_RMC, //!< \~english RMC sentence + POS_SNS_GPS_NMEA_SNO_VTG, //!< \~english VTG sentence + POS_SNS_GPS_NMEA_SNO_GSV1, //!< \~english GSV1 sentence + POS_SNS_GPS_NMEA_SNO_GSV2, //!< \~english GSV2 sentence + POS_SNS_GPS_NMEA_SNO_GSV3, //!< \~english GSV3 sentence + POS_SNS_GPS_NMEA_SNO_GSV4, //!< \~english GSV4 sentence + POS_SNS_GPS_NMEA_SNO_GSV5, //!< \~english GSV5 sentence + POS_SNS_GPS_NMEA_SNO_GSV6, //!< \~english GSV6 sentence + POS_SNS_GPS_NMEA_SNO_GSV7, //!< \~english GSV7 sentence + POS_SNS_GPS_NMEA_SNO_GSV8, //!< \~english GSV8 sentence + POS_SNS_GPS_NMEA_SNO_GSV9, //!< \~english GSV9 sentence + POS_SNS_GPS_NMEA_SNO_GSV10, //!< \~english GSV10 sentence + POS_SNS_GPS_NMEA_SNO_GSV11, //!< \~english GSV11 sentence + POS_SNS_GPS_NMEA_SNO_GSV12, //!< \~english GSV12 sentence + POS_SNS_GPS_NMEA_SNO_GSV13, //!< \~english GSV13 sentence + POS_SNS_GPS_NMEA_SNO_RESERVE1, //!< \~english Reserved + POS_SNS_GPS_NMEA_SNO_RESERVE2, //!< \~english Reserved + + POS_SNS_GPS_NMEA_SNO_MAX //!< \~english MAX sentence(invalid) +} POS_SNS_GPS_NMEA_SNO; + +/** + * @enum LsDrvKind + * \~english type of Sensor + */ +typedef enum { + LSDRV_GYRO_X, //!< \~english Gyro X-Axis + LSDRV_GYRO_Y, //!< \~english Gyro Y-Axis + LSDRV_GYRO_Z, //!< \~english Gyro Z-Axis + LSDRV_SPEED_PULSE, //!< \~english Speed pulse + LSDRV_SPEED_PULSE_FLAG, //!< \~english Speed pulse Flag + LSDRV_SPEED_KMPH, //!< \~english Speed km/h + LSDRV_GYRO_EXT, //!< \~english extend Gyro + LSDRV_REV, //!< \~english Reverse + LSDRV_GYRO_TEMP, //!< \~english Gyro temperature + LSDRV_GSENSOR_X, //!< \~english G-sensor X-Axis + LSDRV_GSENSOR_Y, //!< \~english G-sensor Y-Axis + LSDRV_GSENSOR_Z, //!< \~english G-sensor Z-Axis + LSDRV_PULSE_TIME, //!< \~english Pulse time + LSDRV_SNS_COUNTER, //!< \~english Sensor counter + LSDRV_GPS_INTERRUPT_FLAG, //!< \~english GPS Interrupt Flag + LSDRV_KINDS_MAX //!< \~english MAX +} LsDrvKind; + + +/** + * @enum EnumTidPos + * \~english Thread id notified to positioning when starting or terminating each thread is completed. + */ +typedef enum EnumTidPos { + ETID_POS_MAIN = 0, + //!< \~english Thread for vehicle sensor(unused in hal) + ETID_POS_SENS, + //!< \~english Thread for receive sensor + ETID_POS_GPS, + //!< \~english Thread for GPS NMEA analysis and delivery message + ETID_POS_GPS_RECV, + //!< \~english Thread for receive GPS + ETID_POS_GPS_ROLLOVER, + //!< \~english Thread for monitoring GPS rollover + ETID_POS_MAX + //!< \~english Max thread id +} EnumTID_POS; + +/** + * @struct LsdrvLsdata + * \~english Struct of LineSensor message + */ +typedef struct LsdrvLsdata { + u_int32 ul_did; //!< \~english data ID + u_int8 uc_size; //!< \~english data size + u_int8 uc_rcvflag; //!< \~english receive flag + u_int8 uc_sns_cnt; //!< \~english sensor count + u_int8 u_reserve; //!< \~english reserve + u_int8 uc_data[132]; //!< \~english data contents +} LSDRV_LSDATA; + +/** + * @struct LsdrvLsdataG + * \~english Struct of LineSensorG message + */ +typedef struct LsdrvLsdataG { + u_int32 ul_did; //!< \~english data ID + u_int8 uc_size; //!< \~english data size + u_int8 uc_rcv_flag; //!< \~english receive flag + u_int8 uc_sns_cnt; //!< \~english sensor count + u_int8 reserve; //!< \~english reserve + u_int8 uc_data[132]; //!< \~english data content +} LSDRV_LSDATA_G; + +/** + * @struct LsdrvLsdataFstGyroX + * \~english Struct of X axis of of gyro data(first sensor message) + */ +typedef struct LsdrvLsdataFstGyroX { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_X]; //!< \~english data contents +} LSDRV_LSDATA_FST_GYRO_X; + +/** + * @struct LsdrvLsdataFstGyroY + * \~english Struct of Y axis of of gyro data(first sensor message) + */ +typedef struct LsdrvLsdataFstGyroY { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_Y]; //!< \~english data contents +} LSDRV_LSDATA_FST_GYRO_Y; + +/** + * @struct LsdrvLsdataFstGyroZ + * \~english Struct of Z axis of of gyro data(first sensor message) + */ +typedef struct LsdrvLsdataFstGyroZ { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_Z]; //!< \~english data contents +} LSDRV_LSDATA_FST_GYRO_Z; + +/** + * @struct LsdrvLsdataFstSpeed + * \~english Struct of speed data(first sensor message) + */ +typedef struct LsdrvLsdataFstSpeed { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_SPEED]; //!< \~english data contents +} LSDRV_LSDATA_FST_SPEED; + +/** + * @struct LsdrvLsdataFstSpeedPulseFlag + * \~english Struct of speed pulse data(first sensor message) + */ +typedef struct LsdrvLsdataFstSpeedPulseFlag { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_SPEED_FLG]; //!< \~english data contents +} LSDRV_LSDATA_FST_SPEED_PULSE_FLAG; + +/** + * @struct LsdrvLsdataFstRev + * \~english Struct of reverse data(first sensor message) + */ +typedef struct LsdrvLsdataFstRev { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_REV]; //!< \~english data contents +} LSDRV_LSDATA_FST_REV; + +/** + * @struct LsdrvLsdataFstGyroTemp + * \~english Struct of gyro temperature data(first sensor message) + */ +typedef struct LsdrvLsdataFstGyroTemp { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GYRO_TEMP]; //!< \~english data contents +} LSDRV_LSDATA_FST_GYRO_TEMP; + +/** + * @struct LsdrvLsdataFstGsensorX + * \~english Struct of X axis of Gsns data(first sensor message) + */ +typedef struct LsdrvLsdataFstGsensorX { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GSENSOR_X]; //!< \~english data contents +} LSDRV_LSDATA_FST_GSENSOR_X; + +/** + * @struct LsdrvLsdataFstGsensorY + * \~english Struct of Y axis of Gsns data(first sensor message) + */ +typedef struct LsdrvLsdataFstGsensorY { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GSENSOR_Y]; //!< \~english data contents +} LSDRV_LSDATA_FST_GSENSOR_Y; + +/** + * @struct LsdrvLsdataFstGsensorZ + * \~english Struct of Z axis of Gsns data(first sensor message) + */ +typedef struct LsdrvLsdataFstGsensorZ { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[LSDRV_FSTSNS_DSIZE_GSENSOR_Z]; //!< \~english data contents +} LSDRV_LSDATA_FST_GSENSOR_Z; + +/** + * @struct LsdrvMsgLsdataDatFst + * \~english Struct of LineSensor data (first sensor message) + */ +typedef struct LsdrvMsgLsdataDatFst { + LSDRV_LSDATA_FST_GYRO_X st_gyro_x; //!< \~english data of X axis of gyro + LSDRV_LSDATA_FST_GYRO_Y st_gyro_y; //!< \~english data of Y axis of gyro + LSDRV_LSDATA_FST_GYRO_Z st_gyro_z; //!< \~english data of Z axis of gyro + LSDRV_LSDATA_FST_SPEED st_speed; //!< \~english data of speed + LSDRV_LSDATA_FST_SPEED_PULSE_FLAG st_spd_pulse_flg; //!< \~english data of speed pulse + LSDRV_LSDATA_FST_REV st_rev; //!< \~english data of reverse + LSDRV_LSDATA_FST_GYRO_TEMP st_gyro_temp; //!< \~english data of gyro temperature + LSDRV_LSDATA_FST_GSENSOR_X st_gsns_x; //!< \~english data of X axis of Gsns + LSDRV_LSDATA_FST_GSENSOR_Y st_gsns_y; //!< \~english data of Y axis of Gsns + LSDRV_LSDATA_FST_GSENSOR_Z st_gsns_z; //!< \~english data of Z axis of Gsns +} LSDRV_MSG_LSDATA_DAT_FST; + +/** + * @struct LsdrvMsgLsdataDat + * \~english Struct of LineSensor package data + */ +typedef struct LsdrvMsgLsdataDat { + u_int8 uc_data_num; //!< \~english data number + u_int8 reserve[3]; //!< \~english reserve + LSDRV_LSDATA st_data[12]; //!< \~english data +} LSDRV_MSG_LSDATA_DAT; + +/** + * @struct LsdrvMsgLsdata + * \~english Struct of LineSensor message data + */ +typedef struct LsdrvMsgLsdata { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT st_para; //!< \~english data of gyro +} LSDRV_MSG_LSDATA; + +/** + * @struct LsdrvMsgLsdataDatG + * \~english Struct of LineSensorG package data + */ +typedef struct LsdrvMsgLsdataDatG { + u_int8 uc_data_num; //!< \~english data number + u_int8 reserve[3]; //!< \~english reserve + LSDRV_LSDATA_G st_data[15]; //!< \~english data +} LSDRV_MSG_LSDATA_DAT_G; + +/** + * @struct LsdrvMsgLsdataG + * \~english Struct of LineSensorG message data + */ +typedef struct LsdrvMsgLsdataG { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT_G st_para; //!< \~english data of message +} LSDRV_MSG_LSDATA_G; + +/** + * @struct LsdrvMsgLsdataDatGyroTrouble + * \~english Struct of Gyro trouble + */ +typedef struct LsdrvMsgLsdataDatGyroTrouble { + u_int32 ul_did; //!< \~english data ID + u_int8 uc_size; //!< \~english data size + u_int8 reserve; //!< \~english reserve + u_int8 uc_data; //!< \~english data content + u_int8 reserve2; //!< \~english reserve +} LSDRV_MSG_LSDATA_DAT_GYRO_TROUBLE; + +/** + * @struct LsdrvMsgLsdataGyroTrouble + * \~english Struct of message about Gyro trouble + */ +typedef struct LsdrvMsgLsdataGyroTrouble { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT_GYRO_TROUBLE st_para; //!< \~english data of message +} LSDRV_MSG_LSDATA_GYRO_TROUBLE; + +/** + * @struct LsdrvMsgLsdataDatGpsInterruptSignal + * \~english Struct of Gps interrupt signal data + */ +typedef struct LsdrvMsgLsdataDatGpsInterruptSignal { + u_int32 ul_did; //!< \~english data ID + u_int8 uc_size; //!< \~english data size + u_int8 reserve; //!< \~english reserve + u_int8 uc_data; //!< \~english data content + u_int8 reserve2; //!< \~english reserve +} LSDRV_MSG_LSDATA_DAT_GPS_INTERRUPT_SIGNAL; + +/** + * @struct LsdrvMsgLsdataGpsInterruptSignal + * \~english Struct of message about Gps interrupt signal + */ +typedef struct LsdrvMsgLsdataGpsInterruptSignal { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT_GPS_INTERRUPT_SIGNAL st_para; //!< \~english data of message +} LSDRV_MSG_LSDATA_GPS_INTERRUPT_SIGNAL; + +/** + * @struct LsdrvMsgLsdataDatGyroConnectStatus + * \~english Struct of Gyro connect status + */ +typedef struct LsdrvMsgLsdataDatGyroConnectStatus { + u_int32 ul_did; //!< \~english data ID + u_int8 uc_size; //!< \~english data size + u_int8 reserve; //!< \~english reserve + u_int8 uc_data; //!< \~english data content + u_int8 reserve2; //!< \~english reserve +} LSDRV_MSG_LSDATA_DAT_GYRO_CONNECT_STATUS; + +/** + * @struct LsdrvMsgLsdataGyroConnectStatus + * \~english Struct of message about Gyro connect status + */ +typedef struct LsdrvMsgLsdataGyroConnectStatus { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT_GYRO_CONNECT_STATUS st_para; //!< \~english data of message +} LSDRV_MSG_LSDATA_GYRO_CONNECT_STATUS; + +/** + * @struct LsdrvMsgLsdataDatGpsAntennaStatus + * \~english Struct of Gps Antenna Status + */ +typedef struct LsdrvMsgLsdataDatGpsAntennaStatus { + u_int32 ul_did; //!< \~english data ID + u_int8 uc_size; //!< \~english data size + u_int8 uc_rcv_flag; //!< \~english receive flag + u_int8 uc_sns_cnt; //!< \~english sensor count + u_int8 uc_data; //!< \~english data content +} LSDRV_MSG_LSDATA_DAT_GPS_ANTENNA_STATUS; + +/** + * @struct LsdrvMsgLsdataGpsAntennaStatus + * \~english Struct of message about Gps Antenna Status + */ +typedef struct LsdrvMsgLsdataGpsAntennaStatus { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT_GPS_ANTENNA_STATUS st_para; //!< \~english data of message +} LSDRV_MSG_LSDATA_GPS_ANTENNA_STATUS; + +/** + * @struct LsdrvLsdataFst + * \~english Struct of sensor data (first sensor message) + */ +typedef struct LsdrvLsdataFst { + u_int32 ul_did; //!< \~english data ID + u_int16 uc_size; //!< \~english data size + u_int8 uc_partition_max; //!< \~english total of partition + u_int8 uc_partition_num; //!< \~english data number + u_int8 uc_data[60]; //!< \~english data contents +} LSDRV_LSDATA_FST; + +/** + * @struct LsdrvMsgLsdataFst + * \~english Struct of message about sensor data (first sensor message) + */ +typedef struct LsdrvMsgLsdataFst { + T_APIMSG_MSGBUF_HEADER st_head; //!< \~english message header + LSDRV_MSG_LSDATA_DAT_FST st_para; //!< \~english data of message +} LSDRV_MSG_LSDATA_FST; + +/** + * @struct SensorMsgGpsdataDat + * \~english Struct of Gps data + * \~english @par Detail + * This data structure can have 7 types of data that identified by data ID.\n + * The contents are as follows.\n + * | data ID | content | data format | + * |:----------------------------------|:------------------------------------------|:------------------------------| + * | @ref POSHAL_DID_GPS_NMEA | NMEA data | @ref MdevGpsNmea "MDEV_GPS_NMEA" | + * | @ref POSHAL_DID_GPS_CUSTOMDATA | GPS custom data | @ref MdevGpsCustomDataMgs "MDEV_GPS_CUSTOMDATA" | + * | @ref POSHAL_DID_GPS_CLOCK_DRIFT | clock drift | @ref int32_t | + * | @ref POSHAL_DID_GPS_CLOCK_FREQ | clock frequency | @ref int32_t | + * | @ref POSHAL_DID_GPS_WKNROLLOVER | GPS week number | @ref SensorWknRollOverHal | + * | @ref POSHAL_DID_GPS_CONNECT_ERROR | GPS signal error(TRUE:Error, FALSE:Normal)| @ref BOOL | + * | @ref POSHAL_DID_GPS_TIME (_RAW) | GPS time information | @ref SENSOR_GPSTIME | + */ +typedef struct SensorMsgGpsdataDat { + u_int32 ul_did; //!< \~english data ID + u_int16 us_size; //!< \~english data size + u_int8 uc_rcv_flag; //!< \~english receive flag + u_int8 uc_sns_cnt; //!< \~english sensor count + u_int8 uc_gps_cnt_flag; //!< \~english GPS count + u_int8 reserve[3]; //!< \~english reserve + u_int8 uc_data[SENSOR_MSG_VSINFO_DSIZE]; //!< \~english data contents +} SENSOR_MSG_GPSDATA_DAT; + +/** + * @struct SensorMsgGpsdata + * \~english Struct of message about GPS data + */ +typedef struct SensorMsgGpsdata { + T_APIMSG_MSGBUF_HEADER st_head; + //!< \~english message header(see vs-positioning-base-library) + SENSOR_MSG_GPSDATA_DAT st_para; + //!< \~english data of message +} SENSOR_MSG_GPSDATA; + +/** + * @struct TG_GPS_RET_TIMESET_MSG + * \~english Struct of message about GPS time set response + */ +typedef struct { + T_APIMSG_MSGBUF_HEADER header; //!< \~english message header + uint64_t status; //!< \~english response status +} TG_GPS_RET_TIMESET_MSG; + +/** + * @struct TG_GPS_NMEA_SENTENCE_INFO + * \~english Struct of GPS NMEA sentence info + */ +typedef struct { + uint8_t uc_size; //!< \~english sentence size + uint8_t reserve; //!< \~english reserve + uint16_t us_offset; //!< \~english sentence start offset +} TG_GPS_NMEA_SENTENCE_INFO; + +/** + * @struct TG_GPS_NMEA_INFO + * \~english Struct of GPS NMEA info + */ +typedef struct { + uint32_t ul_rcvsts; //!< \~english NMEA receive info + uint8_t reserve[4]; //!< \~english reserve + TG_GPS_NMEA_SENTENCE_INFO st_nmea_sentence_info[POS_SNS_GPS_NMEA_SNO_MAX]; + //!< \~english sentence infomation +} TG_GPS_NMEA_INFO; + +///////////////////////////////////////////////////////////////////////////////////// +/// \ingroup positioning_hal +/// \~english @par Brief +/// - start thread of NMEA analysis and delivery message +/// \~english @param [in] h_app +/// HANDLE - handle +/// +/// \~english @retval eFrameworkunifiedStatusOK Success +/// \~english @retval eFrameworkunifiedStatusFail Failed +/// +/// \~english @par Prerequisite +/// - None +/// \~english @par Change of internal state +/// - This API can not change internal state +/// \~english @par Conditions of processing failure +/// - None +/// \~english @par Detail +/// - start thread of NMEA analysis and delivery message +/// - the API can only be used by 1 process +/// \~english @par Classification +/// Public +/// \~english @par Type +/// Sync +/// \~english @see +/// None +///////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus StartGpsMainThreadPositioning(HANDLE h_app); + +///////////////////////////////////////////////////////////////////////////////////// +/// \ingroup positioning_hal +/// \~english @par Brief +/// - start thread for receive GPS manager +/// \~english @param [in] h_app +/// HANDLE - handle +/// +/// \~english @retval eFrameworkunifiedStatusOK Success +/// \~english @retval eFrameworkunifiedStatusFail Failed +/// +/// \~english @par Prerequisite +/// - None +/// \~english @par Change of internal state +/// - This API can not change internal state. +/// \~english @par Conditions of processing failure +/// - None +/// \~english @par Detail +/// - start model for receive GPS manager +/// - the API can only be used by 1 process +/// \~english @par Classification +/// Public +/// \~english @par Type +/// Sync +/// \~english @see +/// None +///////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus StartGpsRecvThreadPositioning(HANDLE h_app); + +///////////////////////////////////////////////////////////////////////////////////// +/// \ingroup positioning_hal +/// \~english @par Brief +/// - start thread for receive sensor +/// \~english @param [in] h_app +/// HANDLE - handle +/// +/// \~english @retval eFrameworkunifiedStatusOK Success +/// \~english @retval eFrameworkunifiedStatusFail Failed +/// +/// \~english @par Prerequisite +/// - None +/// \~english @par Change of internal state +/// - This API can not change internal state. +/// \~english @par Conditions of processing failure +/// - None +/// \~english @par Detail +/// - start thread for receive sensor +/// - the API can only be used by 1 process +/// \~english @par Classification +/// Public +/// \~english @par Type +/// Sync +/// \~english @see +/// None +///////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus StartLineSensorThreadPositioning(HANDLE h_app); + +///////////////////////////////////////////////////////////////////////////////////// +/// \ingroup positioning_hal +/// \~english @par Brief +/// - start monitoring thread of GPS rollover +/// \~english @param [in] h_app +/// HANDLE - handle +/// +/// \~english @retval eFrameworkunifiedStatusOK Success +/// \~english @retval eFrameworkunifiedStatusFail Failed +/// +/// \~english @par Prerequisite +/// - None +/// \~english @par Change of internal state +/// - This API can not change internal state. +/// \~english @par Conditions of processing failure +/// - The parameter hApp is NULL [eFrameworkunifiedStatusFail] +/// - When fail to start thread. [return value of FrameworkunifiedStartChildThread] +/// \~english @par Detail +/// - start monitoring thread of GPS rollover +/// - the API can only be used by 1 process +/// \~english @par Classification +/// Public +/// \~english @par Type +/// Sync +/// \~english @see +/// FrameworkunifiedCreateChildThread, FrameworkunifiedStartChildThread +///////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus StartGpsRolloverThreadPositioning(HANDLE h_app); + +/** @}*/ // end of positioning_hal +/** @}*/ // end of positioning + +/*---------------------------------------------------------------------------*/ +#endif // HAL_API_POSITIONING_HAL_H_ + +/*---------------------------------------------------------------------------*/ +/*EOF*/ |