2 * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef POSITIONING_SERVER_INCLUDE_SENSOR_VEHICLESENS_THREAD_H_
18 #define POSITIONING_SERVER_INCLUDE_SENSOR_VEHICLESENS_THREAD_H_
19 /******************************************************************************
20 * File name :VehicleSens_Thread.h
21 * System name :_CWORD107_
23 ******************************************************************************/
25 #include "Vehicle_API_Dummy.h"
26 #include "Sensor_API.h"
27 #include "Vehicle_API_private.h"
28 #include "Sensor_API_private.h"
29 #include "VehicleSens_Common.h"
30 #include "VehicleSens_SelectionItemList.h"
31 #include "VehicleSens_DataMaster.h"
32 #include "VehicleSens_DeliveryCtrl.h"
33 #include "VehicleSens_SharedMemory.h"
34 #include "CanInput_API.h"
35 #include "CanInput_API_private.h"
36 #include "VehicleDebug_API.h"
37 #include "VehicleSens_FromAccess.h"
38 #include "ClockDataMng.h"
40 #include "positioning_hal.h"
41 #include "CommonDefine.h"
44 #include "DeadReckoning_main.h"
45 #include "Dead_Reckoning_Local_Api.h"
48 #include "POS_common_private.h"
50 /************************************************************************
52 ************************************************************************/
54 /* ++ Porting from PastModel002 enabled APIs */
55 #define CID_VEHICLEIF_GET_VEHICLE_DATA 0x0102 /* Vehicle sensor information acquisition CID */
56 #define CID_VEHICLEIF_COMM_WATCH 0x0103 /* Vehicle Sensor Information Disruption Monitoring CID */
57 #define CID_SENSORIF__CWORD82__REQUEST 0x0800 /* Vehicle sensor information setting CID */
59 #define VEHICLE_RET_ERROR_OUTOF_MEMORY (-8) /* Shared memory allocation failure */
60 #define VEHICLE_RET_ERROR_INVALID (-10) /* CANID undetermined */
62 /* -- Porting from PastModel002 enabled APIs */
66 #define VEHICLESENS_NMEA_LF "\n"
67 #define VEHICLESENS_NMEA_CR "\r"
68 #define VEHICLESENS_NMEA_FIELDDELIMITER ","
69 #define VEHICLESENS_NMEA_DECIMALPOINT "."
70 #define VEHICLESENS_NMEA_ASTARISK "*"
72 #define VEHICLESENS_NMEA_PASCD_LEN_MAX 256
74 #define VEHICLESENS_NMEA_PASCD_ID "$PASCD"
76 #define VEHICLESENS_NMEA_PASCD_TS_MAX 86400
77 #define VEHICLESENS_NMEA_PASCD_TS_INT_LEN_MAX 6 /* max length of integer part of timestamp */
78 #define VEHICLESENS_NMEA_PASCD_TS_FRA_LEN_MAX 3 /* max length of fractional part of timestamp */
80 #define VEHICLESENS_NMEA_PASCD_SENSORTYPE_C "C" /* Combined left and right wheel speed sensors */
82 #define VEHICLESENS_NMEA_PASCD_TMS_U "U" /* Unkonwn */
83 #define VEHICLESENS_NMEA_PASCD_TMS_P "P" /* Park */
84 #define VEHICLESENS_NMEA_PASCD_TMS_R "R" /* Reverse */
85 #define VEHICLESENS_NMEA_PASCD_TMS_D "D" /* Driving forword */
86 #define VEHICLESENS_NMEA_PASCD_TMS_N "N" /* Neutral */
88 #define VEHICLESNES_NMEA_PASCD_SLIP "1" /* 1 = a wheel speed slippage was detected */
89 #define VEHICLESNES_NMEA_PASCD_NOSLIP "0" /* 0 = no slip was detected */
91 #define VEHICLESENS_NMEA_PASCD_TO_FRA_LEN_MAX 2 /* max length of fractional part of timeoffset */
93 #define VEHICLESENS_NMEA_PASCD_SPD_FRA_LEN_MAX 3 /* max length of fractional part of speed */
95 #define VEHICLESENS_NMEA_PASCD_SAMPLECOUNT_MAX 50
97 /************************************************************************
98 * Struct definitions *
99 ************************************************************************/
102 @brief Structure of Vehicle Speed and TimeSpec
106 uint16_t speed; /* [0.01m/s] */
107 } VEHICLESENS_VEHICLE_SPEED_DAT;
110 @brief Structure of Vehilce Speeds and TimeSpecs
113 VEHICLESENS_VEHICLE_SPEED_DAT listSpd[VEHICLESENS_NMEA_PASCD_SAMPLECOUNT_MAX];
115 } VEHICLESENS_VEHICLE_SPEED_INFO;
118 @brief Structure for LUT to Derive Transmission State
121 uint8_t type; /* Transmission Type */
122 uint8_t shift; /* Shift Position from Vehicle */
124 uint8_t pkb; /* Parking Brake from Vehicle */
125 char state[8]; /* Transmission State for _CWORD27_ */
126 } VEHICLESENS_TRANSMISSION_PKG;
128 /************************************************************************
129 * TAG : VEHICLE_MSG_SEND_DAT
130 * ABSTRACT : Vehicle sensor information setting message(-> Vehicle sensor)
131 ************************************************************************/
135 /************************************************************************
136 * Function prototype *
137 ************************************************************************/
138 EFrameworkunifiedStatus VehicleSensThread(HANDLE h_app);
139 RET_API VehicleSensThreadInit(void);
140 void VehicleSensDeliveryEntry(const VEHICLE_MSG_DELIVERY_ENTRY *);
141 void VehicleSensGetVehicleData(const VEHICLE_MSG_GET_VEHICLE_DATA *);
142 void VehicleSensWatchStopPage(const VEHICLE_MSG_WATCH_STOPPAGE *);
143 void VehicleSensPkgDeliveryEntry(const SENSOR_MSG_DELIVERY_ENTRY *);
144 void VehicleSensGetVehiclePkgData(const SENSOR_MSG_GET_SENSOR_DATA *);
145 void VehicleSensLineSensDataDelivery(const LSDRV_MSG_LSDATA *, PFUNC_DMASTER_SET_N);
146 void VehicleSensLineSensDataDeliveryG(const LSDRV_MSG_LSDATA_G *, PFUNC_DMASTER_SET_N);
147 void VehicleSensLineSensDataDeliveryGyroTrouble(const LSDRV_MSG_LSDATA_GYRO_TROUBLE *msg,
148 PFUNC_DMASTER_SET_N p_datamaster_set_n);
149 void VehicleSensLineSensDataDeliverySysGpsInterruptSignal(const LSDRV_MSG_LSDATA_GPS_INTERRUPT_SIGNAL *msg,
150 PFUNC_DMASTER_SET_SHARED_MEMORY p_datamaster_set_sharedmemory);
151 void VehicleSensLineSensDataDeliveryGyroConnectStatus(const LSDRV_MSG_LSDATA_GYRO_CONNECT_STATUS *msg,
152 PFUNC_DMASTER_SET_SHARED_MEMORY p_datamaster_set_sharedmemory);
153 void VehicleSensLineSensDataDeliveryGpsAntennaStatus(const LSDRV_MSG_LSDATA_GPS_ANTENNA_STATUS *msg,
154 PFUNC_DMASTER_SET_N p_datamaster_set_n);
156 #if CONFIG_SENSOR_EXT_VALID /* Initial Sensor Support */
157 void VehicleSensPkgDeliveryEntryExt(const SENSOR_MSG_DELIVERY_ENTRY *msg);
158 void VehicleSensLineSensDataDeliveryFst(const LSDRV_MSG_LSDATA_FST *, PFUNC_DMASTER_SET_N);
159 void VehicleSensLineSensDataDeliveryFstG(const LSDRV_MSG_LSDATA_FST *msg, PFUNC_DMASTER_SET_N p_datamaster_set_n);
161 void VehicleSensPkgDeliveryEntryError(const SENSOR_MSG_DELIVERY_ENTRY *msg);
163 void VehicleSensGpsDataDelivery(SENSOR_MSG_GPSDATA *msg,
164 PFUNC_DMASTER_SET_N p_datamaster_set_n,
165 PFUNC_DMASTER_SET_SHARED_MEMORY p_datamaster_set_sharedmemory);
167 void VehicleSensDataMasterSetN(DID did, u_int8 chg_type, u_int8 get_method);
168 void VehicleSensDataMasterSetSharedMemory(DID did, u_int8 chg_type);
169 /* ++ GPS _CWORD82_ support */
170 void VehicleSensSetVehicleData(const VEHICLE_MSG_SEND *);
171 /* -- GPS _CWORD82_ support */
173 void VehicleSensDrDeliveryEntry(const VEHICLE_MSG_DELIVERY_ENTRY *);
174 void VehicleSensGetLog(const VEHICLEDEBUG_MSG_BUF* msg);
175 void VehicleSensSetLog(const VEHICLEDEBUG_MSG_BUF* msg);
176 void VehicleSensWriteLocalTime(const CANINPUT_MSG_INFO *msg);
177 void VehicleSensSetEphNumSharedMemory(const SENSOR_MSG_GPSDATA *msg);
178 void VehicleSensDrRcvMsg(const DEAD_RECKONING_RCVDATA *msg);
180 void VehicleSensCommonDataDelivery(const VEHICLE_MSG_BUF *msg, PFUNC_DMASTER_SET_N p_datamaster_set_n);
181 void VehicleSensGpsTimeSndMsg(const POS_MSGINFO *pos_msg);
182 void VehicleSensGpsTimeDelivery(const VEHICLE_MSG_BUF *msg);
183 RET_API VehicleSensSendEvent(uint16_t snd_pno, int32_t event_val);
184 void VehicleSensThreadStopProcess(void);
185 #endif // POSITIONING_SERVER_INCLUDE_SENSOR_VEHICLESENS_THREAD_H_