summaryrefslogtreecommitdiffstats
path: root/stub/diag_record
diff options
context:
space:
mode:
Diffstat (limited to 'stub/diag_record')
-rw-r--r--stub/diag_record/LICENSE177
-rw-r--r--stub/diag_record/Makefile19
-rw-r--r--stub/diag_record/library_dummy_drec/Makefile48
-rw-r--r--stub/diag_record/library_dummy_drec/include/stub/MM_DREC_API.h2203
-rw-r--r--stub/diag_record/library_dummy_drec/src/MM_DREC_API.cpp450
-rw-r--r--stub/diag_record/library_record_api/Makefile47
-rw-r--r--stub/diag_record/library_record_api/include/stub/PFDREC_API.h975
-rw-r--r--stub/diag_record/library_record_api/libDiagRecordAPI.ver44
-rw-r--r--stub/diag_record/library_record_api/src/DiagRecordAPI.cpp178
-rw-r--r--stub/diag_record/library_record_thread/Makefile47
-rw-r--r--stub/diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h168
-rw-r--r--stub/diag_record/library_record_thread/src/pfdrec_thread.cpp162
12 files changed, 4518 insertions, 0 deletions
diff --git a/stub/diag_record/LICENSE b/stub/diag_record/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/stub/diag_record/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/stub/diag_record/Makefile b/stub/diag_record/Makefile
new file mode 100644
index 00000000..8b85cd99
--- /dev/null
+++ b/stub/diag_record/Makefile
@@ -0,0 +1,19 @@
+#
+# @copyright Copyright (c) 2017-2020 TOYOTA MOTOR CORPORATION.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+SUBDIRS := library_record_api library_dummy_drec library_record_thread
+
+include ../stub.mk
diff --git a/stub/diag_record/library_dummy_drec/Makefile b/stub/diag_record/library_dummy_drec/Makefile
new file mode 100644
index 00000000..e96152cd
--- /dev/null
+++ b/stub/diag_record/library_dummy_drec/Makefile
@@ -0,0 +1,48 @@
+#
+# @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+######### installed program #############
+INST_SHLIBS = libMM_DREC_API
+
+######### install headers #############
+VPATH += ./include/$(COMPONENT_NAME)
+INST_HEADERS += MM_DREC_API.h
+
+######### compiled sources #############
+libMM_DREC_API_SRCS = src/MM_DREC_API.cpp
+
+######### compile switch #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/stub
+CPPFLAGS += -I./../library_record_api/include
+
+LDFLAGS += -Wl,--no-undefined
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+
+######## CXX Link ###############
+LINK_SHLIB=Y
+
+######### compiled options #############
+LDFLAGS += -Wl,--no-as-needed
+
+######### common mk #############
+include ../../stub.mk
diff --git a/stub/diag_record/library_dummy_drec/include/stub/MM_DREC_API.h b/stub/diag_record/library_dummy_drec/include/stub/MM_DREC_API.h
new file mode 100644
index 00000000..7d0568cc
--- /dev/null
+++ b/stub/diag_record/library_dummy_drec/include/stub/MM_DREC_API.h
@@ -0,0 +1,2203 @@
+/*
+ * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/////////////////////////////////////////////////////////////////////////////
+/// \file MM_DREC_API.h
+/////////////////////////////////////////////////////////////////////////////
+
+/*****************************************************************************
+ * @file MM_DREC_API.h
+ * @brief MM diag recorder function API definition
+*****************************************************************************/
+
+
+/*****************************************************************************
+ * ---------------
+ * - Die-Record Function API Operation -
+ * ---------------
+ *
+ * $$ Notes on Creation and Release $$
+ * - Submit and request the created headers and dummy libs (empty functions defined only for I/F)
+ * from DiagService to BaseSystem and build them from BaseSystem.
+ *
+ * - The created regular Lib (not dummy Lib) is built from DiagService.
+ *
+ * -> Since this API is also used in BaseSystem, the API must be inserted
+ * from the BaseSystem build to avoid errors in JointBuild.
+ *
+ * $$ Notes on change $$
+ * - When modifying a header without changing the I/F, submit and request only the header to the BaseSystem.
+ *
+ * - Submit header and source code for dummy Lib when the header is modified due to an I/F change.
+ *
+ * - When the legitimate lib is changed without changing headers and I/F, no need to submit or request to BaseSystem.
+ *
+ *****************************************************************************/
+
+#if !defined( __MM_DREC_API_H__ )
+#define __MM_DREC_API_H__
+
+#include <native_service/frameworkunified_framework_if.h>
+#include <stub/PFDREC_API.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+/***********************************************************
+ Macro Functions
+***********************************************************/
+#define ENDIAN16(val) \
+ (((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF)) //!< \~english ENDIAN conversion(16bit)
+
+#define ENDIAN32(val) \
+ ((val << 24) & 0xFF000000) | ((val << 8) & 0x00FF0000) | ((val >> 8) & 0x0000FF00) | ((val >> 24) & 0x000000FF) //!< \~english ENDIAN conversion(32bit)
+
+/***********************************************************
+ Data Frame/Size Definition
+***********************************************************/
+
+/***********************************************************
+ Data Frame Related/Structure (Common)
+***********************************************************/
+/**
+ * \~english ACC OFF information
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_ACC;
+
+/**
+ * \~english GPS time information
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_GPS;
+
+/**
+ * \~english Frame for searching recording stop and start
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_REC;
+
+/**
+ * \~english Common data frame
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_COMMON_DATAFRAME;
+
+/***********************************************************
+ Data Frame/Structure Definition
+***********************************************************/
+
+/**
+ * \~english Power trace data frame
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCPWR;
+
+/**
+ * \~english Power trace data frame_system time attached
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCPWR_WITHSYSTIME;
+
+/**
+ * \~english Mode control/vehicle signal trace (mode control)
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCMODE;
+
+/**
+ * \~english Mode control/vehicle signal trace (vehicle signal)
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCVEHICLESIGNAL;
+
+/**
+ * \~english Key trace
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCKEY;
+
+/**
+ * \~english Key trace (key information for 23byte)
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCKEY_EXP;
+
+/**
+ * \~english Key trace(voice operation)
+ */
+typedef struct _T_DREC_TRCKEY_VOICE {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCKEY_VOICE;
+
+/**
+ * \~english Error trace
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCERR;
+
+/**
+ * \~english CAN communication trace
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCCAN;
+
+/**
+ * \~english AW Trace data (trace output of the own car position difference/ Monitoring trace log output of the distributed application PF/ Usage trace log output of the distributed application PF/ Trace output of DSRC/ETC communication)
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCAWDATA;
+
+/**
+ * \~english Bluetooth trace
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCBTCONNECT;
+
+/**
+ * \~english Bluetooth trace
+ */
+typedef struct _T_DREC_TRCBTINTERNAL {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCBTINTERNAL;
+
+/**
+ * \~english Bluetooth trace
+ */
+typedef struct _T_DREC_TRCBT {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCBT;
+
+/**
+ * \~english SSID information
+ */
+typedef struct _T_DREC_TRCWIFI_SSID_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCWIFI_SSID_INFO;
+
+/**
+ * \~english WiFi trace
+ */
+typedef struct _T_DREC_TRCWIFI {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCWIFI;
+
+/**
+ * \~english Trace data of the version information
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCVERSION;
+
+/**
+ * \~english Trace of the radio wave receipt
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCWAVE;
+
+/**
+ * \~english GPS information
+ */
+typedef struct {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCGPS;
+
+/**
+ * \~english ETC watch log trace
+ */
+typedef struct _T_DREC_TRCETCWATCH {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCETCWATCH;
+
+/**
+ * \~english ROB log trace
+ */
+typedef struct _T_DREC_TRCROB {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCROB;
+
+/**
+ * \~english Optical beacon down-link information trace
+ */
+typedef struct _T_DREC_TRCOPTBEACON_DOWN_LINK {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCOPTBEACON_DOWN_LINK;
+
+/**
+ * \~english Optical beacon up-link information trace
+ */
+typedef struct _T_DREC_TRCOPTBEACON_UP_LINK {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} T_DREC_TRCOPTBEACON_UP_LINK;
+
+/***********************************************************
+ Enumeration definitions
+***********************************************************/
+
+/**
+ * \~english Diag record API return value
+ */
+typedef enum {
+ RET_DREC_NORMAL = 0, //!< \~english Normal end
+ RET_DREC_ERROR, //!< \~english Abnormal end
+ RET_DREC_ERR_ARGUMENTS, //!< \~english Incorrect argument
+} RET_DREC_API;
+
+/**
+ * \~english Diag record ACC state
+ */
+typedef enum {
+ E_DREC_ACC_OFF = 0, //!< \~english ACC OFF
+ E_DREC_ACC_ON, //!< \~english ACC ON
+} E_DREC_ACC;
+
+/**
+ * \~english Diag recording function state
+ */
+typedef enum {
+ E_DREC_REC_OFF = 0, //!< \~english Recording stop
+ E_DREC_REC_ON //!< \~english Recording start
+} E_DREC_REC;
+
+/**
+ * \~english Maker peculiarity trace output state
+ */
+typedef enum {
+ DREC_OUTPUT_STATE_START = 1, //!< \~english Output start
+ DREC_OUTPUT_STATE_END, //!< \~english Output end
+} DREC_OUTPUT_STATE;
+
+/**
+ * \~english Maker peculiarity trace output result
+ */
+typedef enum {
+ DREC_OUTPUT_NOTIFY_OK = 0, //!< \~english OK
+ DREC_OUTPUT_NOTIFY_NG, //!< \~english NG
+} DREC_OUTPUT_RESULT;
+
+/**
+ * \~english Maker peculiarity trace function state
+ */
+typedef enum {
+ DREC_OUTPUT_FUNC_ON = 0, //!< \~english Function ON
+ DREC_OUTPUT_FUNC_OFF, //!< \~english Function OFF
+} DREC_OUTPUT_FUNC;
+
+/**
+ * \~english Maker peculiarity trace notification restrict
+ */
+typedef enum {
+ DREC_NOTIFY_RESTRICT_API, //!< \~english restrict API
+ DREC_NOTIFY_RESTRICT_CAN, //!< \~english restrict CAN
+ DREC_NOTIFY_RESTRICT_NONE, //!< \~english non-restrict
+} DREC_NOTIFY_RESTRICT;
+
+/***********************************************************
+ Constant
+***********************************************************/
+#define DREC_COM_GPS_ID_CORD 0xF0 //!< \~english GPS time information identification code
+#define DREC_COM_RECORD_STOP 0xF1 //!< \~english Recording stop
+#define DREC_COM_RECORD_START 0xF2 //!< \~english Recording start
+
+/***********************************************************
+ API
+***********************************************************/
+/** @addtogroup ApplicationManagement
+ * @{
+ */
+/** @addtogroup Vehicle
+ * @ingroup ApplicationManagement
+ * @{
+ */
+/** @addtogroup Diag
+ * @ingroup Vehicle
+ * @{
+ */
+/** @addtogroup Diag_DrecOperate
+ * @ingroup Diag
+ * @{
+ */
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_ChangeRecording
+/// \~english @par Brief
+/// Instruct the record function start/stop and write the start/stop information.
+/// \~english @param [in] state
+/// \ref E_DREC_REC - Function start/stop state
+/// \~english @par
+/// - Set either in the following "Diag recording function states" for the argument (state) (Function start/stop state)
+/// \~english @code
+/// Diag recording function states
+/// E_DREC_REC_OFF : Recording stop
+/// E_DREC_REC_ON : Recording start
+/// @endcode
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @par Prerequisite
+/// - \ref PFDREC_OpenSession must be called prior to calling this API.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - None
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// The log output of Diag Record is output in the following format by calling this API.\n
+/// \n
+/// < Function ON >\n
+/// Record "Recording start information" in each trace data. Notify the function start of the recording function to BaseSystem.\n
+/// Register GPS time information from Diag service by \ref DREC_WriteTrcGPS.\n
+/// \n
+/// < Function OFF >\n
+/// Record "Recording stop information" in each trace data. Notify the function stop of the recording function to BaseSystem.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_ChangeRecording(E_DREC_REC state);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_AccOffOn
+/// \~english @par Brief
+/// Write ACCOFF time information to the memory at ACC OFF.
+/// \~english @param [in] state
+/// \ref E_DREC_ACC - ACCOFFON (reset) state
+/// \~english @par
+/// - Set either in the following "Diag record ACC state" for the argument (state) (ACCOFFON (reset) state)
+/// \~english @code
+/// Diag record ACC state
+/// E_DREC_ACC_OFF : ACC OFF
+/// E_DREC_ACC_ON : ACC ON
+/// @endcode
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - None
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Wrapper executes the following processes by calling this API. \n
+/// This API must be called when this Diag service detects FrameworkunifiedOnStop. (Called only by the service having Diag recorder function.) \n
+/// Wrapper writes ACCOFF information in each trace file. \n
+/// Wrapper writes #power OFF state by the power trace output based on the notification from SYS. \n
+/// Wrapper writes GPS time at Function OFF and at ACCOFF (reset) in preparation for a case that GPS time information cannot be acquired at the start up. \n
+/// Wrapper does not reaquire GPS time if valid GPS time cannot be acquired at the startup. \n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_AccOffOn(E_DREC_ACC state);
+/** @}*/ // end of Diag_DrecOperate
+/** @addtogroup Diag_DrecWriteTrc
+ * @ingroup Diag
+ * @{
+ */
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcPwr
+/// \~english @par Brief
+/// Write the power trace output information to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCPWR* - Pointer to the power trace data
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the power trace output information to the memory.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcPwr(T_DREC_TRCPWR* data, u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcPwr_Tick
+/// \~english @par Brief
+/// Write the power trace output information to the memory (tick specification exists).
+/// \~english @param [in] data
+/// \ref T_DREC_TRCPWR_WITHSYSTIME* - Pointer to the power trace data (with the system time)
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @param [in] tick
+/// u_int32_t - TICK value of the current SYS internal
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the power trace output information to the memory (tick specification exists).
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcPwr_Tick(T_DREC_TRCPWR_WITHSYSTIME* data,
+ u_int32_t num, u_int32_t tick);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcMode
+/// \~english @par Brief
+/// Write the mode control parts of the mode control/vehicle signal trace output information to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCMODE* - The pointer to mode management trace data
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the mode control parts of the mode control/vehicle signal trace output information to the memory.\n
+/// The system time is gotten by wrapper library and added.\n
+/// This API adds the vehicle signal state fixed at 0xFF.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcMode(T_DREC_TRCMODE* data, u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcVehicleSignal
+/// \~english @par Brief
+/// Write the vehicle signal parts of the mode control/vehicle signal trace output information to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCVEHICLESIGNAL* - Pointer to the vehicle signal trace data
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the vehicle signal parts of the mode control/vehicle signal trace output information to the memory.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcVehicleSignal(T_DREC_TRCVEHICLESIGNAL* data,
+ u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcKey
+/// \~english @par Brief
+/// Write the key trace output information to the memory (for 11byte key information).
+/// \~english @param [in] data
+/// \ref T_DREC_TRCKEY* - The pointer to key trace data (Key information for 11 bytes)
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the key trace output information to the memory (for 11byte key information).\n
+/// (The caller uses only when size of the key information is 11 bytes. For data which it is 27 bytes, the caller uses \ref DREC_WriteTrcKey_Exp .)\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcKey_Exp
+/// \~english @par Brief
+/// Write the key trace output information to the memory (for 23byte key information).
+/// \~english @param [in] data
+/// \ref T_DREC_TRCKEY_EXP* - The pointer to key trace data (Key information for 23 bytes)
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 50)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the key trace output information to the memory (for 23byte key information).\n
+/// (For data which key information is 11 bytes, the caller uses \ref DREC_WriteTrcKey .)\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcKey_Exp(T_DREC_TRCKEY_EXP* data,
+ u_int32_t num);
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcKey_Voice
+/// \~english @par Brief
+/// Write the voice trace output information to the memory(for voice operation).
+/// \~english @param[in] data
+/// T_DREC_TRCKEY_VOICE* - The pointer to key trace data()
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @par
+/// Number of written frames (1 to 50)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the voice trace output information to the memory(for voice operation).
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcKey_Voice(T_DREC_TRCKEY_VOICE* data,
+ u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcErr
+/// \~english @par Brief
+/// Write the error trace output information to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCERR* - The pointer to error trace data
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DIAG_API_DCCC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the error trace output information to the memory.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcErr(T_DREC_TRCERR* data, u_int32_t num);
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcCan
+/// \~english @par Brief
+/// Write CAN communication trace output information to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCCAN* - Pointer to CAN communication trace data
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @param [in] tick
+/// u_int32_t - TICK value of the current SYS internal
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DIAG_API_DCCC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write CAN communication trace output information to the memory.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcCan(T_DREC_TRCCAN* data, u_int32_t num,
+ u_int32_t tick);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcDeliveryPFWatchLog
+/// \~english @par Brief
+/// Write the monitoring trace log output information of the distributed application PF to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCAWDATA* - The pointer to monitoring log data of the distribution application PF
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the monitoring trace log output information of the distributed application PF to the memory.\n
+/// The library side adds the system time. The caller must call for each segment of data.\n
+/// The library side adds the system time to the beginning of the data and ALL 0 to from the head of the remaining data to 3 bytes.\n
+/// This API adds the system time to the beginning with a single call and regarding data exceeding one frame, divides and registers it.\n
+/// The caller must not call some headers and data record parts together. (Because system time can not be added for each section.)\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcDeliveryPFWatchLog(T_DREC_TRCAWDATA* data);
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcDeliveryPFUseLog
+/// \~english @par Brief
+/// Write the usage trace log output information of the distributed application PF to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCAWDATA* - The pointer to usage log data of the distribution application PF
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the usage trace log output information of the distributed application PF to the memory.\n
+/// The library side adds the system time. The caller must call for each segment of data.\n
+/// The library side adds the system time to the beginning of the data and ALL 0 to from the head of the remaining data to 3 bytes.\n
+/// This API adds the system time to the beginning with a single call and regarding data exceeding one frame, divides and registers it.\n
+/// The caller must not call some headers and data record parts together. (Because system time can not be added for each section.)\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcDeliveryPFUseLog(T_DREC_TRCAWDATA* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcBT
+/// \~english @par Brief
+/// Write the trace output information of Bluetooth to the memory.
+/// \~english @param[in] data
+/// T_DREC_TRCBT* - The pointer to write data
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of Bluetooth to the memory.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcBT(T_DREC_TRCBT* data, u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcBTInternal
+/// \~english @par Brief
+/// (Only in the specific Supplier) Write the trace output information of Bluetooth internal to the memory.
+/// \~english @param [in] data
+/// u_int8_t* - The pointer to write data
+/// \~english @param [in] size
+/// u_int32_t - Data size (1 to 1200bytes)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// This API is API for specific supplier.(TECHWG-443)\n
+/// Write the trace output information of Bluetooth internal to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcBTInternal(u_int8_t* data,
+ u_int32_t size);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcWiFi
+/// \~english @par Brief
+/// Write the trace output information of WiFi to the memory.
+/// \~english @param[in] data
+/// T_DREC_TRCWIFI* - The pointer to write data
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of WiFi to the memory.\n
+/// \ref T_DREC_TRCWIFI Structure\n
+/// Data frame format are different by setting value of WiFi setting state.\n
+/// WiFi Setting state( \ref T_DREC_TRCWIFI.processing )\n
+/// - Connection(0x00), Auto connection(0x01) and Disconnection(0x02) data format definition \ref notinitialdata used.\n
+/// - Creation Mode(0x03) and Deletion Mode((0x04)) data format definition \ref modedata used.\n
+/// - Initial is activation(0x10) format definition \ref initialdata used.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcWiFi(T_DREC_TRCWIFI* data, u_int32_t num);
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcWiFiInternal
+/// \~english @par Brief
+/// (Only in the specific Supplier) Write the trace output information of WiFi internal to the memory.
+/// \~english @param [in] data
+/// u_int8_t* - The pointer to write data
+/// \~english @param [in] size
+/// u_int32_t - Data size (1 to 1200bytes)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// This API is API for specific supplier.(TECHWG-443)\n
+/// Write the trace output information of WiFi internal to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcWiFiInternal(u_int8_t* data, u_int32_t size);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcCenter
+/// \~english @par Brief
+/// Write the trace output information of the communication with the center to the memory.
+/// \~english @param [in] data
+/// u_int8_t* - The pointer to write data
+/// \~english @param [in] size
+/// u_int32_t - Data size (1 to 1200bytes)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of the communication with the center to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcCenter(u_int8_t* data, u_int32_t size);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcVersion
+/// \~english @par Brief
+/// Write the trace output information of the version information to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCVERSION* - Pointer to the Trace data of the version information
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 25)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of the version information to the memory.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcVersion(T_DREC_TRCVERSION* data,
+ u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcDCM
+/// \~english @par Brief
+/// Write the trace output information of DCM communication to the memory.
+/// \~english @param [in] data
+/// u_int8_t* - The pointer to write data
+/// \~english @param [in] size
+/// u_int32_t - Data size (1 to 1200bytes)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of DCM communication to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcDCM(u_int8_t* data, u_int32_t size);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcDSRC
+/// \~english @par Brief
+/// Write the trace output information of DSRC/ETC communication to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCAWDATA* - The pointer to DSRC/ETC communication trace data
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of DSRC/ETC communication to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcDSRC(T_DREC_TRCAWDATA* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrc_CWORD17_
+/// \~english @par Brief
+/// Write the trace output information of _CWORD5_ communication to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCCAN* - Pointer to the _CWORD5_ communication trace data
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @param [in] tick
+/// u_int32_t - TICK value of the current SYS internal
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of _CWORD5_ communication to the memory.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrc_CWORD17_(T_DREC_TRCCAN* data, u_int32_t num,
+ u_int32_t tick);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcWave
+/// \~english @par Brief
+/// Write the trace output information of the radio wave receipt to the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCWAVE* - The pointer to trace data of the electric wave reception
+/// \~english @param [in] num
+/// u_int32_t - Number of written frames (1 to 100)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of the radio wave receipt to the memory.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcWave(T_DREC_TRCWAVE* data, u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcUSB
+/// \~english @par Brief
+/// Write the trace output information of USB I/F connected application internal to the memory.
+/// \~english @param [in] data
+/// u_int8_t* - The pointer to wrire data
+/// \~english @param [in] size
+/// u_int32_t - Data size (1 to 1200bytes)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of USB I/F connected application internal to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcUSB(u_int8_t* data, u_int32_t size);
+
+
+/** @}*/ // end of Diag_DrecWriteTrc
+/** @addtogroup Diag_DrecOperate
+ * @ingroup Diag
+ * @{
+ */
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_GetRecordSize
+/// \~english @par Brief
+/// Acquire the number of Diag record registration whose type is specified.
+/// \~english @param [in] type
+/// \ref E_PFDREC_CATEGORY_TYPE - Type to acquire the record size
+/// \~english @param [out] num
+/// u_int32_t * - Pointer to the number of registered records.
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - \ref PFDREC_OpenSession must be called prior to calling this API.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (num) is NULL. [RET_DREC_ERROR]
+/// - The argument (type) is not the defined value. [RET_DREC_ERROR]
+/// - The caller is not calling \ref PFDREC_OpenSession in advance. [RET_DREC_ERROR]
+/// - Message synchronous communication (FrameworkunifiedInvokeSync) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Acquire the number of record registration whose type is specified.\n
+/// In BaseSystem, returns the number of records of the specified type. \n
+/// The caller determines the total size with the number of records and each record length.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_GetRecordSize(E_PFDREC_CATEGORY_TYPE type,
+ u_int32_t *num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_GetRecordData
+/// \~english @par Brief
+/// Acquire the registered Diag record whose type is specified.
+/// \~english @param [in] type
+/// \ref E_PFDREC_CATEGORY_TYPE - Type to acquire the record size (\ref E_PFDREC_CATEGORY_TRC_PWR - ref E_PFDREC_CATEGORY_TRC_TRAF )
+/// \~english @param [in] num
+/// u_int32_t - The number of records to acquire (1 to 100)
+/// \~english @param [in] record_ptr
+/// u_int32_t - The start point of the record to acquire
+/// \~english @param [out] data
+/// u_int8_t *- Pointer to the storage area for the record to acquire
+/// \~english @param [out] out_num
+/// u_int32_t *- Pointer to the size of the stored record
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - \ref PFDREC_OpenSession must be called prior to calling this API.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (data) is NULL [RET_DREC_ERROR]
+/// - The argument (out_num) is NULL [RET_DREC_ERROR]
+/// - The argument (type) is not the defined value [RET_DREC_ERROR]
+/// - The argument (num) is 0 or greater than 100. [RET_DREC_ERROR]
+/// - The caller is not calling \ref PFDREC_OpenSession in advance. [RET_DREC_ERROR]
+/// - Message synchronous communication (FrameworkunifiedInvokeSync) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Acquire the record whose type is specified. \n
+/// In BaseSystem, acquire the records of the specified type and the specified number. In this case, the caller specifies from which number of record is acquired.\n
+/// The caller is supposed to acquire data in order from the beginning in several batches.\n
+/// When the number of record requested to acquire is more than that of registered records, acquire the registered number only and returns it. \n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_GetRecordData(E_PFDREC_CATEGORY_TYPE type,
+ u_int32_t num, u_int32_t record_ptr,
+ u_int8_t *data, u_int32_t *out_num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_GetRecordState
+/// \~english @par Brief
+/// Acquire the start/stop state of the record function.
+/// \~english @param [out] state
+/// \ref E_DREC_REC* - Pointer to the start/stop state of the record function.
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - \ref PFDREC_OpenSession must be called prior to calling this API.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (state) is NULL [RET_DREC_ERROR]
+/// - The caller is not calling \ref PFDREC_OpenSession in advance. [RET_DREC_ERROR]
+/// - Message synchronous communication (FrameworkunifiedInvokeSync) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Acquire the start/stop state of the record function.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_GetRecordState(E_DREC_REC* state);
+/** @}*/ // end of Diag_DrecOperate
+/** @addtogroup Diag_DrecOperate
+ * @ingroup Diag
+ * @{
+ */
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_SetSysemTimeDifference
+/// \~english @par Brief
+/// Set the system time difference.
+/// \~english @param [in] data
+/// u_int32_t - System time difference
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @par Prerequisite
+/// - None
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - None
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Store the system time difference in the shared memory.\n
+/// Reflect the stored value in the addition process of the system time.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_SetSysemTimeDifference(u_int32_t data);
+/** @}*/ // end of Diag_DrecOperate
+/** @addtogroup Diag_DrecWriteTrc
+ * @ingroup Diag
+ * @{
+ */
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcGPS
+/// \~english @par Brief
+/// Set GPS time information to each trace data.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCGPS* - Pointer to the GPS information
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Set the GPS time information \n
+/// The target is all trace outputs belonging to the unit in which this API is called. \n
+/// When registering the trace data in BaseSystem, regarding the key trace, GPS information is separately passed as the argument (The second argument of PFDREC_ComDataBuckup).\n
+/// After Function ON, when a valid GPS time can be acquired after ACCON, the Diag service must register it.\n
+/// During Function ON, when a valid GPS time cannot be acquired, retry must be performed until the acquired time is registered.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcGPS(T_DREC_TRCGPS* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcUSBETC
+/// \~english @par Brief
+/// Write USB log information of DSRC/ETC communication trace output into the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCAWDATA* - The pointer to DSRC/ETC communication trace data
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write USB log information of DSRC/ETC communication trace output into the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcUSBETC(T_DREC_TRCAWDATA* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcUplink
+/// \~english @par Brief
+/// Write the uplink log information of DSRC/ETC communication trace output into the memory.
+/// \~english @param [in] data
+/// \ref T_DREC_TRCAWDATA* - The pointer to DSRC/ETC communication trace data
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the uplink log information of DSRC/ETC communication trace output into the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcUplink(T_DREC_TRCAWDATA* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcETCWatch
+/// \~english @par Brief
+/// Write trace output of the ETC watch to the memory.
+/// \~english @param[in] data
+/// T_DREC_TRCETCWATCH* - Pointer to the trace data of the ETC watch.
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the monitoring trace output information of the ETC to the memory.\n
+/// \ref T_DREC_TRCETCWATCH structure\n
+/// Data format is different by device type / frame type( \ref T_DREC_TRCETCWATCH.frameType )\n
+/// 0:ETC status notification log \n
+/// 1:ETC latest charge notification log \n
+/// 2:ETC operation response log \n
+/// Use the \ref T_DREC_TRCETCWATCH.command format destination.\n
+/// 3:ETC communication log \n
+/// Use the \ref T_DREC_TRCETCWATCH.com_command format destination.\n
+/// 4:Diag Clear event log \n
+/// 5:Diagnosis detection event log \n
+/// 6:Diagnosis recovery event log \n
+/// Use the \ref T_DREC_TRCETCWATCH.diag format destination.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcETCWatch(T_DREC_TRCETCWATCH* data,
+ u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcRoB
+/// \~english @par Brief
+/// Write the trace output information of RoB log to the memory.
+/// \~english @param[in] data
+/// T_DREC_TRCROB* - The pointer to write data
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the trace output information of RoB log to the memory.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcRoB(T_DREC_TRCROB* data,
+ u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcEvaluation
+/// \~english @par Brief
+/// Write the evaluation trace output information to the memory.
+/// \~english @param[in] data
+/// u_int8_t* - The pointer to write data
+/// \~english @param[in] size
+/// u_int32_t - Data size (1 to 1200bytes)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the evaluation trace output information to the memory.\n
+/// The log output of Diag Record is output in the following format.\n
+/// This API registers system time from Byte1 to 3.\n
+/// As there is data reserved for each format, this API registers the value defined in the wrapper layer at Byte4\n
+/// so that it does not overlap with that data.\n
+/// This API registers specified data after Byte5.\n
+/// Regarding data exceeding 12 bytes at a time, this API divides records and registers it.\n
+/// Regarding data after Byte13, this API registers 0x00 from Byte1 to 4 and registers the specified data after Byte5.\n
+/// It is filled with 0x00 if the data is less than 16 bytes.\n
+/// This API adds the system time to the beginning with a single call.\n
+/// Regarding data exceeding one frame, this API divides and registers it.\n
+/// The caller must not call some data by connecting them. (Because system time can not be added for each section.)\n
+/// (The format is optional for the manufacturer.)
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcEvaluation(u_int8_t* data,
+ u_int32_t size);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_DeleteTrcDeliveryPFUseLog
+/// \~english @par Brief
+/// Delete the trace of distribution application PF usage log.
+/// \~english @param None
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - \ref PFDREC_OpenSession must be called prior to calling this API.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (func) is NULL [RET_DREC_ERROR]
+/// - The caller is not calling \ref PFDREC_OpenSession in advance. [RET_DREC_ERROR]
+/// - Message synchronous communication (FrameworkunifiedInvokeSync) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Delete the trace of distribution application PF usage log.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_DeleteTrcDeliveryPFUseLog(void);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_DeleteTrcDeliveryPFUseLog_inSession
+/// \~english @par Brief
+/// Delete the trace of distribution application PF usage log.
+/// - Execute "Session start(\ref PFDREC_OpenSession)" before the deletion.
+/// - Execute "Session termination(\ ref PFDREC_CloseSession)" after the deletion.
+/// \~english @param None
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - \ref PFDREC_OpenSession failed. [RET_DREC_ERROR]
+/// - \ref PFDREC_CloseSession failed. [RET_DREC_ERROR]
+/// - Message synchronous communication (FrameworkunifiedInvokeSync) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Execute "Session starti(\ref PFDREC_OpenSession)" before the deletion.\n
+/// Delete the trace of distribution application PF usage log \n
+/// Execute "Session termination(\ref PFDREC_CloseSession)" after the deletion. \n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_DeleteTrcDeliveryPFUseLog_inSession(HANDLE hThread);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcOptBeaconDownLink
+/// \~english @par Brief
+/// Write Optical beacon down-link information trace to the memory.
+/// \~english @param[in] data
+/// T_DREC_TRCOPTBEACON_DOWN_LINK* - Pointer to the trace data of the Optical beacon down-link information.
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the Optical beacon down-link information trace to the memory.\n
+/// \ref T_DREC_TRCOPTBEACON_DOWN_LINK structure\n
+/// Data format is different by rcv type( \ref T_DREC_TRCOPTBEACON_DOWN_LINK.rcvkind )\n
+/// 01h : Route signal information \n
+/// Use the \ref T_DREC_TRCOPTBEACON_DOWN_LINK.downlinkinfo format destination.\n
+/// 02h : Lack route signal information\n
+/// 03h : No route signal information \n
+/// Use the \ref T_DREC_TRCOPTBEACON_DOWN_LINK.rcvgpspositioningdata format destination.\n
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcOptBeaconDownLink(
+ T_DREC_TRCOPTBEACON_DOWN_LINK* data, u_int32_t num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_WriteTrcOptBeaconUpLink
+/// \~english @par Brief
+/// Write Optical beacon up-link information trace to the memory.
+/// \~english @param[in] data
+/// T_DREC_TRCOPTBEACON_UP_LINK* - Pointer to the trace data of the Optical beacon up-link information.
+/// \~english @param[in] num
+/// u_int32_t - Number of written frames
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of PFDRECThread is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Sync only(None communication)
+/// \~english @par Detail
+/// Write the Optical beacon up-link information trace to the memory.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_WriteTrcOptBeaconUpLink(T_DREC_TRCOPTBEACON_UP_LINK* data,
+ u_int32_t num);
+
+/** @}*/ // end of Diag_DrecWriteTrc
+/** @addtogroup Diag_Drec_MakerTrace
+ * @ingroup Diag
+ * @{
+ */
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_DeliveryEntry
+/// \~english @par Brief
+/// Register the delivery destination application for Maker peculiarity trace
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of Diag Service is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Registers the handle and thread name for the delivery destination application in the delivery registration table.\n
+/// The client must call this API on a thread that needs to receive that are related to the Maker peculiarity trace in advance.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_DeliveryEntry(HANDLE hApp,
+ PCSTR notifyName);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_SizeRequest
+/// \~english @par Brief
+/// Request to get record size of Maker peculiarity trace.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - None
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Private
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Request to get record size of Maker peculiarity trace to the registered application for delivery.\n
+/// Message ID sended by DiagService is as follows\n
+/// MSGID_DREC_MAKERTRACE_SIZEREQUEST
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_SizeRequest(HANDLE hApp,
+ PCSTR notifyName);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_SizeResponce
+/// \~english @par Brief
+/// Send record size of Maker peculiarity trace to DiagService.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] size
+/// u_int32_t - Data size (Unit: Byte)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of Diag Service is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Send record size of Maker peculiarity trace to DiagService.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_SizeResponce(HANDLE hApp,
+ PCSTR notifyName,
+ u_int32_t size);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_OutputRequest
+/// \~english @par Brief
+/// Request to output of Maker peculiarity trace.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] output
+/// PCSTR - Output destination
+/// \~english @param[in] state
+/// DREC_OUTPUT_STATE - Status (output start or output stop)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - None
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Private
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Request to output of Maker peculiarity trace to the registered application for delivery.\n
+/// Message ID sended by DiagService is as follows\n
+/// MSGID_DREC_MAKERTRACE_OUTPUTREQUEST
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_OutputRequest(HANDLE hApp,
+ PCSTR notifyName,
+ PCSTR output,
+ DREC_OUTPUT_STATE state);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_OutputResponce
+/// \~english @par Brief
+/// Send output status of Maker peculiarity trace to DiagService.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] progress
+/// u_int8_t - Progress rate (0 to 100)
+/// \~english @param[in] state
+/// DREC_OUTPUT_RESULT - Status (OK or NG)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of Diag Service is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Send output status of Maker peculiarity trace to DiagService.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_OutputResponce(HANDLE hApp,
+ PCSTR notifyName,
+ u_int8_t progress,
+ DREC_OUTPUT_RESULT state);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_DeleteRequest
+/// \~english @par Brief
+/// Request to delete of Maker peculiarity trace.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - None
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Private
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Request to delete of Maker peculiarity trace to the registered application for delivery.\n
+/// Message ID sended by DiagService is as follows\n
+/// MSGID_DREC_MAKERTRACE_DELETEREQUEST
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_DeleteRequest(HANDLE hApp,
+ PCSTR notifyName);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_DeleteResponce
+/// \~english @par Brief
+/// Send result of delete Maker peculiarity trace to DiagService.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] state
+/// DREC_OUTPUT_RESULT - Status (OK or NG)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of Diag Service is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Send result of delete Maker peculiarity trace to DiagService.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_DeleteResponce(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_OUTPUT_RESULT state);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_FuncStatusRequest
+/// \~english @par Brief
+/// Request to change function status of Maker peculiarity trace.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] func
+/// DREC_OUTPUT_FUNC - Function status (function ON or ffunction OFF)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - None
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Private
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Request to change function status of Maker peculiarity trace to the registered application for delivery.\n
+/// Message ID sended by DiagService is as follows\n
+/// MSGID_DREC_MAKERTRACE_FUNCSTATUSREQUEST
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_FuncStatusRequest(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_OUTPUT_FUNC func);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_FuncStatusResponce
+/// \~english @par Brief
+/// Send result of change function status of Maker peculiarity trace to DiagService.
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] state
+/// DREC_OUTPUT_RESULT - Status (OK or NG)
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of Diag Service is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Send result of change function status of Maker peculiarity trace to DiagService.
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// None
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_FuncStatusResponce(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_OUTPUT_RESULT state);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DREC_MakerTrace_NotifyRestrict
+/// \~english @par Brief
+/// Restrict notify of Maker peculiarity trace
+/// \~english @param[in] hApp
+/// HANDLE - The handle for the delivery source application
+/// \~english @param[in] notifyName
+/// PCSTR - The thread name of the delivery source
+/// \~english @param[in] notifyRestrict
+/// DREC_NOTIFY_RESTRICT - Restrict kind of Maker peculiarity trace
+/// \~english @retval RET_DREC_NORMAL Normal end
+/// \~english @retval RET_DREC_ERROR Abnormal end
+/// \~english @retval RET_DREC_ERR_ARGUMENTS Incorrect argument
+/// \~english @par Prerequisite
+/// - This API must be called only when Availability of Diag Service is TRUE.
+/// \~english @par Change of internal state
+/// - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+/// - The argument (notifyName) is NULL. [RET_DREC_ERR_ARGUMENTS]
+/// - Opening the sending message queue (McOpenSender) failed. [RET_DREC_ERROR]
+/// - Sending asynchronous data (McSend) failed. [RET_DREC_ERROR]
+/// \~english @par Classification
+/// Public
+/// \~english @par Type
+/// Fire and Forget only
+/// \~english @par Detail
+/// Restrict trace notifications triggered by the specified notifyRestrict.
+/// Restrict notification(MessageID) are as follows.
+/// - MSGID_DREC_MAKERTRACE_SIZEREQUEST
+/// - MSGID_DREC_MAKERTRACE_OUTPUTREQUEST
+/// - MSGID_DREC_MAKERTRACE_DELETEREQUEST
+/// - MSGID_DREC_MAKERTRACE_FUNCSTATUSREQUEST
+/// \n
+/// if this API is not called, not restrict(Status is DREC_NOTIFY_RESTRICT_NONE).
+/// \~english @par
+/// - include MM_DREC_API.h
+/// - Library libMM_DREC_API.so
+/// \~english @see
+/// DREC_MakerTrace_FuncStatusRequest, DREC_MakerTrace_DeleteRequest,
+/// DREC_MakerTrace_OutputRequest, DREC_MakerTrace_SizeRequest
+/////////////////////////////////////////////////////////////////////////////////////
+extern RET_DREC_API DREC_MakerTrace_NotifyRestrict(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_NOTIFY_RESTRICT notifyRestrict);
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+/** @}*/ // end of Diag_Drec_MakerTrace
+/** @}*/ // end of Diag
+/** @}*/ // end of Vehicle
+/** @}*/ // end of ApplicationManagement
+#endif // __MM_DREC_API_H__
+
diff --git a/stub/diag_record/library_dummy_drec/src/MM_DREC_API.cpp b/stub/diag_record/library_dummy_drec/src/MM_DREC_API.cpp
new file mode 100644
index 00000000..5ecd9433
--- /dev/null
+++ b/stub/diag_record/library_dummy_drec/src/MM_DREC_API.cpp
@@ -0,0 +1,450 @@
+/*
+ * @copyright Copyright (c) 2019-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "MM_DREC_API.h"
+
+RET_DREC_API DREC_ChangeRecording(E_DREC_REC state) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_AccOffOn(E_DREC_ACC state) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcPwr(T_DREC_TRCPWR* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcPwr_Tick(T_DREC_TRCPWR_WITHSYSTIME* data, u_int32_t num, u_int32_t tick) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcMode(T_DREC_TRCMODE* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcVehicleSignal(T_DREC_TRCVEHICLESIGNAL* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcKey(T_DREC_TRCKEY* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcKey_Exp(T_DREC_TRCKEY_EXP* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcKey_Voice(T_DREC_TRCKEY_VOICE* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcErr(T_DREC_TRCERR* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcCan(T_DREC_TRCCAN* data, u_int32_t num, u_int32_t tick) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcOwnCarPosition(T_DREC_TRCAWDATA* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcDeliveryPFWatchLog(T_DREC_TRCAWDATA* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcDeliveryPFUseLog(T_DREC_TRCAWDATA* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcBT(T_DREC_TRCBT* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcBTInternal(u_int8_t* data, u_int32_t size) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcWiFiInternal(u_int8_t* data, u_int32_t size) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcWiFi(T_DREC_TRCWIFI* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcCenter(u_int8_t* data, u_int32_t size) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcVersion(T_DREC_TRCVERSION* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcDCM(u_int8_t* data, u_int32_t size) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcDSRC(T_DREC_TRCAWDATA* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrc_CWORD17_(T_DREC_TRCCAN* data, u_int32_t num, u_int32_t tick) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcWave(T_DREC_TRCWAVE* data, u_int32_t num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcUSB(u_int8_t* data, u_int32_t size) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_GetRecordSize(E_PFDREC_CATEGORY_TYPE type, u_int32_t *num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_GetRecordData(E_PFDREC_CATEGORY_TYPE type, u_int32_t num,
+ u_int32_t record_ptr, u_int8_t *data, u_int32_t *out_num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_GetRecordState(E_DREC_REC* state) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_SetSysemTimeDifference(u_int32_t data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcGPS(T_DREC_TRCGPS* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+
+RET_DREC_API DREC_WriteTrcUSBETC(T_DREC_TRCAWDATA* data)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcUplink(T_DREC_TRCAWDATA* data)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcETCWatch(T_DREC_TRCETCWATCH* data, u_int32_t num)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcRoB(T_DREC_TRCROB* data, u_int32_t num)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcEvaluation(u_int8_t* data, u_int32_t size)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_DeleteTrcDeliveryPFUseLog(void)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_DeleteTrcDeliveryPFUseLog_inSession(HANDLE hThread)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcOptBeaconDownLink(T_DREC_TRCOPTBEACON_DOWN_LINK* data, u_int32_t num)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_WriteTrcOptBeaconUpLink(T_DREC_TRCOPTBEACON_UP_LINK* data, u_int32_t num)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_DeliveryEntry(HANDLE hApp,
+ PCSTR notifyName)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_SizeRequest(HANDLE hApp,
+ PCSTR notifyName)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_SizeResponce(HANDLE hApp,
+ PCSTR notifyName,
+ u_int32_t size)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_OutputRequest(HANDLE hApp,
+ PCSTR notifyName,
+ PCSTR output,
+ DREC_OUTPUT_STATE state)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_OutputResponce(HANDLE hApp,
+ PCSTR notifyName,
+ u_int8_t progress,
+ DREC_OUTPUT_RESULT state)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_DeleteRequest(HANDLE hApp,
+ PCSTR notifyName)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_DeleteResponce(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_OUTPUT_RESULT state)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_FuncStatusRequest(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_OUTPUT_FUNC func)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_FuncStatusResponce(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_OUTPUT_RESULT state)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
+RET_DREC_API DREC_MakerTrace_NotifyRestrict(HANDLE hApp,
+ PCSTR notifyName,
+ DREC_NOTIFY_RESTRICT notifyRestrict)
+{
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DREC_NORMAL;
+}
+
diff --git a/stub/diag_record/library_record_api/Makefile b/stub/diag_record/library_record_api/Makefile
new file mode 100644
index 00000000..9efbd4f0
--- /dev/null
+++ b/stub/diag_record/library_record_api/Makefile
@@ -0,0 +1,47 @@
+#
+# @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+######### installed shared library(*.so) #############
+INST_SHLIBS = libDiagRecordAPI
+
+######### install headers(*.h) #############
+INST_HEADERS += PFDREC_API.h
+
+######### compiled sources #############
+libDiagRecordAPI_SRCS = DiagRecordAPI.cpp
+
+######### add source path #############
+VPATH += ./include/$(COMPONENT_NAME) ./src
+
+######### add include path #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/stub
+
+######### add compile option #############
+LDFLAGS += -Wl,--no-as-needed
+LDFLAGS += -Wl,--no-undefined
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+######### linked library (dynamic) #############
+LDLIBS += -Wl,-Bdynamic -lNS_FrameworkUnified
+LDLIBS += -Wl,-Bdynamic -lstdc++
+
+include ../../stub.mk
diff --git a/stub/diag_record/library_record_api/include/stub/PFDREC_API.h b/stub/diag_record/library_record_api/include/stub/PFDREC_API.h
new file mode 100644
index 00000000..b4ad71cf
--- /dev/null
+++ b/stub/diag_record/library_record_api/include/stub/PFDREC_API.h
@@ -0,0 +1,975 @@
+/*
+ * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file PFDREC_API.h
+ * @brief diag_record API header file
+ */
+/*******************************************************************************
+ * FILE : PFDREC_API.h
+ * SYSTEM : LinuxPF
+ * SUBSYSTEM :
+ * TITLE : Diag record managementfeature include definition
+ ******************************************************************************/
+
+#ifndef DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_
+#define DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup diag_record
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#include <time.h>
+#include <agl_thread.h>
+#include <native_service/frameworkunified_types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \~english The definition of the processing result value
+ */
+typedef int RET_PFDREC_API;
+
+/**
+ * \~english The definition of the diag_record thread
+ */
+#ifndef TN_PFDRECTHREAD
+#define TN_PFDRECTHREAD "PFDRECThread"
+#endif
+
+/**
+ * \~english The definition of the diag_record thread availability.
+ */
+#define NTFY_PFDRECThread_Availability "PFDRECThread/Availability"
+
+/**
+ * \~english The definition of the processing normal result.
+ */
+#define RET_PFDREC_NORMAL (0)
+/**
+ * \~english The definition of the processing abnormal result.
+ */
+#define RET_PFDREC_ERROR (-1)
+/**
+ * \~english The definition of the invalid arguments result.
+ */
+#define RET_PFDREC_ERR_ARGUMENTS (-2)
+/**
+ * \~english The definition of the stop status result.
+ */
+#define RET_PFDREC_STOP (-3)
+
+/**
+ * \~english The definition of the invalid time information
+ */
+#define PFDREC_TIME_INFO_INVALID (0)
+
+/**
+ * \~english The definition of the invalid unique ID
+ */
+#define PFDREC_UNIQUE_INVALID (0xFFFFFFFFFFFFFFFF)
+
+
+/*! @~english The size of the record frame of PWR */
+#define PFDREC_FRAME_SIZE_TRC_PWR (16)
+/*! @~english The size of the record frame of MODE */
+#define PFDREC_FRAME_SIZE_TRC_MODE (16)
+/*! @~english The size of the record frame of KEY */
+#define PFDREC_FRAME_SIZE_TRC_KEY (16)
+/*! @~english The size of the record frame of ERR */
+#define PFDREC_FRAME_SIZE_TRC_ERR (16)
+/*! @~english The size of the record frame of CAN */
+#define PFDREC_FRAME_SIZE_TRC_CAN (16)
+/*! @~english The size of the record frame of DAPS */
+#define PFDREC_FRAME_SIZE_TRC_DAPS (16)
+/*! @~english The size of the record frame of DAPU */
+#define PFDREC_FRAME_SIZE_TRC_DAPU (16)
+/*! @~english The size of the record frame of BT */
+#define PFDREC_FRAME_SIZE_TRC_BT (16)
+/*! @~english The size of the record frame of BT_INTERNAL */
+#define PFDREC_FRAME_SIZE_TRC_BT_INTERNAL (16)
+/*! @~english The size of the record frame of WIFI */
+#define PFDREC_FRAME_SIZE_TRC_WIFI (16)
+/*! @~english The size of the record frame of WIFI_INTERNAL */
+#define PFDREC_FRAME_SIZE_TRC_WIFI_INTERNAL (16)
+/*! @~english The size of the record frame of CENTER */
+#define PFDREC_FRAME_SIZE_TRC_CENTER (16)
+/*! @~english The size of the record frame of VERSION */
+#define PFDREC_FRAME_SIZE_TRC_VERSION (16)
+/*! @~english The size of the record frame of DCM */
+#define PFDREC_FRAME_SIZE_TRC_DCM (16)
+/*! @~english The size of the record frame of ETC */
+#define PFDREC_FRAME_SIZE_TRC_ETC (16)
+
+/*! @~english The size of the record frame of USB_ETC */
+#define PFDREC_FRAME_SIZE_TRC_USB_ETC (16)
+/*! @~english The size of the record frame of DSRC_UPLINK */
+#define PFDREC_FRAME_SIZE_TRC_DSRC_UPLINK (16)
+
+/*! @~english The size of the record frame of _CWORD119_ */
+#define PFDREC_FRAME_SIZE_TRC__CWORD119_ (16)
+/*! @~english The size of the record frame of RADIO */
+#define PFDREC_FRAME_SIZE_TRC_RADIO (16)
+/*! @~english The size of the record frame of USB_UNIT */
+#define PFDREC_FRAME_SIZE_TRC_USB_UNIT (16)
+/*! @~english The size of the record frame of USB_API */
+#define PFDREC_FRAME_SIZE_TRC_USB_API (16)
+/*! @~english The size of the record frame of ETH */
+#define PFDREC_FRAME_SIZE_TRC_ETH (16)
+/*! @~english The size of the record frame of ETC_WATCH */
+#define PFDREC_FRAME_SIZE_TRC_ETC_WATCH (16)
+/*! @~english The size of the record frame of ROB */
+#define PFDREC_FRAME_SIZE_TRC_ROB (16)
+/*! @~english The size of the record frame of EVAL */
+#define PFDREC_FRAME_SIZE_TRC_EVAL (16)
+/*! @~english The size of the record frame of OPT_BEACON_DOWN */
+#define PFDREC_FRAME_SIZE_TRC_OPT_BEACON_DOWN (16)
+/*! @~english The size of the record frame of OPT_BEACON_UP */
+#define PFDREC_FRAME_SIZE_TRC_OPT_BEACON_UP (16)
+
+/**
+ * \~english The definition of the callback function.
+ */
+typedef void (*PFDREC_CALLBACK_FUNC)(RET_PFDREC_API result);
+
+/**
+ * \~english The definition of the record function status
+ */
+typedef enum _E_PFDREC_FUNC {
+ /*! @~english The record function is ON */
+ E_PFDREC_FUNC_ON = 0,
+ /*! @~english The record function is OFF */
+ E_PFDREC_FUNC_OFF
+}E_PFDREC_FUNC;
+
+/**
+ * \~english The definition of the category
+ */
+typedef enum _E_PFDREC_CATEGORY_TYPE {
+ /*! @~english The defination of PWR trace*/
+ E_PFDREC_CATEGORY_TRC_PWR = 0,
+ /*! @~english The defination of MODE trace */
+ E_PFDREC_CATEGORY_TRC_MODE,
+ /*! @~english The defination of KEY trace */
+ E_PFDREC_CATEGORY_TRC_KEY,
+ /*! @~english The defination of ERR trace */
+ E_PFDREC_CATEGORY_TRC_ERR,
+ /*! @~english The defination of CAN trace */
+ E_PFDREC_CATEGORY_TRC_CAN,
+ /*! @~english The defination of DAPS trace */
+ E_PFDREC_CATEGORY_TRC_DAPS,
+ /*! @~english The defination of DAPU trace */
+ E_PFDREC_CATEGORY_TRC_DAPU,
+ /*! @~english The defination of BT trace */
+ E_PFDREC_CATEGORY_TRC_BT,
+ /*! @~english The defination of BT_INTERNAL trace */
+ E_PFDREC_CATEGORY_TRC_BT_INTERNAL,
+ /*! @~english The defination of WIFI trace */
+ E_PFDREC_CATEGORY_TRC_WIFI,
+ /*! @~english The defination of WIFI_INTERNAL trace */
+ E_PFDREC_CATEGORY_TRC_WIFI_INTERNAL,
+ /*! @~english The defination of CENTER trace */
+ E_PFDREC_CATEGORY_TRC_CENTER,
+ /*! @~english The defination of VERSION trace */
+ E_PFDREC_CATEGORY_TRC_VERSION,
+ /*! @~english The defination of DCM trace */
+ E_PFDREC_CATEGORY_TRC_DCM,
+ /*! @~english The defination of ETC trace */
+ E_PFDREC_CATEGORY_TRC_ETC,
+
+ /*! @~english The defination of USB_ETC trace */
+ E_PFDREC_CATEGORY_TRC_USB_ETC,
+ /*! @~english The defination of DSRC_UPLINK trace */
+ E_PFDREC_CATEGORY_TRC_DSRC_UPLINK,
+
+ /*! @~english The defination of _CWORD119_ trace */
+ E_PFDREC_CATEGORY_TRC__CWORD119_,
+ /*! @~english The defination of RADIO trace */
+ E_PFDREC_CATEGORY_TRC_RADIO,
+ /*! @~english The defination of USB_UNIT trace */
+ E_PFDREC_CATEGORY_TRC_USB_UNIT,
+ /*! @~english The defination of USB_API trace */
+ E_PFDREC_CATEGORY_TRC_USB_API,
+ /*! @~english The defination of ETH trace*/
+ E_PFDREC_CATEGORY_TRC_ETH,
+ /*! @~english The defination of ETC_WATCH trace */
+ E_PFDREC_CATEGORY_TRC_ETC_WATCH,
+ /*! @~english The defination of ROB trace */
+ E_PFDREC_CATEGORY_TRC_ROB,
+ /*! @~english The defination of EVAL trace */
+ E_PFDREC_CATEGORY_TRC_EVAL,
+ /*! @~english The defination of OPT_BEACON_DOWN trace */
+ E_PFDREC_CATEGORY_TRC_OPT_BEACON_DOWN,
+ /*! @~english The defination of OPT_BEACON_UP trace */
+ E_PFDREC_CATEGORY_TRC_OPT_BEACON_UP,
+
+ /*! @~english The defination of max value */
+ E_PFDREC_CATEGORY_TRC_MAX
+}E_PFDREC_CATEGORY_TYPE;
+
+/**
+ * \~english The definition of the trace data extraction mode
+ */
+typedef enum _E_PFDREC_EXTRACT_MODE {
+ /*! @~english The extraction mode is OFF */
+ E_PFDREC_EXTRACT_MODE_OFF = 0,
+ /*! @~english The extraction mode is ON */
+ E_PFDREC_EXTRACT_MODE_ON
+}E_PFDREC_EXTRACT_MODE;
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_FuncStartStop
+/// \~english @par Summary
+/// - Switch the ON/OFF status of the record function
+/// \~english @param [in] status The ON/OFF status of the record function\n
+/// Set the one of the following values.\n
+/// E_PFDREC_FUNC_ON(The record function is ON)\n
+/// E_PFDREC_FUNC_OFF(The record function is OFF)\n
+/// See E_PFDREC_FUNC.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available.
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument ON/OFF status is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to transmit synchronous message to MM Diag Recorder. [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When MM Diag Recorder failed to switch the function ON/OFF status. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Start or stop the transmission of record.
+/// - When the function is OFF, no data is executed even if the data recording API is called,
+/// and RET_PFDREC_NORMAL is returned.
+/// - Record the ON/OFF information into the backup memory.
+/// - Restore the retained value to the default E_PFDREC_FUNC_ON at +B OFF / factory shipment.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_FuncStartStop(E_PFDREC_FUNC status);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_DeleteData
+/// \~english @par Summary
+/// - Delete the recorded data.
+/// \~english @param [in] func callback function\n
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument callback function is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the session with the MM Diag Recorder has not been established yet. [RET_PFDREC_ERROR]
+/// - When the callback function of deletion end was already setted. [RET_PFDREC_ERROR]
+/// - When failed to regist the callback information to the dispatcher. [RET_PFDREC_ERROR]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to transmit asynchronous message to MM Diag Recorder. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - To delete the data recorded in the temporary buffer and nonvolatile memory.
+/// - The callback function specified by argument will be called when data deletion end.
+/// - typedef void (*DERC_CALLBACK_FUNC)( RET_PFDREC_API result);\n
+/// The deletion result is stored in the argument result when the callback function is called.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Method
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedAttachCallbackToDispatcher, FrameworkunifiedSendMsg
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_DeleteData(PFDREC_CALLBACK_FUNC func);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_DeleteIndividual
+/// \~english @par Summary
+/// - Delete the individual recorded data.
+/// \~english @param [in] category The category information of the trace data to record\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When the argument category is invalid in MM Diag recorder management information table. [RET_PFDREC_ERROR]
+/// - When the MM Diag Recorder failed to allocate memory for writting the recorded data. [RET_PFDREC_ERROR]
+/// - When failed to write the initialization date to ROM. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - To delete the individual data recorded in the temporary buffer and nonvolatile memory.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_DeleteIndividual(E_PFDREC_CATEGORY_TYPE category);
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_ComDataBackup
+/// \~english @par Summary
+/// - Record the trace data.
+/// \~english @param [in] category The category information of the trace data to record\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] time_info The time information.
+/// \~english @param [in] frame_num The number of frames of the trace data to record.
+/// \~english @param [in] data The trace data to record\n
+/// The size of the data buffer is the number of frames * 1 frame size,\n
+/// and should be secured by the caller.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument frame_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument frame_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When failed to get the message queue handle for transmission to MM Diag Recorder. [RET_PFDREC_ERROR]
+/// - When failed to the transmit asynchronous message. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Record the trace data into the buffer temporarily, and when the size of data in buffer reaches the maximum,
+/// move the data to ROM firstly.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Fire and Forget
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedAttachCallbackToDispatcher, FrameworkunifiedSendMsg
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_ComDataBackup(E_PFDREC_CATEGORY_TYPE category,
+ time_t time_info,
+ uint32_t frame_num,
+ uint8_t* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_ReadMemData
+/// \~english @par Summary
+/// - Read memory data.
+/// \~english @param [in] category The category information of the trace data to read\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] offset The start position of the frame to read\n
+/// The offset is 0, which means the earliest recorded data.
+/// \~english @param [in] read_num The number of the frames to read.
+/// \~english @param [out] data The readed trace data\n
+/// The size of the data buffer is the number of frames * 1 frame size,\n
+/// and should be secured by the caller.
+/// \~english @param [out] out_num The number of readed trace data.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - The argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - The argument read_num is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument read_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument read_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0 [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message. [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When the argument category is invalid in the record management information table of MM Diag recorder.
+/// [RET_PFDREC_ERROR]
+/// - When the MM Diag Recorder failed to allocate memory for reading out the recorded data. [RET_PFDREC_ERROR]
+/// - When the MM Diag Recorder failed in the process of reading the recorded data. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
+/// which is a supplier-specific service.
+/// - Read the number of recorded data from the position specified by offset.
+/// - When the end of the recorded data is reached, stop reading and return the number of readed data.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_ReadMemData(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t offset,
+ uint32_t read_num,
+ uint8_t* data,
+ uint32_t* out_num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_GetDataInfo
+/// \~english @par Summary
+/// - Get the information of the recorded data.
+/// \~english @param [in] category The category information\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [out] frame_num The number of the recorded frames.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument frame_num is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message. [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When the argument category is invalid in the record management information table of MM Diag recorder.
+/// [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
+/// which is a supplier-specific service.
+/// - Return the number of frames recorded in the record data area of the specified category.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_GetDataInfo(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t* frame_num);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_GetFuncStartStop
+/// \~english @par Summary
+/// - Get the ON/OFF status of the record function.
+/// \~english @param [out] status The ON/OFF status of the record function\n
+/// Set the one of the following values.\n
+/// E_PFDREC_FUNC_ON(The record function is ON)\n
+/// E_PFDREC_FUNC_OFF(The record function is OFF)\n
+/// See E_PFDREC_FUNC.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument ON/OFF status is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to transmit synchronous message to MM Diag Recorder. [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_GetFuncStartStop(E_PFDREC_FUNC* status);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_OutputData
+/// \~english @par Summary
+/// - Move the recorded data to ROM.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When MM Diag Recorder failed to move the recorded data to ROM. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Move the data recorded in the temporary buffer to the ROM.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_OutputData(void);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_ReadData
+/// \~english @par Summary
+/// - Read the recorded data from the specified position.
+/// \~english @param [in] category The category information of the trace data to read\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] unique_id The unique ID of the frame to start reading\n
+/// If the unique_id is invalid, return error and do not read.
+/// \~english @param [in] read_num The number of frames to read.
+/// \~english @param [out] data The readed data.\n
+/// The size of the data buffer is the number of frames * 1 frame size,\n
+/// and should be secured by the caller.
+/// \~english @param [out] out_num The number of the readed frames.
+/// \~english @param [out] end_unique_id The unique ID of the end of the readed data.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument out_num is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument end_unique_id is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument unique_id is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument read_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument read_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0 [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When the MM Diag Recorder failed in the process of reading the recorded data. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
+/// which is a supplier-specific service.
+/// - When the end of the recorded data is reached, stop reading and return the number of readed data.
+/// - Read the number of recorded data from the position specified by unique ID.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_ReadData(E_PFDREC_CATEGORY_TYPE category,
+ uint64_t unique_id,
+ uint32_t read_num,
+ uint8_t* data,
+ uint32_t* out_num,
+ uint64_t* end_unique_id);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_SearchData
+/// \~english @par Summary
+/// - Search the recorded data by the specified time information.
+/// \~english @param [in] category The information of category\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] time_info The time information is used to search in recorded data.\n
+/// If the time information is invalid, to return error and do not search.
+/// \~english @param [out] unique_id The unique ID
+/// \~english @param [out] data The result obtained by searching for the time information.\n
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument unique_id is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When setting search time information is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to trasmite the synchronization message. [RET_PFDREC_ERROR]
+/// - When the length of synchronous communication received is different from the already set length.
+/// [RET_PFDREC_ERROR]
+/// - When the argument category is invalid in MM Diag recorder management information table. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
+/// which is a supplier-specific service.
+/// - When the end of the recorded data is reached, stop reading and return the number of readed data.
+/// - If the recorded time information is invalid, to skip searching.\n
+/// Also, to make sure that the input argument time_info(note) is available for searching.\n
+/// (note)"1"(from 1970/1/1/0:00.01) or more.
+/// - The frame data more than the specified time could not be found, or \n
+/// If time_info is invalid, RET_PFDREC_ERROR will be returned.
+/// - For the categories which can be searched by time, see the searchable trace.
+/// - If the specified category is not searchable, RET_PFDREC_ERROR will be returned.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_SearchData(E_PFDREC_CATEGORY_TYPE category,
+ time_t time_info,
+ uint64_t* unique_id,
+ uint8_t* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_OpenSession
+/// \~english @par Summary
+/// - Establish a session with the MM Diag Recorder.
+/// \~english @param [in] h_app The application handle
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument h_app is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - If the message queue handle for transmission is not NULL\n
+/// (when the PFDREC_OpenSession has already been called) [RET_PFDREC_ERROR]
+/// - When failed to generate a message queue handle for transmission. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Establish a session with the MM Diag Recorder.
+/// - The API should be called before calling the following APIs of the MM Diag Record function.\n
+/// PFDREC_FuncStartStop\n
+/// PFDREC_DeleteData\n
+/// PFDREC_ReadMemData\n
+/// PFDREC_GetDataInfo\n
+/// PFDREC_GetFuncStartStop\n
+/// PFDREC_OutputData\n
+/// PFDREC_ReadData\n
+/// PFDREC_SearchData\n
+/// PFDREC_SetExtractionMode\n
+/// PFDREC_SetExtractionMode_Exp\n
+/// PFDREC_SearchDataY2K38\n
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_FuncStartStop, PFDREC_DeleteData, PFDREC_ReadMemData, PFDREC_GetDataInfo, \n
+/// PFDREC_GetFuncStartStop, PFDREC_OutputData, PFDREC_ReadData, PFDREC_SearchData, \n
+/// PFDREC_SetExtractionMode, PFDREC_SetExtractionMode_Exp, PFDREC_SearchDataY2K38, \n
+/// PFDREC_CloseSession, FrameworkunifiedMcOpenSender
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_OpenSession(HANDLE h_app);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_CloseSession
+/// \~english @par Summary
+/// - Release the session with the MM Diag Recorder.
+/// \~english @param [in] h_app The application handle
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - When the session with MM Diag Recorder becomes unnecessary.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument h_app is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to close the message queue transmission handle. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Release the session with the MM Diag Recorder.
+/// - To call the API When the session with MM Diag Recorder becomes unnecessary.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedMcClose
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_CloseSession(HANDLE h_app);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_OverwriteData
+/// \~english @par Summary
+/// - Overwrite and record the data of one frame to the specified offset.
+/// \~english @param [in] category The category information\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] offset The position to overwrite the frame data.\n
+/// The offset is 0, which means the earliest recorded data.
+/// \~english @param [in] data The frame data to be overwrite.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - Whe argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When failed to get the message queue handle for transmission to MM Diag Recorder. [RET_PFDREC_ERROR]
+/// - When failed to the transmit asynchronous message. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Overwrite and record the data of one frame to the specified offset.
+/// - When the frame data specified by offset is not exist, RET_PFDREC_ERROR will be returned.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Fire and Forget
+/// \~english @see McOpenSender, McSend
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_OverwriteData(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t offset,
+ uint8_t* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_SetExtractionMode
+/// \~english @par Summary
+/// - Switch the trace data extraction mode.
+/// \~english @param [in] category The category information\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] mode The information of the trace data extraction mode.\n
+/// See E_PFDREC_EXTRACT_MODE.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument mode is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When MM Diag Recorder failed to switch the trace data extraction mode. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - Switch the trace data extraction mode.
+/// - Save the trace data to the extraction area during the extraction mode is ON.\n
+/// - When the size of the recorded extraction data reaches the maximum,\n
+/// to discard the next data.
+/// - And when the extraction mode switched from ON to OFF, write the data to the temporary buffer are.
+/// - For the categories which the trace data extraction mode is effective,\n
+/// See 3.4.1.2.8 The switchable trace in trace data extraction mode.
+/// - If you specify something other than a valid category, RET_PFDREC_ERROR will be returned.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_SetExtractionMode(const E_PFDREC_CATEGORY_TYPE category,
+ const E_PFDREC_EXTRACT_MODE mode);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_SetExtractionMode_Exp
+/// \~english @par Summary
+/// - Switch the trace data extraction mode.(The AppDataReporting service, which is a supplier-specific service)
+/// \~english @param [in] category The category information\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] mode The information of the trace data extraction mode.\n
+/// See E_PFDREC_EXTRACT_MODE.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument mode is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to the transmit synchronous message [RET_PFDREC_ERROR]
+/// - When the length of the recieved synchronous message is different from the length of the buffer.
+/// [RET_PFDREC_ERROR]
+/// - When MM Diag Recorder failed to switch the trace data extraction mode. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the AppDataReporting service,\n
+/// which is a supplier-specific service.
+/// - Switch the trace data extraction mode.
+/// - Save the trace data to the extraction area during the extraction mode is ON.\n
+/// - When the size of the recorded extraction data reaches the maximum,\n
+/// to discard the next data.
+/// - And when the extraction mode switched from ON to OFF, write the data to the temporary buffer are.
+/// - For the categories which the trace data extraction mode is effective,\n
+/// See 3.4.1.2.8 The switchable trace in trace data extraction mode.
+/// - If you specify something other than a valid category, RET_PFDREC_ERROR will be returned.
+/// - If the data recorded is deleted from the diagnosis service, the request data recorded may not be obtained\n
+/// from the AppDataReporting service, which is a supplier-specific service.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_SetExtractionMode_Exp(const E_PFDREC_CATEGORY_TYPE category,
+ const E_PFDREC_EXTRACT_MODE mode);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_ComDataBackupY2K38
+/// \~english @par Summary
+/// - Record the trace data.
+/// \~english @param [in] category The category information of the trace data to record\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] time_info The time information.
+/// \~english @param [in] frame_num The number of frames of the trace data to record.
+/// \~english @param [in] data The trace data to record\n
+/// The size of the data buffer is the number of frames * 1 frame size,\n
+/// and should be secured by the caller.
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument frame_num is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument frame_num exceeds the upper limit value (100). [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When failed to get the message queue handle for transmission to MM Diag Recorder. [RET_PFDREC_ERROR]
+/// - When failed to the transmit asynchronous message. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed only from the diagnosis service.
+/// - The API is used to fix the problem of time beyond 2038, and the function is the same as the
+/// PFDREC_ComDataBackup function
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Fire and Forget
+/// \~english @see PFDREC_OpenSession, McOpenSender, McSend
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_ComDataBackupY2K38(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t time_info,
+ uint32_t frame_num,
+ uint8_t* data);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup PFDREC_SearchDataY2K38
+/// \~english @par Summary
+/// - Search the recorded data by the specified time information
+/// \~english @param [in] category The information of category\n
+/// See E_PFDREC_CATEGORY_TYPE.
+/// \~english @param [in] time_info The time information is used to search in recorded data.\n
+/// If the time information is invalid, to return error and do not search.
+/// \~english @param [out] unique_id The unique ID
+/// \~english @param [out] data The result obtained by searching for the time information.\n
+/// \~english @retval RET_PFDREC_NORMAL Success
+/// \~english @retval RET_PFDREC_ERROR Failure
+/// \~english @retval RET_PFDREC_ERR_ARGUMENTS Invalid parameter
+/// \~english @par Precondition
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// - The session with the MM Diag Recorder has been established.
+/// - The availablity of the NTFY_PFDRECThread_Availability is already TRUE.
+/// \~english @par Changes in internal status
+/// - There is no changes in internal status when the API is called.
+/// \~english @par Conditions of processing failure
+/// - When the argument data is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument unique_id is NULL. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When setting search time information is invalid. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the argument category is invalid [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the frame size of the argument category is 0. [RET_PFDREC_ERR_ARGUMENTS]
+/// - When the message queue handle for transmission is NULL. [RET_PFDREC_ERROR]
+/// - When failed to trasmite the synchronization message. [RET_PFDREC_ERROR]
+/// - When the length of synchronous communication received is different from the already set length.
+/// [RET_PFDREC_ERROR]
+/// - When the argument category is invalid in MM Diag recorder management information table. [RET_PFDREC_ERROR]
+/// \~english @par Details
+/// - The API is assumed to be executed from the diagnosis service and the AppDataReporting service,\n
+/// which is a supplier-specific service.
+/// - The API is used to fix the problem that the time more than 2038, \n
+/// and the function is same as the PFDREC_SearchData function.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @see PFDREC_OpenSession, FrameworkunifiedInvokeSync
+///
+/////////////////////////////////////////////////////////////////////////////////////
+RET_PFDREC_API PFDREC_SearchDataY2K38(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t time_info,
+ uint64_t* unique_id,
+ uint8_t* data);
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @}*/ // end of diag_record
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // DIAG_RECORD_LIBRARY_RECORD_API_INCLUDE_VEHICLE_SERVICE_PFDREC_API_H_
diff --git a/stub/diag_record/library_record_api/libDiagRecordAPI.ver b/stub/diag_record/library_record_api/libDiagRecordAPI.ver
new file mode 100644
index 00000000..6ce89fcc
--- /dev/null
+++ b/stub/diag_record/library_record_api/libDiagRecordAPI.ver
@@ -0,0 +1,44 @@
+/*
+ * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#
+# DiagRecordAPILib version script
+#
+{
+ global:
+ ### .text section ###
+ PFDREC_FuncStartStop;
+ PFDREC_DeleteData;
+
+ PFDREC_DeleteIndividual;
+ PFDREC_ComDataBackup;
+ PFDREC_ReadMemData;
+ PFDREC_GetDataInfo;
+ PFDREC_GetFuncStartStop;
+ PFDREC_OutputData;
+ PFDREC_ReadData;
+ PFDREC_SearchData;
+ PFDREC_OpenSession;
+ PFDREC_CloseSession;
+ PFDREC_OverwriteData;
+ PFDREC_SetExtractionMode;
+ PFDREC_ComDataBackupY2K38;
+ PFDREC_SearchDataY2K38;
+ ### .data section ###
+ local:
+ *;
+};
+
diff --git a/stub/diag_record/library_record_api/src/DiagRecordAPI.cpp b/stub/diag_record/library_record_api/src/DiagRecordAPI.cpp
new file mode 100644
index 00000000..b2c53635
--- /dev/null
+++ b/stub/diag_record/library_record_api/src/DiagRecordAPI.cpp
@@ -0,0 +1,178 @@
+/*
+ * @copyright Copyright (c) 2019-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "PFDREC_API.h"
+
+RET_PFDREC_API PFDREC_FuncStartStop(E_PFDREC_FUNC status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_DeleteData(PFDREC_CALLBACK_FUNC func) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_DeleteIndividual(E_PFDREC_CATEGORY_TYPE category) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_ComDataBackup(E_PFDREC_CATEGORY_TYPE category,
+ time_t time_info,
+ uint32_t frame_num,
+ uint8_t* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_ReadMemData(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t offset,
+ uint32_t read_num,
+ uint8_t* data,
+ uint32_t* out_num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_GetDataInfo(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t* frame_num) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_GetFuncStartStop(E_PFDREC_FUNC* status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_OutputData(void) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_ReadData(E_PFDREC_CATEGORY_TYPE category,
+ uint64_t unique_id,
+ uint32_t read_num,
+ uint8_t* data,
+ uint32_t* out_num,
+ uint64_t* end_unique_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_SearchData(E_PFDREC_CATEGORY_TYPE category,
+ time_t time_info,
+ uint64_t* unique_id,
+ uint8_t* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+RET_PFDREC_API PFDREC_OpenSession(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_CloseSession(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_OverwriteData(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t offset,
+ uint8_t* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_SetExtractionMode(const E_PFDREC_CATEGORY_TYPE category,
+ const E_PFDREC_EXTRACT_MODE mode) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_SetExtractionMode_Exp(const E_PFDREC_CATEGORY_TYPE category,
+ const E_PFDREC_EXTRACT_MODE mode) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_ComDataBackupY2K38(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t time_info,
+ uint32_t frame_num,
+ uint8_t* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
+
+RET_PFDREC_API PFDREC_SearchDataY2K38(E_PFDREC_CATEGORY_TYPE category,
+ uint32_t time_info,
+ uint64_t* unique_id,
+ uint8_t* data) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_PFDREC_NORMAL;
+}
diff --git a/stub/diag_record/library_record_thread/Makefile b/stub/diag_record/library_record_thread/Makefile
new file mode 100644
index 00000000..350cd90b
--- /dev/null
+++ b/stub/diag_record/library_record_thread/Makefile
@@ -0,0 +1,47 @@
+#
+# @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+######### installed library(*.a) #############
+INST_LIBS = libPFDRECThread
+
+######### install headers(*.h) #############
+INST_HEADERS += pfdrec_thread_ifc.h
+
+######### compiled sources #############
+libPFDRECThread_SRCS += pfdrec_thread.cpp
+
+######### add source path #############
+VPATH += ./src ./include/$(COMPONENT_NAME)
+
+######### add include path #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/stub
+CPPFLAGS += -I./../library_record_api/include
+
+######### add compile option #############
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+
+######### linked library (dynamic) #############
+LDFLAGS += -Wl,--no-undefined
+LDFLAGS += -Wl,--no-as-needed
+LDLIBS += -Wl,-Bdynamic -lstdc++
+
+include ../../stub.mk
diff --git a/stub/diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h b/stub/diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h
new file mode 100644
index 00000000..9592939d
--- /dev/null
+++ b/stub/diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h
@@ -0,0 +1,168 @@
+/*
+ * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef DIAG_RECORD_LIBRARY_RECORD_THREAD_INCLUDE_VEHICLE_SERVICE_PFDREC_THREAD_IFC_H_
+#define DIAG_RECORD_LIBRARY_RECORD_THREAD_INCLUDE_VEHICLE_SERVICE_PFDREC_THREAD_IFC_H_
+
+/**
+ * @file pfdrec_thread_ifc.h
+ * @brief diag_record thread header file
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup diag_record
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#include <native_service/frameworkunified_types.h>
+
+/**
+ * @class CPFDRECThread
+ * \~english @brief diag_record thread
+ * \~english @par Brief Introduction
+ * Class to provide the trace data record function
+ *
+ */
+class CPFDRECThread {
+ public:
+ /////////////////////////////////////////////////////////////////////////////////////
+ /// \ingroup CPFDRECThread
+ /// \~english @par Summary
+ /// Constructor of CPFDRECThread class.
+ /// \~english @param None
+ /// \~english @retval None
+ /// \~english @par Preconditions
+ /// - None.
+ /// \~english @par Change of the internal state
+ /// - The internal state is not changed.
+ /// \~english @par Causes of failures
+ /// None
+ /// \~english @par Classification
+ /// Public
+ /// \~english @par Type
+ /// None
+ /// \~english @par Detail
+ /// To generate a CPFDRECThread class. \n
+ /// Member variables initialize. \n
+ /// After the constructor, be sure to call Initialize method.
+ /// \~english @see ~CPFDRECThread, Initialize
+ ////////////////////////////////////////////////////////////////////////////////////
+ CPFDRECThread();
+
+ /////////////////////////////////////////////////////////////////////////////////////
+ /// \ingroup ~CPFDRECThread
+ /// \~english @par Summary
+ /// Destructor of CPFDRECThread class.
+ /// \~english @param None
+ /// \~english @retval None
+ /// \~english @par Preconditions
+ /// - None.
+ /// \~english @par Change of the internal state
+ /// - The internal state is not changed.
+ /// \~english @par Causes of failures
+ /// None
+ /// \~english @par Classification
+ /// Public
+ /// \~english @par Type
+ /// None
+ /// \~english @par Detail
+ /// To delete a CPFDRECThread class.
+ /// \~english @see CPFDRECThread
+ ////////////////////////////////////////////////////////////////////////////////////
+ virtual ~CPFDRECThread();
+
+ /////////////////////////////////////////////////////////////////////////////////////
+ /// \ingroup Initialize
+ /// \~english @par Summary
+ /// - Initialize diag_record thread.
+ /// \~english @param [in] h_app The application handle
+ /// \~english @retval eFrameworkunifiedStatusOK Success
+ /// \~english @retval eFrameworkunifiedStatusFail Failure
+ /// \~english @par Precondition
+ /// - BackupMgr is available.
+ /// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+ /// \~english @par Changes in internal status
+ /// - There is no changes in internal status when the API is called.
+ /// \~english @par Conditions of processing failure
+ /// - When fail to create TN_PFDRECTHREAD. [eFrameworkunifiedStatusFail]
+ /// \~english @par Details
+ /// - The API is assumed to be executed only from the SS_LoggerService.
+ /// - Initialize diag_record thread.
+ /// \~english @par Classification
+ /// - Public
+ /// \~english @par Type
+ /// - Sync
+ /// \~english @see FrameworkunifiedCreateChildThread, FrameworkunifiedStartChildThread
+ /////////////////////////////////////////////////////////////////////////////////////
+ EFrameworkunifiedStatus Initialize(HANDLE h_app);
+
+ /////////////////////////////////////////////////////////////////////////////////////
+ /// \ingroup Finalize
+ /// \~english @par Summary
+ /// - Finalize diag_record thread.
+ /// \~english @param [in] h_app The application handle
+ /// \~english @retval eFrameworkunifiedStatusOK Success
+ /// \~english @par Precondition
+ /// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+ /// - The diag_record thread is running.
+ /// \~english @par Changes in internal status
+ /// - There is no changes in internal status when the API is called.
+ /// \~english @par Conditions of processing failure
+ /// - None
+ /// \~english @par Details
+ /// - The API is assumed to be executed only from the SS_LoggerService.
+ /// - Finalize diag_record thread.
+ /// \~english @par Classification
+ /// - Public
+ /// \~english @par Type
+ /// - Sync
+ /// \~english @see FrameworkunifiedStopChildThread
+ /////////////////////////////////////////////////////////////////////////////////////
+ EFrameworkunifiedStatus Finalize(HANDLE h_app);
+
+ private:
+ EFrameworkunifiedStatus Start(HANDLE h_thread);
+ EFrameworkunifiedStatus Stop(HANDLE h_thread);
+
+ EFrameworkunifiedStatus SetFuncOnOff(HANDLE h_thread);
+ EFrameworkunifiedStatus GetFuncOnOff(HANDLE h_thread);
+ EFrameworkunifiedStatus DeleteData(HANDLE h_thread);
+
+ EFrameworkunifiedStatus DeleteIndividual(HANDLE f_hThread);
+ EFrameworkunifiedStatus ComDataBackup(HANDLE h_thread);
+ EFrameworkunifiedStatus ReadMemData(HANDLE h_thread);
+ EFrameworkunifiedStatus GetDataInfo(HANDLE h_thread);
+ EFrameworkunifiedStatus OutputData(HANDLE h_thread);
+ EFrameworkunifiedStatus ReadData(HANDLE h_thread);
+ EFrameworkunifiedStatus SearchData(HANDLE h_thread);
+ EFrameworkunifiedStatus OverwriteData(HANDLE h_thread);
+ EFrameworkunifiedStatus SetExtractMode(HANDLE h_thread);
+
+ HANDLE m_thread;
+};
+
+/** @}*/ // end of diag_record
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // DIAG_RECORD_LIBRARY_RECORD_THREAD_INCLUDE_VEHICLE_SERVICE_PFDREC_THREAD_IFC_H_
diff --git a/stub/diag_record/library_record_thread/src/pfdrec_thread.cpp b/stub/diag_record/library_record_thread/src/pfdrec_thread.cpp
new file mode 100644
index 00000000..164fcfbe
--- /dev/null
+++ b/stub/diag_record/library_record_thread/src/pfdrec_thread.cpp
@@ -0,0 +1,162 @@
+/*
+ * @copyright Copyright (c) 2019-2020 TOYOTA MOTOR CORPORATION.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "pfdrec_thread_ifc.h"
+
+CPFDRECThread::CPFDRECThread()
+: m_thread(NULL) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+}
+
+CPFDRECThread::~CPFDRECThread() {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+}
+
+EFrameworkunifiedStatus CPFDRECThread::Initialize(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+
+EFrameworkunifiedStatus CPFDRECThread::Finalize(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+
+EFrameworkunifiedStatus CPFDRECThread::Start(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::Stop(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::SetFuncOnOff(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::GetFuncOnOff(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::DeleteData(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::DeleteIndividual(HANDLE hThread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+
+EFrameworkunifiedStatus CPFDRECThread::ComDataBackup(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::ReadMemData(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::GetDataInfo(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::OutputData(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::ReadData(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::SearchData(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::OverwriteData(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+EFrameworkunifiedStatus CPFDRECThread::SetExtractMode(HANDLE h_thread) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}