diff options
Diffstat (limited to 'positioning_hal/inc/GpsCommon/MDev_Gps_Common.h')
-rw-r--r-- | positioning_hal/inc/GpsCommon/MDev_Gps_Common.h | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/positioning_hal/inc/GpsCommon/MDev_Gps_Common.h b/positioning_hal/inc/GpsCommon/MDev_Gps_Common.h new file mode 100644 index 00000000..78128580 --- /dev/null +++ b/positioning_hal/inc/GpsCommon/MDev_Gps_Common.h @@ -0,0 +1,187 @@ +/* + * @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 MDev_Gps_Common.h +*/ + +#ifndef INC_GPSCOMMON_MDEV_GPS_COMMON_H_ +#define INC_GPSCOMMON_MDEV_GPS_COMMON_H_ + +/*---------------------------------------------------------------------------*/ +// Include files + +#include "positioning_def.h" +#include "MDev_Gps_Main.h" + +/*---------------------------------------------------------------------------*/ +// Define + +#define NMEA_CHECKSUM_CHAR '*' /* *## (HEX) */ +#define NMEA_DATA_SEPARATOR ',' + +#define GPS_NMEA_FIELD_LEN_MAX (GPS_NMEA_MAX_SZ) + +// NMEA GGA Sentence +/* Fix Status */ +#define GPS_NMEA_GGA_FIX_STATUS_NON 0 /* invalid */ +#define GPS_NMEA_GGA_FIX_STATUS_GPS 1 /* GPS SPS Mode, Fix valid */ +#define GPS_NMEA_GGA_FIX_STATUS_DGPS 2 /* DGPS SPS Mode, Fix valid */ +#define GPS_NMEA_GGA_FIX_STATUS_DR 6 /* Estimated/Dead Reckoning */ +/* Field No */ +#define GPS_NMEA_FNO_GGA_FS 6 +#define GPS_NMEA_FNO_GGA_MSL 9 + +/* number of SV Fields */ +#define GPS_NMEA_NUM_GSA_SV 12 +/* Fix Status */ +#define GPS_NMEA_GSA_FIX_STS_NON 1 +#define GPS_NMEA_GSA_FIX_STS_2D 2 +#define GPS_NMEA_GSA_FIX_STS_3D 3 +/* Field No */ +#define GPS_NMEA_FNO_GSA_FS 2 +#define GPS_NMEA_FNO_GSA_SV 3 + +/* number of Satellite Infomation Fields (sv+elv+az+cno) */ +#define GPS_NMEA_NUM_GSV_SINFO 4 + /* Field No */ +#define GPS_NMEA_FNO_GSV_NOSV 3 +#define GPS_NMEA_FNO_GSV_SV 4 +#define GPS_NMEA_FNO_GSV_ELV 5 +#define GPS_NMEA_FNO_GSV_AZ 6 +#define GPS_NMEA_FNO_GSV_CNO 7 + +#define GPS_NMEA_RMC_STS_INVALID 'V' +#define GPS_NMEA_RMC_STS_VALID 'A' +#define GPS_NMEA_RMC_IND_NORTH 'N' +#define GPS_NMEA_RMC_IND_EAST 'E' + +/* Field No */ +#define GPS_NMEA_FNO_RMC_UTC 1 +#define GPS_NMEA_FNO_RMC_STATUS 2 +#define GPS_NMEA_FNO_RMC_LATITUDE 3 +#define GPS_NMEA_FNO_RMC_NS 4 +#define GPS_NMEA_FNO_RMC_LONGITUDE 5 +#define GPS_NMEA_FNO_RMC_EW 6 +#define GPS_NMEA_FNO_RMC_SPEED 7 +#define GPS_NMEA_FNO_RMC_COG 8 +#define GPS_NMEA_FNO_RMC_DATE 9 + +// Diag Fix Count +#define GPS_DIAG_FIX_COUNT_3D (0x01) +#define GPS_DIAG_FIX_COUNT_2D (0x02) +#define GPS_DIAG_FIX_COUNT_ELSE (0x04) + +/* GPS time setting related */ +#define GPS_SETTIME_RANGE 5 /* 5 seconds : Valid range of GPS time setting */ +#define GPS_TIME_RANGE 10 /* 10 seconds : GPS time change range */ + +/* NAV-SVINFO logging status */ +#define GPS_NAVSVINFO_STS_INIT 0 +#define GPS_NAVSVINFO_STS_READY 1 +#define GPS_NAVSVINFO_STS_DONE 2 +#define GPS_NAVSVINFO_STS_SETTING 3 + +/* Time setting information */ +#define GPS_TIME_RX 0 /* Time not set */ +#define GPS_TIME_ROLOVR 1 /* First GPS reception(for rollover) */ +#define GPS_TIME_SET 2 /* Time setting in progress */ + +/*! + @brief Satellite position information +*/ +typedef struct GpsSatelliteInfoStr { + uint8_t sv; /* Satellite number */ + uint8_t elv; /* Height 0-99 */ + uint16_t az; /* Orientation 0-359 */ + uint8_t cno; /* Signal strength */ + uint8_t sts; /* Reception status */ +} GpsSatelliteInfo; + +/*---------------------------------------------------------------------------*/ +// Global values + +extern BOOL g_gps_rcv_thread_stop; +extern uint8_t g_is_gpstime_sts; + +/*---------------------------------------------------------------------------*/ +// Prototype + +void ChangeStatusGpsCommon(u_int32 sts); +void RtyResetGpsCommon(void); +void SendRtyResetGpsCommon(void); +void SendReqGpsCommon(void); +void GPSResetReqGpsCommon(void); +void CyclDataTimeOutGpsCommon(void); +RET_API CheckFrontStringPartGpsCommon(const u_char *p_tartget, const u_char *p_start); +int32 JudgeFormatGpsCommon(u_char *p_send_data, u_int32 ul_length, TG_GPS_OUTPUT_FORMAT *p_format); +RET_API CheckSumGpsCommon(const u_int8 p_uc_data[], u_int32 ul_length, TG_GPS_OUTPUT_FORMAT e_cmd_info); +u_int8 AtoHGpsCommon(u_int8 ascii); +RET_API DevGpsSaveCmd(TG_GPS_SAVECMD *p_send_data); +void SendSaveCmdGpsCommon(void); +void DeleteSaveCmdGpsCommon(void); +void DeleteAllSaveCmdGpsCommon(void); +void RcvCyclCmdNmeaGpsCommon(u_int8 *p_uc_data, u_int32 ul_len, TG_GPS_OUTPUT_FORMAT s_output_format); +int32 CheckSendCmdGpsCommon(const u_char *p_rcv_data, u_int32 ul_length, TG_GPS_OUTPUT_FORMAT *p_format); +int32_t GetStringFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, char* p_dst, size_t size); +double GetNumericFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid); +int32 GetIntegerFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src); +int32 GetLonLatFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid); +u_int16 GetHeadingFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid); +int32 GetAltitudeFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid); +u_int16 GetSpeedFromNmeaGpsCommon(u_int8 field_number, u_int8 *p_src, BOOL *p_valid); +void StopThreadGpsCommon(void); +uint8_t JudgeFormatOrderGpsCommon(TG_GPS_OUTPUT_FORMAT s_format_1, TG_GPS_OUTPUT_FORMAT s_format_2); +ENUM_GPS_NMEA_INDEX GetNmeaIdxGpsCommon(TG_GPS_OUTPUT_FORMAT s_output_format); +void SendResetReqGpsCommon(void); + + +void WriteGpsTimeToBackup(uint8_t flag, POS_DATETIME* pst_datetime); +void DevGpsCommSettingTime(void); +RET_API GpsSetPosBaseEvent(uint16_t snd_pno, int32_t event_val); +uint8_t HardResetChkGpsCommon(void); +void RcvCyclCmdExtGpsCommon(u_int8 *p_data, u_int32 len, TG_GPS_OUTPUT_FORMAT format); + +BOOL DevGpsRcvProcGpsResetResp(TG_GPS_RCV_DATA*); +void DevGpsRcvProcTimeSetResp(TG_GPS_RCV_DATA*); +void DevGpsRcvProcWknRolloverGetResp(TG_GPS_RCV_DATA* p_data); +void DevGpsRcvProcNavSvinfoAddResp(TG_GPS_RCV_DATA* p_data); +void DevGpsReadGpsTime(POS_DATETIME* p_st_datetime); +RET_API DevGpsRcvProcCmnResp(TG_GPS_RCV_DATA* p_data, uint8_t cmd); +RET_API DevGpsResetReq(PNO us_pno, RID uc_rid); +void DevGpsSettingTime(POS_DATETIME* p_st_datetime); +int DevGpsYMD2JD(int y, int m, int d); +BOOL DevGpsYMD2GPSTIME(const int32 y, const int32 m, const int32 d, + const int32 hh, const int32 mm, const int32 ss, + u_int16* gpsw, u_int32* gpsws); +void DevGpsSetChkSum(u_int8* uc_buffer, u_int32 ul_length); +RET_API DevGpsCatPollReq(uint8_t *p_ublox_data, uint16_t kind); +void DevGpsSetGpsweekcorcnt(void); +RET_API DevGpsNavTimeUTCAddReq(void); +RET_API DevGpsWknRolloverGetReq(void); +BOOL DevGpsCheckGpsTime(uint16_t set_gpsw, uint32_t set_gpsws, + uint16_t rcv_gpsw, uint32_t rcv_gpsws, int32_t offset_range); + +void DevGpsCnvLonLatNavi(SENSORLOCATION_LONLATINFO_DAT* p_lonlat, + u_int8 fix_sts, int32 lon, int32 lat); +void DevGpsCnvAltitudeNavi(SENSORLOCATION_ALTITUDEINFO_DAT* p_altitude, + u_int8 fix_sts, int32 alt); +void DevGpsCnvHeadingNavi(SENSORMOTION_HEADINGINFO_DAT* p_heading, + u_int8 fix_sts, u_int16 heading); +/*---------------------------------------------------------------------------*/ +#endif // INC_GPSCOMMON_MDEV_GPS_COMMON_H_ + +/*---------------------------------------------------------------------------*/ +/*EOF*/ |