Init basesystem source codes.
[staging/basesystem.git] / vehicleservice / positioning / server / include / Sensor / VehicleSens_Thread.h
1 /*
2  * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
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_
22  * Subsystem name    :
23  ******************************************************************************/
24
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"
39 #include "gps_hal.h"
40 #include "positioning_hal.h"
41 #include "CommonDefine.h"
42
43 /* ++ DR support */
44 #include "DeadReckoning_main.h"
45 #include "Dead_Reckoning_Local_Api.h"
46 /* -- DR support */
47
48 #include "POS_common_private.h"
49
50 /************************************************************************
51 *            Macro definitions                                                 *
52 ************************************************************************/
53
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        */
58
59 #define VEHICLE_RET_ERROR_OUTOF_MEMORY    (-8)      /* Shared memory allocation failure    */
60 #define VEHICLE_RET_ERROR_INVALID         (-10)     /* CANID undetermined        */
61
62 /* -- Porting from PastModel002 enabled APIs */
63
64
65 /* NMEA */
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                "*"
71
72 #define VEHICLESENS_NMEA_PASCD_LEN_MAX           256
73
74 #define VEHICLESENS_NMEA_PASCD_ID                "$PASCD"
75
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 */
79
80 #define VEHICLESENS_NMEA_PASCD_SENSORTYPE_C      "C" /* Combined left and right wheel speed sensors */
81
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 */
87
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 */
90
91 #define VEHICLESENS_NMEA_PASCD_TO_FRA_LEN_MAX    2   /* max length of fractional part of timeoffset */
92
93 #define VEHICLESENS_NMEA_PASCD_SPD_FRA_LEN_MAX   3   /* max length of fractional part of speed */
94
95 #define VEHICLESENS_NMEA_PASCD_SAMPLECOUNT_MAX   50
96
97 /************************************************************************
98  *            Struct definitions                                                *
99  ************************************************************************/
100
101 /*!
102     @brief   Structure of Vehicle Speed and TimeSpec
103  */
104 typedef struct {
105     timespec ts;
106     uint16_t speed; /* [0.01m/s] */
107 } VEHICLESENS_VEHICLE_SPEED_DAT;
108
109 /*!
110     @brief   Structure of Vehilce Speeds and TimeSpecs
111  */
112 typedef struct {
113     VEHICLESENS_VEHICLE_SPEED_DAT listSpd[VEHICLESENS_NMEA_PASCD_SAMPLECOUNT_MAX];
114     uint8_t sampleCount;
115 } VEHICLESENS_VEHICLE_SPEED_INFO;
116
117 /*!
118     @brief   Structure for LUT to Derive Transmission State
119  */
120 typedef struct {
121     uint8_t type;     /* Transmission Type */
122     uint8_t shift;    /* Shift Position from Vehicle */
123
124     uint8_t pkb;      /* Parking Brake from Vehicle */
125     char    state[8]; /* Transmission State for _CWORD27_ */
126 } VEHICLESENS_TRANSMISSION_PKG;
127
128 /************************************************************************
129  * TAG       : VEHICLE_MSG_SEND_DAT
130  * ABSTRACT  : Vehicle sensor information setting message(-> Vehicle sensor)
131  ************************************************************************/
132
133
134
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);
155
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);
160 #else
161 void VehicleSensPkgDeliveryEntryError(const SENSOR_MSG_DELIVERY_ENTRY *msg);
162 #endif
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);
166
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 */
172
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);
179
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_