common_library: gettid is multiple declaration in cl_error
[staging/basesystem.git] / video_in_hal / stub / diag_record / library_record_api / include / stub / PFDREC_API.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 /**
18  * @file PFDREC_API.h
19  * @brief diag_record API header file
20  */
21 /*******************************************************************************
22  * FILE      : PFDREC_API.h
23  * SYSTEM    : LinuxPF
24  * SUBSYSTEM :
25  * TITLE     : Diag record managementfeature include definition
26  ******************************************************************************/
27
28 #ifndef DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_
29 #define DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_
30
31 /** @addtogroup BaseSystem
32  *  @{
33  */
34 /** @addtogroup vehicle_service
35  *  @ingroup BaseSystem
36  *  @{
37  */
38 /** @addtogroup diag_record
39  *  @ingroup vehicle_service
40  *  @{
41  */
42
43 #include <time.h>
44 #include <agl_thread.h>
45 #include <native_service/frameworkunified_types.h>
46
47 #ifdef  __cplusplus
48 extern  "C" {
49 #endif
50
51 /**
52  * \~english The definition of the processing result value
53  */
54 typedef int RET_PFDREC_API;
55
56 /**
57  * \~english The definition of the diag_record thread
58  */
59 #ifndef TN_PFDRECTHREAD
60 #define TN_PFDRECTHREAD "PFDRECThread"
61 #endif
62
63 /**
64  * \~english The definition of the diag_record thread availability.
65  */
66 #define NTFY_PFDRECThread_Availability      "PFDRECThread/Availability"
67
68 /**
69  * \~english The definition of the processing normal result.
70  */
71 #define RET_PFDREC_NORMAL           (0)
72 /**
73  * \~english The definition of the processing abnormal result.
74  */
75 #define RET_PFDREC_ERROR            (-1)
76 /**
77  * \~english The definition of the invalid arguments result.
78  */
79 #define RET_PFDREC_ERR_ARGUMENTS    (-2)
80 /**
81  * \~english The definition of the stop status result.
82  */
83 #define RET_PFDREC_STOP             (-3)
84
85 /**
86  * \~english The definition of the invalid time information
87  */
88 #define PFDREC_TIME_INFO_INVALID            (0)
89
90 /**
91  * \~english The definition of the invalid unique ID
92  */
93 #define PFDREC_UNIQUE_INVALID               (0xFFFFFFFFFFFFFFFF)
94
95
96 /*! @~english The size of the record frame of PWR */
97 #define PFDREC_FRAME_SIZE_TRC_PWR           (16)
98 /*! @~english The size of the record frame of MODE */
99 #define PFDREC_FRAME_SIZE_TRC_MODE          (16)
100 /*! @~english The size of the record frame of KEY */
101 #define PFDREC_FRAME_SIZE_TRC_KEY           (16)
102 /*! @~english The size of the record frame of ERR */
103 #define PFDREC_FRAME_SIZE_TRC_ERR           (16)
104 /*! @~english The size of the record frame of CAN */
105 #define PFDREC_FRAME_SIZE_TRC_CAN           (16)
106 /*! @~english The size of the record frame of DAPS */
107 #define PFDREC_FRAME_SIZE_TRC_DAPS          (16)
108 /*! @~english The size of the record frame of DAPU */
109 #define PFDREC_FRAME_SIZE_TRC_DAPU          (16)
110 /*! @~english The size of the record frame of BT */
111 #define PFDREC_FRAME_SIZE_TRC_BT            (16)
112 /*! @~english The size of the record frame of BT_INTERNAL */
113 #define PFDREC_FRAME_SIZE_TRC_BT_INTERNAL   (16)
114 /*! @~english The size of the record frame of WIFI */
115 #define PFDREC_FRAME_SIZE_TRC_WIFI          (16)
116 /*! @~english The size of the record frame of WIFI_INTERNAL */
117 #define PFDREC_FRAME_SIZE_TRC_WIFI_INTERNAL (16)
118 /*! @~english The size of the record frame of CENTER */
119 #define PFDREC_FRAME_SIZE_TRC_CENTER        (16)
120 /*! @~english The size of the record frame of VERSION */
121 #define PFDREC_FRAME_SIZE_TRC_VERSION       (16)
122 /*! @~english The size of the record frame of DCM  */
123 #define PFDREC_FRAME_SIZE_TRC_DCM           (16)
124 /*! @~english The size of the record frame of ETC */
125 #define PFDREC_FRAME_SIZE_TRC_ETC           (16)
126
127 /*! @~english The size of the record frame of USB_ETC */
128 #define PFDREC_FRAME_SIZE_TRC_USB_ETC       (16)
129 /*! @~english The size of the record frame of DSRC_UPLINK */
130 #define PFDREC_FRAME_SIZE_TRC_DSRC_UPLINK   (16)
131
132 /*! @~english The size of the record frame of _CWORD119_ */
133 #define PFDREC_FRAME_SIZE_TRC__CWORD119_          (16)
134 /*! @~english The size of the record frame of RADIO */
135 #define PFDREC_FRAME_SIZE_TRC_RADIO         (16)
136 /*! @~english The size of the record frame of USB_UNIT */
137 #define PFDREC_FRAME_SIZE_TRC_USB_UNIT      (16)
138 /*! @~english The size of the record frame of USB_API */
139 #define PFDREC_FRAME_SIZE_TRC_USB_API       (16)
140 /*! @~english The size of the record frame of ETH */
141 #define PFDREC_FRAME_SIZE_TRC_ETH           (16)
142 /*! @~english The size of the record frame of ETC_WATCH */
143 #define PFDREC_FRAME_SIZE_TRC_ETC_WATCH     (16)
144 /*! @~english The size of the record frame of ROB */
145 #define PFDREC_FRAME_SIZE_TRC_ROB           (16)
146 /*! @~english The size of the record frame of EVAL */
147 #define PFDREC_FRAME_SIZE_TRC_EVAL          (16)
148 /*! @~english The size of the record frame of OPT_BEACON_DOWN */
149 #define PFDREC_FRAME_SIZE_TRC_OPT_BEACON_DOWN  (16)
150 /*! @~english The size of the record frame of OPT_BEACON_UP */
151 #define PFDREC_FRAME_SIZE_TRC_OPT_BEACON_UP    (16)
152
153 /**
154  * \~english The definition of the callback function.
155  */
156 typedef void (*PFDREC_CALLBACK_FUNC)(RET_PFDREC_API result);
157
158 /**
159  * \~english The definition of the record function status
160  */
161 typedef enum _E_PFDREC_FUNC {
162     /*! @~english The record function is ON */
163     E_PFDREC_FUNC_ON = 0,
164     /*! @~english The record function is OFF */
165     E_PFDREC_FUNC_OFF
166 }E_PFDREC_FUNC;
167
168 /**
169  * \~english The definition of the category
170  */
171 typedef enum _E_PFDREC_CATEGORY_TYPE {
172     /*! @~english The defination of PWR trace*/
173     E_PFDREC_CATEGORY_TRC_PWR = 0,
174     /*! @~english The defination of MODE trace */
175     E_PFDREC_CATEGORY_TRC_MODE,
176     /*! @~english The defination of KEY trace */
177     E_PFDREC_CATEGORY_TRC_KEY,
178     /*! @~english The defination of ERR trace */
179     E_PFDREC_CATEGORY_TRC_ERR,
180     /*! @~english The defination of CAN trace */
181     E_PFDREC_CATEGORY_TRC_CAN,
182     /*! @~english The defination of DAPS trace */
183     E_PFDREC_CATEGORY_TRC_DAPS,
184     /*! @~english The defination of DAPU trace */
185     E_PFDREC_CATEGORY_TRC_DAPU,
186     /*! @~english The defination of BT trace */
187     E_PFDREC_CATEGORY_TRC_BT,
188     /*! @~english The defination of BT_INTERNAL trace */
189     E_PFDREC_CATEGORY_TRC_BT_INTERNAL,
190     /*! @~english The defination of WIFI trace */
191     E_PFDREC_CATEGORY_TRC_WIFI,
192     /*! @~english The defination of WIFI_INTERNAL trace */
193     E_PFDREC_CATEGORY_TRC_WIFI_INTERNAL,
194     /*! @~english The defination of CENTER trace */
195     E_PFDREC_CATEGORY_TRC_CENTER,
196     /*! @~english The defination of VERSION trace */
197     E_PFDREC_CATEGORY_TRC_VERSION,
198     /*! @~english The defination of DCM trace */
199     E_PFDREC_CATEGORY_TRC_DCM,
200     /*! @~english The defination of ETC trace */
201     E_PFDREC_CATEGORY_TRC_ETC,
202
203     /*! @~english The defination of USB_ETC trace */
204     E_PFDREC_CATEGORY_TRC_USB_ETC,
205     /*! @~english The defination of DSRC_UPLINK trace */
206     E_PFDREC_CATEGORY_TRC_DSRC_UPLINK,
207
208     /*! @~english The defination of _CWORD119_ trace */
209     E_PFDREC_CATEGORY_TRC__CWORD119_,
210     /*! @~english The defination of RADIO trace */
211     E_PFDREC_CATEGORY_TRC_RADIO,
212     /*! @~english The defination of USB_UNIT trace */
213     E_PFDREC_CATEGORY_TRC_USB_UNIT,
214     /*! @~english The defination of USB_API trace */
215     E_PFDREC_CATEGORY_TRC_USB_API,
216     /*! @~english The defination of ETH trace*/
217     E_PFDREC_CATEGORY_TRC_ETH,
218     /*! @~english The defination of ETC_WATCH trace */
219     E_PFDREC_CATEGORY_TRC_ETC_WATCH,
220     /*! @~english The defination of ROB trace */
221     E_PFDREC_CATEGORY_TRC_ROB,
222     /*! @~english The defination of EVAL trace */
223     E_PFDREC_CATEGORY_TRC_EVAL,
224     /*! @~english The defination of OPT_BEACON_DOWN trace */
225     E_PFDREC_CATEGORY_TRC_OPT_BEACON_DOWN,
226     /*! @~english The defination of OPT_BEACON_UP trace */
227     E_PFDREC_CATEGORY_TRC_OPT_BEACON_UP,
228
229     /*! @~english The defination of max value */
230     E_PFDREC_CATEGORY_TRC_MAX
231 }E_PFDREC_CATEGORY_TYPE;
232
233 /**
234  * \~english The definition of the trace data extraction mode
235  */
236 typedef enum _E_PFDREC_EXTRACT_MODE {
237     /*! @~english The extraction mode is OFF */
238     E_PFDREC_EXTRACT_MODE_OFF = 0,
239     /*! @~english The extraction mode is ON */
240     E_PFDREC_EXTRACT_MODE_ON
241 }E_PFDREC_EXTRACT_MODE;
242
243
244 /////////////////////////////////////////////////////////////////////////////////////
245 /// \ingroup PFDREC_FuncStartStop
246 /// \~english @par Summary
247 ///      - Switch the ON/OFF status of the record function
248 /// \~english @param [in]    status  The ON/OFF status of the record function\n
249 ///                                  Set the one of the following values.\n
250 ///                                      E_PFDREC_FUNC_ON(The record function is ON)\n
251 ///                                      E_PFDREC_FUNC_OFF(The record function is OFF)\n
252 ///                                  See E_PFDREC_FUNC.
253 /// \~english @retval  RET_PFDREC_NORMAL         Success
254 /// \~english @retval  RET_PFDREC_ERROR          Failure
255 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
256 /// \~english @par Precondition
257 ///      - BackupMgr is available.
258 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
259 ///      - The session with the MM Diag Recorder has been established.
260 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
261 /// \~english @par Changes in internal status
262 ///      - There is no changes in internal status when the API is called.
263 /// \~english @par Conditions of processing failure
264 ///      - When the argument ON/OFF status is invalid. [RET_PFDREC_ERR_ARGUMENTS]
265 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
266 ///      - When failed to transmit synchronous message to MM Diag Recorder. [RET_PFDREC_ERROR]
267 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
268 ///        [RET_PFDREC_ERROR]
269 ///      - When MM Diag Recorder failed to switch the function ON/OFF status. [RET_PFDREC_ERROR]
270 /// \~english @par Details
271 ///      - The API is assumed to be executed only from the diagnosis service.
272 ///      - Start or stop the transmission of record.
273 ///      - When the function is OFF, no data is executed even if the data recording API is called,
274 ///        and RET_PFDREC_NORMAL is returned.
275 ///      - Record the ON/OFF information into the backup memory.
276 ///      - Restore the retained value to the default E_PFDREC_FUNC_ON at +B OFF / factory shipment.
277 /// \~english @par Classification
278 ///      - Public
279 /// \~english @par Type
280 ///      - Sync
281 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
282 /////////////////////////////////////////////////////////////////////////////////////
283 RET_PFDREC_API PFDREC_FuncStartStop(E_PFDREC_FUNC status);
284
285 /////////////////////////////////////////////////////////////////////////////////////
286 /// \ingroup PFDREC_DeleteData
287 /// \~english @par Summary
288 ///      - Delete the recorded data.
289 /// \~english @param [in]    func   callback function\n
290 /// \~english @retval  RET_PFDREC_NORMAL         Success
291 /// \~english @retval  RET_PFDREC_ERROR          Failure
292 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
293 /// \~english @par Precondition
294 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
295 ///      - The session with the MM Diag Recorder has been established.
296 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
297 /// \~english @par Changes in internal status
298 ///      - There is no changes in internal status when the API is called.
299 /// \~english @par Conditions of processing failure
300 ///      - When the argument callback function is NULL. [RET_PFDREC_ERR_ARGUMENTS]
301 ///      - When the session with the MM Diag Recorder has not been established yet. [RET_PFDREC_ERROR]
302 ///      - When the callback function of deletion end was already setted. [RET_PFDREC_ERROR]
303 ///      - When failed to regist the callback information to the dispatcher. [RET_PFDREC_ERROR]
304 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
305 ///      - When failed to transmit asynchronous message to MM Diag Recorder. [RET_PFDREC_ERROR]
306 /// \~english @par Details
307 ///      - The API is assumed to be executed only from the diagnosis service.
308 ///      - To delete the data recorded in the temporary buffer and nonvolatile memory.
309 ///      - The callback function specified by argument will be called when data deletion end.
310 ///      - typedef void (*DERC_CALLBACK_FUNC)( RET_PFDREC_API result);\n
311 ///        The deletion result is stored in the argument result when the callback function is called.
312 /// \~english @par Classification
313 ///      - Public
314 /// \~english @par Type
315 ///      - Method
316 /// \~english @see PFDREC_OpenSession, FrameworkunifiedAttachCallbackToDispatcher, FrameworkunifiedSendMsg
317 /////////////////////////////////////////////////////////////////////////////////////
318 RET_PFDREC_API PFDREC_DeleteData(PFDREC_CALLBACK_FUNC func);
319
320 /////////////////////////////////////////////////////////////////////////////////////
321 /// \ingroup PFDREC_DeleteIndividual
322 /// \~english @par Summary
323 ///      - Delete the individual recorded data.
324 /// \~english @param [in]    category    The category information of the trace data to record\n
325 ///                                      See E_PFDREC_CATEGORY_TYPE.
326 /// \~english @retval  RET_PFDREC_NORMAL         Success
327 /// \~english @retval  RET_PFDREC_ERROR          Failure
328 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
329 /// \~english @par Precondition
330 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
331 ///      - The session with the MM Diag Recorder has been established.
332 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
333 /// \~english @par Changes in internal status
334 ///      - There is no changes in internal status when the API is called.
335 /// \~english @par Conditions of processing failure
336 ///      - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
337 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
338 ///      - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
339 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
340 ///        [RET_PFDREC_ERROR]
341 ///      - When the argument category is invalid in MM Diag recorder management information table. [RET_PFDREC_ERROR]
342 ///      - When the MM Diag Recorder failed to allocate memory for writting the recorded data. [RET_PFDREC_ERROR]
343 ///      - When failed to write the initialization date to ROM. [RET_PFDREC_ERROR]
344 /// \~english @par Details
345 ///      - The API is assumed to be executed only from the diagnosis service.
346 ///      - To delete the individual data recorded in the temporary buffer and nonvolatile memory.
347 /// \~english @par Classification
348 ///      - Public
349 /// \~english @par Type
350 ///      - Sync
351 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
352 /////////////////////////////////////////////////////////////////////////////////////
353 RET_PFDREC_API PFDREC_DeleteIndividual(E_PFDREC_CATEGORY_TYPE category);
354
355
356 /////////////////////////////////////////////////////////////////////////////////////
357 /// \ingroup PFDREC_ComDataBackup
358 /// \~english @par Summary
359 ///      - Record the trace data.
360 /// \~english @param [in]    category    The category information of the trace data to record\n
361 ///                                      See E_PFDREC_CATEGORY_TYPE.
362 /// \~english @param [in]    time_info   The time information.
363 /// \~english @param [in]    frame_num   The number of frames of the trace data to record.
364 /// \~english @param [in]    data        The trace data to record\n
365 ///                                      The size of the data buffer is the number of frames * 1 frame size,\n
366 ///                                      and should be secured by the caller.
367 /// \~english @retval  RET_PFDREC_NORMAL         Success
368 /// \~english @retval  RET_PFDREC_ERROR          Failure
369 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
370 /// \~english @par Precondition
371 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
372 ///      - The session with the MM Diag Recorder has been established.
373 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
374 /// \~english @par Changes in internal status
375 ///      - There is no changes in internal status when the API is called.
376 /// \~english @par Conditions of processing failure
377 ///      - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
378 ///      - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
379 ///      - When the argument frame_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
380 ///      - When the argument frame_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
381 ///      - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
382 ///      - When failed to get the message queue handle for transmission to MM Diag Recorder. [RET_PFDREC_ERROR]
383 ///      - When failed to the transmit asynchronous message. [RET_PFDREC_ERROR]
384 /// \~english @par Details
385 ///      - The API is assumed to be executed only from the diagnosis service.
386 ///      - Record the trace data into the buffer temporarily, and when the size of data in buffer reaches the maximum,
387 ///        move the data to ROM firstly.
388 /// \~english @par Classification
389 ///      - Public
390 /// \~english @par Type
391 ///      - Fire and Forget
392 /// \~english @see PFDREC_OpenSession, FrameworkunifiedAttachCallbackToDispatcher, FrameworkunifiedSendMsg
393 ///
394 /////////////////////////////////////////////////////////////////////////////////////
395 RET_PFDREC_API PFDREC_ComDataBackup(E_PFDREC_CATEGORY_TYPE category,
396                                     time_t time_info,
397                                     uint32_t frame_num,
398                                     uint8_t* data);
399
400 /////////////////////////////////////////////////////////////////////////////////////
401 /// \ingroup PFDREC_ReadMemData
402 /// \~english @par Summary
403 ///      - Read memory data.
404 /// \~english @param [in]    category    The category information of the trace data to read\n
405 ///                                      See E_PFDREC_CATEGORY_TYPE.
406 /// \~english @param [in]    offset      The start position of the frame to read\n
407 ///                                      The offset is 0, which means the earliest recorded data.
408 /// \~english @param [in]    read_num    The number of the frames to read.
409 /// \~english @param [out]   data        The readed trace data\n
410 ///                                      The size of the data buffer is the number of frames * 1 frame size,\n
411 ///                                      and should be secured by the caller.
412 /// \~english @param [out]   out_num     The number of readed trace data.
413 /// \~english @retval  RET_PFDREC_NORMAL         Success
414 /// \~english @retval  RET_PFDREC_ERROR          Failure
415 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
416 /// \~english @par Precondition
417 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
418 ///      - The session with the MM Diag Recorder has been established.
419 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
420 /// \~english @par Changes in internal status
421 ///      - There is no changes in internal status when the API is called.
422 /// \~english @par Conditions of processing failure
423 ///      - The argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
424 ///      - The argument read_num is NULL. [RET_PFDREC_ERR_ARGUMENTS]
425 ///      - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
426 ///      - When the argument read_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
427 ///      - When the argument read_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
428 ///      - When the frame size of the argument category is 0 [RET_PFDREC_ERR_ARGUMENTS]
429 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
430 ///      - When failed to the transmit synchronous message. [RET_PFDREC_ERROR]
431 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
432 ///        [RET_PFDREC_ERROR]
433 ///      - When the argument category is invalid in the record management information table of MM Diag recorder.
434 ///        [RET_PFDREC_ERROR]
435 ///      - When the MM Diag Recorder failed to allocate memory for reading out the recorded data. [RET_PFDREC_ERROR]
436 ///      - When the MM Diag Recorder failed in the process of reading the recorded data. [RET_PFDREC_ERROR]
437 /// \~english @par Details
438 ///      - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
439 ///        which is a supplier-specific service.
440 ///      - Read the number of recorded data from the position specified by offset.
441 ///      - When the end of the recorded data is reached, stop reading and return the number of readed data.
442 /// \~english @par Classification
443 ///      - Public
444 /// \~english @par Type
445 ///      - Sync
446 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
447 ///
448 /////////////////////////////////////////////////////////////////////////////////////
449 RET_PFDREC_API PFDREC_ReadMemData(E_PFDREC_CATEGORY_TYPE category,
450                                     uint32_t offset,
451                                     uint32_t read_num,
452                                     uint8_t* data,
453                                     uint32_t* out_num);
454
455 /////////////////////////////////////////////////////////////////////////////////////
456 /// \ingroup PFDREC_GetDataInfo
457 /// \~english @par Summary
458 ///      - Get the information of the recorded data.
459 /// \~english @param [in]    category    The category information\n
460 ///                                      See E_PFDREC_CATEGORY_TYPE.
461 /// \~english @param [out]   frame_num   The number of the recorded frames.
462 /// \~english @retval  RET_PFDREC_NORMAL         Success
463 /// \~english @retval  RET_PFDREC_ERROR          Failure
464 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
465 /// \~english @par Precondition
466 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
467 ///      - The session with the MM Diag Recorder has been established.
468 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
469 /// \~english @par Changes in internal status
470 ///      - There is no changes in internal status when the API is called.
471 /// \~english @par Conditions of processing failure
472 ///      - When the argument frame_num is NULL. [RET_PFDREC_ERR_ARGUMENTS]
473 ///      - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
474 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
475 ///      - When failed to the transmit synchronous message. [RET_PFDREC_ERROR]
476 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
477 ///        [RET_PFDREC_ERROR]
478 ///      - When the argument category is invalid in the record management information table of MM Diag recorder.
479 ///        [RET_PFDREC_ERROR]
480 /// \~english @par Details
481 ///      - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
482 ///        which is a supplier-specific service.
483 ///      - Return the number of frames recorded in the record data area of the specified category.
484 /// \~english @par Classification
485 ///      - Public
486 /// \~english @par Type
487 ///      - Sync
488 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
489 ///
490 /////////////////////////////////////////////////////////////////////////////////////
491 RET_PFDREC_API PFDREC_GetDataInfo(E_PFDREC_CATEGORY_TYPE category,
492                                     uint32_t* frame_num);
493
494 /////////////////////////////////////////////////////////////////////////////////////
495 /// \ingroup PFDREC_GetFuncStartStop
496 /// \~english @par Summary
497 ///      - Get the ON/OFF status of the record function.
498 /// \~english @param [out]    status  The ON/OFF status of the record function\n
499 ///                                   Set the one of the following values.\n
500 ///                                       E_PFDREC_FUNC_ON(The record function is ON)\n
501 ///                                       E_PFDREC_FUNC_OFF(The record function is OFF)\n
502 ///                                   See E_PFDREC_FUNC.
503 /// \~english @retval  RET_PFDREC_NORMAL         Success
504 /// \~english @retval  RET_PFDREC_ERROR          Failure
505 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
506 /// \~english @par Precondition
507 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
508 ///      - The session with the MM Diag Recorder has been established.
509 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
510 /// \~english @par Changes in internal status
511 ///      - There is no changes in internal status when the API is called.
512 /// \~english @par Conditions of processing failure
513 ///      - When the argument ON/OFF status is NULL. [RET_PFDREC_ERR_ARGUMENTS]
514 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
515 ///      - When failed to transmit synchronous message to MM Diag Recorder. [RET_PFDREC_ERROR]
516 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
517 ///        [RET_PFDREC_ERROR]
518 /// \~english @par Details
519 ///      - The API is assumed to be executed only from the diagnosis service.
520 /// \~english @par Classification
521 ///      - Public
522 /// \~english @par Type
523 ///      - Sync
524 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
525 ///
526 /////////////////////////////////////////////////////////////////////////////////////
527 RET_PFDREC_API PFDREC_GetFuncStartStop(E_PFDREC_FUNC* status);
528
529 /////////////////////////////////////////////////////////////////////////////////////
530 /// \ingroup PFDREC_OutputData
531 /// \~english @par Summary
532 ///      - Move the recorded data to ROM.
533 /// \~english @retval  RET_PFDREC_NORMAL         Success
534 /// \~english @retval  RET_PFDREC_ERROR          Failure
535 /// \~english @par Precondition
536 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
537 ///      - The session with the MM Diag Recorder has been established.
538 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
539 /// \~english @par Changes in internal status
540 ///      - There is no changes in internal status when the API is called.
541 /// \~english @par Conditions of processing failure
542 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
543 ///      - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
544 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
545 ///        [RET_PFDREC_ERROR]
546 ///      - When MM Diag Recorder failed to move the recorded data to ROM. [RET_PFDREC_ERROR]
547 /// \~english @par Details
548 ///      - The API is assumed to be executed only from the diagnosis service.
549 ///      - Move the data recorded in the temporary buffer to the ROM.
550 /// \~english @par Classification
551 ///      - Public
552 /// \~english @par Type
553 ///      - Sync
554 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
555 ///
556 /////////////////////////////////////////////////////////////////////////////////////
557 RET_PFDREC_API PFDREC_OutputData(void);
558
559 /////////////////////////////////////////////////////////////////////////////////////
560 /// \ingroup PFDREC_ReadData
561 /// \~english @par Summary
562 ///      - Read the recorded data from the specified position.
563 /// \~english @param [in]    category        The category information of the trace data to read\n
564 ///                                          See E_PFDREC_CATEGORY_TYPE.
565 /// \~english @param [in]    unique_id       The unique ID of the frame to start reading\n
566 ///                                          If the unique_id is invalid, return error and do not read.
567 /// \~english @param [in]    read_num        The number of frames to read.
568 /// \~english @param [out]   data            The readed data.\n
569 ///                                          The size of the data buffer is the number of frames * 1 frame size,\n
570 ///                                          and should be secured by the caller.
571 /// \~english @param [out]   out_num         The number of the readed frames.
572 /// \~english @param [out]   end_unique_id   The unique ID of the end of the readed data.
573 /// \~english @retval  RET_PFDREC_NORMAL         Success
574 /// \~english @retval  RET_PFDREC_ERROR          Failure
575 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
576 /// \~english @par Precondition
577 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
578 ///      - The session with the MM Diag Recorder has been established.
579 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
580 /// \~english @par Changes in internal status
581 ///      - There is no changes in internal status when the API is called.
582 /// \~english @par Conditions of processing failure
583 ///      - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
584 ///      - When the argument out_num is NULL. [RET_PFDREC_ERR_ARGUMENTS]
585 ///      - When the argument end_unique_id is NULL. [RET_PFDREC_ERR_ARGUMENTS]
586 ///      - When the argument unique_id is invalid. [RET_PFDREC_ERR_ARGUMENTS]
587 ///      - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
588 ///      - When the argument read_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
589 ///      - When the argument read_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
590 ///      - When the frame size of the argument category is 0 [RET_PFDREC_ERR_ARGUMENTS]
591 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
592 ///      - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
593 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
594 ///        [RET_PFDREC_ERROR]
595 ///      - When the MM Diag Recorder failed in the process of reading the recorded data. [RET_PFDREC_ERROR]
596 /// \~english @par Details
597 ///      - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
598 ///        which is a supplier-specific service.
599 ///      - When the end of the recorded data is reached, stop reading and return the number of readed data.
600 ///      - Read the number of recorded data from the position specified by unique ID.
601 /// \~english @par Classification
602 ///      - Public
603 /// \~english @par Type
604 ///      - Sync
605 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
606 ///
607 /////////////////////////////////////////////////////////////////////////////////////
608 RET_PFDREC_API PFDREC_ReadData(E_PFDREC_CATEGORY_TYPE category,
609                                 uint64_t unique_id,
610                                 uint32_t read_num,
611                                 uint8_t* data,
612                                 uint32_t* out_num,
613                                 uint64_t* end_unique_id);
614
615 /////////////////////////////////////////////////////////////////////////////////////
616 /// \ingroup PFDREC_SearchData
617 /// \~english @par Summary
618 ///      - Search the recorded data by the specified time information.
619 /// \~english @param [in]    category    The information of category\n
620 ///                                      See E_PFDREC_CATEGORY_TYPE.
621 /// \~english @param [in]    time_info   The time information is used to search in recorded data.\n
622 ///                                      If the time information is invalid, to return error and do not search.
623 /// \~english @param [out]   unique_id   The unique ID
624 /// \~english @param [out]   data        The result obtained by searching for the time information.\n
625 /// \~english @retval  RET_PFDREC_NORMAL         Success
626 /// \~english @retval  RET_PFDREC_ERROR          Failure
627 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
628 /// \~english @par Precondition
629 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
630 ///      - The session with the MM Diag Recorder has been established.
631 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
632 /// \~english @par Changes in internal status
633 ///      - There is no changes in internal status when the API is called.
634 /// \~english @par Conditions of processing failure
635 ///      - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
636 ///      - When the argument unique_id is NULL. [RET_PFDREC_ERR_ARGUMENTS]
637 ///      - When setting search time information is invalid. [RET_PFDREC_ERR_ARGUMENTS]
638 ///      - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
639 ///      - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
640 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
641 ///      - When failed to trasmite the synchronization message. [RET_PFDREC_ERROR]
642 ///      - When the length of synchronous communication received is different from the already set length.
643 ///        [RET_PFDREC_ERROR]
644 ///      - When the argument category is invalid in MM Diag recorder management information table. [RET_PFDREC_ERROR]
645 /// \~english @par Details
646 ///      - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
647 ///        which is a supplier-specific service.
648 ///      - When the end of the recorded data is reached, stop reading and return the number of readed data.
649 ///      - If the recorded time information is invalid, to skip searching.\n
650 ///        Also, to make sure that the input argument time_info(note) is available for searching.\n
651 ///        (note)"1"(from 1970/1/1/0:00.01) or more.
652 ///      - The frame data more than the specified time could not be found, or \n
653 ///        If time_info is invalid, RET_PFDREC_ERROR will be returned.
654 ///      - For the categories which can be searched by time, see the searchable trace.
655 ///      - If the specified category is not searchable, RET_PFDREC_ERROR will be returned.
656 /// \~english @par Classification
657 ///      - Public
658 /// \~english @par Type
659 ///      - Sync
660 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
661 ///
662 /////////////////////////////////////////////////////////////////////////////////////
663 RET_PFDREC_API PFDREC_SearchData(E_PFDREC_CATEGORY_TYPE category,
664                                     time_t time_info,
665                                     uint64_t* unique_id,
666                                     uint8_t*  data);
667
668 /////////////////////////////////////////////////////////////////////////////////////
669 /// \ingroup PFDREC_OpenSession
670 /// \~english @par Summary
671 ///      - Establish a session with the MM Diag Recorder.
672 /// \~english @param [in]    h_app    The application handle
673 /// \~english @retval  RET_PFDREC_NORMAL         Success
674 /// \~english @retval  RET_PFDREC_ERROR          Failure
675 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
676 /// \~english @par Precondition
677 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
678 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
679 /// \~english @par Changes in internal status
680 ///      - There is no changes in internal status when the API is called.
681 /// \~english @par Conditions of processing failure
682 ///      - When the argument h_app is NULL. [RET_PFDREC_ERR_ARGUMENTS]
683 ///      - If the message queue handle for transmission is not NULL\n
684 ///        (when the PFDREC_OpenSession has already been called) [RET_PFDREC_ERROR]
685 ///      - When failed to generate a message queue handle for transmission. [RET_PFDREC_ERROR]
686 /// \~english @par Details
687 ///      - The API is assumed to be executed only from the diagnosis service.
688 ///      - Establish a session with the MM Diag Recorder.
689 ///      - The API should be called before calling the following APIs of the MM Diag Record function.\n
690 ///         PFDREC_FuncStartStop\n
691 ///         PFDREC_DeleteData\n
692 ///         PFDREC_ReadMemData\n
693 ///         PFDREC_GetDataInfo\n
694 ///         PFDREC_GetFuncStartStop\n
695 ///         PFDREC_OutputData\n
696 ///         PFDREC_ReadData\n
697 ///         PFDREC_SearchData\n
698 ///         PFDREC_SetExtractionMode\n
699 ///         PFDREC_SetExtractionMode_Exp\n
700 ///         PFDREC_SearchDataY2K38\n
701 /// \~english @par Classification
702 ///      - Public
703 /// \~english @par Type
704 ///      - Sync
705 /// \~english @see PFDREC_FuncStartStop, PFDREC_DeleteData, PFDREC_ReadMemData, PFDREC_GetDataInfo, \n
706 ///                 PFDREC_GetFuncStartStop, PFDREC_OutputData, PFDREC_ReadData, PFDREC_SearchData, \n
707 ///                 PFDREC_SetExtractionMode, PFDREC_SetExtractionMode_Exp, PFDREC_SearchDataY2K38, \n
708 ///                 PFDREC_CloseSession, FrameworkunifiedMcOpenSender
709 ///
710 /////////////////////////////////////////////////////////////////////////////////////
711 RET_PFDREC_API PFDREC_OpenSession(HANDLE h_app);
712
713 /////////////////////////////////////////////////////////////////////////////////////
714 /// \ingroup PFDREC_CloseSession
715 /// \~english @par Summary
716 ///      - Release the session with the MM Diag Recorder.
717 /// \~english @param [in]    h_app    The application handle
718 /// \~english @retval  RET_PFDREC_NORMAL         Success
719 /// \~english @retval  RET_PFDREC_ERROR          Failure
720 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
721 /// \~english @par Precondition
722 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
723 ///      - The session with the MM Diag Recorder has been established.
724 ///      - When the session with MM Diag Recorder becomes unnecessary.
725 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
726 /// \~english @par Changes in internal status
727 ///      - There is no changes in internal status when the API is called.
728 /// \~english @par Conditions of processing failure
729 ///      - When the argument h_app is NULL. [RET_PFDREC_ERR_ARGUMENTS]
730 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
731 ///      - When failed to close the message queue transmission handle. [RET_PFDREC_ERROR]
732 /// \~english @par Details
733 ///      - The API is assumed to be executed only from the diagnosis service.
734 ///      - Release the session with the MM Diag Recorder.
735 ///      - To call the API When the session with MM Diag Recorder becomes unnecessary.
736 /// \~english @par Classification
737 ///      - Public
738 /// \~english @par Type
739 ///      - Sync
740 /// \~english @see PFDREC_OpenSession, FrameworkunifiedMcClose
741 ///
742 /////////////////////////////////////////////////////////////////////////////////////
743 RET_PFDREC_API PFDREC_CloseSession(HANDLE h_app);
744
745 /////////////////////////////////////////////////////////////////////////////////////
746 /// \ingroup PFDREC_OverwriteData
747 /// \~english @par Summary
748 ///      - Overwrite and record the data of one frame to the specified offset.
749 /// \~english @param [in]    category    The category information\n
750 ///                                      See E_PFDREC_CATEGORY_TYPE.
751 /// \~english @param [in]    offset      The position to overwrite the frame data.\n
752 ///                                      The offset is 0, which means the earliest recorded data.
753 /// \~english @param [in]    data        The frame data to be overwrite.
754 /// \~english @retval  RET_PFDREC_NORMAL         Success
755 /// \~english @retval  RET_PFDREC_ERROR          Failure
756 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
757 /// \~english @par Precondition
758 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
759 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
760 /// \~english @par Changes in internal status
761 ///      - There is no changes in internal status when the API is called.
762 /// \~english @par Conditions of processing failure
763 ///      - Whe argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
764 ///      - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
765 ///      - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
766 ///      - When failed to get the message queue handle for transmission to MM Diag Recorder. [RET_PFDREC_ERROR]
767 ///      - When failed to the transmit asynchronous message. [RET_PFDREC_ERROR]
768 /// \~english @par Details
769 ///      - The API is assumed to be executed only from the diagnosis service.
770 ///      - Overwrite and record the data of one frame to the specified offset.
771 ///      - When the frame data specified by offset is not exist, RET_PFDREC_ERROR will be returned.
772 /// \~english @par Classification
773 ///      - Public
774 /// \~english @par Type
775 ///      - Fire and Forget
776 /// \~english @see McOpenSender, McSend
777 ///
778 /////////////////////////////////////////////////////////////////////////////////////
779 RET_PFDREC_API PFDREC_OverwriteData(E_PFDREC_CATEGORY_TYPE category,
780                                     uint32_t offset,
781                                     uint8_t* data);
782
783 /////////////////////////////////////////////////////////////////////////////////////
784 /// \ingroup PFDREC_SetExtractionMode
785 /// \~english @par Summary
786 ///      - Switch the trace data extraction mode.
787 /// \~english @param [in]    category    The category information\n
788 ///                                      See E_PFDREC_CATEGORY_TYPE.
789 /// \~english @param [in]    mode        The information of the trace data extraction mode.\n
790 ///                                      See E_PFDREC_EXTRACT_MODE.
791 /// \~english @retval  RET_PFDREC_NORMAL         Success
792 /// \~english @retval  RET_PFDREC_ERROR          Failure
793 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
794 /// \~english @par Precondition
795 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
796 ///      - The session with the MM Diag Recorder has been established.
797 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
798 /// \~english @par Changes in internal status
799 ///      - There is no changes in internal status when the API is called.
800 /// \~english @par Conditions of processing failure
801 ///      - When the argument mode is invalid. [RET_PFDREC_ERR_ARGUMENTS]
802 ///      - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
803 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
804 ///      - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
805 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
806 ///        [RET_PFDREC_ERROR]
807 ///      - When MM Diag Recorder failed to switch the trace data extraction mode. [RET_PFDREC_ERROR]
808 /// \~english @par Details
809 ///      - The API is assumed to be executed only from the diagnosis service.
810 ///      - Switch the trace data extraction mode.
811 ///      - Save the trace data to the extraction area during the extraction mode is ON.\n
812 ///      - When the size of the recorded extraction data reaches the maximum,\n
813 ///        to discard the next data.
814 ///      - And when the extraction mode switched from ON to OFF, write the data to the temporary buffer are.
815 ///      - For the categories which the trace data extraction mode is effective,\n
816 ///        See 3.4.1.2.8 The switchable trace in trace data extraction mode.
817 ///      - If you specify something other than a valid category, RET_PFDREC_ERROR will be returned.
818 /// \~english @par Classification
819 ///      - Public
820 /// \~english @par Type
821 ///      - Sync
822 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
823 ///
824 /////////////////////////////////////////////////////////////////////////////////////
825 RET_PFDREC_API PFDREC_SetExtractionMode(const E_PFDREC_CATEGORY_TYPE category,
826                                         const E_PFDREC_EXTRACT_MODE mode);
827
828 /////////////////////////////////////////////////////////////////////////////////////
829 /// \ingroup PFDREC_SetExtractionMode_Exp
830 /// \~english @par Summary
831 ///      - Switch the trace data extraction mode.(The AppDataReporting service, which is a supplier-specific service)
832 /// \~english @param [in]    category    The category information\n
833 ///                                      See E_PFDREC_CATEGORY_TYPE.
834 /// \~english @param [in]    mode        The information of the trace data extraction mode.\n
835 ///                                      See E_PFDREC_EXTRACT_MODE.
836 /// \~english @retval  RET_PFDREC_NORMAL         Success
837 /// \~english @retval  RET_PFDREC_ERROR          Failure
838 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
839 /// \~english @par Precondition
840 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
841 ///      - The session with the MM Diag Recorder has been established.
842 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
843 /// \~english @par Changes in internal status
844 ///      - There is no changes in internal status when the API is called.
845 /// \~english @par Conditions of processing failure
846 ///      - When the argument mode is invalid. [RET_PFDREC_ERR_ARGUMENTS]
847 ///      - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
848 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
849 ///      - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
850 ///      - When the length of the recieved synchronous message is different from the length of the buffer.
851 ///        [RET_PFDREC_ERROR]
852 ///      - When MM Diag Recorder failed to switch the trace data extraction mode. [RET_PFDREC_ERROR]
853 /// \~english @par Details
854 ///      - The API is assumed to be executed only from the AppDataReporting service,\n
855 ///        which is a supplier-specific service.
856 ///      - Switch the trace data extraction mode.
857 ///      - Save the trace data to the extraction area during the extraction mode is ON.\n
858 ///      - When the size of the recorded extraction data reaches the maximum,\n
859 ///        to discard the next data.
860 ///      - And when the extraction mode switched from ON to OFF, write the data to the temporary buffer are.
861 ///      - For the categories which the trace data extraction mode is effective,\n
862 ///        See 3.4.1.2.8 The switchable trace in trace data extraction mode.
863 ///      - If you specify something other than a valid category, RET_PFDREC_ERROR will be returned.
864 ///      - If the data recorded is deleted from the diagnosis service, the request data recorded may not be obtained\n
865 ///        from the AppDataReporting service, which is a supplier-specific service.
866 /// \~english @par Classification
867 ///      - Public
868 /// \~english @par Type
869 ///      - Sync
870 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
871 ///
872 /////////////////////////////////////////////////////////////////////////////////////
873 RET_PFDREC_API PFDREC_SetExtractionMode_Exp(const E_PFDREC_CATEGORY_TYPE category,
874                                             const E_PFDREC_EXTRACT_MODE mode);
875
876 /////////////////////////////////////////////////////////////////////////////////////
877 /// \ingroup PFDREC_ComDataBackupY2K38
878 /// \~english @par Summary
879 ///      - Record the trace data.
880 /// \~english @param [in]    category    The category information of the trace data to record\n
881 ///                                      See E_PFDREC_CATEGORY_TYPE.
882 /// \~english @param [in]    time_info   The time information.
883 /// \~english @param [in]    frame_num   The number of frames of the trace data to record.
884 /// \~english @param [in]    data        The trace data to record\n
885 ///                                      The size of the data buffer is the number of frames * 1 frame size,\n
886 ///                                      and should be secured by the caller.
887 /// \~english @retval  RET_PFDREC_NORMAL         Success
888 /// \~english @retval  RET_PFDREC_ERROR          Failure
889 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
890 /// \~english @par Precondition
891 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
892 ///      - The session with the MM Diag Recorder has been established.
893 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
894 /// \~english @par Changes in internal status
895 ///      - There is no changes in internal status when the API is called.
896 /// \~english @par Conditions of processing failure
897 ///      - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
898 ///      - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
899 ///      - When the argument frame_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
900 ///      - When the argument frame_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
901 ///      - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
902 ///      - When failed to get the message queue handle for transmission to MM Diag Recorder. [RET_PFDREC_ERROR]
903 ///      - When failed to the transmit asynchronous message. [RET_PFDREC_ERROR]
904 /// \~english @par Details
905 ///      - The API is assumed to be executed only from the diagnosis service.
906 ///      - The API is used to fix the problem of time beyond 2038, and the function is the same as the
907 ///        PFDREC_ComDataBackup function
908 /// \~english @par Classification
909 ///      - Public
910 /// \~english @par Type
911 ///      - Fire and Forget
912 /// \~english @see PFDREC_OpenSession, McOpenSender, McSend
913 ///
914 /////////////////////////////////////////////////////////////////////////////////////
915 RET_PFDREC_API PFDREC_ComDataBackupY2K38(E_PFDREC_CATEGORY_TYPE category,
916                                          uint32_t time_info,
917                                          uint32_t frame_num,
918                                          uint8_t* data);
919
920 /////////////////////////////////////////////////////////////////////////////////////
921 /// \ingroup PFDREC_SearchDataY2K38
922 /// \~english @par Summary
923 ///      - Search the recorded data by the specified time information
924 /// \~english @param [in]    category    The information of category\n
925 ///                                      See E_PFDREC_CATEGORY_TYPE.
926 /// \~english @param [in]    time_info   The time information is used to search in recorded data.\n
927 ///                                      If the time information is invalid, to return error and do not search.
928 /// \~english @param [out]   unique_id   The unique ID
929 /// \~english @param [out]   data        The result obtained by searching for the time information.\n
930 /// \~english @retval  RET_PFDREC_NORMAL         Success
931 /// \~english @retval  RET_PFDREC_ERROR          Failure
932 /// \~english @retval  RET_PFDREC_ERR_ARGUMENTS  Invalid parameter
933 /// \~english @par Precondition
934 ///      - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
935 ///      - The session with the MM Diag Recorder has been established.
936 ///      - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
937 /// \~english @par Changes in internal status
938 ///      - There is no changes in internal status when the API is called.
939 /// \~english @par Conditions of processing failure
940 ///      - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
941 ///      - When the argument unique_id is NULL. [RET_PFDREC_ERR_ARGUMENTS]
942 ///      - When setting search time information is invalid. [RET_PFDREC_ERR_ARGUMENTS]
943 ///      - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
944 ///      - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
945 ///      - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
946 ///      - When failed to trasmite the synchronization message. [RET_PFDREC_ERROR]
947 ///      - When the length of synchronous communication received is different from the already set length.
948 ///        [RET_PFDREC_ERROR]
949 ///      - When the argument category is invalid in MM Diag recorder management information table. [RET_PFDREC_ERROR]
950 /// \~english @par Details
951 ///      - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
952 ///        which is a supplier-specific service.
953 ///      - The API is used to fix the problem that the time more than 2038, \n
954 ///        and the function is same as the PFDREC_SearchData function.
955 /// \~english @par Classification
956 ///      - Public
957 /// \~english @par Type
958 ///      - Sync
959 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
960 ///
961 /////////////////////////////////////////////////////////////////////////////////////
962 RET_PFDREC_API PFDREC_SearchDataY2K38(E_PFDREC_CATEGORY_TYPE category,
963                                       uint32_t  time_info,
964                                       uint64_t* unique_id,
965                                       uint8_t*  data);
966
967 #ifdef  __cplusplus
968 }
969 #endif
970
971 /** @}*/  // end of diag_record
972 /** @}*/  // end of vehicle_service
973 /** @}*/  // end of BaseSystem
974
975 #endif  // DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_