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.
19 * @brief diag_record API header file
21 /*******************************************************************************
25 * TITLE : Diag record managementfeature include definition
26 ******************************************************************************/
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_
31 /** @addtogroup BaseSystem
34 /** @addtogroup vehicle_service
38 /** @addtogroup diag_record
39 * @ingroup vehicle_service
44 #include <agl_thread.h>
45 #include <native_service/frameworkunified_types.h>
52 * \~english The definition of the processing result value
54 typedef int RET_PFDREC_API;
57 * \~english The definition of the diag_record thread
59 #ifndef TN_PFDRECTHREAD
60 #define TN_PFDRECTHREAD "PFDRECThread"
64 * \~english The definition of the diag_record thread availability.
66 #define NTFY_PFDRECThread_Availability "PFDRECThread/Availability"
69 * \~english The definition of the processing normal result.
71 #define RET_PFDREC_NORMAL (0)
73 * \~english The definition of the processing abnormal result.
75 #define RET_PFDREC_ERROR (-1)
77 * \~english The definition of the invalid arguments result.
79 #define RET_PFDREC_ERR_ARGUMENTS (-2)
81 * \~english The definition of the stop status result.
83 #define RET_PFDREC_STOP (-3)
86 * \~english The definition of the invalid time information
88 #define PFDREC_TIME_INFO_INVALID (0)
91 * \~english The definition of the invalid unique ID
93 #define PFDREC_UNIQUE_INVALID (0xFFFFFFFFFFFFFFFF)
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)
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)
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)
154 * \~english The definition of the callback function.
156 typedef void (*PFDREC_CALLBACK_FUNC)(RET_PFDREC_API result);
159 * \~english The definition of the record function status
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 */
169 * \~english The definition of the category
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,
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,
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,
229 /*! @~english The defination of max value */
230 E_PFDREC_CATEGORY_TRC_MAX
231 }E_PFDREC_CATEGORY_TYPE;
234 * \~english The definition of the trace data extraction mode
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;
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
279 /// \~english @par Type
281 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
282 /////////////////////////////////////////////////////////////////////////////////////
283 RET_PFDREC_API PFDREC_FuncStartStop(E_PFDREC_FUNC status);
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
314 /// \~english @par Type
316 /// \~english @see PFDREC_OpenSession, FrameworkunifiedAttachCallbackToDispatcher, FrameworkunifiedSendMsg
317 /////////////////////////////////////////////////////////////////////////////////////
318 RET_PFDREC_API PFDREC_DeleteData(PFDREC_CALLBACK_FUNC func);
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
349 /// \~english @par Type
351 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
352 /////////////////////////////////////////////////////////////////////////////////////
353 RET_PFDREC_API PFDREC_DeleteIndividual(E_PFDREC_CATEGORY_TYPE category);
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
390 /// \~english @par Type
391 /// - Fire and Forget
392 /// \~english @see PFDREC_OpenSession, FrameworkunifiedAttachCallbackToDispatcher, FrameworkunifiedSendMsg
394 /////////////////////////////////////////////////////////////////////////////////////
395 RET_PFDREC_API PFDREC_ComDataBackup(E_PFDREC_CATEGORY_TYPE category,
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
444 /// \~english @par Type
446 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
448 /////////////////////////////////////////////////////////////////////////////////////
449 RET_PFDREC_API PFDREC_ReadMemData(E_PFDREC_CATEGORY_TYPE category,
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
486 /// \~english @par Type
488 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
490 /////////////////////////////////////////////////////////////////////////////////////
491 RET_PFDREC_API PFDREC_GetDataInfo(E_PFDREC_CATEGORY_TYPE category,
492 uint32_t* frame_num);
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
522 /// \~english @par Type
524 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
526 /////////////////////////////////////////////////////////////////////////////////////
527 RET_PFDREC_API PFDREC_GetFuncStartStop(E_PFDREC_FUNC* status);
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
552 /// \~english @par Type
554 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
556 /////////////////////////////////////////////////////////////////////////////////////
557 RET_PFDREC_API PFDREC_OutputData(void);
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
603 /// \~english @par Type
605 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
607 /////////////////////////////////////////////////////////////////////////////////////
608 RET_PFDREC_API PFDREC_ReadData(E_PFDREC_CATEGORY_TYPE category,
613 uint64_t* end_unique_id);
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
658 /// \~english @par Type
660 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
662 /////////////////////////////////////////////////////////////////////////////////////
663 RET_PFDREC_API PFDREC_SearchData(E_PFDREC_CATEGORY_TYPE category,
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
703 /// \~english @par Type
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
710 /////////////////////////////////////////////////////////////////////////////////////
711 RET_PFDREC_API PFDREC_OpenSession(HANDLE h_app);
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
738 /// \~english @par Type
740 /// \~english @see PFDREC_OpenSession, FrameworkunifiedMcClose
742 /////////////////////////////////////////////////////////////////////////////////////
743 RET_PFDREC_API PFDREC_CloseSession(HANDLE h_app);
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
774 /// \~english @par Type
775 /// - Fire and Forget
776 /// \~english @see McOpenSender, McSend
778 /////////////////////////////////////////////////////////////////////////////////////
779 RET_PFDREC_API PFDREC_OverwriteData(E_PFDREC_CATEGORY_TYPE category,
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
820 /// \~english @par Type
822 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
824 /////////////////////////////////////////////////////////////////////////////////////
825 RET_PFDREC_API PFDREC_SetExtractionMode(const E_PFDREC_CATEGORY_TYPE category,
826 const E_PFDREC_EXTRACT_MODE mode);
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
868 /// \~english @par Type
870 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
872 /////////////////////////////////////////////////////////////////////////////////////
873 RET_PFDREC_API PFDREC_SetExtractionMode_Exp(const E_PFDREC_CATEGORY_TYPE category,
874 const E_PFDREC_EXTRACT_MODE mode);
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
910 /// \~english @par Type
911 /// - Fire and Forget
912 /// \~english @see PFDREC_OpenSession, McOpenSender, McSend
914 /////////////////////////////////////////////////////////////////////////////////////
915 RET_PFDREC_API PFDREC_ComDataBackupY2K38(E_PFDREC_CATEGORY_TYPE category,
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
957 /// \~english @par Type
959 /// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
961 /////////////////////////////////////////////////////////////////////////////////////
962 RET_PFDREC_API PFDREC_SearchDataY2K38(E_PFDREC_CATEGORY_TYPE category,
971 /** @}*/ // end of diag_record
972 /** @}*/ // end of vehicle_service
973 /** @}*/ // end of BaseSystem
975 #endif // DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_