Init basesystem source codes.
[staging/basesystem.git] / video_in_hal / vehicle_hal / hal_api / vehicle_hal.h
1 /*
2  * @copyright Copyright (c) 2017-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 HAL_API_VEHICLE_HAL_H_
18 #define HAL_API_VEHICLE_HAL_H_
19 /**
20  * @file vehicle_hal.h
21  */
22
23 /** @addtogroup vehicle
24  *  @{
25  */
26 /** @addtogroup vehicle_hal
27  *  @ingroup vehicle
28  *  @{
29  */
30
31 #include <native_service/frameworkunified_types.h>
32
33 /**
34  * \~english  Name of the send thread
35  */
36 #define TN_LINE_SENS_READ "Vehicle Hal"
37
38 /**
39  * @enum LineSensReadInternalServiceProtocol
40  * \~english Command ID used by Vehicle_hal to send the vehicle signal input from the jicage line to the user \n
41               To receive events with this command ID, use the interface defined in framework_unified as follows 
42  * @code 
43  * ret_status = FrameworkunifiedAttachCallbackToDispatcher(h_app, TN_LINE_SENS_READ, CID_VEHICLEHAL_LINESENS, CbCallbackFunc);
44  * @endcode
45  */
46 enum LineSensReadInternalServiceProtocol {
47   CID_VEHICLEHAL_LINESENS = 0x00000101,  //!< \~english LineSens Message Command ID
48   CID_VEHICLEHAL_SPDPULSE = 0x00000102,  //!< \~english SpeedPulse Message Command ID
49   CID_VEHICLEHAL_SPD = 0x00000103,       //!< \~english Speed Message Command ID
50   CID_VEHICLEHAL_LINESENS_POL = 0x00000104,
51   //!< \~english voltage and RHEOSTAT Message Command ID
52 };
53
54 /**
55  * @enum VehiclehalLinesenskindMicBit
56  * \~english  MIC BIT
57  */
58 enum VehiclehalLinesenskindMicBit {
59   VEHICLEHAL_LINESENSKIND_MIC_BIT_MIC = 0x01,          //!< \~english MIC
60   VEHICLEHAL_LINESENSKIND_MIC_BIT_ANALOGMIC1 = 0x02,   //!< \~english ANALOGMIC1
61   VEHICLEHAL_LINESENSKIND_MIC_BIT_ANALOGMIC2 = 0x04,   //!< \~english ANALOGMIC2
62 };
63  
64 /**
65  * @enum VehiclehalLinesenskindMic2Bit
66  * \~english  MIC2 BIT
67  */
68 enum VehiclehalLinesenskindMic2Bit {
69   VEHICLEHAL_LINESENSKIND_MIC2_BIT_A2BHUB = 0x01,      //!< \~english A2BHUB
70   VEHICLEHAL_LINESENSKIND_MIC2_BIT_MULTIMIC1 = 0x02,   //!< \~english MULTIMIC1
71   VEHICLEHAL_LINESENSKIND_MIC2_BIT_MULTIMIC2 = 0x04,   //!< \~english MULTIMIC2
72   VEHICLEHAL_LINESENSKIND_MIC2_BIT_MULTIMIC3 = 0x08,   //!< \~english MULTIMIC3
73   VEHICLEHAL_LINESENSKIND_MIC2_BIT_MULTIMIC4 = 0x10,   //!< \~english MULTIMIC4
74   VEHICLEHAL_LINESENSKIND_MIC2_BIT_MULTIMIC5 = 0x20,   //!< \~english MULTIMIC5
75   VEHICLEHAL_LINESENSKIND_MIC2_BIT_MULTIMIC6 = 0x40,   //!< \~english MULTIMIC6
76   VEHICLEHAL_LINESENSKIND_MIC2_BIT_ANC = 0x80,         //!< \~english ANC
77 };
78
79 /**
80  * @enum VehicleHalLineSensKind
81  * \~english  Line Sensor kind
82  */
83 enum VehicleHalLineSensKind {
84   VEHICLEHAL_LINESENSKIND_IG = 0,       //!< \~english IG
85   VEHICLEHAL_LINESENSKIND_PKB,          //!< \~english PKB
86   VEHICLEHAL_LINESENSKIND_REV,          //!< \~english REV
87   VEHICLEHAL_LINESENSKIND_ILL,          //!< \~english ILL
88   VEHICLEHAL_LINESENSKIND_LOWVOLTAGE,   //!< \~english LOWVOLTAGE
89   VEHICLEHAL_LINESENSKIND_ADIM,         //!< \~english ADIM
90   VEHICLEHAL_LINESENSKIND_MIC,          //!< \~english MIC,ANALOGMIC1,ANALOGMIC2
91   VEHICLEHAL_LINESENSKIND_USBPOWERSUPPLY,  //!< \~english USB Power Supply[10mA]
92   VEHICLEHAL_LINESENSKIND_MIC2,         //!< \~english A2BHUB,MULTIMIC1 to 6,ANC
93   VEHICLEHAL_LINESENSKIND_NUM,          //!< \~english MAX Number
94 };
95
96 /**
97  * @enum VEHICLEHAL_RET_TYPE
98  * \~english  The return value of vehicle_hal API
99  */
100 typedef enum {
101   /**
102   * \~english Success
103   */
104   VEHICLEHAL_RET_SUCCESS = 0,
105   /**
106   * \~english Car Signal Ctrl Api Initialize failed
107   */
108   VEHICLEHAL_RET_ERR_HARDINIT,
109   /**
110   * \~english McSend Open failed
111   */
112   VEHICLEHAL_RET_ERR_MCOPEN,
113   /**
114   * \~english Create Thread failed
115   */
116   VEHICLEHAL_RET_ERR_THREADSTART,
117   /**
118   * \~english Invalid paramter
119   */
120   VEHICLEHAL_RET_ERR_PARAM,
121 }VEHICLEHAL_RET_TYPE;
122
123 /**
124  * @struct VehicleHalSpeedPulse
125  * \~english  Struct of SpeedPulse
126  */
127 struct VehicleHalSpeedPulse {
128   float pulse;  //!< \~english speed pulse[Hz]
129   float period;  //!< \~english pulse period[ms]
130 };
131
132 /**
133  * @struct VehicleHalLineSensMsg
134  * \~english  Struct of Meassage
135  */
136 struct VehicleHalLineSensMsg {
137   uint8_t stdata[VEHICLEHAL_LINESENSKIND_NUM];  //!< \~english line data
138 };
139
140 /**
141  * @struct VehicleHalPol
142  * \~english  Struct of VehicleHalPolling
143  */
144 struct VehicleHalPol {
145   uint8_t vb;        //!< \~english voltage [10 * v]
146   uint8_t rheostat;  //!< \~english RHEOSTAT [10 * v]
147 };
148
149 /**
150  * \ingroup VehicleHalStart
151  * \~english @par Brief
152  *        API to start the vehicle_hal
153  * \~english @param [in] happ
154  *        HANDLE - Handle for Application
155  * \~english @retval VEHICLEHAL_RET_SUCCESS              :  Success
156  * \~english @retval VEHICLEHAL_RET_ERR_HARDINIT         :  Car Signal Ctrl Api Initialize failed
157  * \~english @retval VEHICLEHAL_RET_ERR_MCOPEN           :  McSend Open failed
158  * \~english @retval VEHICLEHAL_RET_ERR_THREADSTART      :  Create Thread failed
159  * \~english @retval VEHICLEHAL_RET_ERR_PARAM            :  Invalid paramter
160  * \~english @par Prerequisite
161  *        None
162  * \~english @par Change of internal state
163  *        - If start successfully, vehicle_hal changes from stop to start.
164  *        - If start failed, the state of the vehicle_hal remains no change.
165  * \~english @par Conditions of processing failure
166  *        - Car Signal Ctrl Api Initialize failed.
167  *        - McSend Open failed.
168  *        - Create Thread failed.
169  * \~english @par Classification
170  *        Public
171  * \~english @par Type
172  *        Sync
173  * \~english @par Detail
174  *        - Start the vehicle_hal service.
175  *        - The API can only be used by 1 process.
176  * \~english @see
177  *        None
178  */
179 VEHICLEHAL_RET_TYPE VehicleHalStart(HANDLE happ);
180
181 /**
182  * \ingroup VehicleHalStop
183  * \~english @par Brief
184  *        API to stop the vehicle_hal
185  * \~english @param [in] happ
186  *        HANDLE - Handle for Application
187  * \~english @retval VEHICLEHAL_RET_SUCCESS          :  Success
188  * \~english @retval VEHICLEHAL_RET_ERR_PARAM        :  Invalid paramter
189  * \~english @par Prerequisite
190  *        vehicle_hal start successfully.
191  * \~english @par Change of internal state
192  *        - If start successfully, vehicle_hal changes from start to stop.
193  *        - If start failed, the state of the vehicle_hal remains no change.
194  * \~english @par Conditions of processing failure
195  *        None.
196  * \~english @par Classification
197  *        Public
198  * \~english @par Type
199  *        Sync
200  * \~english @par Detail
201  *        - Stop the vehicle_hal service.
202  *        - The API can only be used by 1 process.
203  * \~english @see
204  *        None
205  */
206 VEHICLEHAL_RET_TYPE VehicleHalStop(HANDLE happ);
207
208 /** @}*/  //!<  end of vehicle_hal
209 /** @}*/  //!<  end of vehicle
210 #endif  // HAL_API_VEHICLE_HAL_H_