summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-10-21 14:58:52 +0900
committertakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-10-21 14:58:52 +0900
commitd756ff8c38ba9bc769e24dc382a6ac60fbdaee15 (patch)
tree7e62b402749422519f3b4bf118e5ad3c02c44688
parent706ad73eb02caf8532deaf5d38995bd258725cb8 (diff)
-rw-r--r--clock/LICENSE177
-rw-r--r--clock/Makefile.client19
-rw-r--r--clock/client_clock/Makefile45
-rw-r--r--clock/client_clock/include/stub/Clock_API.h503
-rw-r--r--clock/client_clock/include/stub/clock_clock.h41
-rw-r--r--clock/client_clock/libClock_API.ver29
-rw-r--r--clock/client_clock/src/Clock_API.cpp118
-rw-r--r--clock/client_display_time/Makefile47
-rw-r--r--clock/client_display_time/include/stub/DTime_Api.h916
-rw-r--r--clock/client_display_time/include/stub/clock_display_time.h42
-rw-r--r--clock/client_display_time/include/stub/clock_notifications.h46
-rw-r--r--clock/client_display_time/libDTime_Api.ver31
-rw-r--r--clock/client_display_time/src/DTime_Api.cpp246
-rw-r--r--clock/localtime/Makefile49
-rw-r--r--clock/localtime/zoneinfo_base232
-rw-r--r--communication_subcpu/LICENSE177
-rw-r--r--communication_subcpu/Makefile19
-rw-r--r--communication_subcpu/client/Makefile43
-rw-r--r--communication_subcpu/client/include/stub/CommSubCpu_API.h266
-rw-r--r--communication_subcpu/client/include/stub/com_message_header.h65
-rw-r--r--communication_subcpu/client/src/CommSubCpu_API.cpp57
-rw-r--r--communication_usb/LICENSE177
-rw-r--r--communication_usb/Makefile19
-rw-r--r--communication_usb/client/Makefile43
-rw-r--r--communication_usb/client/include/stub/commusb_api.h186
-rw-r--r--communication_usb/client/include/stub/commusb_notifications.h56
-rw-r--r--communication_usb/client/src/commusb_api.cpp33
-rw-r--r--diag_code/LICENSE177
-rw-r--r--diag_code/Makefile18
-rw-r--r--diag_code/library/Makefile51
-rw-r--r--diag_code/library/include/stub/DIAGCODE.h46
-rw-r--r--diag_code/library/include/stub/DiagCodeAPI.h1226
-rw-r--r--diag_code/library/include/stub/ss_diag.h24
-rw-r--r--diag_code/library/libDiagCodeAPI.ver64
-rw-r--r--diag_code/library/src/DiagCodeAPI.cpp202
-rw-r--r--diag_code/library_dummy_dccc/Makefile46
-rw-r--r--diag_code/library_dummy_dccc/include/stub/DIAG_API_DCCC.h109
-rw-r--r--diag_code/library_dummy_dccc/src/DIAG_API_DCCC.cpp64
-rw-r--r--diag_record/LICENSE177
-rw-r--r--diag_record/Makefile19
-rw-r--r--diag_record/library_dummy_drec/Makefile48
-rw-r--r--diag_record/library_dummy_drec/include/stub/MM_DREC_API.h2203
-rw-r--r--diag_record/library_dummy_drec/src/MM_DREC_API.cpp450
-rw-r--r--diag_record/library_record_api/Makefile47
-rw-r--r--diag_record/library_record_api/include/stub/PFDREC_API.h975
-rw-r--r--diag_record/library_record_api/libDiagRecordAPI.ver44
-rw-r--r--diag_record/library_record_api/src/DiagRecordAPI.cpp178
-rw-r--r--diag_record/library_record_thread/Makefile47
-rw-r--r--diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h168
-rw-r--r--diag_record/library_record_thread/src/pfdrec_thread.cpp162
-rw-r--r--memory_gpio_access_library/LICENSE177
-rw-r--r--memory_gpio_access_library/Makefile20
-rw-r--r--memory_gpio_access_library/client/Makefile44
-rw-r--r--memory_gpio_access_library/client/include/stub/el_gpio.h802
-rw-r--r--memory_gpio_access_library/client/include/stub/el_mem.h396
-rw-r--r--memory_gpio_access_library/client/src/el_gpio.c79
-rw-r--r--memory_gpio_access_library/client/src/el_mem.c73
-rw-r--r--stub.mk42
-rw-r--r--vehicle/LICENSE177
-rw-r--r--vehicle/Makefile19
-rw-r--r--vehicle/client/Makefile60
-rw-r--r--vehicle/client/include/stub/Vehicle_API.h298
-rw-r--r--vehicle/client/include/stub/Vehicle_Sensor_Common_API.h502
-rw-r--r--vehicle/client/include/stub/vehicle_notifications.h48
-rw-r--r--vehicle/client/libVehicle_API.ver28
-rw-r--r--vehicle/client/src/Vehicle_API.cpp43
66 files changed, 13035 insertions, 0 deletions
diff --git a/clock/LICENSE b/clock/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/clock/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/clock/Makefile.client b/clock/Makefile.client
new file mode 100644
index 00000000..e4696332
--- /dev/null
+++ b/clock/Makefile.client
@@ -0,0 +1,19 @@
+#
+# @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.
+#
+
+SUBDIRS := client_clock client_display_time
+
+include ../stub.mk
diff --git a/clock/client_clock/Makefile b/clock/client_clock/Makefile
new file mode 100644
index 00000000..9124b7d9
--- /dev/null
+++ b/clock/client_clock/Makefile
@@ -0,0 +1,45 @@
+#
+# @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 = libClock_API
+
+######### install headers(*.h) #############
+INST_HEADERS = Clock_API.h clock_clock.h
+
+######### compiled sources #############
+libClock_API_SRCS = Clock_API.cpp
+
+######### add source path #############
+VPATH += ./src ./include/stub
+
+######### add include path #############
+CPPFLAGS += -I./include
+
+######### add compile option #############
+LDFLAGS += -Wl,--no-undefined
+LDFLAGS += -Wl,--no-as-needed
+
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+
+######### linked library (dynamic) #############
+
+include ../../stub.mk
diff --git a/clock/client_clock/include/stub/Clock_API.h b/clock/client_clock/include/stub/Clock_API.h
new file mode 100644
index 00000000..375354e3
--- /dev/null
+++ b/clock/client_clock/include/stub/Clock_API.h
@@ -0,0 +1,503 @@
+/*
+ * @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 Clock_API.h
+ * @brief System community functions header file.
+ */
+
+/*******************************************************************************
+* $Header:: $
+* $Revision:: $
+*******************************************************************************/
+
+ /******************************************************************************
+ * file name : Clock_API.h
+ * system name : PND-A
+ * sub system name : system common function group header file
+ * program name :
+****************************************************************************/
+#ifndef CLOCK_CLIENT_CLOCK_INCLUDE_VEHICLE_SERVICE_CLOCK_API_H_
+#define CLOCK_CLIENT_CLOCK_INCLUDE_VEHICLE_SERVICE_CLOCK_API_H_
+
+#include <time.h>
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup clock
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \~english The time corrected by GPS.
+ */
+#define CLOCK_CORRECTED_TIME (0U)
+
+/**
+ * \~english The time not corrected by GPS.
+ */
+#define CLOCK_NOT_CORRECTED_TIME (1U)
+
+/**
+ * \~english The time synchronized by GPS RTC.
+ */
+#define CLOCK_RTC_TIME (2U)
+
+/**
+ * \~english GPS time error.
+ */
+#define CLOCK_INVALID_TIME (3U)
+
+/**
+ * \~english The max size memory for time zone.
+ */
+#define TIME_ZONE_MAX_SIZE 256
+
+/**
+ * \~english Return value define.
+ */
+typedef enum tagCLOCK_RETURN {
+ CLOCK_OK, //!< \~english Return successful
+ CLOCK_ERROR, //!< \~english Return failed
+ CLOCK_ERROR_ARGUMENTS //!< \~english Arguments error
+} CLOCK_RETURN;
+/*
+ data type definition
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ \~english API function prototype defined
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * \ingroup Clock_getSystemTime
+ * \~english @par Brief
+ * - Get the system time.
+ * \~english @param [out] time Store system time data
+ * \~english @param [out] status Store time data status\n
+ * Time status:\n
+ * Valid time : CLOCK_CORRECTED_TIME\n
+ * Invalid time: CLOCK_INVALID_TIME\n
+ * NOTE:When can't communication with Clock service, return "CLOCK_INVALID_TIME"
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The argument used for store system time data is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The argument used for store time data status is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - Get system time error. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return after call end), please check it when used the API.
+ * - Call this API to get the system time and status.
+ * - NOTE:Local time can be got by calling Clock_getLocalTime which parameter is the result of this API.
+ * - The time returned by calling this API is UTC time, its range is from\n
+ * "1970-01-01 00:00:00" to "2038-01-19 03:14:07".
+ * - Clock_getSystemTimeY2K38 can be used to get time later than "2038-01-19 03:14:08".
+ * - Result : "System time and time status" to "System time and status" will be stored in arguments.
+ * \~english @see Clock_getLocalTime, Clock_getSystemTimeY2K38, McOpenSender,\n
+ * McCreateInvokerName, McOpenSyncReceiver, McInvokeSync
+ */
+CLOCK_RETURN Clock_getSystemTime(struct timespec* time, uint8_t* status);
+
+/**
+ * \ingroup Clock_getLocalTime
+ * \~english @par Brief
+ * - Get the local time.
+ * \~english @param [in] base_time Pointer to store base time(seconds)
+ * \~english @param [out] local_time Pointer to store local time
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The argument used to store base time(seconds) is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The argument used to store local time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - Get local time failed. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call this API to get local time.
+ * - The time returned by calling this API is UTC time, its range is from\n
+ * "1970-01-01 00:00:00" to "2038-01-19 03:14:07".
+ * - Clock_getSystemTimeY2K38 can be used to get time later than "2038-01-19 03:14:08".
+ * - Result : Local time will be stored in arguments.
+ * - tm which is changed base on base_time will be returned when the timezone is not set.
+ * \~english @see Clock_getSystemTime, Clock_getSystemTimeY2K38
+ */
+CLOCK_RETURN Clock_getLocalTime(const time_t* base_time, struct tm* local_time);
+
+/**
+ * \ingroup Clock_CnvSecToDate
+ * \~english @par Brief
+ * - Convert specified elapsed seconds to date and time.\n
+ * The specified elapsed seconds are regarded as elapsed time from 1970/01/01 00:00:00.
+ * \~english @param [in] timep The pointer to store the seconds
+ * \~english @param [out] result The pointer to store date time
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The pointer used to store the seconds from base date time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The pointer used to store the date time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - Convert the seconds from base date time to date time failed. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call this API to convert the seconds which is "1970-01-01 00:00:00" to date time.
+ * - The time returned by calling this API is UTC time, its range is from\n
+ * "1970-01-01 00:00:00" to "2038-01-19 03:14:07".
+ * - Clock_getSystemTimeY2K38 can be used to get time later than "2038-01-19 03:14:08".
+ * - Result :Convert the seconds to date time. The seconds is from "1970-01-01 00:00:00".
+ * \~english @see Clock_CnvDateToSec, Clock_CnvSecToDateY2K38
+ */
+CLOCK_RETURN Clock_CnvSecToDate(const time_t* timep, struct tm *result);
+
+/**
+ * \ingroup Clock_CnvDateToSec
+ * \~english @par Brief
+ * - Convert specified date and time to elapsed seconds from 1970/01/01 00:00:00.
+ * \~english @param [in] tm The pointer to store date time to convert
+ * \~english @param [out] result The pointer to store seconds from base time
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The pointer used to store the date time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The pointer used to store the seconds from base date time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call this API to convert the seconds which from "1970-01-01 00:00:00" to date time.
+ * - The API is used when UTC time is in the range from "1970-01-01 00:00:00" to "2038-01-19 03:14:07".
+ * - For more then "2038-01-19 03:14:08", please use Clock_CnvDateToSecY2K38.
+ * - Result : Convert date time to seconds from "1970-01-01 00:00:00".
+ * \~english @see Clock_CnvSecToDate, Clock_CnvDateToSecY2K38
+ */
+CLOCK_RETURN Clock_CnvDateToSec(const struct tm* tm, time_t* result);
+
+/**
+ * \ingroup Clock_setUserTime
+ * \~english @par Brief
+ * - Set the display time when GPS synchronization setting is off.
+ * \~english @param [in] user_time The pointer to store the time(second from base time)
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The pointer used to store the time from base date time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - Get thread name of caller failed. [CLOCK_ERROR]
+ * - Get handle of Clock service message queue failed. [CLOCK_ERROR]
+ * - Generate message queue name for sync call failed. [CLOCK_ERROR]
+ * - Generate message queue for receiving failed. [CLOCK_ERROR]
+ * - Message sync communicate failed. [CLOCK_ERROR]
+ * - Message buffer received sync communicate message is error. [CLOCK_ERROR]
+ * - Clock service handle failed. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - This API called for user set time to user time when GPS corrected off.
+ * - Result : Set user time when GPS corrected off.
+ * \~english @see Clock_getUserTime, Clock_addUserTimeOffset, McOpenSender,\n
+ * McCreateInvokerName, McOpenSyncReceiver, McInvokeSync
+ */
+CLOCK_RETURN Clock_setUserTime(const time_t* user_time);
+
+/**
+ * \ingroup Clock_getUserTime
+ * \~english @par Brief
+ * - Get the display time when GPS synchronization setting is off.
+ * \~english @param [out] user_time The pointer to store the time(second from base time)
+ * \~english @param [out] status The pointer to store time status\n
+ * time status\n
+ * Valid time: CLOCK_CORRECTED_TIME\n
+ * Invalid time: CLOCK_INVALID_TIME\n
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When GPS corrected off, the pointer to store user time date is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The pointer to store time status is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The caller thread name get failed. [CLOCK_ERROR]
+ * - Get Clock service message queue handle failed. [CLOCK_ERROR]
+ * - Generate message queue name for sync call failed. [CLOCK_ERROR]
+ * - Generate message queue handle for sync call failed. [CLOCK_ERROR]
+ * - Message sync communicate failed. [CLOCK_ERROR]
+ * - Message buffer received sync communicate message is error. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call the API, can get the status for user time invalid or valid, when GPS corrected off.
+ * - Note : Get local time, use Clock_getLocalTIme with arguments.\n
+ * The API used to get user time when GPS corrected off.
+ * - Result : Get user time when GPS corrected off.
+ * \~english @see Clock_setUserTime, Clock_addUserTimeOffset, Clock_getLocalTime,\n
+ * McOpenSender, McCreateInvokerName, McOpenSyncReceiver, McInvokeSync
+ */
+CLOCK_RETURN Clock_getUserTime(time_t* user_time, uint8_t* status);
+
+/**
+ * \ingroup Clock_addUserTimeOffset
+ * \~english @par Brief
+ * - Adjust the display time when GPS synchronization setting is off.
+ * \~english @param [in] offset The pointer to store offset for add(sub) user time.\n
+ * Note : Member has limit as follow. \n
+ * int tm_hour: hour(-12 to 12)\n
+ * int tm_min : minute(-59 to 59)\n
+ * year, month, day, second and so on not used, please set 0.
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The pointer to store offset for add(sub) user time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_sec set second not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_mday set day not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_mon set month not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_year set year not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_wday set day in week not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_yday set day in year not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_isdst set daylight save time not 0. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_hour set hour bigger then 12. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_hour set hour smaller then -12. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_min set minute bigger then 59. [CLOCK_ERROR_ARGUMENTS]
+ * - The parameter offset->tm_min set minute smaller then -59. [CLOCK_ERROR_ARGUMENTS]
+ * - The caller thread name get failed. [CLOCK_ERROR]
+ * - Get Clock service message queue handle failed. [CLOCK_ERROR]
+ * - Generate message queue name for sync call failed. [CLOCK_ERROR]
+ * - Generate message queue handle for sync call failed. [CLOCK_ERROR]
+ * - Message sync communicate failed. [CLOCK_ERROR]
+ * - Clock service handle failed. [CLOCK_ERROR]
+ * - Message buffer received sync communicate message is error. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - The API used for add(sub) user time when user set GPS correct off.
+ * - Result : User time add(sub) offset when GPS correct off.
+ * \~english @see Clock_setUserTime, Clock_getUserTime, McOpenSender, McCreateInvokerName,\n
+ * McOpenSyncReceiver, McInvokeSync
+ */
+CLOCK_RETURN Clock_addUserTimeOffset(const struct tm* offset);
+
+/* Clock_getSystemTimeY2K38 can be used to get time later than "2038-01-19 03:14:08"(UTC). */
+/**
+ * \ingroup Clock_getSystemTimeY2K38
+ * \~english @par Brief
+ * - Get the system time(2038 issue fixed).
+ * \~english @param [out] time Store system time data
+ * \~english @param [out] status Store time data status\n
+ * Time status:\n
+ * Valid time : CLOCK_CORRECTED_TIME\n
+ * Invalid time: CLOCK_INVALID_TIME\n
+ * Note : When can't communication with Clock service, return "CLOCK_INVALID_TIME".
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the storage area of the system time data is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - When the time data status storage area is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - In case of system time acquisition failure. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call the API, can get the status for system time invalid or valid.
+ * - Get local time, use Clock_getLocalTIme with arguments. The API used to get system time.
+ * - The API is used when UTC time is in the range from "1970-01-01 00:00:00" to "2016-01-19 03:14:07".
+ * - Result : System time and time status will be stored in arguments.
+ * \~english @see Clock_getSystemTime, Clock_getLocalTimeY2K38, McOpenSender,\n
+ * McCreateInvokerName, McOpenSyncReceiver, McInvokeSync
+ */
+CLOCK_RETURN Clock_getSystemTimeY2K38(uint32_t* time, uint8_t* status);
+
+/**
+ * \ingroup Clock_getLocalTimeY2K38
+ * \~english @par Brief
+ * - Get the local time(2038 issue fixed).
+ * \~english @param [in] base_time Pointer to store base time(seconds)
+ * \~english @param [out] local_time Pointer to store local time
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - The argument used to store base time(seconds) is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The argument used to store local time is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - The argument named base_time bigger then up limit(4293400447) of fixed 2038 issue. [CLOCK_ERROR_ARGUMENTS]
+ * - Get local time failed. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call this API to get local time.
+ * - Return local time by add time zone information to base time.
+ * - The API is used when UTC time is in the range from "1970-01-01 00:00:00" to "2106-01-19 03:14:07".
+ * - The parameter base_time bigger then up limit(4293400447), convert error.
+ * - Also, this API does not support day of the week (Member tm_wday acquired always stores -1.)\n
+ * what the caller sought from year/nomth/data information.
+ * - Result : Local time will be stored in arguments.
+ * - If time zone not set, it will return change base_time type to tm
+ * \~english @see Clock_getLocalTime, Clock_getSystemTimeY2K38
+ */
+CLOCK_RETURN Clock_getLocalTimeY2K38(const uint32_t* base_time, struct tm* local_time);
+
+/**
+ * \ingroup Clock_CnvSecToDateY2K38
+ * \~english @par Brief
+ * - Convert specified elapsed seconds to date and time(2038 issue fixed).\n
+ * The specified elapsed seconds are regarded as elapsed time from 1970/01/01 00:00:00.
+ * \~english @param [in] time Pointer to the storage destination
+ * \~english @param [out] result Pointer to storage location of converted date/time
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR fail
+ * \~english @retval CLOCK_ERROR_ARGUMENTS arguments error
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the accumulated second storage area from the date conuting point to be converted is NULL.\n
+ * [CLOCK_ERROR_ARGUMENTS]
+ * - When the converted date/time storage area is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - When the regerence time (seconds) specified by the argument time is greater than\n
+ * the conuntermeasure upper limit value (4293400447) of the 2038 root problem. [CLOCK_ERROR_ARGUMENTS]
+ * - In case of a date/time conversion failure as a cumulative second from the specified date\n
+ * in the specified integration seconds. [CLOCK_ERROR]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call this API to convert the specified integration seconds to the date and\n
+ * time as the integration seconds from "1970-01-01 00:00:00" at the date conuting point.
+ * - The API is used when UTC time is in the range from "1970-01-01 00:00:00" to "2106-01-19 03:14:07".
+ * - If the argument time exceeds the above upper limit(4293400447), it can not be converted properly.
+ * - Also, this API does not support day of the week (Member tm_wday acquired always stores -1.)\n
+ * what the caller sought from year/nomth/data information.
+ * - Result: Converts the specified integration seconds to the date and time\n
+ * as the integration seconds from "1970-01-01 00:00:00" at the date conuting point.
+ * \~english @see Clock_CnvSecToDate, Clock_CnvDateToSecY2K38
+ */
+CLOCK_RETURN Clock_CnvSecToDateY2K38(const uint32_t* time, struct tm *result);
+
+/**
+ * \ingroup Clock_CnvDateToSecY2K38
+ * \~english @par Brief
+ * - Convert specified date and time to elapsed seconds from 1970/01/01 00:00:00.(2038 issue fixed)
+ * \~english @param [in] tm Pointer to the storage location of the date and time to be converted.
+ * \~english @param [out] result Pointer to storage detination of accumulated seconds from date counting point.
+ * \~english @retval CLOCK_OK success
+ * \~english @retval CLOCK_ERROR_ARGUMENTS Invalide parameter
+ * \~english @par Prerequisite
+ * - Clock service's availability is TRUE.
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the date time storage area to be converted is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - When the accumulated second storage area from the date conuting point is NULL. [CLOCK_ERROR_ARGUMENTS]
+ * - When the conversion result (result) is greater than the conuntermeasure upper\n
+ * limit value (4293400447) of the 2038 root problem. [CLOCK_ERROR_ARGUMENTS]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - The API is sync(return before call end), please check it when used the API.
+ * - Call this API to convert the specified time to integration seconds from "1970-01-01 00:00:00"\n
+ * (date conuting point).
+ * - The API is used when UTC time is in the range from "1970-01-01 00:00:00" to "2106-01-19 03:14:07".
+ * - The maximum value of result that can be obtained is 4293400447(sec).
+ * - Result: Converts the specified date and time to integration seconds from "1970-01-01 00:00:00"\n
+ * (date counting point).
+ * \~english @see Clock_CnvDateToSec, Clock_CnvSecToDateY2K38
+ */
+CLOCK_RETURN Clock_CnvDateToSecY2K38(const struct tm* tm, uint32_t* result);
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+/** @}*/ // end of clock
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // CLOCK_CLIENT_CLOCK_INCLUDE_VEHICLE_SERVICE_CLOCK_API_H_
diff --git a/clock/client_clock/include/stub/clock_clock.h b/clock/client_clock/include/stub/clock_clock.h
new file mode 100644
index 00000000..b1a1c99d
--- /dev/null
+++ b/clock/client_clock/include/stub/clock_clock.h
@@ -0,0 +1,41 @@
+/*
+ * @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.
+ */
+/**
+ * @file clock_clock.h
+ * @brief clock module of clock unit common header file.
+ */
+#ifndef VEHICLESERVICE_CLOCKCLOCK_H_ // NOLINT(build/header_guard) unit common special
+#define VEHICLESERVICE_CLOCKCLOCK_H_ // NOLINT(build/header_guard) unit common special
+
+#include <stub/Clock_API.h>
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup clock
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/** @}*/ // end of clock
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // VEHICLESERVICE_CLOCKCLOCK_H_
diff --git a/clock/client_clock/libClock_API.ver b/clock/client_clock/libClock_API.ver
new file mode 100644
index 00000000..b26c9cf2
--- /dev/null
+++ b/clock/client_clock/libClock_API.ver
@@ -0,0 +1,29 @@
+/*
+ * @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.
+ */
+
+#########################
+# libClock_API version script #
+#########################
+{
+ global:
+ ### .text section ###
+ Clock_*;
+ ### .data section ###
+ *clock_msg_handle;
+ local:
+ *;
+};
+
diff --git a/clock/client_clock/src/Clock_API.cpp b/clock/client_clock/src/Clock_API.cpp
new file mode 100644
index 00000000..360c7bf0
--- /dev/null
+++ b/clock/client_clock/src/Clock_API.cpp
@@ -0,0 +1,118 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include <stub/Clock_API.h>
+
+/* static variable definition */
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ function prototype
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+CLOCK_RETURN Clock_getSystemTime(struct timespec* time, uint8_t* status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_getLocalTime(const time_t* base_time, struct tm* local_time) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_CnvSecToDate(const time_t* timep, struct tm *result) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_CnvDateToSec(const struct tm* tm, time_t* result) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_setUserTime(const time_t* user_time) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_getUserTime(time_t* user_time, uint8_t* status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_addUserTimeOffset(const struct tm* offset) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_getSystemTimeY2K38(uint32_t* time, uint8_t* status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_getLocalTimeY2K38(const uint32_t* base_time, struct tm* local_time) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_CnvSecToDateY2K38(const uint32_t* time, struct tm *result) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
+
+CLOCK_RETURN Clock_CnvDateToSecY2K38(const struct tm* tm, uint32_t* result) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return CLOCK_OK;
+}
diff --git a/clock/client_display_time/Makefile b/clock/client_display_time/Makefile
new file mode 100644
index 00000000..48b2261d
--- /dev/null
+++ b/clock/client_display_time/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 = libDTime_Api
+
+######### install headers(*.h) #############
+INST_HEADERS = DTime_Api.h clock_notifications.h clock_display_time.h
+
+######### compiled sources #############
+libDTime_Api_SRCS = DTime_Api.cpp
+
+######### add source path #############
+VPATH += ./src ./include/stub
+
+######### add include path #############
+CPPFLAGS += -I./include
+
+######### add compile option #############
+LDFLAGS += -Wl,--no-undefined
+LDFLAGS += -Wl,--gc-sections
+LDFLAGS += -Wl,--no-as-needed
+
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+
+######### linked library (dynamic) #############
+
+include ../../stub.mk
diff --git a/clock/client_display_time/include/stub/DTime_Api.h b/clock/client_display_time/include/stub/DTime_Api.h
new file mode 100644
index 00000000..7a07d199
--- /dev/null
+++ b/clock/client_display_time/include/stub/DTime_Api.h
@@ -0,0 +1,916 @@
+/*
+ * @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 DTime_Api.h
+ * @brief display time middle API header file.
+ */
+#ifndef CLOCK_CLIENT_DISPLAY_TIME_INCLUDE_VEHICLE_SERVICE_DTIME_API_H_
+#define CLOCK_CLIENT_DISPLAY_TIME_INCLUDE_VEHICLE_SERVICE_DTIME_API_H_
+
+/****************************************************************************
+ * File name : DTime_Api.h
+ * System name :
+ * Sub system name : Display time middle API header
+ * Title : Data Header Files Required for Using Display Time Middle
+ ****************************************************************************/
+#include <native_service/frameworkunified_types.h>
+#include <stub/clock_notifications.h>
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup clock
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/**
+ * \~english commod ID (from display time middle)
+ */
+typedef enum _ClockServiceProtocol {
+ CID_DTIME_NOTIFY = 0x00000712, //!< \~english Display time notice
+} ClockServiceProtocol;
+
+/******************************************************************************
+* Structure : T_TimeData
+* Function : Time structure
+* Note : Stores the system/user time obtained from the Clock
+ *******************************************************************************/
+/**
+ * \~english Time structure T_TimeData, store system time/user time acquired from clock.
+ */
+typedef struct _tag_T_TimeData {
+ uint16_t Year; //!< \~english Year
+ uint8_t Month; //!< \~english Month
+ uint8_t Day; //!< \~english Day
+ uint8_t Hour; //!< \~english Hour
+ uint8_t Minute; //!< \~english Minute
+ uint8_t Second; //!< \~english Second
+ uint8_t rsv; //!< \~english Reserve
+} T_TimeData;
+
+/**
+ * \~english +(plus)
+ */
+#define DTIME_TIMEDIFF_SIGN_PLUSE FALSE
+/**
+ * \~english -(minus)
+ */
+#define DTIME_TIMEDIFF_SIGN_MINUS TRUE
+
+/**
+ * \~english Time zone structure.
+ */
+typedef struct _tag_T_TimeDiff {
+ BOOL Sign; //!< \~english Sign
+ uint8_t Hour_Diff; //!< \~english Time difference (hour)
+ uint8_t Minute_Diff; //!< \~english Time difference (minutes)
+ uint8_t rsv[2]; //!< \~english Reserve
+} T_TimeDiff;
+
+/**
+ * \~english Time offset setting structure.
+ */
+typedef struct _tag_T_TimeOffset {
+ int8_t Hour_Offset; //!< \~english Time difference (hour)
+ int8_t Minute_Offset; //!< \~english Time difference (minutes)
+ int8_t rsv[2]; //!< \~english Reserve
+} T_TimeOffset;
+
+/**
+ * \~english GPS automatic adjustment OFF (use system time).
+ */
+#define DTIME_SETTING_GPS_MANUAL FALSE
+
+/**
+ * \~english GPS automatic adjustment Auto (use display time when GPS correction OFF).
+ */
+#define DTIME_SETTING_GPS_AUTO TRUE
+
+/**
+ * \~english Notation in 12H.
+ */
+#define DTIME_SETTING_FORMAT_12H FALSE
+
+/**
+ * \~english Notation in 24H.
+ */
+#define DTIME_SETTING_FORMAT_24H TRUE
+
+/**
+ * \~english DST manual setting.
+ */
+#define DTIME_SETTING_DST_MANUAL FALSE
+
+/**
+ * \~english DST automatic setting.
+ */
+#define DTIME_SETTING_DST_AUTO TRUE
+
+/**
+ * \~english DST OFF
+ */
+#define DTIME_SETTING_DST_OFF FALSE
+
+/**
+ * \~english DST ON
+ */
+#define DTIME_SETTING_DST_ON TRUE
+
+/**
+ * \~english Time zone manual setting.
+ */
+#define DTIME_SETTING_TIMEZONE_MANUAL FALSE
+
+/**
+ * \~english Time zone automatic setting.
+ */
+#define DTIME_SETTING_TIMEZONE_AUTO TRUE
+
+/**
+ * \~english Display setting structure.
+ */
+typedef struct _tag_T_DisplaySetting {
+ BOOL GPS_Auto; //!< \~english GPS automatic setting
+ BOOL Format; //!< \~english 12H/24H display setting
+ BOOL DST_Auto; //!< \~english DST automatic settting
+ BOOL DST_Setting; //!< \~english DST_ON/OFF setting
+ BOOL TimeZone_Auto; //!< \~english Time zone automatic setting
+ T_TimeDiff TimeZone_Setting; //!< \~english Time zone time difference setting
+ T_TimeOffset TimeOffset; //!< \~english Time offset
+} T_DisplaySetting;
+
+/**
+ * \~english Display time invalid.
+ */
+#define DTIME_DISP_TIME_INVALID FALSE
+
+/**
+ * \~english Display time valid.
+ */
+#define DTIME_DISP_TIME_VALID TRUE
+
+/**
+ * \~english Invalid AM/PM.
+ */
+#define DTIME_DISP_MERIDIEM_INVALID 0
+
+/**
+ * \~english AM
+ */
+#define DTIME_DISP_MERIDIEM_AM 1
+
+/**
+ * \~english PM
+ */
+#define DTIME_DISP_MERIDIEM_PM 2
+
+/**
+ * \~english AM/PM unidentified in 12H display.
+ */
+#define DTIME_DISP_MERIDIEM_12H_INVALID 3
+
+/**
+ * \~english Display time structure.
+ */
+typedef struct _tag_T_DTimeData {
+ BOOL TimeValidity; //!< \~english Validity of time display
+ uint8_t Meridiem; //!< \~english AM/PM
+ uint16_t DYear; //!< \~english Display date(year)
+ uint8_t DMonth; //!< \~english Display date(month)
+ uint8_t DDay; //!< \~english Display date(day)
+ uint8_t DHour; //!< \~english Display time(hour)
+ uint8_t DMinute; //!< \~english Display time(minute)
+ uint8_t rsv; //!< \~english Reserve
+} T_DTimeData;
+
+/******************************************************************************
+* Structure : T_DTIME_MSG_NOTIFY_DTIME
+* Function : Display time notification transmission data structure
+* Note :
+ ******************************************************************************/
+/**
+ * \~english Display time notification transmission data structure T_DTIME_MSG_NOTIFY_DTIME.
+ */
+typedef struct _tag_T_DTIME_MSG_NOTIFY_DTIME {
+ T_DTimeData disp_time; //!< \~english Display time
+ T_DisplaySetting disp_setting; //!< \~english Display setting
+ T_TimeData org_time; //!< \~english Time(origin data)
+} T_DTIME_MSG_NOTIFY_DTIME;
+
+/******************************************************************************
+* Structure : T_DTIME_MSG_GPSTIME
+* Function : GPS time setting data structure
+* Note :
+ ******************************************************************************/
+/**
+ * \~english GPS UTC time setting structure.
+ */
+typedef struct _tag_T_DTIME_GPSTIME {
+ uint16_t year; //!< \~english Year
+ uint8_t month; //!< \~english Month
+ uint8_t date; //!< \~english Day
+ uint8_t hour; //!< \~english Hour
+ uint8_t minute; //!< \~english Minute
+ uint8_t second; //!< \~english Second
+ uint8_t reserved; //!< \~english Reserve
+} T_DTIME_GPSTIME;
+
+/**
+ * \~english Time uncalibrated after receiver reset.
+ */
+#define DTIME_GPS_STATUS_INVALID 0x00
+
+/**
+ * \~english Time output by RTC backup (with time calibration results).
+ */
+#define DTIME_GPS_STATUS_RTC 0x01
+
+/**
+ * \~english Time calibration completed.
+ */
+#define DTIME_GPS_STATUS_CORRECT 0x02
+
+/**
+ * \~english GPS time setting data structure.
+ */
+typedef struct _tag_T_DTIME_MSG_GPSTIME {
+ T_DTIME_GPSTIME utc; //!< \~english GPS UTC time
+ uint8_t tdsts; //!< \~english Date and time status
+ uint8_t reserve[3]; //!< \~english Reserve
+} T_DTIME_MSG_GPSTIME;
+
+/** Other definitions *********************************/
+/**
+ * \~english AM
+ */
+#define DTIME_SET_MERIDIEM_AM TRUE
+
+/**
+ * \~english PM
+ */
+#define DTIME_SET_MERIDIEM_PM FALSE
+
+/* Displayed Time Middle API Prototypes *************/
+/**
+ * \ingroup DTime_loadDisplaySetting
+ * \~english @par Brief
+ * - Load display settings.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Setting Display setting
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Display time is available after this API is called by SettingService.\n
+ * (It is assumed to call it only once at startup)
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When storage area of the display setting is NULL [eFrameworkunifiedStatusFail]
+ * - When the time difference(hour)specified by the argument Setting->TimeZone_Setting.Hour_Diff\n
+ * is greater than the time difference(hour)upper limit(13)[eFrameworkunifiedStatusFail]
+ * - Incorrect time difference(minutes)specified by argument Setting->TimeZone_Setting.Minute_Diff\n
+ * (when the value is not 0, 15, 30, 45). [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage synchronization communication fails. [eFrameworkunifiedStatusFail]
+ * - When processing of loading display setting fails in clock service. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - Since this API is synchronous processing(completion recovery),\n
+ * it should be used in consideration of this.
+ * - When display time is used before this API is called by SettingService,\n
+ * even if DTime_registListener_DisplayTime() is used, display time notification can not be received.
+ * - (Since clock service does not publish display time notification.)
+ * - With this API, the following is information necessary for calculation of\n
+ * display time can be collectively set to Clock service.
+ * - GPS automatic setting, 12H/24H display setting, DST setting, time zone setting, time offset.
+ * - Set the time offset to 0 when GPS correction is OFF.
+ * - If the display time distribution has already been regitered,\n
+ * the Clock service will publish the display time notification immediately when this API is called.
+ * \~english @see DTime_getDisplaySetting, DTime_regist_Listener_DisplayTime, FrameworkunifiedMcOpenSender, FrameworkunifiedInvokeSync
+ */
+EFrameworkunifiedStatus DTime_loadDisplaySetting(HANDLE h_app, T_DisplaySetting *setting); /* Load display setting */
+
+/**
+ * \ingroup DTime_getDisplaySetting
+ * \~english @par Brief
+ * - Load display settings.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Setting Display setting
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - This API should be called after DTime_loadDisplaySetting() is called.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When storage area of the display setting is NULL [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage synchronization communication fails. [eFrameworkunifiedStatusFail]
+ * - When message length received by synchronous communication\n
+ * and length of storage buffer are different. [eFrameworkunifiedStatusFail]
+ * - When display setting on Clock service side is not loaded. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Detail
+ * - Since this API is synchronous processing(completion recovery),\n
+ * it should be used in consideration of this.
+ * - This API assumes that the Diag service will use it to acquire time difference information etc.
+ * - With this API, you can acquire the information on the right set at display time.\n
+ * GPS automatic setiting, 12H/24H display setting, DST setting, time zone setting, time offse.
+ * \~english @see DTime_loadDisplaySetting, FrameworkunifiedMcOpenSender, FrameworkunifiedInvokeSync
+ */
+EFrameworkunifiedStatus DTime_getDisplaySetting(HANDLE h_app, T_DisplaySetting *setting); /* Get display setting */
+
+/**
+ * \ingroup DTime_setGpsTime
+ * \~english @par Brief
+ * - Set the GPS time on the clock.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] gps_time GPS data setting
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the setting of storage area set by the GPS data/time setting is NULL. [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called when the positioning service acquires/updates the GPS time.
+ * - Note : Do not use POS_RegisterListenerGPStime() from Clock service.
+ * - The GPS time notification command to the external clock is transmitted\n
+ * when this API is called.
+ * - With this API, GPS time can be set to clock function.
+ * GPS date and time (year, month, day, hour, minute, second)\n
+ * GPS date and time status\n
+ * 0 = Time not correct after receiver reset(time input or manager reset or CSF startup),\n
+ * 1 = RTC backup according to time output(actual result of time correction),\n
+ * 2 = Time correct done.
+ * \~english @see FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_setGpsTime(HANDLE h_app, T_DTIME_MSG_GPSTIME *gps_time); /* GPS time setting */
+
+/**
+ * \ingroup DTime_registerListener_DTime
+ * \~english @par Brief
+ * - Register delivery of display time notification.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] notifyName Delivery destination thread name. Note : Set it to 15 characters or less.
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the storage area specified by the destination thread name is NULL. [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - The maximum number of registered listeners is 20.
+ * - If listeners are registered more than once from the same thread, count as one listener.\n
+ * however, in this case, the display time notification is immediately issued.
+ * - With this API, delivery of this display time notification to the thread\n
+ * designated as the argument is started.
+ * - When this API call is called, if the display setting is not loaded,\n
+ * you can not calculate the display time, so do not deliver the display time notification.
+ * - When this API is called, if the display setting has already been loaded,\n
+ * the Clock service immediately issues a display time notification.
+ * - A message is notified with a command "CID_DTIME_NOTIFY" when display time is deliveried.
+ * - The client receives the data of the T_DTIME_MSG_NOTIFY_DTIME structure in the above delivery message.
+ * - Message communication uses interprocess communication by NSFW.
+ * - Specify ClockMng thread (TN_CLOCK_MNG) as the sender when registering callback for receiving display time.
+ * - Display time is not delivered until SettingService calls DTime_loadDisplaySetting.
+ * \~english @see DTime_UnregisterListener_DTime, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_registerListener_DTime(HANDLE h_app, PCSTR notify_name); /* Display time delivery registration */
+
+/**
+ * \ingroup DTime_UnregisterListener_DTime
+ * \~english @par Brief
+ * - Release delivery of display time notification.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] notifyName Delivery destination thread name. Note : Set it to 15 characters or less.
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the storage area specified by the destination thread name is NULL. [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - With this API, releasing delivery registration of display time notification\n
+ * to the thread specified as argument is canceled.
+ * - Especially when the nonresident service is registering for delivery,\n
+ * be sure to cancel registration with this API in termination processing.
+ * \~english @see DTime_registerListener_DTime, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_UnregisterListener_DTime(HANDLE h_app, PCSTR notify_name); /* Release display time delivery registration */
+
+/**
+ * \ingroup DTime_setAutoAdjust
+ * \~english @par Brief
+ * - Set GPS automatic adjustment.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Setting Display setting.\n
+ * DTIME_SETTING_GPS_AUTO: GPS automatic adjust AUTO(use display time when GPS correction OFF)\n
+ * DTIME_SETTING_GPS_MANUAL: GPS automatic adjust OFF(use of system time)
+ * \~english @param [in] Offset Time offset.\n
+ * GPS correction is ON: User set hour offset, minute offset.\n
+ * GPS correction is OFF: set zero
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the storage area of the time offset is NULL. [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, it is possible to switch the absolute time\n
+ * (GPS time or display time in the case of GPS correction off) which is the source of display time.
+ * - When GPS correction is OFF, count from the default time (2017/1/1 1:00).
+ * - When GPS correction OFF, set the time offset to zero and set the time\n
+ * offset with this API when GPS correction is ON.
+ * - When this API is called, if the display time distribution has already been refistered,\n
+ * the Clock service immediately issues a display time notification.
+ * - However, when an external clock is connected, the display time is not issued immediately\n
+ * and the display time is delivered at the timing of receiving the "Time notification".
+ * - When an external clock is connected, since the data master at the offset time\n
+ * becomes an external clock, the following processing is performed.
+ * - If the received time offset is
+ * - 1) When it is more than 1 hour ahead of the offset of the external clock \n
+ * -> Set to add 1 hour offsets to external clock.
+ * - 2) If it is less than 1 hour, 1 minute or more after the offset of the external clock \n
+ * -> Set to add 1 minute offsets to external clock.
+ * - 3) When it is more than -1 hour earlier of the offset of the external clock \n
+ * -> Set the external clock to subtract 1 hour offsets.
+ * - 4) When it is less than 1 hour or more than -1 minute from the offset of the external clock \n
+ * -> Set the external clock to subtract 1 minute offsets.
+ * - 5) When both hours and minutes are zero\n
+ * -> Set the external clock to clear zero.
+ * - Do not reflect changes in offset when GPS correction OFF<-->ON is switched.
+ * \~english @see FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_setAutoAdjust(HANDLE h_app, BOOL setting, T_TimeOffset *off_set); /* GPS automatic adjustment */
+
+/**
+ * \ingroup DTime_increaseHour
+ * \~english @par Brief
+ * - Adjust the time.
+ * \~english @param [in] hApp Application handle
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, display time can be increased by one hour. Set the display\n
+ * time in the case of GPS correction off used when GPS correction OFF is set.
+ * - Note : The time offset when GPS correction ON is set by DTime_setAutoAdjust.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered at\n
+ * the timing of receiving the "time notification".
+ * - When an external clock is connected, set the absolute time hour (+) instruction to\n
+ * the external clock with the "setting SW information notification" command.
+ * \~english @see DTime_decreaseHour, DTime_setAutoAdjust, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_increaseHour(HANDLE h_app); /* Adjust the time (hour increaase) */
+
+/**
+ * \ingroup DTime_decreaseHour
+ * \~english @par Brief
+ * - Adjust time (decrease hour by 1 hour).
+ * \~english @param [in] hApp Application handle
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, display time can be reduced by 1 hour. Set the display time\n
+ * in the case of GPS correction off used when GPS correction OFF is set.
+ * - Note : The time offset when GPS correction ON is set by DTime_setAutoAdjust.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * - When an external clock is connected, set the absolute time hour (-) instruction\n
+ * with the "setting SW information notification" command to the external clock.
+ * \~english @see DTime_increaseHour, DTime_setAutoAdjust, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_decreaseHour(HANDLE h_app); /* Adjust the time (hour decrease) */
+
+/**
+ * \ingroup DTime_increaseMinute
+ * \~english @par Brief
+ * - Adjust the time (increase time by 1 minute).
+ * \~english @param [in] hApp Application handle
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, display time can be increased by one minute. Set the display time\n
+ * in the case of GPS correction off used when GPS correction OFF is set.
+ * - Note : The time offset when GPS correction ON is set by DTime_setAutoAdjust.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * - When an external clock is connected, set the absolute time minute (+) instruction\n
+ * to the external clock with the "setting SW information notification" command.
+ * \~english @see DTime_decreaseMinute, DTime_setAutoAdjust, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_increaseMinute(HANDLE h_app); /* Adjust the time (minute increaase) */
+
+/**
+ * \ingroup DTime_decreaseMinute
+ * \~english @par Brief
+ * - Adjust the time (decrease time by 1 minute).
+ * \~english @param [in] hApp Application handle
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, display time can be reduced by 1 minute. Set the display time\n
+ * in the case of GPS correction off used when GPS correction OFF is set.
+ * - Note : The time offset when GPS correction ON is set by DTime_setAutoAdjust.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * - When an external clock is connected, set the absolute time minute (-) instruction\n
+ * with the "setting SW information notification" command to the external clock.
+ * \~english @see DTime_increaseMinute, DTime_setAutoAdjust, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_decreaseMinute(HANDLE h_app); /* Adjust the time (minute decrease) */
+
+/**
+ * \ingroup DTime_clearMinute
+ * \~english @par Brief
+ * - Adjust the time (set the time to 0 minute).
+ * \~english @param [in] hApp Application handle
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, the display time can be set to 0 minutes.
+ * - When the display time is 30 to 59 minutes, increase the display time by one hour\n
+ * and then set the display time to 0 minutes.
+ * - If the display time is 0 to 29 minutes, set the dispaly time to 0 minutes only.
+ * - Set the internal offset to be used when GPS correction OFF.
+ * - Note : The time offset when GPS correction ON is set by DTime_setAutoAdjust.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * - When an external clock is connected, set the absolute time minute (-) instruction\n
+ * with the "setting SW information notification" command to the external clock.
+ * \~english @see DTime_setAutoAdjust, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_clearMinute(HANDLE h_app); /* Adjust the time (minute clear) */
+
+/**
+ * \ingroup DTime_setAMPM
+ * \~english @par Brief
+ * - Set AM/PM.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Meridiem AM/PM setting\n
+ * AM : DTIME_SET_MERIDIEM_AM(TRUE)\n
+ * PM : DTIME_SET_MERIDIEM_PM(FALSE)
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When message asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, AM/PM of display time can be switched.
+ * - When PM is selected with the display time (Hour of T_DTimeData) set to\n
+ * AM (0 to 11 o'clock), the display time is +12h.
+ * - When AM is selected at the display time (Hour of T_DTimeData) at PM (12 to 23 o'clock),\n
+ * it makes -12h at display time.
+ * - Set the internal offset to be used when GPS correction OFF.
+ * - Note : The time offset when GPS correction ON is set by DTime_setAutoAdjust.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * \~english @see DTime_setAutoAdjust, FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_setAMPM(HANDLE h_app, BOOL meridiem); /* AM/PM setting */
+
+/**
+ * \ingroup DTime_setFormat
+ * \~english @par Brief
+ * - 12h/24h sets the display format.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Setting Display setting\n
+ * DTIME_SETTING_FORMAT_12H(FALSE): Notation in 12H\n
+ * DTIME_SETTING_FORMAT_24H(TRUE): Notation in 24H
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, it is possible to switch the display time 12H notation/24H notation.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * \~english @see FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_setFormat(HANDLE h_app, BOOL setting); /* format setting */
+
+/**
+ * \ingroup DTime_setTimeZone
+ * \~english @par Brief
+ * - Set the time zone.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Auto Time zone automatic setting\n
+ * DTIME_SETTING_TIMEZONE_AUTO (TRUE): Time zone automatic setting\n
+ * DTIME_SETTING_TIMEZONE_MANUAL (FALSE): Time zone manual setting
+ * \~english @param [in] Diff Time zone time difference setting
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the time zone time time difference setting storage area is NULL. [eFrameworkunifiedStatusFail]
+ * - When the time difference(hour)specified by the argument Diff->Hour_Diff\n
+ * is greater than the time difference(hour)upper limit value(13)[eFrameworkunifiedStatusFail]
+ * - When the time difference(minutes)specified by the argument Diff->Minute_Diff\n
+ * is incorrect (When the time difference (minutes) specified by the argument\n
+ * Diff->Minute_Diff is not 0, 15, 30, 45). [eFrameworkunifiedStatusFail]
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, you can set time zone automatic switching and time zone setting.
+ * - When this API is called, if the display time distribution has already been registered,\n
+ * the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * - Depending on the time zone automatic setting of the second argument, set the third argument as follows.
+ * - MANUAL: User's setting value.
+ * - MANUAL/AUTO Time zones update each time the time zone setting changes.
+ * - Note : When MANUAL, it is not necessary to call this API each time "TZ status notification" is received.
+ * \~english @see FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_setTimeZone(HANDLE h_app, BOOL b_auto, T_TimeDiff *diff); /* time zone setting */
+
+/**
+ * \ingroup DTime_setDST
+ * \~english @par Brief
+ * - Set DST.
+ * \~english @param [in] hApp Application handle
+ * \~english @param [in] Auto Time zone automatic setting\n
+ * DTIME_SETTING_DST_AUTO (TRUE): DST automatic setting\n
+ * DTIME_SETTING_DST_MANUAL (FALSE): DST manual setting
+ * \~english @param [in] Setting Time zone time difference setting
+ * DTIME_SETTING_DST_ON (TRUE)\n
+ * DTIME_SETTING_DST_OFF (FALSE)
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, you can compete for automatic switching of DST, and can set ON/OFF.
+ * - When this API is called, the Clock service immediately issues a display time notification.
+ * - Note : However, when there is an external clock, and after receiving the time notification command,\n
+ * the display time notification is not issued immediately, and the display time is delivered\n
+ * at the timing of receiving the "time notification".
+ * - Depending on the DST automatic setting of the second argument, set the third argument as follows.
+ * - MANUAL: User's setting value.
+ * - MANUAL/AUTO update each DST ON/OFF setting if there is a change.
+ * - Note : When MANUAL, it is not necessary to call this API each time "DST status notification" is received.
+ * \~english @see FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_setDST(HANDLE h_app, BOOL b_auto, BOOL setting); /* DST setting */
+
+/**
+ * \ingroup DTime_notifySwOff
+ * \~english @par Brief
+ * - Notify SW OFF information.
+ * \~english @param [in] h_app Application handle
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusFail fail(including parameter error)
+ * \~english @par Prerequisite
+ * - The availability of Clock service is TRUE.
+ * - Dispatcher for application is genereted/initialized(FrameworkunifiedCreateDispatcherWithoutLoop etc.).
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - When the generation of the message queue handle for transmission with\n
+ * the Clock service has failed. [eFrameworkunifiedStatusFail]
+ * - When messsage asynchronous communication fails. [eFrameworkunifiedStatusFail]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Fire and Forget
+ * \~english @par Detail
+ * - This API is assumed to be called by SettingService.
+ * - With this API, you can notify SW OFF informations of image operations to Extern clock(Meter Device).
+ * - Note : Do nothing while Extern clock doesn't exist.
+ * - After calling this API,the SW OFF will not be notified immediately,it will be notified while Meter exists.
+ * - while error occurs(API return eFrameworkunifiedStatusFail),need to recall this API.\n
+ * \n
+ * - Switch ON notification should be executed among the corresponding API of operations as followed.
+ * <table>
+ * <tr><th>API name(Switch ON notification) </th><th>OFF notification neccessary/unneccessary </th><th>note(reason of unneccessary)</th></tr>
+ * <tr><td>DTime_loadDisplaySetting </td><td>unneccessary </td><td>apart from button operation</td></tr>
+ * <tr><td>DTime_getDisplaySetting </td><td>unneccessary </td><td>apart from button operation</td></tr>
+ * <tr><td>DTime_setGpsTime </td><td>unneccessary </td><td>apart from button operation</td></tr>
+ * <tr><td>DTime_registerListener_DTime </td><td>unneccessary </td><td>apart from button operation</td></tr>
+ * <tr><td>DTime_UnregisterListener_DTime </td><td>unneccessary </td><td>apart from button operation</td></tr>
+ * <tr><td>DTime_setAutoAdjust </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_increaseHour </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_decreaseHour </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_increaseMinute </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_decreaseMinute </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_clearMinute </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_setAMPM </td><td>unneccessary </td><td>extern clock is unneccessary</td></tr>
+ * <tr><td>DTime_setFormat </td><td>neccessary </td><td></td></tr>
+ * <tr><td>DTime_setTimeZone </td><td>unneccessary </td><td>there is no extern clock SW ON/OFF notification</td></tr>
+ * <tr><td>DTime_setDST </td><td>unneccessary </td><td>there is no extern clock SW ON/OFF notification</td></tr>
+ * </table>
+ * \n
+ * \~english @see FrameworkunifiedMcOpenSender, FrameworkunifiedSendMsg
+ */
+EFrameworkunifiedStatus DTime_notifySwOff(HANDLE h_app); /* SW OFF notification */
+
+/** @}*/ // end of clock
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // CLOCK_CLIENT_DISPLAY_TIME_INCLUDE_VEHICLE_SERVICE_DTIME_API_H_
diff --git a/clock/client_display_time/include/stub/clock_display_time.h b/clock/client_display_time/include/stub/clock_display_time.h
new file mode 100644
index 00000000..1cf19dbc
--- /dev/null
+++ b/clock/client_display_time/include/stub/clock_display_time.h
@@ -0,0 +1,42 @@
+/*
+ * @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.
+ */
+/**
+ * @file clock_display_time.h
+ * @brief display time module of clock unit common header file.
+ */
+#ifndef VEHICLESERVICE_CLOCKDISPLAYTIME_H_ // NOLINT(build/header_guard) unit common special
+#define VEHICLESERVICE_CLOCKDISPLAYTIME_H_ // NOLINT(build/header_guard) unit common special
+
+#include <stub/DTime_Api.h>
+#include <stub/clock_notifications.h>
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup clock
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/** @}*/ // end of clock
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // VEHICLESERVICE_CLOCKDISPLAYTIME_H_
diff --git a/clock/client_display_time/include/stub/clock_notifications.h b/clock/client_display_time/include/stub/clock_notifications.h
new file mode 100644
index 00000000..29eb836c
--- /dev/null
+++ b/clock/client_display_time/include/stub/clock_notifications.h
@@ -0,0 +1,46 @@
+/*
+ * @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 clock_notifications.h
+ * @brief Notification names defined in the file.
+ */
+#ifndef CLOCK_CLIENT_DISPLAY_TIME_INCLUDE_VEHICLE_SERVICE_CLOCK_NOTIFICATIONS_H_
+#define CLOCK_CLIENT_DISPLAY_TIME_INCLUDE_VEHICLE_SERVICE_CLOCK_NOTIFICATIONS_H_
+
+#include <agl_thread.h>
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup clock
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/**
+ * \~english clock service availability notify.
+ */
+#define NTFY_Clock_Availability MN_CLOCK"/Availability"
+
+/** @}*/ // end of clock
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // CLOCK_CLIENT_DISPLAY_TIME_INCLUDE_VEHICLE_SERVICE_CLOCK_NOTIFICATIONS_H_
diff --git a/clock/client_display_time/libDTime_Api.ver b/clock/client_display_time/libDTime_Api.ver
new file mode 100644
index 00000000..47e22d46
--- /dev/null
+++ b/clock/client_display_time/libDTime_Api.ver
@@ -0,0 +1,31 @@
+/*
+ * @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.
+ */
+
+#########################
+# libDTime_Api version script #
+#########################
+{
+ global:
+ ### .text section ###
+ extern "C++" {
+ DTime_*;
+ };
+ ### .data section ###
+ *s_clock_hApp;
+ local:
+ *;
+};
+
diff --git a/clock/client_display_time/src/DTime_Api.cpp b/clock/client_display_time/src/DTime_Api.cpp
new file mode 100644
index 00000000..cf1f96b2
--- /dev/null
+++ b/clock/client_display_time/src/DTime_Api.cpp
@@ -0,0 +1,246 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include <stub/DTime_Api.h>
+#include <native_service/frameworkunified_framework_if.h>
+
+#define DTIME_PARAM_NG FALSE
+#define DTIME_PARAM_OK TRUE
+
+/******************************************************************************
+ * API name : DTime_loadDisplaySetting
+ * Function : Load display setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_loadDisplaySetting(HANDLE h_app, T_DisplaySetting *setting ) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_getDisplaySetting
+ * Function : Get display setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_getDisplaySetting(HANDLE h_app, T_DisplaySetting *setting ) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_setGpsTime
+ * Function : GPS time setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_setGpsTime(HANDLE h_app, T_DTIME_MSG_GPSTIME *gps_time ) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_registerListener_DTime
+ * Function : Display time delivery registration
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_registerListener_DTime(HANDLE h_app, PCSTR notify_name) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_UnregisterListener_DTime
+ * Function : Release time delivery registration
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_UnregisterListener_DTime(HANDLE h_app, PCSTR notify_name) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_setAutoAdjust
+ * Function : GPS auto adjust setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_setAutoAdjust(HANDLE h_app, BOOL setting, T_TimeOffset *offset) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_increaseHour
+ * Function : Adjust the time (hour increaase)
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_increaseHour(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_decreaseHour
+ * Function : Adjust the time (hour decrease)
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_decreaseHour(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_increaseMinute
+ * Function : Adjust the time (minute increaase)
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_increaseMinute(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_decreaseMinute
+ * Function : Adjust the time (minute decrease)
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_decreaseMinute(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_clearMinute
+ * Function : Adjust the time (minute clear)
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_clearMinute(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_setAMPM
+ * Function : AM/PM setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_setAMPM(HANDLE h_app, BOOL meridiem) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_setFormat
+ * Function : Format setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_setFormat(HANDLE h_app, BOOL setting ) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_setTimeZone
+ * Function : Time zone setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_setTimeZone(HANDLE h_app, BOOL b_auto, T_TimeDiff *diff ) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/******************************************************************************
+ * API name : DTime_setDST
+ * Function : DST setting
+ * Outline :
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_setDST(HANDLE h_app, BOOL b_auto, BOOL setting ) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+
+/******************************************************************************
+ * API name : DTime_notifySwOff
+ * Function : SW OFF notification
+ * Outline :
+ * Note : Used to notify the SW OFF of on-screen operations.
+ ******************************************************************************/
+EFrameworkunifiedStatus DTime_notifySwOff(HANDLE h_app) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
+/** Parameter check functions **/
+BOOL CheckParamTimeZone(T_TimeDiff *diff) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DTIME_PARAM_OK;
+}
diff --git a/clock/localtime/Makefile b/clock/localtime/Makefile
new file mode 100644
index 00000000..fc75dd8c
--- /dev/null
+++ b/clock/localtime/Makefile
@@ -0,0 +1,49 @@
+#
+# @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.
+#
+
+##
+## Makefile - Makefile for TimeZone file
+##
+
+ZONEINFDIR = $(DESTDIR)/usr/share/zoneinfo/
+ZONEINFLNK = /etc/
+ZONEINFDIR2 = $(DESTDIR)/etc/
+ZONEINFLNK2 = /tmp/bs/clock/
+ZONEINFFILE= localtime
+DSTDIR = $(ZONEINFDIR)DST
+CLEAN_DIRS = $(ZONEINFDIR)
+
+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
+
+install-data:
+ rm -rf $(ZONEINFDIR) ;\
+ mkdir -p $(DSTDIR) ;\
+ mkdir -p $(ZONEINFDIR2) ;
+
+## /usr/sbin/zic -d $(ZONEINFDIR) zoneinfo_base;
+ zic -d $(ZONEINFDIR) zoneinfo_base;
+
+ ln -f -s $(ZONEINFLNK)$(ZONEINFFILE) $(ZONEINFDIR)$(ZONEINFFILE); \
+ ln -f -s $(ZONEINFLNK2)$(ZONEINFFILE) $(ZONEINFDIR2)$(ZONEINFFILE)
+
+include ../../stub.mk
diff --git a/clock/localtime/zoneinfo_base b/clock/localtime/zoneinfo_base
new file mode 100644
index 00000000..944eabd3
--- /dev/null
+++ b/clock/localtime/zoneinfo_base
@@ -0,0 +1,232 @@
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule DST min max - Jan 1 0:00u 1:00 -
+
+# DST OFF
+# Zone NAME UTCOFF RULES FORMAT [UNTIL]
+Zone UTC-1345 -13:45 - UTC-13
+Zone UTC-1330 -13:30 - UTC-13
+Zone UTC-1315 -13:15 - UTC-13
+Zone UTC-1300 -13 - UTC-13
+Zone UTC-1245 -12:45 - UTC-12
+Zone UTC-1230 -12:30 - UTC-12
+Zone UTC-1215 -12:15 - UTC-12
+Zone UTC-1200 -12 - UTC-12
+Zone UTC-1145 -11:45 - UTC-11
+Zone UTC-1130 -11:30 - UTC-11
+Zone UTC-1115 -11:15 - UTC-11
+Zone UTC-1100 -11 - UTC-11
+Zone UTC-1045 -10:45 - UTC-10
+Zone UTC-1030 -10:30 - UTC-10
+Zone UTC-1015 -10:15 - UTC-10
+Zone UTC-1000 -10 - UTC-10
+Zone UTC-0945 -9:45 - UTC-9
+Zone UTC-0930 -9:30 - UTC-9
+Zone UTC-0915 -9:15 - UTC-9
+Zone UTC-0900 -9 - UTC-9
+Zone UTC-0845 -8:45 - UTC-8
+Zone UTC-0830 -8:30 - UTC-8
+Zone UTC-0815 -8:15 - UTC-8
+Zone UTC-0800 -8 - UTC-8
+Zone UTC-0745 -7:45 - UTC-7
+Zone UTC-0730 -7:30 - UTC-7
+Zone UTC-0715 -7:15 - UTC-7
+Zone UTC-0700 -7 - UTC-7
+Zone UTC-0645 -6:45 - UTC-6
+Zone UTC-0630 -6:30 - UTC-6
+Zone UTC-0615 -6:15 - UTC-6
+Zone UTC-0600 -6 - UTC-6
+Zone UTC-0545 -5:45 - UTC-5
+Zone UTC-0530 -5:30 - UTC-5
+Zone UTC-0515 -5:15 - UTC-5
+Zone UTC-0500 -5 - UTC-5
+Zone UTC-0445 -4:45 - UTC-4
+Zone UTC-0430 -4:30 - UTC-4
+Zone UTC-0415 -4:15 - UTC-4
+Zone UTC-0400 -4 - UTC-4
+Zone UTC-0345 -3:45 - UTC-3
+Zone UTC-0330 -3:30 - UTC-3
+Zone UTC-0315 -3:15 - UTC-3
+Zone UTC-0300 -3 - UTC-3
+Zone UTC-0245 -2:45 - UTC-2
+Zone UTC-0230 -2:30 - UTC-2
+Zone UTC-0215 -2:15 - UTC-2
+Zone UTC-0200 -2 - UTC-2
+Zone UTC-0145 -1:45 - UTC-1
+Zone UTC-0130 -1:30 - UTC-1
+Zone UTC-0115 -1:15 - UTC-1
+Zone UTC-0100 -1 - UTC-1
+Zone UTC-0045 -0:45 - UTC-0
+Zone UTC-0030 -0:30 - UTC-0
+Zone UTC-0015 -0:15 - UTC-0
+Zone UTC+0000 0 - UTC+0
+Zone UTC+0015 0:15 - UTC+0
+Zone UTC+0030 0:30 - UTC+0
+Zone UTC+0045 0:45 - UTC+0
+Zone UTC+0100 1 - UTC+1
+Zone UTC+0115 1:15 - UTC+1
+Zone UTC+0130 1:30 - UTC+1
+Zone UTC+0145 1:45 - UTC+1
+Zone UTC+0200 2 - UTC+2
+Zone UTC+0215 2:15 - UTC+2
+Zone UTC+0230 2:30 - UTC+2
+Zone UTC+0245 2:45 - UTC+2
+Zone UTC+0300 3 - UTC+3
+Zone UTC+0315 3:15 - UTC+3
+Zone UTC+0330 3:30 - UTC+3
+Zone UTC+0345 3:45 - UTC+3
+Zone UTC+0400 4 - UTC+4
+Zone UTC+0415 4:15 - UTC+4
+Zone UTC+0430 4:30 - UTC+4
+Zone UTC+0445 4:45 - UTC+4
+Zone UTC+0500 5 - UTC+5
+Zone UTC+0515 5:15 - UTC+5
+Zone UTC+0530 5:30 - UTC+5
+Zone UTC+0545 5:45 - UTC+5
+Zone UTC+0600 6 - UTC+6
+Zone UTC+0615 6:15 - UTC+6
+Zone UTC+0630 6:30 - UTC+6
+Zone UTC+0645 6:45 - UTC+6
+Zone UTC+0700 7 - UTC+7
+Zone UTC+0715 7:15 - UTC+7
+Zone UTC+0730 7:30 - UTC+7
+Zone UTC+0745 7:45 - UTC+7
+Zone UTC+0800 8 - UTC+8
+Zone UTC+0815 8:15 - UTC+8
+Zone UTC+0830 8:30 - UTC+8
+Zone UTC+0845 8:45 - UTC+8
+Zone UTC+0900 9 - UTC+9
+Zone UTC+0915 9:15 - UTC+9
+Zone UTC+0930 9:30 - UTC+9
+Zone UTC+0945 9:45 - UTC+9
+Zone UTC+1000 10 - UTC+10
+Zone UTC+1015 10:15 - UTC+10
+Zone UTC+1030 10:30 - UTC+10
+Zone UTC+1045 10:45 - UTC+10
+Zone UTC+1100 11 - UTC+11
+Zone UTC+1115 11:15 - UTC+11
+Zone UTC+1130 11:30 - UTC+11
+Zone UTC+1145 11:45 - UTC+11
+Zone UTC+1200 12 - UTC+12
+Zone UTC+1215 12:15 - UTC+12
+Zone UTC+1230 12:30 - UTC+12
+Zone UTC+1245 12:45 - UTC+12
+Zone UTC+1300 13 - UTC+13
+Zone UTC+1315 13:15 - UTC+13
+Zone UTC+1330 13:30 - UTC+13
+Zone UTC+1345 13:45 - UTC+13
+
+# DST ON
+# Zone NAME UTCOFF RULES FORMAT [UNTIL]
+Zone DST/UTC-1345 -13:45 DST UTC-13
+Zone DST/UTC-1330 -13:30 DST UTC-13
+Zone DST/UTC-1315 -13:15 DST UTC-13
+Zone DST/UTC-1300 -13 DST UTC-13
+Zone DST/UTC-1245 -12:45 DST UTC-12
+Zone DST/UTC-1230 -12:30 DST UTC-12
+Zone DST/UTC-1215 -12:15 DST UTC-12
+Zone DST/UTC-1200 -12 DST UTC-12
+Zone DST/UTC-1145 -11:45 DST UTC-11
+Zone DST/UTC-1130 -11:30 DST UTC-11
+Zone DST/UTC-1115 -11:15 DST UTC-11
+Zone DST/UTC-1100 -11 DST UTC-11
+Zone DST/UTC-1045 -10:45 DST UTC-10
+Zone DST/UTC-1030 -10:30 DST UTC-10
+Zone DST/UTC-1015 -10:15 DST UTC-10
+Zone DST/UTC-1000 -10 DST UTC-10
+Zone DST/UTC-0945 -9:45 DST UTC-9
+Zone DST/UTC-0930 -9:30 DST UTC-9
+Zone DST/UTC-0915 -9:15 DST UTC-9
+Zone DST/UTC-0900 -9 DST UTC-9
+Zone DST/UTC-0845 -8:45 DST UTC-8
+Zone DST/UTC-0830 -8:30 DST UTC-8
+Zone DST/UTC-0815 -8:15 DST UTC-8
+Zone DST/UTC-0800 -8 DST UTC-8
+Zone DST/UTC-0745 -7:45 DST UTC-7
+Zone DST/UTC-0730 -7:30 DST UTC-7
+Zone DST/UTC-0715 -7:15 DST UTC-7
+Zone DST/UTC-0700 -7 DST UTC-7
+Zone DST/UTC-0645 -6:45 DST UTC-6
+Zone DST/UTC-0630 -6:30 DST UTC-6
+Zone DST/UTC-0615 -6:15 DST UTC-6
+Zone DST/UTC-0600 -6 DST UTC-6
+Zone DST/UTC-0545 -5:45 DST UTC-5
+Zone DST/UTC-0530 -5:30 DST UTC-5
+Zone DST/UTC-0515 -5:15 DST UTC-5
+Zone DST/UTC-0500 -5 DST UTC-5
+Zone DST/UTC-0445 -4:45 DST UTC-4
+Zone DST/UTC-0430 -4:30 DST UTC-4
+Zone DST/UTC-0415 -4:15 DST UTC-4
+Zone DST/UTC-0400 -4 DST UTC-4
+Zone DST/UTC-0345 -3:45 DST UTC-3
+Zone DST/UTC-0330 -3:30 DST UTC-3
+Zone DST/UTC-0315 -3:15 DST UTC-3
+Zone DST/UTC-0300 -3 DST UTC-3
+Zone DST/UTC-0245 -2:45 DST UTC-2
+Zone DST/UTC-0230 -2:30 DST UTC-2
+Zone DST/UTC-0215 -2:15 DST UTC-2
+Zone DST/UTC-0200 -2 DST UTC-2
+Zone DST/UTC-0145 -1:45 DST UTC-1
+Zone DST/UTC-0130 -1:30 DST UTC-1
+Zone DST/UTC-0115 -1:15 DST UTC-1
+Zone DST/UTC-0100 -1 DST UTC-1
+Zone DST/UTC-0045 -0:45 DST UTC-0
+Zone DST/UTC-0030 -0:30 DST UTC-0
+Zone DST/UTC-0015 -0:15 DST UTC-0
+Zone DST/UTC+0000 0 DST UTC+0
+Zone DST/UTC+0015 0:15 DST UTC+0
+Zone DST/UTC+0030 0:30 DST UTC+0
+Zone DST/UTC+0045 0:45 DST UTC+0
+Zone DST/UTC+0100 1 DST UTC+1
+Zone DST/UTC+0115 1:15 DST UTC+1
+Zone DST/UTC+0130 1:30 DST UTC+1
+Zone DST/UTC+0145 1:45 DST UTC+1
+Zone DST/UTC+0200 2 DST UTC+2
+Zone DST/UTC+0215 2:15 DST UTC+2
+Zone DST/UTC+0230 2:30 DST UTC+2
+Zone DST/UTC+0245 2:45 DST UTC+2
+Zone DST/UTC+0300 3 DST UTC+3
+Zone DST/UTC+0315 3:15 DST UTC+3
+Zone DST/UTC+0330 3:30 DST UTC+3
+Zone DST/UTC+0345 3:45 DST UTC+3
+Zone DST/UTC+0400 4 DST UTC+4
+Zone DST/UTC+0415 4:15 DST UTC+4
+Zone DST/UTC+0430 4:30 DST UTC+4
+Zone DST/UTC+0445 4:45 DST UTC+4
+Zone DST/UTC+0500 5 DST UTC+5
+Zone DST/UTC+0515 5:15 DST UTC+5
+Zone DST/UTC+0530 5:30 DST UTC+5
+Zone DST/UTC+0545 5:45 DST UTC+5
+Zone DST/UTC+0600 6 DST UTC+6
+Zone DST/UTC+0615 6:15 DST UTC+6
+Zone DST/UTC+0630 6:30 DST UTC+6
+Zone DST/UTC+0645 6:45 DST UTC+6
+Zone DST/UTC+0700 7 DST UTC+7
+Zone DST/UTC+0715 7:15 DST UTC+7
+Zone DST/UTC+0730 7:30 DST UTC+7
+Zone DST/UTC+0745 7:45 DST UTC+7
+Zone DST/UTC+0800 8 DST UTC+8
+Zone DST/UTC+0815 8:15 DST UTC+8
+Zone DST/UTC+0830 8:30 DST UTC+8
+Zone DST/UTC+0845 8:45 DST UTC+8
+Zone DST/UTC+0900 9 DST UTC+9
+Zone DST/UTC+0915 9:15 DST UTC+9
+Zone DST/UTC+0930 9:30 DST UTC+9
+Zone DST/UTC+0945 9:45 DST UTC+9
+Zone DST/UTC+1000 10 DST UTC+10
+Zone DST/UTC+1015 10:15 DST UTC+10
+Zone DST/UTC+1030 10:30 DST UTC+10
+Zone DST/UTC+1045 10:45 DST UTC+10
+Zone DST/UTC+1100 11 DST UTC+11
+Zone DST/UTC+1115 11:15 DST UTC+11
+Zone DST/UTC+1130 11:30 DST UTC+11
+Zone DST/UTC+1145 11:45 DST UTC+11
+Zone DST/UTC+1200 12 DST UTC+12
+Zone DST/UTC+1215 12:15 DST UTC+12
+Zone DST/UTC+1230 12:30 DST UTC+12
+Zone DST/UTC+1245 12:45 DST UTC+12
+Zone DST/UTC+1300 13 DST UTC+13
+Zone DST/UTC+1315 13:15 DST UTC+13
+Zone DST/UTC+1330 13:30 DST UTC+13
+Zone DST/UTC+1345 13:45 DST UTC+13
+
+Link UTC+0000 UTC
diff --git a/communication_subcpu/LICENSE b/communication_subcpu/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/communication_subcpu/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/communication_subcpu/Makefile b/communication_subcpu/Makefile
new file mode 100644
index 00000000..80a31b75
--- /dev/null
+++ b/communication_subcpu/Makefile
@@ -0,0 +1,19 @@
+#
+# @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.
+#
+
+SUBDIRS := client
+
+include ../stub.mk
diff --git a/communication_subcpu/client/Makefile b/communication_subcpu/client/Makefile
new file mode 100644
index 00000000..b232f9c1
--- /dev/null
+++ b/communication_subcpu/client/Makefile
@@ -0,0 +1,43 @@
+#
+# @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.
+#
+
+######### installed shared library(*.so) #############
+INST_SHLIBS = libCommSubCpu
+
+######### install headers(*.h) #############
+INST_HEADERS = CommSubCpu_API.h com_message_header.h
+
+######### compiled sources #############
+libCommSubCpu_SRCS += ./src/CommSubCpu_API.cpp
+
+######### add source path #############
+VPATH += src
+VPATH += include/stub
+
+######### add include path #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/$(COMPONENT_NAME)
+
+######### add compile option #############
+
+######### linked library #############
+
+######### linked library (dynamic) #############
+
+######### add library path #############
+
+
+include ../../stub.mk
diff --git a/communication_subcpu/client/include/stub/CommSubCpu_API.h b/communication_subcpu/client/include/stub/CommSubCpu_API.h
new file mode 100644
index 00000000..020c3614
--- /dev/null
+++ b/communication_subcpu/client/include/stub/CommSubCpu_API.h
@@ -0,0 +1,266 @@
+/*
+ * @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.
+ */
+
+#ifndef COMMUNICATION_SUBCPU_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMSUBCPU_API_H_
+#define COMMUNICATION_SUBCPU_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMSUBCPU_API_H_
+
+/**
+ * @file CommSubCpu_API.h
+ * @~english
+ * @brief communication_subcpu API header
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup peripheral_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup communication_subcpu
+ * @ingroup peripheral_service
+ * @{
+ */
+
+#include <sys/types.h>
+#include <native_service/frameworkunified_types.h>
+#include <agldd/moduleid.h>
+#include <stub/com_message_header.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /*__cplusplus*/
+
+/*! @~english CommSubCpu I/F API return code */
+typedef int32_t COMMSUBCPU_RET_API;
+
+/*! @~english Thread name */
+#define LAN_SERVICE_SYSCOM_MAIN "DEV_SYSCOM_MAIN"
+
+/**
+ * \~english The ICR command receive notification
+ */
+#define CID_ICR_CMD_RCV (0x0A00)
+
+/**
+ * \~english The ICR command send result notification
+ */
+#define CID_ICR_CMD_SND_CNF (0x0A01)
+
+/*! @~english The MAX length of send command */
+#define ICRCMD_OPELAND_SND_MAX (2048)
+/*! @~english The MAX length of send ICR command */
+#define ICRCMD_OPELAND_MAX (252)
+
+/**
+ * \~english ICR command format
+ */
+typedef struct {
+ uint16_t phyadr_from; //!< \~english Physical address
+ uint8_t service_type; //!< \~english Communication type
+ uint8_t lgadr_from; //!< \~english Source logical address
+ uint8_t lgadr_to; //!< \~english Forwarding destination logical address
+ uint8_t opc; //!< \~english Operation code
+ uint8_t d_length; //!< \~english Data size
+ uint8_t data[ICRCMD_OPELAND_MAX]; //!< \~english Command data
+ uint8_t reserve; //!< \~english Reserve
+} T_ICR_CMD_DATA;
+
+/**
+ * \~english Send command structure
+ */
+typedef struct {
+ uint16_t phyadr_from; //!< \~english Physical address
+ uint8_t service_type; //!< \~english Communication type
+ uint8_t lgadr_from; //!< \~english Source logical address
+ uint8_t lgadr_to; //!< \~english Forwarding destination logical address
+ uint8_t opc; //!< \~english Operation code
+ uint16_t d_length; //!< \~english Data size
+ uint8_t data[ICRCMD_OPELAND_SND_MAX]; //!< \~english Command data
+} T_ICR_CMD_SND_DATA;
+
+/**
+ * \~english ICR command data
+ */
+typedef struct {
+ T_ICR_CMD_SND_DATA cmd_data; //!< \~english Command information
+} T_ICR_CMD;
+
+/**
+ * \~english The message of command receive notification
+ */
+typedef struct {
+ /*! @~english The header of message */
+ T_APIMSG_MSGBUF_HEADER_COMM msg_hdr;
+ /*! @~english The message data for send result */
+ T_ICR_CMD_DATA cmd_data;
+} T_ICR_CMD_RCV;
+
+/*!
+ * @~english Status of message send result
+ */
+typedef enum {
+ /*! @~english Send success */
+ ICR_SND_SUCCESS = 0,
+ /*! @~english Initialize error */
+ ICR_SND_ERR_INIT,
+ /*! @~english Send error */
+ ICR_SND_ERR,
+ /*! @~english Send error(retry out) */
+ ICR_SND_ERR_RETRYOUT,
+ /*! @~english Send error(buffer full) */
+ ICR_SND_ERR_BUFFERFULL,
+ /*! @~english Send error(micon abnormal) */
+ ICR_SND_ERR_MC,
+ /*! @~english The MAX */
+ ICR_SND_ERR_MAX
+} ICR_ERROR_CODE;
+
+/*!
+ * @~english Structure for message send status data
+ */
+typedef struct {
+ /*! @~english Result of send message */
+ ICR_ERROR_CODE cnf_sts;
+} T_ICR_CMDSNDCNF_STS;
+
+
+ /**
+ * \~english The send result notification
+ */
+typedef struct {
+ /*! @~english The header of message */
+ T_APIMSG_MSGBUF_HEADER_COMM msg_hdr;
+ /*! @~english The message data for send result */
+ T_ICR_CMDSNDCNF_STS sts;
+} T_ICR_CMDSNDCNF;
+
+
+#define COMMSUBCPU_RET_NORMAL 0 //!< \~english Normal termination
+#define COMMSUBCPU_RET_ERROR_CANCEL 1 //!< \~english Abnormal termination
+#define COMMSUBCPU_RET_ERROR_PARAM 2 //!< \~english Abnormality of parameter
+#define COMMSUBCPU_RET_ERROR_BUFFULL 3 //!< \~english Buffer FULL
+#define COMMSUBCPU_RET_ERROR_OVERLAPPED 4 //!< \~english Entry overlapped
+#define COMMSUBCPU_RET_ERROR_CREATE_EVENT 5 //!< \~english Event generation failure
+
+/**
+ * \ingroup CommSubCpu
+ * \~english @par Brief
+ * CommSubCpu moudle init
+ * \~english @retval COMMSUBCPU_RET_NORMAL : Success
+ * \~english @par Prerequisite
+ * None
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * None
+ * \~english @par Classification
+ * Public
+ * \~english @par Type
+ * Sync
+ * \~english @see
+ * None
+ */
+COMMSUBCPU_RET_API CommSubCpu_Init();
+
+/**
+ * \ingroup CommSubCpu
+ * \~english @par Brief
+ * CommSubCpu moudle deinitializes
+ * \~english @retval COMMSUBCPU_RET_NORMAL : Success
+ * \~english @par Prerequisite
+ * CommSubCpu moudle init completely
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * None
+ * \~english @par Classification
+ * Public
+ * \~english @par Type
+ * Sync
+ * \~english @see
+ * None
+ */
+COMMSUBCPU_RET_API CommSubCpu_DeInit();
+
+/**
+ * \ingroup CommSubCpu
+ * \~english @par Brief
+ * Delivery registration of CommSubCpu command
+ * \~english @param [in] name
+ * PCSTR - Receiver thread name
+ * \~english @param [in] from
+ * uint8_t - Sender logical address
+ * \~english @param [in] to
+ * uint8_t - Receiver logical address
+ * \~english @param [in] opc
+ * uint8_t - Operation code
+ * \~english @param [in] callback_id
+ * uint8_t - callback ID
+ * \~english @param [in] cid
+ * uint16_t - CID
+ * \~english @retval COMMSUBCPU_RET_NORMAL : Success
+ * \~english @retval COMMSUBCPU_RET_ERROR_PARAM : Paramter error
+ * \~english @par Prerequisite
+ * Availability of Communication is TRUE
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - Input parameter error
+ * - COMMSUBCPU_RET_ERROR_PARAM
+ * \~english @par Classification
+ * Public
+ * \~english @par Type
+ * Async
+ * \~english @see
+ * None
+ */
+COMMSUBCPU_RET_API CommSubCpu_DeliveryMsgEntry(PCSTR name, uint8_t from, uint8_t to, uint8_t opc,
+ uint8_t callback_id, uint16_t cid);
+
+/**
+ * \ingroup CommSubCpu
+ * \~english @par Brief
+ * CommSubCpu command transmission request
+ * \~english @param [in] name
+ * PCSTR - Sender thread name
+ * \~english @param [in] snd_cmd
+ * T_ICR_CMD* - Pointer to send command
+ * \~english @param [in] req_id
+ * uint8_t - RID of the results
+ * \~english @retval COMMSUBCPU_RET_NORMAL : Success
+ * \~english @retval COMMSUBCPU_RET_ERROR_PARAM : Paramter error
+ * \~english @par Prerequisite
+ * Availability of Communication is TRUE
+ * \~english @par Change of internal state
+ * - Change of internal state according to the API does not occur.
+ * \~english @par Conditions of processing failure
+ * - Input parameter error
+ * - COMMSUBCPU_RET_ERROR_PARAM
+ * \~english @par Classification
+ * Public
+ * \~english @par Type
+ * Async
+ * \~english @see
+ * None
+ */
+COMMSUBCPU_RET_API CommSubCpu_Transmission(PCSTR name, T_ICR_CMD *snd_cmd, uint8_t req_id);
+
+#ifdef __cplusplus
+}
+#endif /*__cplusplus */
+
+#endif // COMMUNICATION_SUBCPU_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMSUBCPU_API_H_
diff --git a/communication_subcpu/client/include/stub/com_message_header.h b/communication_subcpu/client/include/stub/com_message_header.h
new file mode 100644
index 00000000..707cca52
--- /dev/null
+++ b/communication_subcpu/client/include/stub/com_message_header.h
@@ -0,0 +1,65 @@
+/*
+ * @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 COMMUNICATION_SUBCPU_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COM_MESSAGE_HEADER_H_
+#define COMMUNICATION_SUBCPU_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COM_MESSAGE_HEADER_H_
+
+/**
+ * @file com_message_header.h
+ * @~english
+ * @brief Defination of structure for message header
+ */
+
+#include <sys/types.h>
+
+/****************************************************************************
+ * TAG : typedef T_APIMSG_HEADER
+ * ABSTRACT : _CWORD64_API message header structure
+ * NOTE :
+ ****************************************************************************/
+/*!
+ * @~english
+ * @brief Structure for message header
+ */
+typedef struct {
+ uint16_t replyid; //!< \~english Send Result ID
+ uint16_t sndpno; //!< \~english Send process No
+ uint16_t respno; //!< \~english Response No
+ uint16_t cid; //!< \~english Command ID
+ uint16_t msgbodysize; //!< \~english Message body size
+ uint8_t rid; //!< \~english Resource ID
+ uint8_t reserve; //!< \~english Reserve
+ uint8_t filler[2]; //!< \~english filler
+} T_APIMSG_HEADER_COMM;
+
+/*!
+ * @~english
+ * @brief Structure for buffer message header
+ */
+typedef struct {
+ uint32_t signo; //!< \~english Signal No
+ T_APIMSG_HEADER_COMM hdr; //!< \~english Message Header
+} T_APIMSG_MSGBUF_HEADER_COMM;
+
+/*!
+ * @~english @brief Check for assert do not overflow buffer when Re-arrangement was cast to another structure
+ */
+#define assert_static(e) \
+ do { \
+ enum { assert_static__ = 1 / (e) }; \
+ } while (0)
+
+#endif // COMMUNICATION_SUBCPU_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COM_MESSAGE_HEADER_H_
diff --git a/communication_subcpu/client/src/CommSubCpu_API.cpp b/communication_subcpu/client/src/CommSubCpu_API.cpp
new file mode 100644
index 00000000..69e06e3b
--- /dev/null
+++ b/communication_subcpu/client/src/CommSubCpu_API.cpp
@@ -0,0 +1,57 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include <stub/CommSubCpu_API.h>
+
+COMMSUBCPU_RET_API CommSubCpu_Init() {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return COMMSUBCPU_RET_NORMAL;
+}
+
+COMMSUBCPU_RET_API CommSubCpu_DeInit() {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return COMMSUBCPU_RET_NORMAL;
+}
+
+COMMSUBCPU_RET_API CommSubCpu_DeliveryMsgEntry(PCSTR name, uint8_t from, uint8_t to, uint8_t opc,
+ uint8_t callback_id, uint16_t cid) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return COMMSUBCPU_RET_NORMAL;
+}
+
+
+COMMSUBCPU_RET_API CommSubCpu_Transmission(PCSTR name, T_ICR_CMD *snd_cmd, uint8_t req_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return COMMSUBCPU_RET_NORMAL;
+}
diff --git a/communication_usb/LICENSE b/communication_usb/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/communication_usb/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/communication_usb/Makefile b/communication_usb/Makefile
new file mode 100644
index 00000000..80a31b75
--- /dev/null
+++ b/communication_usb/Makefile
@@ -0,0 +1,19 @@
+#
+# @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.
+#
+
+SUBDIRS := client
+
+include ../stub.mk
diff --git a/communication_usb/client/Makefile b/communication_usb/client/Makefile
new file mode 100644
index 00000000..fbefaedc
--- /dev/null
+++ b/communication_usb/client/Makefile
@@ -0,0 +1,43 @@
+#
+# @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.
+#
+
+######### installed shared library(*.so) #############
+INST_SHLIBS = libCommUSB
+
+######### install headers(*.h) #############
+INST_HEADERS = commusb_api.h commusb_notifications.h
+
+######### compiled sources #############
+libCommUSB_SRCS += src/commusb_api.cpp
+
+######### add source path #############
+VPATH += src
+VPATH += include/stub
+
+######### add include path #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/$(COMPONENT_NAME)
+
+######### add compile option #############
+
+######### linked library #############
+
+######### linked library (dynamic) #############
+
+######### add library path #############
+
+
+include ../../stub.mk
diff --git a/communication_usb/client/include/stub/commusb_api.h b/communication_usb/client/include/stub/commusb_api.h
new file mode 100644
index 00000000..f602faac
--- /dev/null
+++ b/communication_usb/client/include/stub/commusb_api.h
@@ -0,0 +1,186 @@
+/*
+ * @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 commusb_api.h
+ * @~english
+ * @brief CommUSB I/F
+ */
+#ifndef COMMUNICATION_USB_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMUSB_API_H_
+#define COMMUNICATION_USB_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMUSB_API_H_
+
+#include <sys/types.h>
+#include <native_service/frameworkunified_types.h>
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup peripheral_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup communication_usb
+ * @ingroup peripheral_service
+ * @{
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+/**
+ * @~english Service Name of PS_CommUSB Thread
+ */
+#define LAN_SERVICE_COMMUSB_MAIN "PS_CommUSB"
+
+/**
+ * @~english The maximum number of delivery entry
+ */
+#define COMMUSB_DELIVERY_DATA_MAX 0xFF
+
+/**
+ * @~english Authentication info
+ */
+typedef enum {
+ /**
+ *@~english Authentication is NG
+ */
+ COMMUSB_AUTH_NG = 0x00,
+
+ /**
+ *@~english Authentication is OK
+ */
+ COMMUSB_AUTH_OK
+} COMMUSB_AUTH_INFO;
+
+/**
+ * @~english Transmit class
+ */
+typedef enum {
+ /**
+ *@~english Individual transmission
+ */
+ COMMUSB_TRANS_INDIVIDUAL = 0x00,
+
+ /**
+ *@~english Group broadcast transmission
+ */
+ COMMUSB_TRANS_GROUP,
+
+ /**
+ *@~english Simultaneous broadcast transmission
+ */
+ COMMUSB_TRANS_ALL
+} COMMUSB_TRANS_CLASS;
+
+/**
+ * @~english Clear type of DeliveryEntry table (for debug)
+ */
+typedef enum {
+ /**
+ * @~english Clear all
+ */
+ USB_CLEAR_TYPE_ALL = 0,
+
+ /**
+ * @~english Clear only table without wild card
+ */
+ USB_CLEAR_TYPE_WITHOUT_WILDCARD,
+
+ /**
+ * @~english Clear only table with wild card
+ */
+ USB_CLEAR_TYPE_WITH_WILDCARD,
+} USB_CLEAR_TYPE;
+
+/**
+ * \ingroup USB_Auth_Info
+ * \~english @par Brief
+ * Set the authentication status of the service PS_CommUSB.
+ * \~english @param [in] h_app
+ * HANDLE - handle for application
+ * \~english @param [in] auth_info
+ * uint8_t - Authentication status,refer to @ref COMMUSB_AUTH_INFO
+ * \~english @retval eFrameworkunifiedStatusOK success
+ * \~english @retval eFrameworkunifiedStatusInvldHandle Invalid handle
+ * \~english @retval eFrameworkunifiedStatusMsgQFull Message queue is full
+ * \~english @retval eFrameworkunifiedStatusErrNoEBADF Invalid File-Descriptor
+ * \~english @retval eFrameworkunifiedStatusErrNoEINTR
+ * An interrupt is generated by the system call (signal)
+ * \~english @retval eFrameworkunifiedStatusNullPointer NULL pointer
+ * \~english @retval eFrameworkunifiedStatusInvldParam Invalid parameter
+ * \~english @retval eFrameworkunifiedStatusInvldBufSize Invalid buffer-size
+ * \~english @retval eFrameworkunifiedStatusInvldBuf Invalid buffer
+ * \~english @retval eFrameworkunifiedStatusBadConnection It can not be a socket connection
+ * \~english @retval eFrameworkunifiedStatusFail Abnormal Error
+ * (System error, Avaiability is FALSE, internal status error)
+ * \~english @retval eFrameworkunifiedStatusInvldHndlType Invalid type of handle
+ * \~english @retval eFrameworkunifiedStatusInvldQName Illegal Message Queue name
+ * \~english @retval eFrameworkunifiedStatusErrOther
+ * Other error has occurred(Cannot access shared memory, etc.)
+ * \~english @par Preconditons
+ * - Availability of PS_CommUSB is TRUE and Authentication state is TRUE.
+ * \~english @par Change of internal status
+ * - Change of internal state according to the API does not occur
+ * \~english @par Conditions of processing failure
+ * - Input parameter error
+ * - Parameter h_app is null
+ * - eFrameworkunifiedStatusInvldHandle
+ * - Parameter auth_info is invalid
+ * - eFrameworkunifiedStatusInvldParam
+ * - Internal process error
+ * - Availability of PS_CommUSB is not TRUE
+ * - The size of the message received by PS_CommUSB is illegal
+ * - eFrameworkunifiedStatusFail
+ * - Execute the process name is not ExtUnitAuth
+ * - eFrameworkunifiedStatusMsgNotProcessed
+ * - Internal process error(ns_framework error)
+ * - eFrameworkunifiedStatusInvldHandle
+ * - eFrameworkunifiedStatusMsgQFull
+ * - eFrameworkunifiedStatusErrNoEBADF
+ * - eFrameworkunifiedStatusErrNoEINTR
+ * - eFrameworkunifiedStatusNullPointer
+ * - eFrameworkunifiedStatusInvldBufSize
+ * - eFrameworkunifiedStatusInvldBuf
+ * - eFrameworkunifiedStatusBadConnection
+ * - eFrameworkunifiedStatusFail
+ * - eFrameworkunifiedStatusInvldHndlType
+ * - eFrameworkunifiedStatusInvldQName
+ * - eFrameworkunifiedStatusErrOther
+ * \~english @par classification
+ * Public
+ * \~english @par Type
+ * Method only
+ * \~english @par Details
+ * Set the authentication status for PS_CommUSB.
+ * \~english @par
+ * when using this API,please note the following points:
+ * - The status of service PS_CommUSB and the availability of this
+ * API, refer to PS_CommUSB available function list of BaseSystem
+ * external specification.
+ * - This API is designed for the ExtUnitAuth process, If it is used by
+ * other process, return eFrameworkunifiedStatusMsgNotProcessed.
+ * \~english @see None
+ */
+EFrameworkunifiedStatus USB_Auth_Info(HANDLE h_app, uint8_t auth_info);
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+/** @}*/ // end of communication_usb
+/** @}*/ // end of peripheral_service
+/** @}*/ // end of BaseSystem
+#endif // COMMUNICATION_USB_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMUSB_API_H_
diff --git a/communication_usb/client/include/stub/commusb_notifications.h b/communication_usb/client/include/stub/commusb_notifications.h
new file mode 100644
index 00000000..9a75cbbc
--- /dev/null
+++ b/communication_usb/client/include/stub/commusb_notifications.h
@@ -0,0 +1,56 @@
+/*
+ * @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 commusb_notifications.h
+ * @~english
+ * @brief commusb_notifications I/F
+ */
+#ifndef COMMUNICATION_USB_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMUSB_NOTIFICATIONS_H_
+#define COMMUNICATION_USB_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMUSB_NOTIFICATIONS_H_
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup peripheral_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup communication_usb
+ * @ingroup peripheral_service
+ * @{
+ */
+
+/**
+ * \~english PS_CommUSB service availability notify.
+ * \~ @code
+ * l_eStatus = FrameworkunifiedSubscribeNotificationWithCallback(hApp, NTFY_CommUSB_Availability, OnRcvAvailable_USBEx);
+ * @endcode
+ */
+#define NTFY_CommUSB_Availability "PS_CommUSB/Availability"
+
+/**
+ * \~english USB Device Enumeration complete notify.
+ * \~ @code
+ * l_eStatus = FrameworkunifiedSubscribeNotificationWithCallback(hApp, NTFY_CommUSB_DeviceValidity, OnRcvDeviceValidity);
+ * @endcode
+ */
+#define NTFY_CommUSB_DeviceValidity "PS_CommUSB/DeviceValidity"
+
+/** @}*/ // end of communication_usb
+/** @}*/ // end of peripheral_service
+/** @}*/ // end of BaseSystem
+#endif // COMMUNICATION_USB_CLIENT_INCLUDE_PERIPHERAL_SERVICE_COMMUSB_NOTIFICATIONS_H_
diff --git a/communication_usb/client/src/commusb_api.cpp b/communication_usb/client/src/commusb_api.cpp
new file mode 100644
index 00000000..c0aa0214
--- /dev/null
+++ b/communication_usb/client/src/commusb_api.cpp
@@ -0,0 +1,33 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include <native_service/frameworkunified_framework_if.h>
+#include <stub/commusb_api.h>
+
+EFrameworkunifiedStatus USB_Auth_Info(HANDLE h_app, uint8_t auth_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return eFrameworkunifiedStatusOK;
+}
+
diff --git a/diag_code/LICENSE b/diag_code/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/diag_code/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/diag_code/Makefile b/diag_code/Makefile
new file mode 100644
index 00000000..5d374f88
--- /dev/null
+++ b/diag_code/Makefile
@@ -0,0 +1,18 @@
+#
+# @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 library_dummy_dccc
+
+include ../stub.mk
diff --git a/diag_code/library/Makefile b/diag_code/library/Makefile
new file mode 100644
index 00000000..274f147a
--- /dev/null
+++ b/diag_code/library/Makefile
@@ -0,0 +1,51 @@
+#
+# @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 #############
+
+######### installed library(*.a) #############
+
+######### installed shared library(*.so) #############
+INST_SHLIBS = libDiagCodeAPI
+
+######### install headers(*.h) #############
+VPATH += ./include/$(COMPONENT_NAME)
+INST_HEADERS += DiagCodeAPI.h DIAGCODE.h ss_diag.h
+
+######### compiled sources #############
+libDiagCodeAPI_SRCS += DiagCodeAPI.cpp
+
+######### add source path #############
+VPATH += ./src
+
+######### add include path #############
+CPPFLAGS += -I./include/stub
+CPPFLAGS += -I./../library_dummy_dccc/include/
+
+######### add compile option #############
+LDFLAGS += -Wl,--no-as-needed
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+######### dynamic linked library path #############
+
+######### add library path #############
+
+
+include ../../stub.mk
diff --git a/diag_code/library/include/stub/DIAGCODE.h b/diag_code/library/include/stub/DIAGCODE.h
new file mode 100644
index 00000000..5cbcfadf
--- /dev/null
+++ b/diag_code/library/include/stub/DIAGCODE.h
@@ -0,0 +1,46 @@
+/*
+ * @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 DIAGCODE.h
+ */
+/****************************************************************************
+ * FILE : DIAGCODE.h
+ * SYSTEM : Integrated PF middleware system
+ * SUBSYSTEM : ommon system
+ * TITLE : DiagCode
+ ****************************************************************************/
+#ifndef DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_DIAGCODE_H_
+#define DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_DIAGCODE_H_
+
+/*************************************************************************
+ * DiagCode difinition
+ *************************************************************************/
+
+/*************************************************************************
+ * DiagCode code definition name
+ *************************************************************************/
+
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+#define DIAGCODE_DIAGCODEEX_DEFAULT 0x0000U /* - */
+#define DIAGCODE_DIAGCODEEX_EEPROM__CWORD84_ 0x0000U /* - */
+#define DIAGCODE_DIAGCODEEX_STORAGE_ERR__CWORD84_ 0x0000U /* - */
+#define DIAGCODE_DIAGCODEEX_TEL_ECU_ERR 0x0000U /* - */
+
+#endif /* DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_DIAGCODE_H_ */
diff --git a/diag_code/library/include/stub/DiagCodeAPI.h b/diag_code/library/include/stub/DiagCodeAPI.h
new file mode 100644
index 00000000..de831ebd
--- /dev/null
+++ b/diag_code/library/include/stub/DiagCodeAPI.h
@@ -0,0 +1,1226 @@
+/*
+ * @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 DiagCodeAPI.h
+ */
+/*******************************************************************************
+ * FILE : DiagCodeAPI.h
+ * SYSTEM : LinuxPF
+ * SUBSYSTEM :
+ * TITLE : DiagCode management function include definition
+ ******************************************************************************/
+
+#ifndef DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_DIAGCODEAPI_H_
+#define DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_DIAGCODEAPI_H_
+
+/**
+ * @file DiagCodeAPI.h
+ * @~english
+ * @brief Diag code API header
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup diag_code
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#include <time.h>
+#include <native_service/frameworkunified_types.h>
+#include <native_service/frameworkunified_framework_types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*! @~english API return value */
+typedef int DGCODE_RET_API;
+
+/**
+ * \~english The definition of diag code processing result
+ */
+/*! @~english Success */
+#define DGCODE_RET_NORMAL (0)
+/*! @~english Fail */
+#define DGCODE_RET_ERROR (-1)
+/*! @~english Illegal parameter */
+#define DGCODE_RET_PARA_ERR (-2)
+
+/**
+ * \~english Category ID definition
+ */
+
+/*! @~english none device */
+#define DGCODE_DIV_UNIT_NONE (0x00)
+/*! @~english device base */
+#define DGCODE_DIV_UNIT_BASE (0x10)
+/*! @~english Your own device */
+#define DGCODE_DIV_UNIT__CWORD92_ (DGCODE_DIV_UNIT_BASE + 0x00)
+/*! @~english Other devices */
+#define DGCODE_DIV_UNIT_OTHER (DGCODE_DIV_UNIT_BASE + 0x01)
+/*! @~english device maximum number definition */
+#define DGCODE_DIV_UNIT_MAX (DGCODE_DIV_UNIT_OTHER)
+
+/*! @~english proto base */
+#define DGCODE_DIV_PROT_BASE (0x20)
+/*! @~english _CWORD43_ */
+#define DGCODE_DIV_PROT__CWORD43_ (DGCODE_DIV_PROT_BASE + 0x00)
+/*! @~english USB */
+#define DGCODE_DIV_PROT_USB (DGCODE_DIV_PROT_BASE + 0x02)
+/*! @~english _CWORD119_ */
+#define DGCODE_DIV_PROT__CWORD119_ (DGCODE_DIV_PROT_BASE + 0x03)
+/*! @~english proto device maximum number definition */
+#define DGCODE_DIV_PROT_MAX (DGCODE_DIV_PROT_USB)
+/*! @~english Communication full selection */
+#define DGCODE_DIV_PROT_ALL (DGCODE_DIV_PROT_BASE + 0x0F)
+/*! @~english All select */
+#define DGCODE_DIV_ALL (DGCODE_DIV_UNIT_BASE + DGCODE_DIV_PROT_BASE)
+/*! \~english Public RoB selection */
+#define DGCODE_DIV_ROB_PUBLIC (1)
+/*! \~english Private Rob selection */
+#define DGCODE_DIV_ROB_PRIVATE (2)
+/*! \~english RoB All select selection*/
+#define DGCODE_DIV_ROB_ALL (DGCODE_DIV_ROB_PUBLIC + DGCODE_DIV_ROB_PRIVATE)
+
+/**
+ * \~english Past present registered flag definition
+ */
+/*! @~english Past and present */
+#define DGCODE_TYPE_PAST_PRES (0)
+/*! @~english Present only */
+#define DGCODE_TYPE_PAST (1)
+/*! @~english Past only */
+#define DGCODE_TYPE_PRES (2)
+/*! @~english Unspecified */
+#define DGCODE_TYPE_NOTSPECIFIED (3)
+
+/**
+ * \~english FF data registration flag definition
+ */
+/*! @~english Do not register FF data */
+#define DGCODE_FFDATA_REG_OFF (0)
+/*! @~english FF data registered */
+#define DGCODE_FFDATA_REG_ON (1)
+/*! @~english Unspecified */
+#define DGCODE_FFDATA_REG_NOTSPECIFIED (2)
+
+/**
+ * \~english Validity invalid time definition
+ */
+/*! @~english Time information invalid */
+#define DGCODE_TIME_INVALID (0)
+/*! @~english Time information valid */
+#define DGCODE_TIME_VALID (1)
+/*! @~english Unspecified */
+#define DGCODE_TIME_NOTSPECIFIED (2)
+
+/**
+ * \~english Diag code existence check result definition
+ */
+/*! @~english Diag code not registered */
+#define DGCODE_CHECK_NOT_EXIST (0)
+/*! @~english Diag code registered */
+#define DGCODE_CHECK_EXIST (1)
+
+/**
+ * \~english Diag code type definition
+ */
+/*! @~english Development diag code */
+#define DGCODE_KIND_DEVELOPMENT (0)
+/*! @~english Service diag code */
+#define DGCODE_KIND_SERVICE (1)
+/*! @~english Communication diag code */
+#define DGCODE_KIND_COMMUNICATION (2)
+/*! @~english Manufacturer diag code */
+#define DGCODE_KIND_MAKER (3)
+
+/**
+ * \~english RoB code type definition
+ */
+/*! \~english Public(service use) */
+#define DGCODE_ROB_KIND_PUBLIC (0)
+/*! \~english Private(only design) */
+#define DGCODE_ROB_KIND_PRIVATE (1)
+
+/**
+ * \~english type of rob_code specification
+ */
+/*! \~english Specify all RoB codes. */
+#define DGCODE_GET_ALL_ROB_CODE (0xFFFF)
+
+/**
+ * \~english Logical unit number definition
+ */
+/*! @~english Unit number 0X */
+#define DGCODE_MAKER_UNIT_0 (0x00)
+/*! @~english Unit number 1X */
+#define DGCODE_MAKER_UNIT_1 (0x01)
+/*! @~english Unit number 2X */
+#define DGCODE_MAKER_UNIT_2 (0x02)
+/*! @~english Unit number 3X */
+#define DGCODE_MAKER_UNIT_3 (0x03)
+/*! @~english Unit number 4X */
+#define DGCODE_MAKER_UNIT_4 (0x04)
+/*! @~english Unit number 5X */
+#define DGCODE_MAKER_UNIT_5 (0x05)
+/*! @~english Unit number 6X */
+#define DGCODE_MAKER_UNIT_6 (0x06)
+/*! @~english Unit number 7X */
+#define DGCODE_MAKER_UNIT_7 (0x07)
+/*! @~english Unit number 8X */
+#define DGCODE_MAKER_UNIT_8 (0x08)
+/*! @~english Unit number 9X */
+#define DGCODE_MAKER_UNIT_9 (0x09)
+/*! @~english Unit number AX */
+#define DGCODE_MAKER_UNIT_A (0x0A)
+/*! @~english Unit number BX */
+#define DGCODE_MAKER_UNIT_B (0x0B)
+/*! @~english Unit number CX */
+#define DGCODE_MAKER_UNIT_C (0x0C)
+/*! @~english Unit number DX */
+#define DGCODE_MAKER_UNIT_D (0x0D)
+/*! @~english Unit number EX */
+#define DGCODE_MAKER_UNIT_E (0x0E)
+/*! @~english Unit number FX */
+#define DGCODE_MAKER_UNIT_F (0x0F)
+/*! @~english All above */
+#define DGCODE_MAKER_UNIT_ALL (0x10)
+
+/**
+ * \~english All designation definitions of registered devices
+ */
+/*! @~english Error designation of all registered devices */
+#define DGCODE_PHYSADR_ALL (0xFFFF)
+
+/**
+ * \~english Diag code registration / deletion notification type definition
+ */
+/*! @~english Diag code registration */
+#define DGCODE_NOTIFY_PUT (0)
+/*! @~english Diag code clear */
+#define DGCODE_NOTIFY_DELETE (1)
+/*! \~english DTC registration */
+#define DGCODE_NOTIFY_DTC_PUT (2)
+/*! \~english RoB registration */
+#define DGCODE_NOTIFY_ROB_PUT (3)
+/*! \~english DTC clear */
+#define DGCODE_NOTIFY_DTC_DELETE (4)
+/*! \~english RoB clear */
+#define DGCODE_NOTIFY_ROB_DELETE (5)
+
+/**
+ * \~english Type of activation definition
+ */
+/*! @~english Hot start */
+#define DGCODE_START_KIND_HOT (0)
+/*! @~english Cold start */
+#define DGCODE_START_KIND_COLD (1)
+
+/**
+ * \~english Analysis support log saved DTC event presence / absence flag definition
+ */
+
+/*!
+ @~english The unnecessary diag code of saving analysis support log
+*/
+#define DGCODE_DTC_EVENT_LOG_OFF (0)
+/*!
+ @~english The necessary diag code of saving analysis support Log
+*/
+#define DGCODE_DTC_EVENT_LOG_ON (1)
+
+/**
+ * \~english Diag code registration mask setting definition
+ */
+/*! @~english Diag code registration mask OFF */
+#define DGCODE_PUT_MASK_OFF (0)
+/*! @~english Diag code registration mask ON */
+#define DGCODE_PUT_MASK_ON (1)
+
+/**
+ * \~english Diag code unique count value definition
+ */
+/*! @~english Normal count */
+#define DGC_TIMESTAMP_NORMAL 0U
+/*! @~english Original count */
+#define DGC_TIMESTAMP_INDIPENDENT 1U
+
+/**
+ * \~english Availability register id define.
+ */
+/*! @~english Backup manager register id */
+#define DGC_REG_AVAILABILITY_BACKUP 0x01
+/*! @~english Clock register id */
+#define DGC_REG_AVAILABILITY_CLOCK 0x02
+/*! @~english diag_record register id */
+#define DGC_REG_AVAILABILITY_PFDRECTHREAD 0x04
+/*! @~english Vehicle register id */
+#define DGC_REG_AVAILABILITY_VEHICLE 0x08
+/*! @~english Postion register id */
+#define DGC_REG_AVAILABILITY_POSITION 0x10
+
+/**
+ * \~english Diag code registration / erasing detailed setting structure
+ */
+typedef struct _DGCODE_MEMINFO_CUSTOM {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_MEMINFO_CUSTOM;
+
+/**
+ * \~english Time information for SSR information
+ */
+typedef struct _DGCODE_SSR_INFO_TIME_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_SSR_INFO_TIME_INFO;
+
+/**
+ * \~english DTC SSR information
+ */
+typedef struct _DGCODE_DTC_SSR_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_DTC_SSR_INFO;
+
+/**
+ * \~english RoB SSR information
+ */
+typedef struct _DGCODE_ROB_SSR_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_ROB_SSR_INFO;
+
+/**
+ * \~english Diag code list acquisition setting structure
+ */
+typedef struct _DGCODE_GET_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_GET_LIST_INFO;
+
+/**
+ * \~english Diag code list information structure
+ */
+typedef struct _DGCODE_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_LIST_INFO;
+
+/**
+ * \~english DTC list acquisition setting structure
+ */
+typedef struct _DGCODE_GET_DTC_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_GET_DTC_LIST_INFO;
+
+/**
+ * \~english DTC list information structure
+ */
+typedef struct _DGCODE_DTC_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_DTC_LIST_INFO;
+
+
+/**
+ * \~english RoB list acquisition setting structure
+ */
+typedef struct _DGCODE_GET_ROB_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_GET_ROB_LIST_INFO;
+
+/**
+ * \~english RoB list information structure
+ */
+typedef struct _DGCODE_ROB_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_ROB_LIST_INFO;
+
+/**
+ * \~english FF data list information structure
+ */
+typedef struct _DGCODE_FFDATA_LIST_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_FFDATA_LIST_INFO;
+
+/**
+ * \~english Diag code list delete setting structure
+ */
+typedef struct _DGCODE_DELETE_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_DELETE_INFO;
+
+/**
+ * \~english DTC list delete setting structure
+ */
+typedef struct _DGCODE_DELETE_DTC_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_DELETE_DTC_INFO;
+
+/**
+ * \~english RoB list delete setting structure
+ */
+typedef struct _DGCODE_DELETE_ROB_INFO {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_DELETE_ROB_INFO;
+
+/**
+ * \~english DID change structure
+ */
+typedef struct _DGCODE_DID_LIST {
+ /*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+} DGCODE_DID_LIST;
+
+/****************************************/
+/* DiagCodeAPI */
+/****************************************/
+/// \~english Subscribe the availability of the external module
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_SubscribeAvailability
+/// \~english @par Overview
+/// - Notify the availability status of the external module
+/// \~english @param [in] hApp Application handle
+/// \~english @param [in] availabilityId The availability id(refer to DGC_REG_AVAILABILITY_XXX)
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - None
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Subscribe the availability callback to NSFW failed [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - Subscribe the availability of the external module
+/// - Use "|" to subscribe the availability of the multiply modules
+/// example: Use the follow way to subscribe the availability of the backup manager and the clock
+/// Diag_SubscribeAvailability(hApp, DGC_REG_AVAILABILITY_BACKUP | DGC_REG_AVAILABILITY_CLOCK)
+/// \~english @see Diag_NotifyAvailability
+///
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_SubscribeAvailability(HANDLE hApp, uint8_t availabilityId);
+
+/// \~english Notify the availability of external module
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_NotifyAvailability
+/// \~english @par Overview
+/// - Notify the availability status of the external module
+/// \~english @param [in] availabilityId The availability id(refer to DGC_REG_AVAILABILITY_XXX)
+/// \~english @param [in] bAvailability Availability status(TRUE: Available, FALSE: Unavailable)
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @par Precondition
+/// - None
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - None
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - Notify the available status of external module
+/// - Use "|" to notify the availability status of the multiply modules
+/// example: Use the follow way to notify that the backup manager and the clock are available
+/// Diag_NotifyAvailability(DGC_REG_AVAILABILITY_BACKUP | DGC_REG_AVAILABILITY_CLOCK, TRUE)
+/// \~english @see Diag_SubscribeAvailability
+///
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_NotifyAvailability(uint8_t availabilityId, BOOL bAvailability);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_InitDiagCode
+/// \~english @par Overview
+/// - Perform initialization processing of diag code management.
+/// \~english @param [in] hApp Application handle
+/// \~english @param [in] start_kind activation type
+/// \~english @param [in] fpOnCmd fpOnCmd callback definition
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// - PFDRECThread is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - When activation type is invalid [DGCODE_RET_PARA_ERR]
+/// - When diag work memory allocation fails [DGCODE_RET_ERROR]
+/// - Failure occurs when read data from the backup area [DGCODE_RET_ERROR]
+/// - Failure occurs when write data to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when write data to the backup area. [DGCODE_RET_ERROR]
+/// - In case acquisition of application name from argument hApp failed [DGCODE_RET_ERROR]
+/// - Failed to register callback information specified by argument fpOnCmd [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - The API should be called only by DiagService
+/// - Call this API, before registering, deleting, checking and acquiring the code.
+/// - Call this API, before registering, deleting, checking and acquiring the DTC information.
+/// - Call this API, before registering, deleting, checking and acquiring the RoB information.
+/// - Call this API, before update all StatusOfDTC.
+/// - This API is a process that is called only once at system startup and should be called with NS_BackupMgr with
+/// Avalability set to TRUE.
+/// - Calls the specified callback function when diag code registration / deletion is executed.
+/// - Calls the specified callback function when DTC information registration / deletion is executed.
+/// - Calls the specified callback function when RoB information registration / deletion is executed.
+/// - You can get message data by calling FrameworkunifiedGetMsgDataOfSize in the callback function.
+/// - message data, a diag code registration / erasure notification structure is set.
+/// \~english @see none
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_InitDiagCode(HANDLE hApp, uint8_t start_kind, CbFuncPtr fpOnCmd);
+
+/// \~english Setting of diag code registration mask information
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_SetDiagCodeMask
+/// \~english @par Overview
+/// - Perform diag code registration mask setting.
+/// \~english @param [in] onoff Diag code registration mask setting
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Diag code registration mask setting is invalid [DGCODE_RET_ERROR]
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - Failure occurs when write data to the backup area [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - The API should be called only by DiagService
+/// - Set the registration mask of the diag code. If + B OFF, the setting information is held. (Initial state,
+/// registration mask OFF)
+/// - If diag code registration mask setting is ON, when Diag_PutDiagCode,
+/// Diag_PutDiagCode_Custom of the diag code registration API is called,
+/// do not register diag code and register FF data.
+/// \~english @see Diag_PutDiagCode, Diag_PutDiagCode_Custom
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_SetDiagCodeMask(uint8_t onoff);
+
+/// \~english Synchronization of time stamp information
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_SyncTimeStamp
+/// \~english @par Overview
+/// - Synchronize time stamp information.
+/// \~english @param [in] time_cnt time counter
+/// \~english @param [in] trip_cnt Trip counter
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - Failure occurs when export data from backup area [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - The API should be called only by DiagService
+/// - Updates the time stamp information held by the library with the value of the specified time counter and
+/// Trip counter.
+/// - The diagnosis service should synchronize the time counter and Trip counter with this API when time
+/// information from the time master is received.
+/// - However, if any of the time counter and Trip counter specified in the argument is Fail value,
+/// do not perform synchronization processing and and update the time stamp information with Fail value.
+/// \~english @see DGC_TIMESTAMP_GETTIME
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_SyncTimeStamp(uint32_t time_cnt, uint16_t trip_cnt);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_SyncDcmTime
+/// \~english @par Brief
+/// - Synchronize Hour information.
+/// \~english @param [in] hour_info Hour information
+/// - #DGCODE_SSR_INFO_TIME_INFO : SSR infomation (Time infomation for SSR, Time infomation for RoB)
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - The pointer of Hour information is NULL [#DGCODE_RET_PARA_ERR]
+/// - Initialization of diagcode management information is fail [#DGCODE_RET_ERROR]
+/// - Get mutex failed [#DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Detail
+/// - This API should be called only by DiagService.
+/// - Updates the Hour information held by the library with the value of the specified Hour information.
+/// - DiagService should synchronize Hour information with this API,
+/// when DiagService received the Hour information from the DCM.
+/// - If any of Hour information specified is Fail value,
+/// do not perform synchronization processing, and update the Hour information with Fail value(0xFF).
+/// \~english @see None
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_SyncDcmTime(const DGCODE_SSR_INFO_TIME_INFO * const hour_info);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_SyncOdometer
+/// \~english @par Overview
+/// - Synchronize odo meter information.
+/// \~english @param [in] mileage accumulative mileage
+/// \~english @param [in] unit odo unit
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - The accumulative mileage is invalid (mileage > 999,999) [\ref DGCODE_RET_PARA_ERR]
+/// - Initialization of diagcode management information is fail [\ref DGCODE_RET_ERROR]
+/// - Failure occurs when export data from backup area [\ref DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - The API should be called only by DiagService
+/// - Updates the odo meter information held by the library with the value of the specified accumulative mileage
+/// and odo unit.
+/// - The diagnosis service should synchronize the accumulative mileage and odo unit with this API when time
+/// information from the odo meter is received.
+/// \~english @see None
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_SyncOdometer(const uint32_t mileage, const uint8_t unit);
+
+/// \~english Inhibit diag code register
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_InhibitPutDiagCode
+/// \~english @par Overview
+/// - Inhibit diag code register.
+/// \~english @param none
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - The initialization of diag memory is finished.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - Get mutex failed [DGCODE_RET_ERROR]
+/// - The diag code's inhibit flag has not been initialized [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - The API should be called only by DiagService
+/// - Diag code register inhibit.
+/// \~english @see none
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_InhibitPutDiagCode(void);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_PutDTCInfo
+/// \~english @par Overview
+/// - Register of DTC info.
+/// \~english @param [in] hApp Application handle
+/// \~english @param [in] dtc_id DTC ID\n
+/// Use diag code definition defined in DIAGCODE.h.\n
+/// \~english @param [in] test_result StatusOfDTC\n
+/// testFailed(bit0 not Failed:0 Failed:1)\n
+/// \~english @param [in] ssr_info SSR data info
+/// \~english @param [in] spply_code Supplementary code
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - Diagcode mask is unset.
+/// - BackupMgr is available
+/// - PFDRECThread is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of DTC management information is fail [DGCODE_RET_ERROR]
+/// - DTC ID does not match the defination of DTC ROM table [DGCODE_RET_PARA_ERR]
+/// - The communication unit ID(division) in the DTC ROM table is invalid [DGCODE_RET_ERROR]
+/// - The communication unit ID(division) in the DTC ROM table is
+/// none device(#DGCODE_DIV_UNIT_NONE) [DGCODE_RET_ERROR]
+/// - Allocation of work memory fails when writing the DTC. [DGCODE_RET_ERROR]
+/// - Failure occurs when reading data from backup area [DGCODE_RET_ERROR]
+/// - Failure occurs when writing to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when writing to the backup area [DGCODE_RET_ERROR]
+/// - Communication unit is not _CWORD92_ or other device when registering individual Diag Code. [DGCODE_RET_PARA_ERR]
+/// - The pointer of DTC inhibit info is NULL [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync x Sync
+/// \~english @par Details
+/// - Register DTC info.
+/// - When register development diag code for supplier, set the DTC ID assigned to supplier.
+/// - Register MM DiagRecord, too.
+/// - But if the register mask of DTC is set ON, this API returns DGCODE_RET_NORMAL
+/// not registering the DTC info.
+/// - diag_code sets the following bit of StatusOfDTC.\n
+/// bit1:testFailedThisOperationCycle\n
+/// bit2:pendingDTC\n
+/// bit3:confirmedDTC\n
+/// bit4:testNotCompletedSinceLastClear\n
+/// bit5:testFailedSinceLastClear\n
+/// bit6:testNotCompletedThisOperationCycle\n
+/// - diag_code sets TimeStamp, Odometer and clock time of SSR.
+/// - Treat current position longitude and current latitude of SSR as all 0 in this API.
+/// - Set supplementary code if it is need.
+///
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_PutDTCInfo(const HANDLE hApp, const uint64_t dtc_id, const uint8_t test_result,
+ const DGCODE_DTC_SSR_INFO* ssr_info,
+ const uint16_t spply_code);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_PutRoBInfo
+/// \~english @par Overview
+/// - Register of RoB info.
+/// \~english @param [in] hApp Application handle
+/// \~english @param [in] rob_id RoB ID\n
+/// Use diag code definition defined in DIAGCODE.h.\n
+/// \~english @param [in] ssr_info SSR data info
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - Diagcode mask is unset.
+/// - BackupMgr is available
+/// - PFDRECThread is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of RoB management information is fail [DGCODE_RET_ERROR]
+/// - RoB ID does not match the defination of RoB ROM table [DGCODE_RET_PARA_ERR]
+/// - The communication unit ID(division) in the RoB ROM table is invalid [DGCODE_RET_ERROR]
+/// - The communication unit ID(division) in the RoB ROM table is
+/// none device(#DGCODE_DIV_UNIT_NONE) [DGCODE_RET_ERROR]
+/// - Allocation of work memory fails when writing the diag code. [DGCODE_RET_ERROR]
+/// - Failure occurs when read data from backup area [DGCODE_RET_ERROR]
+/// - Failure occur when write to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when write to the backup area [DGCODE_RET_ERROR]
+/// - The pointer of RoB inhibit info is NULL [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync x Sync
+/// \~english @par Details
+/// - Register RoB info.
+/// - When register development diag code for supplier, set the RoB ID assigned to supplier.
+/// - Register MM DiagRecord, too.
+/// - But if the register mask of Diag Code is set ON, this API returns DGCODE_RET_NORMAL
+/// not registering the RoB info.
+/// - Set SSR info related RoB ID to SSR data info(SSR info not related RoB ID is unnecessary).\n
+/// diag_code sets TimeStamp, Odometer and clock time of SSR.
+/// - Treat current position longitude and current latitude of SSR as all 0 in this API.
+///
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_PutRoBInfo(const HANDLE hApp, const uint64_t rob_id, const DGCODE_ROB_SSR_INFO* ssr_info);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_DeleteDTCInfo
+/// \~english @par Overview
+/// - Delete specified DTC.
+/// \~english @param [in] hApp Application handle
+/// \~english @param [in] err_id DTC detail info
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// - PFDRECThread is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - The param[err_id] do not match the defination in the diagcode ROM table [DGCODE_RET_PARA_ERR]
+/// - The communication unit ID(division) in the diagcode ROM table is invalid [DGCODE_RET_ERROR]
+/// - If the communication unit ID(division) is other in the diagcode ROM table,
+/// and failure occur when getting unit number. [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Fire and Forget only
+/// \~english @par Details
+/// - For the latest diag which has been registered, do the erase procedure due to the fact that the DTC is initialized.
+/// - If diagcode which specified is not registered, return DGCODE_RET_NORMAL.
+/// - Register removal DTC to MM Diag Record.
+/// - Delete SSR information,too.
+/// - Delete status of DTC, too.
+///
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_DeleteDTCInfo(const HANDLE hApp, const uint64_t err_id);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_GetDTCInfoList_CWORD29_
+/// \~english @par Overview
+/// - Get the List of specified DTC
+/// \~english @param [in] get_info Get info of DTC list
+/// - #DGCODE_GET_DTC_LIST_INFO : DTC list acquisition setting structure
+/// \~english @param [out] list_info List info of DTC
+/// - #DGCODE_DTC_LIST_INFO : DTC list information structure
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - The initialization of diag memory is finished.
+/// - BackupMgr is available
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - The pointer get_info of acquisition setting is NULL [DGCODE_RET_PARA_ERR]
+/// - The pointer list_info of storage area is NULL [DGCODE_RET_PARA_ERR]
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - The flag of diag registration start is not OK yet(The function of diagcode is not prepared yet).
+/// [DGCODE_RET_ERROR]
+/// - The acquirement kind(diagcode) is invalid [DGCODE_RET_PARA_ERR]
+/// - Common Diagnosis When the Diag code definition Name acquired from the memory
+/// error table do not match the definition of the diagcode ROM Table [DGCODE_RET_PARA_ERR]
+/// - The communication unit ID(division) in the diag code ROM talble is not valid [DGCODE_RET_ERROR]
+/// - If the acquisition type is development or service and the division ID is other than the self device and
+/// other devices [DGCODE_RET_PARA_ERR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - Get the DTC list of conditions specified by get_info.
+/// - Acquisition type must be set to diag code type definition value.
+/// - StatusOfDTC information must be set to StatusOfDTC of getting DTC.\n
+/// Targeting bit of StatusOfDTC information that is 1, this API gets DTC
+/// that every target bit of StatusOfDTC is also 1.\n
+/// Examples of getting DTC, when StatusOfDTC information is set 0b00100111 : 0b00101111、0b00100111
+/// - Category ID must be set to category ID definition.
+/// - If category ID is other than DGCODE_DIV_UNIT__CWORD92_, error registered device physical address must be set.
+/// - If category ID is DGCODE_DIV_UNIT__CWORD92_, error registered device physical address is not used,
+/// and thus an arbitary value may be set.
+/// - Logic unit number for maker diag must be set DGCODE_MAKER_UNIT_ALL.
+/// - All DTC that matches above condition store in list_info(list_info is variable length).
+/// - The maximum number of DTC that can be acquired at a time is 64.
+/// - By setting any value from 0 to 255 as the DTC acquisition start index position,
+/// 64 DTC can be acquired from that position.\n
+/// To acquire from Nth DTC, N-1 should be set.\n
+/// example : If the number of previous acquisitions is 64 and "DTC acquisition start index position" is
+/// set to 64, DTC from 65th to 128th can be acquired.
+/// - When the number of items remaining from DTC acquisition start index position to set
+/// the last registered DTC is less than 64, only the remaining items are acquired.
+/// example : If the case where 100 items of DTC are registered , when 64 is set
+/// as the "DTC acquisition start index position", 36 items from 65th to 100th can be acquired.
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_GetDTCInfoList_CWORD29_(const DGCODE_GET_DTC_LIST_INFO* const get_info,
+ DGCODE_DTC_LIST_INFO* const list_info);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_DeleteDTCInfoList
+/// \~english @par Overview
+/// - Delete the list of specified DTC.
+/// \~english @param [in] del_info Deletion info of DTC list
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available.
+/// - The initialization of diag memory is finished.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - The pointer del_info of acquisition setting is NULL [DGCODE_RET_PARA_ERR]
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - The flag of diag registration start is not OK yet(The function of diagcode is not prepared yet).
+/// [DGCODE_RET_ERROR]
+/// - Failure occurs when read data from the backup area [DGCODE_RET_ERROR]
+/// - Failure occurs when write data to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when export data from backup area. [DGCODE_RET_ERROR]
+/// - When the Category ID is invalid [DGCODE_RET_PARA_ERR]
+/// - Register error of own device at all deletion Device physical address is invalid [DGCODE_RET_PARA_ERR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - Delete the list of specified DTC by Category ID.
+/// - Delete SSR information,too.
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_DeleteDTCInfoList(const DGCODE_DELETE_DTC_INFO* const del_info);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_DeleteRoBInfo
+/// \~english @par Overview
+/// - Set the diagcode detail info and delete the diagcode.
+/// \~english @param [in] hApp Application handle
+/// \~english @param [in] rob_id RoB detail info
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// - PFDRECThread is available
+/// - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - The param[rob_id] do not match the defination in the diagcode ROM table [DGCODE_RET_PARA_ERR]
+/// - The communication unit ID(division) in the diagcode ROM table is invalid [DGCODE_RET_ERROR]
+/// - If the communication unit ID(division) is other in the diagcode ROM table,
+/// and failure occur when getting unit number. [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Fire and Forget only
+/// \~english @par Details
+/// - For the RoB which has been registered, do the erase procedure due to the fact that the RoB is initialized.
+/// - If diagcode which specified is not registered, return DGCODE_RET_NORMAL.
+/// - Delete SSR information,too.
+///
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_DeleteRoBInfo(const HANDLE hApp, const uint64_t rob_id);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_GetRoBInfoList
+/// \~english @par Overview
+/// - Get the List of specified RoB
+/// \~english @param [in] get_info Get info of RoB list
+/// \~english @param [out] list_info List info of RoB
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - The initialization of diag memory is finished.
+/// - BackupMgr is available
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - The pointer get_info of acquisition setting is NULL [DGCODE_RET_PARA_ERR]
+/// - The pointer list_info of storage area is NULL [DGCODE_RET_PARA_ERR]
+/// - Initialization of RoB code management information is fail [DGCODE_RET_ERROR]
+/// - The flag of diag registration start is not OK yet(The function of RoB code is not prepared yet).
+/// [DGCODE_RET_ERROR]
+/// - When the acquisition type is other than "RoB code type definition" [DGCODE_RET_PARA_ERR]
+/// - Common Diagnosis When the RoB code definition Name acquired from the memory
+/// error table do not match the definition of the RoB code ROM Table [DGCODE_RET_PARA_ERR]
+/// - The communication unit ID(division) in the RoB code ROM table is not valid [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - Get the RoB list of conditions specified by get_info.
+/// - Acquisition type must be set to RoB code type definition value.
+/// - Category ID must be set DGCODE_DIV_UNIT__CWORD92_.
+/// - Error registered device physical address is not used, and thus an arbitary value may be set.
+/// - Logic unit number for maker diag must be set DGCODE_MAKER_UNIT_ALL.
+/// - For the RoB code, set the "RoB code" described in the diag code generation tool of the RoB
+/// to be acquired.
+/// - When the RoB code is #DGCODE_GET_ALL_ROB_CODE, the latest RoB is acquired one of the registered RoB
+/// for each RoB define.
+/// - When th RoB code is other than #DGCODE_GET_ALL_ROB_CODE,
+/// the list of RoB matching the RoB code is acquired.
+/// - All DTC that matches above conditions store in list_info(list_info is variable length).
+/// - The maximum number of RoB that can be acquired at a time is 64.
+/// - By setting any value from 0 to 255 as the RoB acquisition start index position,
+/// 64 RoB can be acquired from that position.\n
+/// To acquire from Nth RoB, N-1 should be set.\n
+/// example : If the number of previous acquisitions is 64 and "RoB acquisition start index position" is
+/// set to 64, RoB from 65th to 128th can be acquired.
+/// - When the number of items remaining from RoB acquisition start index position to set
+/// the last registered RoB is less than 64, only the remaining items are acquired.
+/// example : If the case where 100 items of RoB are registered , when 64 is set
+/// as the "RoB acquisition start index position", 36 items from 65th to 100th can be acquired.
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_GetRoBInfoList(const DGCODE_GET_ROB_LIST_INFO* const get_info,
+ DGCODE_ROB_LIST_INFO* const list_info);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_GetDIDList
+/// \~english @par Overview
+/// - Get DID list which relates DTC/RoB code.
+/// \~english @param [in] code DTC or RoB
+/// \~english @param [out] list structure of DID list
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - None.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - Parameter of list is NULL. [\ref DGCODE_RET_PARA_ERR]
+/// - DTC or RoB is associated parameter of code is not exist. [\ref DGCODE_RET_ERROR]
+/// - Initialization of diagcode management information is fail [\ref DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - Return DID list which is associated parameter of DTC or RoB.
+/// \~english @see None
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_GetDIDList(const uint64_t code, DGCODE_DID_LIST* const list);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_DeleteRoBInfoList
+/// \~english @par Overview
+/// - Delete the list of specified RoB.
+/// \~english @param [in] del_info Deletion info of RoB code list
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @retval DGCODE_RET_PARA_ERR Invalid parameter
+/// \~english @par Precondition
+/// - BackupMgr is available.
+/// - The initialization of diag memory is finished.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - The pointer del_info of acquisition setting is NULL [DGCODE_RET_PARA_ERR]
+/// - Initialization of diagcode management information is fail [DGCODE_RET_ERROR]
+/// - The flag of diag registration start is not OK yet(The function of diagcode is not prepared yet).
+/// [DGCODE_RET_ERROR]
+/// - Failure occurs when read data from the backup area [DGCODE_RET_ERROR]
+/// - Failure occurs when write data to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when export data from backup area. [DGCODE_RET_ERROR]
+/// - When the Category ID is invalid [DGCODE_RET_PARA_ERR]
+/// - Register error of own device at all deletion Device physical address is invalid [DGCODE_RET_PARA_ERR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - Delete the list of specified RoB by Category ID.
+/// - Delete SSR information,too.
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_DeleteRoBInfoList(const DGCODE_DELETE_ROB_INFO* const del_info);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_StartupAllStatusOfDTC
+/// \~english @par Overview
+/// - Update all StatusOfDTC for startup of OperationCycle.
+/// \~english @param none
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - DTC ID does not match the defination of DTC ROM table [DGCODE_RET_ERROR]
+/// - Allocation of work memory fails when update the StatusOfDTC. [DGCODE_RET_ERROR]
+/// - Failure occurs when reading data from backup area [DGCODE_RET_ERROR]
+/// - Failure occurs when writing to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when writing to the backup area [DGCODE_RET_ERROR]
+/// - The pointer of DTC inhibit info is NULL [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - This API should be called only by SystemManager.
+/// - Update all StatusOfDTC for startup of OperationCycle.
+/// - This API sets the following bit of StatusOfDTC.\n
+/// bit0:testFailed is set to '0'.\n
+/// bit1:testFailedThisOperationCycle is set to '0'.\n
+/// bit2:pendingDTC is set to '0' only when bit1 and bit6 (before update) are both '0'.\n
+/// bit6:testNotCompletedThisOperationCycle is set to '1'.
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_StartupAllStatusOfDTC(void);
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup Diag_ClearAllStatusOfDTC
+/// \~english @par Overview
+/// - Update all StatusOfDTC when receiving ClearDiagnosticInformation.
+/// \~english @param none
+/// \~english @retval DGCODE_RET_NORMAL Success
+/// \~english @retval DGCODE_RET_ERROR Failure
+/// \~english @par Precondition
+/// - BackupMgr is available
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - DTC ID does not match the defination of DTC ROM table [DGCODE_RET_ERROR]
+/// - Allocation of work memory fails when update the StatusOfDTC. [DGCODE_RET_ERROR]
+/// - Failure occurs when reading data from backup area [DGCODE_RET_ERROR]
+/// - Failure occurs when writing to the backup area [DGCODE_RET_ERROR]
+/// - The sum value is invalid when writing to the backup area [DGCODE_RET_ERROR]
+/// - The pointer of DTC inhibit info is NULL [DGCODE_RET_ERROR]
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync only(None communication)
+/// \~english @par Details
+/// - This API should be called only by DiagService.
+/// - Update all StatusOfDTC for startup of OperationCycle.
+/// - This API sets the following bit of StatusOfDTC.\n
+/// bit0:testFailed is set to '0'.\n
+/// bit1:testFailedThisOperationCycle is set to '0'.\n
+/// bit2:pendingDTC is set to '0'.\n
+/// bit3:confirmedDTC is set to '0'.\n
+/// bit4:testNotCompletedSinceLastClear is set to '1'.\n
+/// bit5:testFailedSinceLastClear is set to '0'.\n
+/// bit6:testNotCompletedThisOperationCycle is set to '1'.
+/// \~english @ref DIAGCODE.h
+///
+/////////////////////////////////////////////////////////////////////////////////////
+DGCODE_RET_API Diag_ClearAllStatusOfDTC(void);
+
+/// \~english Acquire time counter value
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DGC_TIMESTAMP_GETTIME
+/// \~english @par Overview
+/// - This is a macro definition for extracting the time counter value included in the time counter information.
+/// \~english @param [in] x time counter information
+/// \~english @retval time counter value
+/// \~english @par Precondition
+/// - None.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - None.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - Mask the unique count identification value and return only the time counter value.
+/// \~english @see Diag_SyncTimeStamp
+///
+/////////////////////////////////////////////////////////////////////////////////////
+#define DGC_TIMESTAMP_GETTIME(x) ((x) & (0x00FFFFFFU))
+
+/// \~english Get unique count value
+/////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup DGC_TIMESTAMP_GETFLAG
+/// \~english @par Overview
+/// - This is a macro definition for extracting the unique counter identification value included in the time
+/// counter information.
+/// \~english @param [in] x time counter information
+/// \~english @retval unique counter identification value
+/// \~english @par Precondition
+/// - None.
+/// \~english @par Changing internal state
+/// - No change of internal state by this API occurs.
+/// \~english @par Processing failure condition
+/// - None.
+/// \~english @par Classification
+/// - Public
+/// \~english @par Type
+/// - Sync
+/// \~english @par Details
+/// - Mask the time counter value and return only the unique count identification value.
+/// \~english @see Diag_SyncTimeStamp
+///
+/////////////////////////////////////////////////////////////////////////////////////
+#define DGC_TIMESTAMP_GETFLAG(x) (((x) & (0xE0000000U)) >> (29U))
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @}*/ // end of diag_code
+/** @}*/ // end of vehicle_service
+/** @}*/ // end of BaseSystem
+
+#endif // DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_DIAGCODEAPI_H_
diff --git a/diag_code/library/include/stub/ss_diag.h b/diag_code/library/include/stub/ss_diag.h
new file mode 100644
index 00000000..0ba9b74c
--- /dev/null
+++ b/diag_code/library/include/stub/ss_diag.h
@@ -0,0 +1,24 @@
+/*
+ * @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_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_SS_DIAG_H_
+#define DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_SS_DIAG_H_
+
+#include <stub/DiagCodeAPI.h>
+
+#define SS_PUTDIAG(hApp, code)
+
+#endif // DIAG_CODE_LIBRARY_INCLUDE_VEHICLE_SERVICE_SS_DIAG_H_
diff --git a/diag_code/library/libDiagCodeAPI.ver b/diag_code/library/libDiagCodeAPI.ver
new file mode 100644
index 00000000..ca53e88d
--- /dev/null
+++ b/diag_code/library/libDiagCodeAPI.ver
@@ -0,0 +1,64 @@
+/*
+ * @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.
+ */
+
+#
+# DiagCodeAPILib version script
+#
+{
+ global:
+ ### .text section ###
+ Diag_PutDiagCode;
+ Diag_DeleteDiagCode;
+ Diag_PutDiagCode_Custom;
+ Diag_PutDiagCodeWithSSR_Custom;
+ Diag_DeleteDiagCode_Custom;
+ Diag_DeleteDiagCodeWithSSR_Custom;
+ Diag_CheckExistDiagCode;
+ Diag_GetDiagCodeList;
+ Diag_GetDiagCodeListWithSSR;
+ Diag_DeleteDiagCodeList;
+ Diag_DeleteDiagCodeListWithSSR;
+ Diag_DeleteMakerDiagCodeList;
+ Diag_CheckExistFFData;
+ Diag_GetFFDataList;
+ Diag_DeleteFFDataList;
+
+ Diag_GetServiceCodeNum;
+ Diag_InitDiagCode;
+ Diag_SetDiagCodeMask;
+ Diag_SyncTimeStamp;
+
+ Diag_InhibitPutDiagCode;
+
+ Diag_SubscribeAvailability;
+ Diag_NotifyAvailability;
+ Diag_PutDTCInfo;
+ Diag_PutRoBInfo;
+ Diag_DeleteDTCInfo;
+ Diag_DeleteRoBInfo;
+ Diag_GetDTCInfoList;
+ Diag_GetRoBInfoList;
+ Diag_DeleteDTCInfoList;
+ Diag_DeleteRoBInfoList;
+ Diag_SyncOdometer;
+ Diag_GetDIDList;
+ Diag_StartupAllStatusOfDTC;
+ Diag_ClearAllStatusOfDTC;
+ ### .data section ###
+ local:
+ *;
+};
+
diff --git a/diag_code/library/src/DiagCodeAPI.cpp b/diag_code/library/src/DiagCodeAPI.cpp
new file mode 100644
index 00000000..95d90475
--- /dev/null
+++ b/diag_code/library/src/DiagCodeAPI.cpp
@@ -0,0 +1,202 @@
+/*
+ * @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.
+ */
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include <DiagCodeAPI.h>
+
+DGCODE_RET_API Diag_SubscribeAvailability(HANDLE hApp, uint8_t availabilityId) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_NotifyAvailability(uint8_t availabilityId, BOOL bAvailability) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_PutDiagCode(HANDLE hApp, uint64_t err_id, uint16_t diagcode_code) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_DeleteDiagCode(HANDLE hApp, uint64_t err_id, uint16_t diagcode_code) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_PutDiagCode_Custom(HANDLE hApp, DGCODE_MEMINFO_CUSTOM* err_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_PutDTCInfo(const HANDLE hApp, const uint64_t dtc_id, const uint8_t test_result,
+ const DGCODE_DTC_SSR_INFO &ssr_info,
+ const uint16_t spply_code) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_PutRoBInfo(const HANDLE hApp, const uint64_t rob_id, const DGCODE_ROB_SSR_INFO* ssr_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_DeleteDTCInfo(const HANDLE hApp, const uint64_t err_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_DeleteRoBInfo(const HANDLE hApp, const uint64_t rob_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_GetDTCInfoList_CWORD29_(const DGCODE_GET_DTC_LIST_INFO* const get_info,
+ DGCODE_DTC_LIST_INFO* const list_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_GetRoBInfoList(const DGCODE_GET_ROB_LIST_INFO* const get_info,
+ DGCODE_ROB_LIST_INFO* const list_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_DeleteDTCInfoList(const DGCODE_DELETE_DTC_INFO* const del_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_DeleteRoBInfoList(const DGCODE_DELETE_ROB_INFO* const del_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_InitDiagCode(HANDLE hApp, uint8_t start_kind, CbFuncPtr fpOnCmd) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_SetDiagCodeMask(uint8_t onoff) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_SyncTimeStamp(uint32_t time_cnt, uint16_t trip_cnt) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_SyncDcmTime(const DGCODE_SSR_INFO_TIME_INFO * const hour_info) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_SyncOdometer(const uint32_t mileage, const uint8_t unit) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_InhibitPutDiagCode(void) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_GetDIDList(const uint64_t code, DGCODE_DID_LIST* const list) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_StartupAllStatusOfDTC(void) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
+
+DGCODE_RET_API Diag_ClearAllStatusOfDTC(void) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return DGCODE_RET_NORMAL;
+}
diff --git a/diag_code/library_dummy_dccc/Makefile b/diag_code/library_dummy_dccc/Makefile
new file mode 100644
index 00000000..6e818df9
--- /dev/null
+++ b/diag_code/library_dummy_dccc/Makefile
@@ -0,0 +1,46 @@
+#
+# @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 = libDiagApiDccc
+
+######### install headers #############
+VPATH += ./include/$(COMPONENT_NAME)
+INST_HEADERS += DIAG_API_DCCC.h
+
+######### compiled sources #############
+libDiagApiDccc_SRCS = src/DIAG_API_DCCC.cpp
+
+######### compile switch #############
+LDFLAGS += -Wl,--no-as-needed
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+######### add include path #############
+CPPFLAGS += -I./include/stub
+
+######### dynamic linked library path #############
+
+######## CXX Link ###############
+
+######### compiled options #############
+
+######### common mk #############
+include ../../stub.mk
diff --git a/diag_code/library_dummy_dccc/include/stub/DIAG_API_DCCC.h b/diag_code/library_dummy_dccc/include/stub/DIAG_API_DCCC.h
new file mode 100644
index 00000000..dc92190e
--- /dev/null
+++ b/diag_code/library_dummy_dccc/include/stub/DIAG_API_DCCC.h
@@ -0,0 +1,109 @@
+/*
+ * @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 DIAG_API_DCCC.h
+ * @brief Diagcode feature API defined
+*****************************************************************************/
+
+
+/*****************************************************************************
+ * *********************************
+ * * Diagcode feature API defined *
+ * *********************************
+ *
+ * ** Creation and release considerations **
+ * -Because DiagCode API depends on product specifications, it is created at the product level.
+ *
+ * -Submit and request the created headers and dummy Lib(empty functions defined only for I/F)
+ * from DiagService to BaseSystem and build them from BaseSystem.
+ *
+ * -The century Lib created(not dummy Lib) is built from DiagService.
+ *
+ * ->Since this API is also used in BaseSystem,
+ * the API must be inserted from the BaseSystem built to avoid errors in JointBuild.
+ *
+ * ** Notes on change **
+ * -When modifying a header without cahnging the I/F,
+ * only the header should be submitted to the BaseSystem and requested.
+ *
+ * -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.
+ *
+*****************************************************************************/
+
+
+#ifndef DIAG_CODE_LIBRARY_DUMMY_DCCC_INCLUDE_VEHICLE_SERVICE_DIAG_API_DCCC_H_
+#define DIAG_CODE_LIBRARY_DUMMY_DCCC_INCLUDE_VEHICLE_SERVICE_DIAG_API_DCCC_H_
+
+#include <native_service/frameworkunified_framework_if.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+#define NTFY_DiagService_Availability_DCCC ("DiagService/Availability")
+
+/***********************************************************
+ Enumerated type
+***********************************************************/
+/*! @brief Return value for DiagCode re-checking and clearing feature APIs */
+typedef enum {
+ RET_DIAG_API_DCCC_NORMAL = 0, //!<Success
+ RET_DIAG_API_DCCC_ERROR //!<Error
+} RET_DIAG_API_DCCC;
+
+/***********************************************************
+ Constant
+***********************************************************/
+// Common
+/*! @brief message ID */
+#define MSGID_DIAG_API_DCCC_DELIVERY_ENTRY (0xFF000001) // Delivery registration notice
+#define MSGID_DIAG_API_DCCC_SND_RECHECK (0xFF000002) // Re-assay instruction
+#define MSGID_DIAG_API_DCCC_RET_RECHECK (0xFF000003) // Re-assay completion notice
+#define MSGID_DIAG_API_DCCC_SND_DIAGCODECLR (0xFF000004) // Diag deletion instruction
+#define MSGID_DIAG_API_DCCC_RET_DIAGCODECLR (0xFF000005) // Daig deletion completion notice
+
+/*! @brief Delivery features */
+#define DIAG_API_DCCC_DELIVERY_RECHECK (0x00000001) // Recheck
+#define DIAG_API_DCCC_DELIVERY_DIAGCODECLR (0x00000002) // Diag delete
+#define DIAG_API_DCCC_DELIVERY_ALL (0xFFFFFFFF) // All function
+
+/*! @brief Result of re-assay execution */
+#define DIAG_API_DCCC_RET_RECHECK_SUCCESS (0x00000000) // Recheck successed
+#define DIAG_API_DCCC_RET_RECHECK_ERROR (0x00000001) // Recheck failed
+
+
+/*! @brief Diag deletion result */
+#define DIAG_API_DCCC_RET_DIAGCODECLR_SUCCESS (0x00000000) // Diag deleion successed
+#define DIAG_API_DCCC_RET_DIAGCODECLR_ERROR (0x00000001) // Diag deleion failed
+
+/***********************************************************
+ API
+***********************************************************/
+extern RET_DIAG_API_DCCC DIAG_API_DCCC_DeliveryEntry(HANDLE hApp, PCSTR notifyName, u_int32_t delivery);
+extern RET_DIAG_API_DCCC DIAG_API_DCCC_SND_ReCheck(HANDLE hApp, PCSTR notifyName);
+extern RET_DIAG_API_DCCC DIAG_API_DCCC_RET_ReCheck(HANDLE hApp, PCSTR notifyName, u_int32_t status);
+extern RET_DIAG_API_DCCC DIAG_API_DCCC_SND_DiagCodeCLR(HANDLE hApp, PCSTR notifyName);
+extern RET_DIAG_API_DCCC DIAG_API_DCCC_RET_DiagCodeCLR(HANDLE hApp, PCSTR notifyName, u_int32_t status);
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+#endif // DIAG_CODE_LIBRARY_DUMMY_DCCC_INCLUDE_VEHICLE_SERVICE_DIAG_API_DCCC_H_
diff --git a/diag_code/library_dummy_dccc/src/DIAG_API_DCCC.cpp b/diag_code/library_dummy_dccc/src/DIAG_API_DCCC.cpp
new file mode 100644
index 00000000..f1da82b9
--- /dev/null
+++ b/diag_code/library_dummy_dccc/src/DIAG_API_DCCC.cpp
@@ -0,0 +1,64 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include <DIAG_API_DCCC.h>
+
+RET_DIAG_API_DCCC DIAG_API_DCCC_DeliveryEntry(HANDLE hApp, PCSTR notifyName, u_int32_t delivery) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DIAG_API_DCCC_NORMAL;
+}
+
+RET_DIAG_API_DCCC DIAG_API_DCCC_SND_ReCheck(HANDLE hApp, PCSTR notifyName) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DIAG_API_DCCC_NORMAL;
+}
+
+RET_DIAG_API_DCCC DIAG_API_DCCC_RET_ReCheck(HANDLE hApp, PCSTR notifyName, u_int32_t status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DIAG_API_DCCC_NORMAL;
+}
+
+RET_DIAG_API_DCCC DIAG_API_DCCC_SND_DiagCodeCLR(HANDLE hApp, PCSTR notifyName) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DIAG_API_DCCC_NORMAL;
+}
+
+RET_DIAG_API_DCCC DIAG_API_DCCC_RET_DiagCodeCLR(HANDLE hApp, PCSTR notifyName, u_int32_t status) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return RET_DIAG_API_DCCC_NORMAL;
+}
+
diff --git a/diag_record/LICENSE b/diag_record/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/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/diag_record/Makefile b/diag_record/Makefile
new file mode 100644
index 00000000..8b85cd99
--- /dev/null
+++ b/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/diag_record/library_dummy_drec/Makefile b/diag_record/library_dummy_drec/Makefile
new file mode 100644
index 00000000..e96152cd
--- /dev/null
+++ b/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/diag_record/library_dummy_drec/include/stub/MM_DREC_API.h b/diag_record/library_dummy_drec/include/stub/MM_DREC_API.h
new file mode 100644
index 00000000..7d0568cc
--- /dev/null
+++ b/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/diag_record/library_dummy_drec/src/MM_DREC_API.cpp b/diag_record/library_dummy_drec/src/MM_DREC_API.cpp
new file mode 100644
index 00000000..5ecd9433
--- /dev/null
+++ b/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/diag_record/library_record_api/Makefile b/diag_record/library_record_api/Makefile
new file mode 100644
index 00000000..9efbd4f0
--- /dev/null
+++ b/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/diag_record/library_record_api/include/stub/PFDREC_API.h b/diag_record/library_record_api/include/stub/PFDREC_API.h
new file mode 100644
index 00000000..b4ad71cf
--- /dev/null
+++ b/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/diag_record/library_record_api/libDiagRecordAPI.ver b/diag_record/library_record_api/libDiagRecordAPI.ver
new file mode 100644
index 00000000..6ce89fcc
--- /dev/null
+++ b/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/diag_record/library_record_api/src/DiagRecordAPI.cpp b/diag_record/library_record_api/src/DiagRecordAPI.cpp
new file mode 100644
index 00000000..b2c53635
--- /dev/null
+++ b/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/diag_record/library_record_thread/Makefile b/diag_record/library_record_thread/Makefile
new file mode 100644
index 00000000..350cd90b
--- /dev/null
+++ b/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/diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h b/diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h
new file mode 100644
index 00000000..9592939d
--- /dev/null
+++ b/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/diag_record/library_record_thread/src/pfdrec_thread.cpp b/diag_record/library_record_thread/src/pfdrec_thread.cpp
new file mode 100644
index 00000000..164fcfbe
--- /dev/null
+++ b/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;
+}
diff --git a/memory_gpio_access_library/LICENSE b/memory_gpio_access_library/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/memory_gpio_access_library/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/memory_gpio_access_library/Makefile b/memory_gpio_access_library/Makefile
new file mode 100644
index 00000000..f30423af
--- /dev/null
+++ b/memory_gpio_access_library/Makefile
@@ -0,0 +1,20 @@
+#
+# @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.
+#
+
+
+SUBDIRS := client
+
+include ../stub.mk
diff --git a/memory_gpio_access_library/client/Makefile b/memory_gpio_access_library/client/Makefile
new file mode 100644
index 00000000..202fce95
--- /dev/null
+++ b/memory_gpio_access_library/client/Makefile
@@ -0,0 +1,44 @@
+#
+# @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.
+#
+
+######### installed shared library(*.so) #############
+INST_SHLIBS += libextension
+
+######### install headers(*.h) #############
+INST_HEADERS += el_gpio.h el_mem.h
+
+######### compiled sources #############
+libextension_SRCS += el_gpio.c el_mem.c
+
+######### add source path #############
+VPATH += src
+VPATH += include/stub
+
+######### add include path #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/$(COMPONENT_NAME)
+
+######### add compile option #############
+CPPFLAGS += -std=c++11
+
+######### linked library #############
+
+######### linked library (dynamic) #############
+
+######### add library path #############
+
+
+include ../../stub.mk
diff --git a/memory_gpio_access_library/client/include/stub/el_gpio.h b/memory_gpio_access_library/client/include/stub/el_gpio.h
new file mode 100644
index 00000000..a9d5639b
--- /dev/null
+++ b/memory_gpio_access_library/client/include/stub/el_gpio.h
@@ -0,0 +1,802 @@
+/*
+ * @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 el_gpio.h
+ * @brief el_gpio function header file
+ */
+
+#ifndef MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_GPIO_H_
+#define MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_GPIO_H_
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup native_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup memory_gpio_access_library
+ * @ingroup native_service
+ * @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <stdbool.h>
+
+/**
+ * \~english Definitions of the GPIO Control Symbol
+ */
+enum {
+ EL_GPO_SUB_RST_N = 0 ,
+ EL_GPO_NAVI_DET,
+ EL_GPI_ILG_RST_N,
+ EL_GPI_GPS_INT,
+ EL_GPO_GPS_P_OFF,
+ EL_GPO_CP_RST_N,
+ EL_GPO_TP_RST_N,
+ EL_GPI_SEC_ST1,
+ EL_GPI_SEC_ST0,
+ EL_GPO__CWORD52__RST,
+ EL_GPI__CWORD32__INT,
+ EL_GPO__CWORD32__RST,
+ EL_GPO_XM_RST,
+ EL_GPO_NFC_RST,
+ EL_GPO_USB1_PWEN,
+ EL_GPI_USB1_OVC,
+ EL_GPO__CWORD52__VUP,
+ EL_GPO_WL_EN,
+ EL_GPO_BT_EN,
+ EL_GPO_AVB_RST_N,
+ EL_GPO_SEC_RST_N,
+ EL_SPI_NAVI_REQ,
+ EL_SPI_NAVI_RDY,
+ EL_GPI_USB0_QVC,
+ EL_GPO_USB0_PWE,
+ EL_GPO_GVIFTX1_RST_N,
+ EL_GPO_GVIFTX0_RST_N,
+ EL_GPO_EMMC_ON_N,
+ EL_SPI_GVIF_D_UCS,
+ EL_GPO__CWORD65__RST_N,
+ EL_GPO_GVIFRX_RST_N,
+ EL_GPI_IOEX_INT,
+ EL_GPO_FBRQ,
+ EL_GPO_IOEX_RST_N,
+ EL_GPI_GVIFTX1_GPIO3,
+ EL_GPI_DARC_INT,
+ EL_GPI_GVIFTX0_GPIO3,
+ EL_GPI_GVIF_REQ_INT,
+ EL_GPI_ACC_DET_OUT,
+ EL_GPI_GVIFRX_GPIO3,
+ EL_GPO_DTCP_RST_N,
+ EL_NAVI_NMI_N,
+ EL_GPI_SDPCHK,
+ EL_GPO_XM_SHDN,
+ EL_GPI_GVIF_D_REQ_INT,
+ EL_SPI_GVIF_D_DCS,
+ EL_GPO_EMMC_PU_ON,
+ EL_GPIO_GVIFRX_GPIO0,
+ EL_GPI_GVIFRX_GPIO2,
+ EL_GPI_GVIFRX_LOS,
+ EL_GPIO_GVIFTX0_GPIO0,
+ EL_GPI_GVIFTX0_GPIO2,
+ EL_GPIO_GVIFTX1_GPIO0,
+ EL_GPI_GVIFTX1_GPIO2,
+ EL_GPO_USBHUB_RST,
+ EL_GPI__CWORD65__BOOT_ERR,
+ EL_GPO_CKECNT,
+ EL_GPO_SDPCLR,
+ EL_GPO_SENSOR_RST,
+ EL_GPI_SENSOR_INT,
+ EL_GPO_DAC_MUTE,
+ EL_GPO_DSRC_PON,
+ EL_GPI_2PULSE_REV,
+ EL_GPI_ILL_DET,
+ EL_GPI_DAB_DET,
+ EL_GPI_FAN_DET,
+
+ EL_GPO_SOC_DIAG_OUT,
+ EL_GPI_SOC_DIAG_IN,
+
+ EL_GPIO_SYMBOL_MAX,
+};
+
+/**
+ * \~english Rising level trigger
+ */
+#define EL_GPIO_IRQ_TRIGGER_RISING (0x01)
+
+/**
+ * \~english Falling level trigger
+ */
+#define EL_GPIO_IRQ_TRIGGER_FALLING (0x02)
+
+/**
+ * \~english High level trigger
+ */
+#define EL_GPIO_IRQ_TRIGGER_HIGH (0x04)
+
+/**
+ * \~english Low level trigger
+ */
+#define EL_GPIO_IRQ_TRIGGER_LOW (0x08)
+
+/**
+ * \~english Trigger mask
+ */
+#define EL_GPIO_IRQ_TRIGGER_MASK (EL_GPIO_IRQ_TRIGGER_RISING | \
+ EL_GPIO_IRQ_TRIGGER_FALLING | \
+ EL_GPIO_IRQ_TRIGGER_HIGH | \
+ EL_GPIO_IRQ_TRIGGER_LOW)
+
+/**
+ * \~english None timeout
+ */
+#define EL_GPIO_IRQ_NO_TIMEOUT (-1)
+
+/**\ingroup EL_Gpio_write
+* \~english @par Brief
+* Write data to specified GPIO.
+* \~english @param [in] symbol
+* int - symbol(Definitions of the GPIO Control Symbol)
+* \~english @param [in] value
+* bool - setting value(0 or 1)
+* \~english @par
+* Definitions of the GPIO Control Symbol
+* \~english @code
+* enum {
+* EL_GPO_SUB_RST_N = 0 ,
+* EL_GPO_NAVI_DET,
+* EL_GPI_ILG_RST_N,
+* EL_GPI_GPS_INT,
+* EL_GPO_GPS_P_OFF,
+* EL_GPO_CP_RST_N,
+* EL_GPO_TP_RST_N,
+* EL_GPI_SEC_ST1,
+* EL_GPI_SEC_ST0,
+* EL_GPO__CWORD52__RST,
+* EL_GPI__CWORD32__INT,
+* EL_GPO__CWORD32__RST,
+* EL_GPO_XM_RST,
+* EL_GPO_NFC_RST,
+* EL_GPO_USB1_PWEN,
+* EL_GPI_USB1_OVC,
+* EL_GPO__CWORD52__VUP,
+* EL_GPO_WL_EN,
+* EL_GPO_BT_EN,
+* EL_GPO_AVB_RST_N,
+* EL_GPO_SEC_RST_N,
+* EL_SPI_NAVI_REQ,
+* EL_SPI_NAVI_RDY,
+* EL_GPI_USB0_QVC,
+* EL_GPO_USB0_PWE,
+* EL_GPO_GVIFTX1_RST_N,
+* EL_GPO_GVIFTX0_RST_N,
+* EL_GPO_EMMC_ON_N,
+* EL_SPI_GVIF_D_UCS,
+* EL_GPO__CWORD65__RST_N,
+* EL_GPO_GVIFRX_RST_N,
+* EL_GPI_IOEX_INT,
+* EL_GPO_FBRQ,
+* EL_GPO_IOEX_RST_N,
+* EL_GPI_GVIFTX1_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_GVIF_REQ_INT,
+* EL_GPI_ACC_DET_OUT,
+* EL_GPI_GVIFRX_GPIO3,
+* EL_GPO_DTCP_RST_N,
+* EL_NAVI_NMI_N,
+* EL_GPI_SDPCHK,
+* EL_GPO_XM_SHDN,
+* EL_GPI_GVIF_D_REQ_INT,
+* EL_SPI_GVIF_D_DCS,
+* EL_GPO_EMMC_PU_ON,
+* EL_GPIO_GVIFRX_GPIO0,
+* EL_GPI_GVIFRX_GPIO2,
+* EL_GPI_GVIFRX_LOS,
+* EL_GPIO_GVIFTX0_GPIO0,
+* EL_GPI_GVIFTX0_GPIO2,
+* EL_GPIO_GVIFTX1_GPIO0,
+* EL_GPI_GVIFTX1_GPIO2,
+* EL_GPO_USBHUB_RST,
+* EL_GPI__CWORD65__BOOT_ERR,
+* EL_GPO_CKECNT,
+* EL_GPO_SDPCLR,
+* EL_GPO_SENSOR_RST,
+* EL_GPI_SENSOR_INT,
+* EL_GPO_DAC_MUTE,
+* EL_GPO_DSRC_PON,
+* EL_GPI_2PULSE_REV,
+* EL_GPI_ILL_DET,
+* EL_GPI_DAB_DET,
+* EL_GPI_FAN_DET,
+* EL_GPO_SOC_DIAG_OUT,
+* EL_GPI_SOC_DIAG_IN,
+* EL_GPIO_SYMBOL_MAX,
+* };
+* @endcode
+* \~english @retval 0 Success
+* \~english @retval -1 Error:Set errno according to error type when error occurs.
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
+* - syscall error(open(), ioctl()). [-1]
+* \~english @par Detail
+* - There is authority to access the specified GPIO, writing data is possiable only\n
+* when GPIO port is an output port.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_Gpio_read
+*/
+int EL_Gpio_write(int symbol , bool value); // NOLINT[readability/naming]
+
+/** \ingroup EL_Gpio_read
+* \~english @par Brief
+* Read data from specified GPIO.
+* \~english @param [in] symbol
+* int - symbol(Definitions of the GPIO Control Symbol)
+* \~english @param [out] value
+* bool * - setting value
+* \~english @par
+* Definitions of the GPIO Control Symbol
+* \~english @code
+* enum {
+* EL_GPO_SUB_RST_N = 0 ,
+* EL_GPO_NAVI_DET,
+* EL_GPI_ILG_RST_N,
+* EL_GPI_GPS_INT,
+* EL_GPO_GPS_P_OFF,
+* EL_GPO_CP_RST_N,
+* EL_GPO_TP_RST_N,
+* EL_GPI_SEC_ST1,
+* EL_GPI_SEC_ST0,
+* EL_GPO__CWORD52__RST,
+* EL_GPI__CWORD32__INT,
+* EL_GPO__CWORD32__RST,
+* EL_GPO_XM_RST,
+* EL_GPO_NFC_RST,
+* EL_GPO_USB1_PWEN,
+* EL_GPI_USB1_OVC,
+* EL_GPO__CWORD52__VUP,
+* EL_GPO_WL_EN,
+* EL_GPO_BT_EN,
+* EL_GPO_AVB_RST_N,
+* EL_GPO_SEC_RST_N,
+* EL_SPI_NAVI_REQ,
+* EL_SPI_NAVI_RDY,
+* EL_GPI_USB0_QVC,
+* EL_GPO_USB0_PWE,
+* EL_GPO_GVIFTX1_RST_N,
+* EL_GPO_GVIFTX0_RST_N,
+* EL_GPO_EMMC_ON_N,
+* EL_SPI_GVIF_D_UCS,
+* EL_GPO__CWORD65__RST_N,
+* EL_GPO_GVIFRX_RST_N,
+* EL_GPI_IOEX_INT,
+* EL_GPO_FBRQ,
+* EL_GPO_IOEX_RST_N,
+* EL_GPI_GVIFTX1_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_GVIF_REQ_INT,
+* EL_GPI_ACC_DET_OUT,
+* EL_GPI_GVIFRX_GPIO3,
+* EL_GPO_DTCP_RST_N,
+* EL_NAVI_NMI_N,
+* EL_GPI_SDPCHK,
+* EL_GPO_XM_SHDN,
+* EL_GPI_GVIF_D_REQ_INT,
+* EL_SPI_GVIF_D_DCS,
+* EL_GPO_EMMC_PU_ON,
+* EL_GPIO_GVIFRX_GPIO0,
+* EL_GPI_GVIFRX_GPIO2,
+* EL_GPI_GVIFRX_LOS,
+* EL_GPIO_GVIFTX0_GPIO0,
+* EL_GPI_GVIFTX0_GPIO2,
+* EL_GPIO_GVIFTX1_GPIO0,
+* EL_GPI_GVIFTX1_GPIO2,
+* EL_GPO_USBHUB_RST,
+* EL_GPI__CWORD65__BOOT_ERR,
+* EL_GPO_CKECNT,
+* EL_GPO_SDPCLR,
+* EL_GPO_SENSOR_RST,
+* EL_GPI_SENSOR_INT,
+* EL_GPO_DAC_MUTE,
+* EL_GPO_DSRC_PON,
+* EL_GPI_2PULSE_REV,
+* EL_GPI_ILL_DET,
+* EL_GPI_DAB_DET,
+* EL_GPI_FAN_DET,
+* EL_GPO_SOC_DIAG_OUT,
+* EL_GPI_SOC_DIAG_IN,
+* EL_GPIO_SYMBOL_MAX,
+* };
+* @endcode
+* \~english @retval 0 Success
+* \~english @retval -1 Error:Set errno according to error type when error occurs.
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
+* - syscall error(open(), ioctl()). [-1]
+* \~english @par Detail
+* - Reading data is possiable when there is authority to access the specified GPIO.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_Gpio_write
+*/
+int EL_Gpio_read(int symbol , bool *value); // NOLINT[readability/naming]
+
+/** \ingroup EL_Gpio_attachInterruptControl
+* \~english @par Brief
+* Register interruption control of specified GPIO.
+* \~english @param [in] symbol
+* int - symbol(Definitions of the GPIO Control Symbol)
+* \~english @param [in] irq_flags
+* unsigned long - Interruption control flag of GPIO.
+* \~english @par
+* Definitions of the GPIO Control Symbol
+* \~english @code
+* enum {
+* EL_GPO_SUB_RST_N = 0 ,
+* EL_GPO_NAVI_DET,
+* EL_GPI_ILG_RST_N,
+* EL_GPI_GPS_INT,
+* EL_GPO_GPS_P_OFF,
+* EL_GPO_CP_RST_N,
+* EL_GPO_TP_RST_N,
+* EL_GPI_SEC_ST1,
+* EL_GPI_SEC_ST0,
+* EL_GPO__CWORD52__RST,
+* EL_GPI__CWORD32__INT,
+* EL_GPO__CWORD32__RST,
+* EL_GPO_XM_RST,
+* EL_GPO_NFC_RST,
+* EL_GPO_USB1_PWEN,
+* EL_GPI_USB1_OVC,
+* EL_GPO__CWORD52__VUP,
+* EL_GPO_WL_EN,
+* EL_GPO_BT_EN,
+* EL_GPO_AVB_RST_N,
+* EL_GPO_SEC_RST_N,
+* EL_SPI_NAVI_REQ,
+* EL_SPI_NAVI_RDY,
+* EL_GPI_USB0_QVC,
+* EL_GPO_USB0_PWE,
+* EL_GPO_GVIFTX1_RST_N,
+* EL_GPO_GVIFTX0_RST_N,
+* EL_GPO_EMMC_ON_N,
+* EL_SPI_GVIF_D_UCS,
+* EL_GPO__CWORD65__RST_N,
+* EL_GPO_GVIFRX_RST_N,
+* EL_GPI_IOEX_INT,
+* EL_GPO_FBRQ,
+* EL_GPO_IOEX_RST_N,
+* EL_GPI_GVIFTX1_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_GVIF_REQ_INT,
+* EL_GPI_ACC_DET_OUT,
+* EL_GPI_GVIFRX_GPIO3,
+* EL_GPO_DTCP_RST_N,
+* EL_NAVI_NMI_N,
+* EL_GPI_SDPCHK,
+* EL_GPO_XM_SHDN,
+* EL_GPI_GVIF_D_REQ_INT,
+* EL_SPI_GVIF_D_DCS,
+* EL_GPO_EMMC_PU_ON,
+* EL_GPIO_GVIFRX_GPIO0,
+* EL_GPI_GVIFRX_GPIO2,
+* EL_GPI_GVIFRX_LOS,
+* EL_GPIO_GVIFTX0_GPIO0,
+* EL_GPI_GVIFTX0_GPIO2,
+* EL_GPIO_GVIFTX1_GPIO0,
+* EL_GPI_GVIFTX1_GPIO2,
+* EL_GPO_USBHUB_RST,
+* EL_GPI__CWORD65__BOOT_ERR,
+* EL_GPO_CKECNT,
+* EL_GPO_SDPCLR,
+* EL_GPO_SENSOR_RST,
+* EL_GPI_SENSOR_INT,
+* EL_GPO_DAC_MUTE,
+* EL_GPO_DSRC_PON,
+* EL_GPI_2PULSE_REV,
+* EL_GPI_ILL_DET,
+* EL_GPI_DAB_DET,
+* EL_GPI_FAN_DET,
+* EL_GPO_SOC_DIAG_OUT,
+* EL_GPI_SOC_DIAG_IN,
+* EL_GPIO_SYMBOL_MAX,
+* };
+* @endcode
+* \~english @par
+* Interruption control flag of GPIO
+* - EL_GPIO_IRQ_TRIGGER_RISING :Rising level trigger
+* - EL_GPIO_IRQ_TRIGGER_FALLING :Falling level trigger
+* - EL_GPIO_IRQ_TRIGGER_HIGH :High level trigger
+* - EL_GPIO_IRQ_TRIGGER_LOW :Low level trigger
+* \~english @retval 0 Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Flag specified by irq_flags is not defined flag. [-1]
+* - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
+* - syscall error(open(), ioctl()). [-1]
+* \~english @par Detail
+* - Register interruption control of specified GPIO.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_Gpio_detachInterruptControl
+*/
+int EL_Gpio_attachInterruptControl(int symbol , unsigned long irq_flags); // NOLINT [readability/nolint]
+
+/** \ingroup EL_Gpio_detachInterruptControl
+* \~english @par Brief
+* Detach interruption control of specified GPIO.
+* \~english @param [in] symbol
+* int - symbol(Definitions of the GPIO Control Symbol)
+* \~english @par
+* Definitions of the GPIO Control Symbol
+* \~english @code
+* enum {
+* EL_GPO_SUB_RST_N = 0 ,
+* EL_GPO_NAVI_DET,
+* EL_GPI_ILG_RST_N,
+* EL_GPI_GPS_INT,
+* EL_GPO_GPS_P_OFF,
+* EL_GPO_CP_RST_N,
+* EL_GPO_TP_RST_N,
+* EL_GPI_SEC_ST1,
+* EL_GPI_SEC_ST0,
+* EL_GPO__CWORD52__RST,
+* EL_GPI__CWORD32__INT,
+* EL_GPO__CWORD32__RST,
+* EL_GPO_XM_RST,
+* EL_GPO_NFC_RST,
+* EL_GPO_USB1_PWEN,
+* EL_GPI_USB1_OVC,
+* EL_GPO__CWORD52__VUP,
+* EL_GPO_WL_EN,
+* EL_GPO_BT_EN,
+* EL_GPO_AVB_RST_N,
+* EL_GPO_SEC_RST_N,
+* EL_SPI_NAVI_REQ,
+* EL_SPI_NAVI_RDY,
+* EL_GPI_USB0_QVC,
+* EL_GPO_USB0_PWE,
+* EL_GPO_GVIFTX1_RST_N,
+* EL_GPO_GVIFTX0_RST_N,
+* EL_GPO_EMMC_ON_N,
+* EL_SPI_GVIF_D_UCS,
+* EL_GPO__CWORD65__RST_N,
+* EL_GPO_GVIFRX_RST_N,
+* EL_GPI_IOEX_INT,
+* EL_GPO_FBRQ,
+* EL_GPO_IOEX_RST_N,
+* EL_GPI_GVIFTX1_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_GVIF_REQ_INT,
+* EL_GPI_ACC_DET_OUT,
+* EL_GPI_GVIFRX_GPIO3,
+* EL_GPO_DTCP_RST_N,
+* EL_NAVI_NMI_N,
+* EL_GPI_SDPCHK,
+* EL_GPO_XM_SHDN,
+* EL_GPI_GVIF_D_REQ_INT,
+* EL_SPI_GVIF_D_DCS,
+* EL_GPO_EMMC_PU_ON,
+* EL_GPIO_GVIFRX_GPIO0,
+* EL_GPI_GVIFRX_GPIO2,
+* EL_GPI_GVIFRX_LOS,
+* EL_GPIO_GVIFTX0_GPIO0,
+* EL_GPI_GVIFTX0_GPIO2,
+* EL_GPIO_GVIFTX1_GPIO0,
+* EL_GPI_GVIFTX1_GPIO2,
+* EL_GPO_USBHUB_RST,
+* EL_GPI__CWORD65__BOOT_ERR,
+* EL_GPO_CKECNT,
+* EL_GPO_SDPCLR,
+* EL_GPO_SENSOR_RST,
+* EL_GPI_SENSOR_INT,
+* EL_GPO_DAC_MUTE,
+* EL_GPO_DSRC_PON,
+* EL_GPI_2PULSE_REV,
+* EL_GPI_ILL_DET,
+* EL_GPI_DAB_DET,
+* EL_GPI_FAN_DET,
+* EL_GPO_SOC_DIAG_OUT,
+* EL_GPI_SOC_DIAG_IN,
+* EL_GPIO_SYMBOL_MAX,
+* };
+* @endcode
+* \~english @retval 0 Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
+* - syscall error(open(), ioctl()). [-1]
+* \~english @par Detail
+* - Detach interruption control of specified GPIO.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_Gpio_attachInterruptControl
+*/
+int EL_Gpio_detachInterruptControl(int symbol); // NOLINT[readability/naming]
+
+/** \ingroup EL_Gpio_waitInterrupt
+* \~english @par Brief
+* Waiting interruption of specified GPIO occured without timeout.
+* \~english @param [in] symbol
+* int - symbol(Definitions of the GPIO Control Symbol)
+* \~english @par
+* Definitions of the GPIO Control Symbol
+* \~english @code
+* enum {
+* EL_GPO_SUB_RST_N = 0 ,
+* EL_GPO_NAVI_DET,
+* EL_GPI_ILG_RST_N,
+* EL_GPI_GPS_INT,
+* EL_GPO_GPS_P_OFF,
+* EL_GPO_CP_RST_N,
+* EL_GPO_TP_RST_N,
+* EL_GPI_SEC_ST1,
+* EL_GPI_SEC_ST0,
+* EL_GPO__CWORD52__RST,
+* EL_GPI__CWORD32__INT,
+* EL_GPO__CWORD32__RST,
+* EL_GPO_XM_RST,
+* EL_GPO_NFC_RST,
+* EL_GPO_USB1_PWEN,
+* EL_GPI_USB1_OVC,
+* EL_GPO__CWORD52__VUP,
+* EL_GPO_WL_EN,
+* EL_GPO_BT_EN,
+* EL_GPO_AVB_RST_N,
+* EL_GPO_SEC_RST_N,
+* EL_SPI_NAVI_REQ,
+* EL_SPI_NAVI_RDY,
+* EL_GPI_USB0_QVC,
+* EL_GPO_USB0_PWE,
+* EL_GPO_GVIFTX1_RST_N,
+* EL_GPO_GVIFTX0_RST_N,
+* EL_GPO_EMMC_ON_N,
+* EL_SPI_GVIF_D_UCS,
+* EL_GPO__CWORD65__RST_N,
+* EL_GPO_GVIFRX_RST_N,
+* EL_GPI_IOEX_INT,
+* EL_GPO_FBRQ,
+* EL_GPO_IOEX_RST_N,
+* EL_GPI_GVIFTX1_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_GVIF_REQ_INT,
+* EL_GPI_ACC_DET_OUT,
+* EL_GPI_GVIFRX_GPIO3,
+* EL_GPO_DTCP_RST_N,
+* EL_NAVI_NMI_N,
+* EL_GPI_SDPCHK,
+* EL_GPO_XM_SHDN,
+* EL_GPI_GVIF_D_REQ_INT,
+* EL_SPI_GVIF_D_DCS,
+* EL_GPO_EMMC_PU_ON,
+* EL_GPIO_GVIFRX_GPIO0,
+* EL_GPI_GVIFRX_GPIO2,
+* EL_GPI_GVIFRX_LOS,
+* EL_GPIO_GVIFTX0_GPIO0,
+* EL_GPI_GVIFTX0_GPIO2,
+* EL_GPIO_GVIFTX1_GPIO0,
+* EL_GPI_GVIFTX1_GPIO2,
+* EL_GPO_USBHUB_RST,
+* EL_GPI__CWORD65__BOOT_ERR,
+* EL_GPO_CKECNT,
+* EL_GPO_SDPCLR,
+* EL_GPO_SENSOR_RST,
+* EL_GPI_SENSOR_INT,
+* EL_GPO_DAC_MUTE,
+* EL_GPO_DSRC_PON,
+* EL_GPI_2PULSE_REV,
+* EL_GPI_ILL_DET,
+* EL_GPI_DAB_DET,
+* EL_GPI_FAN_DET,
+* EL_GPO_SOC_DIAG_OUT,
+* EL_GPI_SOC_DIAG_IN,
+* EL_GPIO_SYMBOL_MAX,
+* };
+* @endcode
+* \~english @retval 0 Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - Interruption of specified GPIO was registered by \ref EL_Gpio_attachInterruptControl.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
+* - syscall error(open(), ioctl()). [-1]
+* \~english @par Detail
+* - Waiting interruption of specified GPIO occured without timeout.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_Gpio_waitInterrupt_timeout
+*/
+int EL_Gpio_waitInterrupt(int symbol); // NOLINT[readability/naming]
+
+/** \ingroup EL_Gpio_waitInterrupt_timeout
+* \~english @par Brief
+* Waiting interruption of specified GPIO with timeout.
+* \~english @param [in] symbol
+* int - Symbol(Definitions of the GPIO Control Symbol)
+* \~english @param [in] timeout
+* int - Timeout of time(unit: jiffies)
+* \~english @par
+* Definitions of the GPIO Control Symbol
+* \~english @code
+* enum {
+* EL_GPO_SUB_RST_N = 0 ,
+* EL_GPO_NAVI_DET,
+* EL_GPI_ILG_RST_N,
+* EL_GPI_GPS_INT,
+* EL_GPO_GPS_P_OFF,
+* EL_GPO_CP_RST_N,
+* EL_GPO_TP_RST_N,
+* EL_GPI_SEC_ST1,
+* EL_GPI_SEC_ST0,
+* EL_GPO__CWORD52__RST,
+* EL_GPI__CWORD32__INT,
+* EL_GPO__CWORD32__RST,
+* EL_GPO_XM_RST,
+* EL_GPO_NFC_RST,
+* EL_GPO_USB1_PWEN,
+* EL_GPI_USB1_OVC,
+* EL_GPO__CWORD52__VUP,
+* EL_GPO_WL_EN,
+* EL_GPO_BT_EN,
+* EL_GPO_AVB_RST_N,
+* EL_GPO_SEC_RST_N,
+* EL_SPI_NAVI_REQ,
+* EL_SPI_NAVI_RDY,
+* EL_GPI_USB0_QVC,
+* EL_GPO_USB0_PWE,
+* EL_GPO_GVIFTX1_RST_N,
+* EL_GPO_GVIFTX0_RST_N,
+* EL_GPO_EMMC_ON_N,
+* EL_SPI_GVIF_D_UCS,
+* EL_GPO__CWORD65__RST_N,
+* EL_GPO_GVIFRX_RST_N,
+* EL_GPI_IOEX_INT,
+* EL_GPO_FBRQ,
+* EL_GPO_IOEX_RST_N,
+* EL_GPI_GVIFTX1_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_DARC_INT,
+* EL_GPI_GVIFTX0_GPIO3,
+* EL_GPI_GVIF_REQ_INT,
+* EL_GPI_ACC_DET_OUT,
+* EL_GPI_GVIFRX_GPIO3,
+* EL_GPO_DTCP_RST_N,
+* EL_NAVI_NMI_N,
+* EL_GPI_SDPCHK,
+* EL_GPO_XM_SHDN,
+* EL_GPI_GVIF_D_REQ_INT,
+* EL_SPI_GVIF_D_DCS,
+* EL_GPO_EMMC_PU_ON,
+* EL_GPIO_GVIFRX_GPIO0,
+* EL_GPI_GVIFRX_GPIO2,
+* EL_GPI_GVIFRX_LOS,
+* EL_GPIO_GVIFTX0_GPIO0,
+* EL_GPI_GVIFTX0_GPIO2,
+* EL_GPIO_GVIFTX1_GPIO0,
+* EL_GPI_GVIFTX1_GPIO2,
+* EL_GPO_USBHUB_RST,
+* EL_GPI__CWORD65__BOOT_ERR,
+* EL_GPO_CKECNT,
+* EL_GPO_SDPCLR,
+* EL_GPO_SENSOR_RST,
+* EL_GPI_SENSOR_INT,
+* EL_GPO_DAC_MUTE,
+* EL_GPO_DSRC_PON,
+* EL_GPI_2PULSE_REV,
+* EL_GPI_ILL_DET,
+* EL_GPI_DAB_DET,
+* EL_GPI_FAN_DET,
+* EL_GPO_SOC_DIAG_OUT,
+* EL_GPI_SOC_DIAG_IN,
+* EL_GPIO_SYMBOL_MAX,
+* };
+* @endcode
+* \~english @retval 0 Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - Interruption of specified GPIO was registered by \ref EL_Gpio_attachInterruptControl .
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
+* - syscall error(open(), ioctl()). [-1]
+* \~english @par Detail
+* - Waiting interruption of specified GPIO with timeout.
+* - If the value of timeout is not greater than 0, timeout will not happened.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see none
+*/
+int EL_Gpio_waitInterrupt_timeout(int symbol, int timeout); // NOLINT[readability/naming]
+
+/** \ingroup EL_Gpio_finalize
+* \~english @par Brief
+* End processing.
+* \~english @retval 0 Return 0
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - none
+* \~english @par Detail
+* - Change IO-Expander device to reset status.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_Gpio_write, EL_Gpio_read
+*/
+int EL_Gpio_finalize(void); // NOLINT[readability/naming]
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+/** @}*/ // end of memory_gpio_access_library
+/** @}*/ // end of native_service
+/** @}*/ // end of BaseSystem
+#endif // MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_GPIO_H_
diff --git a/memory_gpio_access_library/client/include/stub/el_mem.h b/memory_gpio_access_library/client/include/stub/el_mem.h
new file mode 100644
index 00000000..b6f68559
--- /dev/null
+++ b/memory_gpio_access_library/client/include/stub/el_mem.h
@@ -0,0 +1,396 @@
+/*
+ * @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 el_mem.h
+ * @brief el_mem function header file
+ */
+
+#ifndef MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_MEM_H_
+#define MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_MEM_H_
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup native_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup memory_gpio_access_library
+ * @ingroup native_service
+ * @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <stdbool.h>
+#include <sys/types.h>
+
+/**
+* \~english Definitions of the Parametar of type
+*/
+enum {
+ EL_MEM_TYPE_REGION_SYS, //!< \~english SYS region
+ EL_MEM_TYPE_REGION_LOG, //!< \~english LOG region
+ EL_MEM_TYPE_REGION_COM, //!< \~english COMMUNICATION region
+ EL_MEM_TYPE_REGION_NAVI, //!< \~english NAVI region
+ EL_MEM_TYPE_REGION_SH4A, //!< \~english SH4A region
+ EL_MEM_TYPE_REGION_PRAMFS, //!< \~english PRAMFS region
+ EL_MEM_TYPE_REGION_STARTUPBGM, //!< \~english STARTUPBGM region
+ EL_MEM_TYPE_REGION_NAVI_IR, //!< \~english NAVI picture recognition region
+ EL_MEM_TYPE_REGION_MAX //!< \~english (internal use)
+};
+
+/**
+* \~english Definitions of the Parametar of memory id
+*/
+enum {
+ // SYS region
+ EL_MEM_ID_SYS_ALL = 0x0001, //!< \~english all SYS region
+ EL_MEM_ID_SYS_BOOT, //!< \~english particular: BOOT region
+
+ // LOG region
+ EL_MEM_ID_LOG_ALL = 0x1001, //!< \~english all LOG region
+
+ // COM region
+ EL_MEM_ID_COM_ALL = 0x2001, //!< \~english all COMMUNICATION region
+ EL_MEM_ID_COM_SH4A, //!< \~english particular: SH4A abnornal observation
+
+ // NAVI region
+ EL_MEM_ID_NAVI_ALL = 0x3001, //!< \~english NAVI region
+ EL_MEM_ID_NAVI_LOG, //!< \~english particular: NAVI(AW) LOG region
+
+ // SH4A region
+ EL_MEM_ID_SH4A_ALL = 0x4001, //!< \~english SH4A region
+ EL_MEM_ID_SH4A_SHM, //!< \~english particular: SH4A SH share memory region
+
+ // PRAMFS region NOTE:Can be used only when ROM operation
+ EL_MEM_ID_PRAMFS_ALL = 0x5001, //!< \~english all PRAMFS region
+
+ // STARTUPBGM region
+ EL_MEM_ID_STARTUPBGM_ALL = 0x6001, //!< \~english all STARTUPBGM region
+
+ // NAVI region (Picture Recognition: For Image Recognition)
+ EL_MEM_ID_NAVI_IR_ALL = 0x7001, //!< \~english all NAVI picture recognition region
+};
+
+/**
+ * \~english Valid cache_flag
+ */
+#define EL_MEM_CACHE_VALID 1
+
+/**
+ * \~english Invalid cache_flag
+ */
+#define EL_MEM_CACHE_INVALID 0
+
+/**\ingroup EL_mem_getOffset
+* \~english @par Brief
+* Get offset of function region according to mem_id.
+* \~english @param [in] mem_id
+* int - memory id
+* \~english @par
+* Defined memory id as follows.
+* \~english @code
+* enum {
+* // SYS
+* EL_MEM_ID_SYS_ALL = 0x0001, // all SYS region
+* EL_MEM_ID_SYS_BOOT, // particular: BOOT region
+* // COM
+* EL_MEM_ID_COM_ALL = 0x2001, // all COMMUNICATION region
+* EL_MEM_ID_COM_SH4A, // particular: SH4A abnornal observation
+* // NAVI
+* EL_MEM_ID_NAVI_ALL = 0x3001, // NAVI region
+* EL_MEM_ID_NAVI_LOG, // particular: NAVI(AW) LOG region
+* // SH4A
+* EL_MEM_ID_SH4A_ALL = 0x4001, // SH4A region
+* EL_MEM_ID_SH4A_SHM, // particular: SH4A SH share memory region
+* // PRAMFS NOTE:ROM only
+* EL_MEM_ID_PRAMFS_ALL = 0x5001, // all PRAMFS region
+* // STARTUPBGM
+* EL_MEM_ID_STARTUPBGM_ALL = 0x6001, // all STARTUPBGM region
+* // NAVI (Image Recognition)
+* EL_MEM_ID_NAVI_IR_ALL = 0x7001, // all NAVI picture recognition region
+* };
+* @endcode
+* \~english @retval offset Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Parameter mem_id is not defined.[-1]
+* \~english @par Detail
+* - Get offset of function region according to mem_id.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see none
+*/
+off_t EL_mem_getOffset(int mem_id); // NOLINT [readability/naming]
+
+/**\ingroup EL_mem_getLength
+* \~english @par Brief
+* Get length of function region according to mem_id.
+* \~english @param [in] mem_id
+* int - memory id
+* \~english @par
+* Defined memory id as follows.
+* \~english @code
+* enum {
+* // SYS
+* EL_MEM_ID_SYS_ALL = 0x0001, // all SYS region
+* EL_MEM_ID_SYS_BOOT, // particular: BOOT region
+* // COM
+* EL_MEM_ID_COM_ALL = 0x2001, // all COMMUNICATION region
+* EL_MEM_ID_COM_SH4A, // particular: SH4A abnornal observation
+* // NAVI
+* EL_MEM_ID_NAVI_ALL = 0x3001, // NAVI region
+* EL_MEM_ID_NAVI_LOG, // particular: NAVI(AW) LOG region
+* // SH4A
+* EL_MEM_ID_SH4A_ALL = 0x4001, // SH4A region
+* EL_MEM_ID_SH4A_SHM, // particular: SH4A SH share memory region
+* // PRAMFS NOTE:ROM only
+* EL_MEM_ID_PRAMFS_ALL = 0x5001, // all PRAMFS region
+* // STARTUPBGM
+* EL_MEM_ID_STARTUPBGM_ALL = 0x6001, // all STARTUPBGM region
+* // NAVI (Image Recognition)
+* EL_MEM_ID_NAVI_IR_ALL = 0x7001, // all NAVI picture recognition region
+* };
+* @endcode
+* \~english @retval length Success
+* \~english @retval 0 Error
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Parameter mem_id is not defined.[0]
+* - syscall error(open(), ioctl()).[0]
+* \~english @par Detail
+* - Get length of function region according to mem_id.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see none
+*/
+size_t EL_mem_getLength(int mem_id); // NOLINT [readability/naming]
+
+/**\ingroup EL_mem_exram_mmap_simple
+* \~english @par Brief
+* Map device file to memory.(simple)
+* \~english @param [in] mem_id
+* int - memory id
+* \~english @param [in] prot
+* int - Linux standard (same to mmap() of /dev/mem)
+* \~english @param [in] flags
+* int - Linux standard (same to mmap() of /dev/mem)
+* \~english @param [in] cache_flag
+* int - cache flag valid/invalid
+* \~english @par
+* Defined memory id as follows.
+* \~english @code
+* enum {
+* // SYS
+* EL_MEM_ID_SYS_ALL = 0x0001, // all SYS region
+* EL_MEM_ID_SYS_BOOT, // particular: BOOT region
+* // COM
+* EL_MEM_ID_COM_ALL = 0x2001, // all COMMUNICATION region
+* EL_MEM_ID_COM_SH4A, // particular: SH4A abnornal observation
+* // NAVI
+* EL_MEM_ID_NAVI_ALL = 0x3001, // NAVI region
+* EL_MEM_ID_NAVI_LOG, // particular: NAVI(AW) LOG region
+* // SH4A
+* EL_MEM_ID_SH4A_ALL = 0x4001, // SH4A region
+* EL_MEM_ID_SH4A_SHM, // particular: SH4A SH share memory region
+* // PRAMFS NOTE:ROM only
+* EL_MEM_ID_PRAMFS_ALL = 0x5001, // all PRAMFS region
+* // STARTUPBGM
+* EL_MEM_ID_STARTUPBGM_ALL = 0x6001, // all STARTUPBGM region
+* // NAVI (Image Recognition)
+* EL_MEM_ID_NAVI_IR_ALL = 0x7001, // all NAVI picture recognition region
+* };
+* @endcode
+* \~english @par
+* Cache flag as follows.
+* \~english @code
+* #define EL_MEM_CACHE_VALID 1 // valid cache
+* #define EL_MEM_CACHE_INVALID 0 // invalid cache
+* @endcode
+* \~english @retval address Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Parameter mem_id is not defined.[-1]
+* - Open device file failed.[-1]
+* - Map device file to memory error.[-1]
+* \~english @par Detail
+* - Get type, offset and length from internal table specified by mem_id, then\n
+* call \ref EL_mem_exram_mmap.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_mem_getLength, EL_mem_exram_mmap, EL_mem_exram_munmap
+*/
+void *EL_mem_exram_mmap_simple(int mem_id , int prot, int flags , int cache_flag); // NOLINT [readability/naming]
+
+/**\ingroup EL_mem_exram_mmap
+* \~english @par Brief
+* Map device file to memory.
+* \~english @param [in] type
+* int - memory type
+* \~english @param [in] offset
+* off_t - offset(From 0\ref EL_mem_getOffset)
+* \~english @param [in] length
+* size_t - length(From 1\ref EL_mem_getLength)
+* \~english @param [in] prot
+* int - Linux standard (same to mmap() of /dev/mem)
+* \~english @param [in] flags
+* int - Linux standard (same to mmap() of /dev/mem)
+* \~english @param [in] cache_flag
+* int - cache flag valid/invalid
+* \~english @par
+* Defined memory type as follows.
+* \~english @code
+* enum {
+* EL_MEM_TYPE_REGION_SYS, // SYS
+* EL_MEM_TYPE_REGION_COM, // COMMUNICATION
+* EL_MEM_TYPE_REGION_NAVI, // NAVI
+* EL_MEM_TYPE_REGION_SH4A, // SH4A
+* EL_MEM_TYPE_REGION_PRAMFS, // PRAMFS
+* EL_MEM_TYPE_REGION_STARTUPBGM, // STARTUPBGM
+* EL_MEM_TYPE_REGION_NAVI_IR, // NAVI IMAGE
+* };
+* @endcode
+* \~english @par
+* Cache flag as follows.
+* \~english @code
+* #define EL_MEM_CACHE_VALID 1 // valid cache
+* #define EL_MEM_CACHE_INVALID 0 // invalid cache
+* @endcode
+* \~english @retval address Success
+* \~english @retval -1 Error
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Open device file failed.[-1]
+* - Map device file to memory error.[-1]
+* \~english @par Detail
+* - Access device file specified by memory type, map function region to user space.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_mem_exram_munmap
+*/
+void *EL_mem_exram_mmap(int type, off_t offset , size_t length , int prot, int flags , int cache_flag); // NOLINT [readability/naming]
+
+/**\ingroup EL_mem_exram_munmap
+* \~english @par Brief
+* Unmap device file from memory.
+* \~english @param [in] addr
+* void * - address
+* \~english @param [in] length
+* size_t - size (1 ~ \ref EL_mem_getLength)
+* \~english @retval 0 Success
+* \~english @retval -1 Error:Set errno according to error type when error occurs.
+* \~english @par Prerequisite
+* - Map device file to memory(\ref EL_mem_exram_mmap,
+* \ref EL_mem_exram_mmap_simple).
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Unmap device file from memory error.[-1]
+* \~english @par Detail
+* - Unmap specified address.Error occurs when refer to this memory after unmap.
+* - Automatic unmap when process ends.
+* - The memory will not be unmap even the file descriptor is closed.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see EL_mem_exram_mmap, EL_mem_exram_mmap_simple
+*/
+int EL_mem_exram_munmap(void *addr, size_t length); // NOLINT [readability/naming]
+
+/**\ingroup EL_mem_getPhysicalAddress
+* \~english @par Brief
+* Get physical address.
+* \~english @param [in] mem_id
+* int - memory id
+* \~english @par
+* Defined memory id as follows.
+* \~english @code
+* enum {
+* // SYS
+* EL_MEM_ID_SYS_ALL = 0x0001, // all SYS region
+* EL_MEM_ID_SYS_BOOT, // particular: BOOT region
+* // COM
+* EL_MEM_ID_COM_ALL = 0x2001, // all COMMUNICATION region
+* EL_MEM_ID_COM_SH4A, // particular: SH4A abnornal observation
+* // NAVI
+* EL_MEM_ID_NAVI_ALL = 0x3001, // NAVI region
+* EL_MEM_ID_NAVI_LOG, // particular: NAVI(AW) LOG region
+* // SH4A
+* EL_MEM_ID_SH4A_ALL = 0x4001, // SH4A region
+* EL_MEM_ID_SH4A_SHM, // particular: SH4A SH share memory region
+* // PRAMFS NOTE:ROM only
+* EL_MEM_ID_PRAMFS_ALL = 0x5001, // all PRAMFS region
+* // STARTUPBGM
+* EL_MEM_ID_STARTUPBGM_ALL = 0x6001, // all STARTUPBGM region
+* // NAVI (Image Recognition)
+* EL_MEM_ID_NAVI_IR_ALL = 0x7001, // all NAVI picture recognition region
+* };
+* @endcode
+* \~english @retval physical address Success
+* \~english @retval 0 Error: Failed to open device file or get physical address(ioctl)
+* \~english @retval -1 Error: Parameter mem_id is not defined.
+* \~english @par Prerequisite
+* - None.
+* \~english @par Change of internal state
+* - Change of internal state according to the API does not occur.
+* \~english @par Conditions of processing failure
+* - Parameter mem_id is not defined.[-1]
+* - Get physical address error.[0]
+* \~english @par Detail
+* - Get physical address from dummy-memory driver according to device file specified by mem_id.
+* - Return the sum value of physical address and offset specified by mem_id.
+* \~english @par Classification
+* Public
+* \~english @par Type
+* Sync
+* \~english @see none
+*/
+u_int64_t EL_mem_getPhysicalAddress(int mem_id); // NOLINT [readability/naming]
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+/** @}*/ // end of memory_gpio_access_library
+/** @}*/ // end of native_service
+/** @}*/ // end of BaseSystem
+#endif // MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_MEM_H_
diff --git a/memory_gpio_access_library/client/src/el_gpio.c b/memory_gpio_access_library/client/src/el_gpio.c
new file mode 100644
index 00000000..c6f76ca6
--- /dev/null
+++ b/memory_gpio_access_library/client/src/el_gpio.c
@@ -0,0 +1,79 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include "stub/el_gpio.h"
+
+int EL_Gpio_write(int symbol , bool value) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+int EL_Gpio_read(int symbol , bool *value) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+int EL_Gpio_attachInterruptControl(int symbol , unsigned long irq_flags) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+int EL_Gpio_detachInterruptControl(int symbol) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+int EL_Gpio_waitInterrupt(int symbol) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+int EL_Gpio_waitInterrupt_timeout(int symbol, int timeout) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+int EL_Gpio_finalize(void) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
diff --git a/memory_gpio_access_library/client/src/el_mem.c b/memory_gpio_access_library/client/src/el_mem.c
new file mode 100644
index 00000000..0b1e2f9c
--- /dev/null
+++ b/memory_gpio_access_library/client/src/el_mem.c
@@ -0,0 +1,73 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include "stub/el_mem.h"
+
+off_t EL_mem_getOffset(int mem_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+size_t EL_mem_getLength(int mem_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 1;
+}
+
+int dummy[1] = {0}; /* dummy area for mmap() */
+
+void *EL_mem_exram_mmap(int type, off_t offset , size_t length , int prot, int flags , int cache_flag) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return ((void *)dummy);
+}
+
+void *EL_mem_exram_mmap_simple(int mem_id , int prot, int flags , int cache_flag) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return ((void *)dummy);
+}
+
+int EL_mem_exram_munmap(void *addr, size_t length) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
+
+u_int64_t EL_mem_getPhysicalAddress(int mem_id) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 0;
+}
diff --git a/stub.mk b/stub.mk
new file mode 100644
index 00000000..44fb1e33
--- /dev/null
+++ b/stub.mk
@@ -0,0 +1,42 @@
+#
+# @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.
+#
+
+CURRENT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
+
+#############################################################
+# COMPONENT_NAME must not be blank and be named snake_case
+
+COMPONENT_NAME := stub
+
+#############################################################
+
+
+
+#############################################################
+# You can add several flags and libraries.
+# When you add -I or -L path, DO NOT USE relative path.
+# Instead, use $(CURRENT_DIR) variable
+# that indicates the path this .mk file is stored.
+
+COMPONENT_CFLAGS :=
+COMPONENT_CXXFLAGS :=
+COMPONENT_LDLIBS :=
+COMPONENT_LDFLAGS :=
+
+##############################################################
+
+include $(SDKTARGETSYSROOT)/usr/agl/share/agl.mk
+
diff --git a/vehicle/LICENSE b/vehicle/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/vehicle/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/vehicle/Makefile b/vehicle/Makefile
new file mode 100644
index 00000000..3fb575eb
--- /dev/null
+++ b/vehicle/Makefile
@@ -0,0 +1,19 @@
+#
+# @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.
+#
+
+SUBDIRS := client
+
+include ../stub.mk
diff --git a/vehicle/client/Makefile b/vehicle/client/Makefile
new file mode 100644
index 00000000..f9e6b099
--- /dev/null
+++ b/vehicle/client/Makefile
@@ -0,0 +1,60 @@
+#
+# @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 = libVehicle_API
+
+
+######### installed static library(*.a) #############
+INST_LIBS = libVehicle_API
+
+
+######### install headers(*.h) #############
+VPATH += ./include/$(COMPONENT_NAME)
+INST_HEADERS = Vehicle_API.h vehicle_notifications.h Vehicle_Sensor_Common_API.h
+
+######### compiled sources #############
+libVehicle_API_SRCS = Vehicle_API.cpp
+
+######### add source path #############
+VPATH += ./src
+
+######### add include path #############
+CPPFLAGS += -I./include
+CPPFLAGS += -I./include/stub
+
+######### add compile option #############
+CPPFLAGS += -Werror=implicit-function-declaration
+CPPFLAGS += -Werror=format-security
+
+CPPFLAGS += -Wconversion
+CPPFLAGS += -Wint-to-pointer-cast
+CPPFLAGS += -Wpointer-arith
+CPPFLAGS += -Wformat
+
+CPPFLAGS += -DIMPL_AGL_APPLICATION_CALLBACKS_PRE_BACKGROUND
+
+#### FOR DEBUG OPTIONS
+
+######### add library path #############
+LDFLAGS += -Wl,--gc-sections
+LDFLAGS += -Wl,--no-as-needed
+LDFLAGS += -Wl,--no-undefined
+
+######### linked library (dynamic) #############
+LDLIBS += -Wl,-Bdynamic -lNS_FrameworkUnified
+
+include ../../stub.mk
diff --git a/vehicle/client/include/stub/Vehicle_API.h b/vehicle/client/include/stub/Vehicle_API.h
new file mode 100644
index 00000000..43fd0667
--- /dev/null
+++ b/vehicle/client/include/stub/Vehicle_API.h
@@ -0,0 +1,298 @@
+/*
+ * @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 VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_API_H_
+#define VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_API_H_
+/**
+ * @file Vehicle_API.h
+ * @brief vehicle api header file
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/******************************************************************************
+ * Fine name :Vehicle_API.h
+ * System name :GPF
+ * Subsystem name :Vehicle I/F library
+ ******************************************************************************/
+#include <peripheral_service/Canif_API.h>
+#include <stub/Vehicle_Sensor_Common_API.h>
+#include <stub/vehicle_notifications.h>
+#include <native_service/frameworkunified_service_protocol.h>
+
+/************************************************************************
+ * Macro definition *
+ ************************************************************************/
+/*----------------------------------------------------------------------*
+ * VECHILE_RET_API definition *
+ *----------------------------------------------------------------------*/
+/* Normal */
+/**
+ * \~english Sucess
+ */
+#define VEHICLE_RET_NORMAL 0
+
+/**
+ * \~english No register data ID
+ */
+#define VEHICLE_RET_ERROR_DID (-2)
+
+/**
+ * \~english Input parameter error
+ */
+#define VEHICLE_RET_ERROR_PARAM (-4)
+
+/**
+ * \~english Create event error
+ */
+#define VEHICLE_RET_ERROR_CREATE_EVENT (-6)
+
+/*----------------------------------------------------------------------*
+ * Vehicle sensor information delivery registration API related *
+ *----------------------------------------------------------------------*/
+/* Delivery control */
+/**
+ * \~english Register delivery
+ */
+#define VEHICLE_DELIVERY_REGIST 0x01
+
+#if 0
+/**
+ * \~english Stop delivery
+ */
+#define VEHICLE_DELIVERY_STOP 0x02
+
+/**
+ * \~english Restart delivery
+ */
+#define VEHICLE_DELIVERY_RESTART 0x03
+#endif
+
+/* Delivery opportunities */
+/**
+ * \~english Delivery timing(update)
+ */
+#define VEHICLE_DELIVERY_TIMING_UPDATE 0x01
+
+/**
+ * \~english Delivery timing(change)
+ */
+#define VEHICLE_DELIVERY_TIMING_CHANGE 0x02
+
+/* Drive mode switching */
+/**
+ * \~english TAB mode
+ */
+#define VEHICLE_DRIVE_MODE_TAB 0
+
+/**
+ * \~english AIAPI mode(USB)
+ */
+#define VEHICLE_DRIVE_MODE_ATAPI 1
+
+/*----------------------------------------------------------------------*
+ * Message related *
+ *----------------------------------------------------------------------*/
+/* Command ID */
+/* Since it is defined in #define the commodity code, the public CID is defined in #define */
+/**
+ * \~english Vehicle sensor information notify commandID
+ */
+#define CID_VEHICLESENS_VEHICLE_INFO 0x00000200
+
+/* Message body size(byte) */
+/**
+ * \~english Vehicle sensor information data max size
+ */
+#define VEHICLE_VSINFO_DSIZE 80
+
+/************************************************************************
+ * typedef definition *
+ ************************************************************************/
+/**
+ * \~english API return value
+ */
+typedef int32_t VEHICLE_RET_API;
+
+/************************************************************************
+ * struct definition *
+ ************************************************************************/
+
+/************************************************************************
+ * TAG : VEHICLE_MSG_VSINFO_DAT
+ * ABSTRACT : Vehicle sensor information notification message(->User)
+ ************************************************************************/
+/** \~english Vehicle sensor information notification message */
+/**
+ * \~english Vehicle sensor information notify message data
+ */
+typedef struct {
+ /**
+ * \~english Vehicle sensor information data ID
+ */
+ uint32_t did;
+
+ /**
+ * \~english Vehicle sensor information data size
+ */
+ uint16_t size;
+
+ /**
+ * \~english Vehicle sensor information receive flag
+ */
+ uint8_t rcvFlag;
+
+ /**
+ * \~english Reserve
+ */
+ uint8_t reserve;
+
+ /**
+ * \~english Vehicle sensor information data
+ */
+ uint8_t data[VEHICLE_VSINFO_DSIZE];
+} VEHICLE_MSG_VSINFO_DAT;
+
+/**
+ * \~english Vehicle sensor information notify message
+ */
+typedef struct {
+ /**
+ * \~english Vehicle sensor information data struct
+ */
+ VEHICLE_MSG_VSINFO_DAT data;
+} VEHICLE_MSG_VSINFO;
+
+/************************************************************************
+ * Function prototype *
+ ************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*[VEHICLE_API Public API]*/
+/* Display time middle API prototype *************/
+
+/**
+ * \ingroup Vehicle_DeliveryEntry
+ * \~english @par Overview
+ * - Register delivery of vehicle information.
+ * \~english @param [in] h_app
+ * HANDLE - The application handle of the calling thread
+ * \~english @param [in] notify_name
+ * PCSTR - Vehicle information notification destination threa name
+ * \~english @param [in] ul_did
+ * uint32_t - Vehicle Data ID
+ * \~english @param [in] uc_ctrl_flg
+ * uint8_t - Register delivery
+ * \~english @param [in] uc_delivery_timing
+ * uint8_t - Delivery timing(change/update)
+ * \~english @retval VEHICLE_RET_NORMAL : Success(register successful)
+ * \~english @retval VEHICLE_RET_ERROR_CREATE_EVENT : Failure(event generation failure)
+ * \~english @retval VEHICLE_RET_ERROR_PARAM : Invalid parameter
+ * \~english @par Precondition
+ * - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+ * - The availability of the vehicle process is TRUE.
+ * \~english @par Changing internal state
+ * - No change of internal state by this API occurs.
+ * \~english @par Processing failure condition
+ * - Delivery control flag(uc_ctrl_flg) is not VEHICLE_DELIVERRY_REGIST [VEHICLE_RET_ERROR_PARAM]
+ * - Delivery timing is invalid(not change/update) [VEHICLE_RET_ERROR_PARAM]
+ * - Failed to generate a message queue handle for transmission with
+ * the vehicle process [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * - Synchronous communication received on the vehicle process side failed to
+ * get data [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * - The data ID does not exit in the management list on the vehicle process [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * - The number of delivery registrations has reached the max number [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Details
+ * - By calling this API, we request to register delivery specified vehicle information.
+ * - It returns from this API by returning the delivery registration result by the Return value.
+ * - The specified vehicle information is notified after delivery registration.
+ * - Data delivery/reception is performed by asynchronous communication,
+ * and the receiving side acquires with command"CID_VEHICLESENS_VEHICLE_INFO".
+ * - An example in which a process using NSFW registers"CID_VEHICLESENS_VEHICLE_INFO" is shown below.
+ * - Example) when above CID received, callback function(SampleCallBackFunc) is executed.
+ * - FrameworkunifiedAttachCallbackToDispatcher(hApp, TN_VEHICLE_SENS, CID_VEHICLESENS_VEHICLE_INFO, SampleCallBackFunc).
+ * \~english @see Vehicle_GetVehicleData, FrameworkunifiedMcOpenSender, FrameworkunifiedInvokeSync
+ */
+VEHICLE_RET_API Vehicle_DeliveryEntry(HANDLE h_app, PCSTR notify_name,
+ uint32_t ul_did, uint8_t uc_ctrl_flg,
+ uint8_t uc_delivery_timing);
+
+/**
+ * \ingroup Vehicle_GetVehicleData
+ * \~english @par Overview
+ * - Get vehicle information data(arbitrary data).
+ * \~english @param [in] h_app
+ * HANDLE - The application handle of the calling thread
+ * \~english @param [in] ul_did
+ * uint32_t - Vehicle Data ID
+ * \~english @param [out] p_dest_data
+ * void * - Data buffer
+ * \~english @param [in] us_dest_size
+ * uint16_t - Data buffer size(byte)
+ * \~english @retval Integer(>0) : The stored data size
+ * \~english @retval VEHICLE_RET_ERROR_CREATE_EVENT : Failure(event generation failure)
+ * \~english @retval VEHICLE_RET_ERROR_PARAM : Invalid parameter
+ * \~english @par Precondition
+ * - The generation/initialization of dispatcher for application(PadCreateDispatcherWithoutLoop etc.) is done.
+ * - The availability of the vehicle process is TRUE.
+ * \~english @par Changing internal state
+ * - No change of internal state by this API occurs.
+ * \~english @par Processing failure condition
+ * - Failed to generate a message queue handle for transmission with
+ * the vehicle process [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * - Input data buffer size(us_dest_size) is zero [VEHICLE_RET_ERROR_PARAM]
+ * - Input data buffer(p_dest_data) is NULL [VEHICLE_RET_ERROR_PARAM]
+ * - Synchronous communication received on the vehicle process side failed to
+ * get data [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * - The data ID does not exit in the management list on the vehicle process [VEHICLE_RET_ERROR_CREATE_EVENT]
+ * \~english @par Classification
+ * - Public
+ * \~english @par Type
+ * - Sync
+ * \~english @par Details
+ * - By calling this API, we obtain specified vehicle information.
+ * - The vehicle data will be written to parameter(pDestData).
+ * - Data delivery/reception is performed by asynchronous communication,
+ * and the receiving side acquires with command"CID_VEHICLESENS_VEHICLE_INFO".
+ * \~english @see Vehicle_DeliveryEntry, FrameworkunifiedMcOpenSender, FrameworkunifiedInvokeSync
+ */
+int32_t Vehicle_GetVehicleData(HANDLE h_app, uint32_t ul_did, void *p_dest_data,
+ uint16_t us_dest_size);
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @}*/ // end of vehicle
+/** @}*/ // end of VehicleService
+/** @}*/ // end of BaseSystem
+
+#endif // VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_API_H_
diff --git a/vehicle/client/include/stub/Vehicle_Sensor_Common_API.h b/vehicle/client/include/stub/Vehicle_Sensor_Common_API.h
new file mode 100644
index 00000000..810e46a1
--- /dev/null
+++ b/vehicle/client/include/stub/Vehicle_Sensor_Common_API.h
@@ -0,0 +1,502 @@
+/*
+ * @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 VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_SENSOR_COMMON_API_H_
+#define VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_SENSOR_COMMON_API_H_
+
+/**
+ * @file Vehicle_Sensor_Common_API.h
+ * @brief vehicle common id defined header file
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle
+ * @ingroup vehicle_service
+ * @{
+ */
+
+/******************************************************************************
+ * File name :Vehicle_Sensor_Common_API.h
+ * System name :_CWORD107_
+ * Subsystem name :Vehicle I/F library, Sensor I/F library
+ ******************************************************************************/
+
+/************************************************************************
+ * Macro definition *
+ ************************************************************************/
+
+#if 1 // Ignore -> MISRA-C++ Rules 16-1-2, 16-2-2
+/* #GPF_60_023 For testing */
+#ifndef CONFIG_EXTTERM_INPUT_DAB2BIT // Ignore -> MISRA-C++ Rules 16-1-2, 16-2-2
+/**
+ * \~english DAB data 2 bits macro
+ */
+#define CONFIG_EXTTERM_INPUT_DAB2BIT 1 // Ignore -> MISRA-C++ Rules 16-2-2
+#endif
+#ifndef CONFIG_EXTTERM_INPUT_GPS2BIT // Ignore -> MISRA-C++ Rules 16-1-2, 16-2-2
+/**
+ * \~english GPS data 2 bits macro
+ */
+#define CONFIG_EXTTERM_INPUT_GPS2BIT 1 // Ignore -> MISRA-C++ Rules 16-2-2
+#endif
+#ifndef CONFIG_EXTTERM_INPUT_IMAGETERMINAL // Ignore -> MISRA-C++ Rules 16-1-2, 16-2-2
+/**
+ * \~english Image terminal macro
+ */
+#define CONFIG_EXTTERM_INPUT_IMAGETERMINAL 1 // Ignore -> MISRA-C++ Rules 16-2-2
+#endif
+#endif
+/* The above definition is a remnant of the external terminal processing part inside *
+ * the sennsor that was enabled or disabled, and is not originally required at all. *
+ * Enable all sensor internal processing and then delete. */
+
+/*----------------------------------------------------------------------*
+ * Data ID corresponding to vehicle sensor information *
+ *----------------------------------------------------------------------*/
+/*
+ * Note.
+ * This feature needs to be defined by the vendor.
+ */
+
+/**
+ * \~english Destination information
+ */
+#define VEHICLE_DID_DESTINATION (0x00000001UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Hybrid electric vehicle information
+ */
+#define VEHICLE_DID_HV (0x00000002UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Steering wheel information
+ */
+#define VEHICLE_DID_STEERING_WHEEL (0x00000003UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Voltage
+ */
+#define VEHICLE_DID_VB (0x00000004UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english IG information
+ */
+#define VEHICLE_DID_IG (0x00000005UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Microphone information
+ */
+#define VEHICLE_DID_MIC (0x00000006UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Back door information
+ */
+#define VEHICLE_DID_BACKDOOR (0x00000007UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Parking brake information
+ */
+#define VEHICLE_DID_PKB (0x00000008UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english ADIM information
+ */
+#define VEHICLE_DID_ADIM (0x00000009UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Illumination information
+ */
+#define VEHICLE_DID_ILL (0x0000000AUL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english RHEOSTAT information
+ */
+#define VEHICLE_DID_RHEOSTAT (0x0000000BUL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english System temperature information
+ */
+#define VEHICLE_DID_SYSTEMP (0x0000000CUL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Reverse information
+ */
+#define VEHICLE_DID_REV (0x00000017UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Reverse information(line sensor)
+ */
+#define VEHICLE_DID_REV_LINE (0x0000000EUL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Reverse CAN information
+ */
+#define VEHICLE_DID_REV_CAN (0x0000000FUL) // Ignore -> MISRA-C++ Rule 16-2-2
+/**
+ * \~english SPEED information
+ */
+#define VEHICLE_DID_SPEED (0x00000010UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english SPEED PULSE information
+ */
+#define VEHICLE_DID_SPEED_PULSE (0x00000011UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english VB information
+ */
+#define VEHICLE_DID_VBLOW (0x00000012UL) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Drive information(2WD/4WD)
+ */
+#define VEHICLE_DID_DVINF (0x00000013UL)
+
+/**
+ * \~english Transmission information
+ */
+#define VEHICLE_DID_VARTRM1 (0x00000014UL)
+
+/**
+ * \~english Shift position signal(R, P, N, D)
+ */
+#define VEHICLE_DID_SHIFT (0x00000015UL)
+
+/**
+ * \~english Direct line sensor(PKB)
+ */
+#define VEHICLE_DID_PKB_LINE (0x00000016UL)
+
+/**
+ * \~english D seat door signal switch
+ */
+#define VEHICLE_DID_DSEAT_DOOR (0x0000000DUL)
+
+/**
+ * \~english P seat door signal switch
+ */
+#define VEHICLE_DID_PSEAT_DOOR (0x00000018UL)
+
+/**
+ * \~english RR seat door signal switch
+ */
+#define VEHICLE_DID_RRSEAT_DOOR (0x00000019UL)
+
+/**
+ * \~english RL seat door signal switch
+ */
+#define VEHICLE_DID_RLSEAT_DOOR (0x0000001AUL)
+
+/**
+ * \~english IGP information
+ */
+#define VEHICLE_DID_IGP (0x0000001BUL)
+
+/**
+ * \~english HV information status
+ */
+#define VEHICLE_DID_HV_STS (0x0000001CUL)
+
+/**
+ * \~english Shift position signal(Unspecified)
+ */
+#define VEHICLE_DID_SHIFT_U (0x0000001DUL)
+
+/**
+ * \~english USB power supply
+ */
+#define VEHICLE_DID_USBPOWERSUPPLY (0x800000A0UL)
+
+/**
+ * \~english Analog Microphone Connect information
+ */
+#define VEHICLE_DID_ANALOG_MIC (0x800000B0UL)
+
+/**
+ * \~english MultiMic Connect information
+ */
+#define VEHICLE_DID_MULTI_MIC (0x800000B1UL)
+
+/*----------------------------------------------------------------------*
+ * Vehicle sensor information data *
+ *----------------------------------------------------------------------*/
+/**
+ * \~english OFF
+ */
+#define VEHICLE_SNS_OFF (0x00U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english ON
+ */
+#define VEHICLE_SNS_ON (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+#define VEHICLE_SNS_BLACKOUT (0x02U) // Disruptions
+/**
+ * \~english Undefined
+ */
+#define VEHICLE_SNS_UNDEF (0x03U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Disconnection
+ */
+#define VEHICLE_SNS_UNCONNECTION (0x00U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Connection
+ */
+#define VEHICLE_SNS_CONNECTION (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Uncertainty
+ */
+#define VEHICLE_SNS_BW_UNCERTAINTY (0x02U)
+
+/**
+ * \~english Unspecified
+ */
+#define VEHICLE_SNS_UNSPECIFIED (0x03U) // Ignore -> MISRA-C++ Rule 16-2-2
+/* #GPF_60_023 ADD START */
+#if (CONFIG_EXTTERM_INPUT_DAB2BIT | CONFIG_EXTTERM_INPUT_GPS2BIT) // Ignore -> MISRA-C++ Rules 16-1-2, 16-2-2
+/**
+ * \~english Short
+ */
+#define VEHICLE_SNS_SHORT (0x02U) // Ignore -> MISRA-C++ Rule 16-2-2
+#endif
+/* #GPF_60_023 ADD END */
+
+/**
+ * \~english Hybrid electric vehicle
+ */
+#define VEHICLE_SNS_HV (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Plug-in hybrid electric vehicle
+ */
+#define VEHICLE_SNS_PHV (0x02U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Electric vehicle
+ */
+#define VEHICLE_SNS_EV (0x03U)
+
+/**
+ * \~english Fuel Cell vehicle
+ */
+#define VEHICLE_SNS_FCV (0x04U)
+
+/**
+ * \~english 1 motor vehicle
+ */
+#define VEHICLE_SNS_1MOT (0x05U)
+
+/**
+ * \~english Conventional(48V) vehicle
+ */
+#define VEHICLE_SNS_48V (0x06U)
+
+/**
+ * \~english S&S vehicle
+ */
+#define VEHICLE_SNS_SANDS (0x07U)
+
+/**
+ * \~english Conventional vehicle
+ */
+#define VEHICLE_SNS_NONHV (0x00U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Two wheel drive
+ */
+#define VEHICLE_SNS_2WD (0x00U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**gb
+ * \~english Four wheel drive
+ */
+#define VEHICLE_SNS_4WD (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Left handle
+ */
+#define VEHICLE_SNS_LH (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Right handle
+ */
+#define VEHICLE_SNS_RH (0x02U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Close
+ */
+#define VEHICLE_SNS_CLOSE (0x00U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Open
+ */
+#define VEHICLE_SNS_OPEN (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Back door uncertainty
+ */
+#define VEHICLE_SNS_BD_UNCERTAINTY (0x02U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english ADIM uncertainty
+ */
+#define VEHICLE_SNS_ADIM_UNCERTAINTY (0x00U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english ADIM undefined
+ */
+#define VEHICLE_SNS_ADIM_UNDEF (0x01U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english ADIM off
+ */
+#define VEHICLE_SNS_ADIM_OFF (0x02U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english ADIM on
+ */
+#define VEHICLE_SNS_ADIM_ON (0x03U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Drive information(2WD)
+ */
+#define VEHICLE_SNS_DVINF_2WD (0x00U)
+
+/**
+ * \~english Drive information(4WD)
+ */
+#define VEHICLE_SNS_DVINF_4WD (0x01U)
+
+/**
+ * \~english Drive information uncertainty
+ */
+#define VEHICLE_SNS_DVINF_UNCERTAINTY (0x03U)
+
+/**
+ * \~english Transmission information(MT)
+ */
+#define VEHICLE_SNS_VARTRM1_MT (0x00U)
+
+/**
+ * \~english Transmission information(AT)
+ */
+#define VEHICLE_SNS_VARTRM1_AT (0x01U)
+
+/**
+ * \~english Transmission information(CVT)
+ */
+#define VEHICLE_SNS_VARTRM1_CVT (0x02U)
+
+/**
+ * \~english Transmission information(MMT)
+ */
+#define VEHICLE_SNS_VARTRM1_MMT (0x03U)
+
+/**
+ * \~english Transmission information(SMT)
+ */
+#define VEHICLE_SNS_VARTRM1_SMT (0x04U)
+
+/**
+ * \~english Transmission information(HV_AT)
+ */
+#define VEHICLE_SNS_VARTRM1_HV_AT (0x05U)
+
+/**
+ * \~english Transmission information uncertainty
+ */
+#define VEHICLE_SNS_VARTRM1_UNCERTAINTY (0x0FU)
+
+/**
+ * \~english D seat door uncertainty
+ */
+#define VEHICLE_SNS_DS_UNCERTAINTY (0x02U)
+
+/**
+ * \~english P seat door uncertainty
+ */
+#define VEHICLE_SNS_PS_UNCERTAINTY (0x02U)
+
+/**
+ * \~english RR seat door uncertainty
+ */
+#define VEHICLE_SNS_RRS_UNCERTAINTY (0x02U)
+
+/**
+ * \~english RL seat door uncertainty
+ */
+#define VEHICLE_SNS_RLS_UNCERTAINTY (0x02U)
+
+/**
+ * \~english HV information not decision
+ */
+#define VEHICLE_SNS_HV_NOT_DECISION (0x00U)
+
+/**
+ * \~english HV information decision
+ */
+#define VEHICLE_SNS_HV_DECISION (0x01U)
+
+/**
+ * @enum VehicleSnsAnlogMicBit
+ * \~english ANALOGMIC connect bit information
+ */
+enum VehicleSnsAnlogMicBit {
+ VEHICLE_SNS_ANALOG_MIC1_BIT = 0x02, //!< \~english ANALOGMIC1 connect
+ VEHICLE_SNS_ANALOG_MIC2_BIT = 0x04, //!< \~english ANALOGMIC2 connect
+};
+
+/**
+ * @enum VehicleSnsMultiMicBit
+ * \~english MULTI MIC connect bit information
+ */
+enum VehicleSnsMultiMicBit {
+ VEHICLE_SNS_A2B_HUB_BIT = 0x01, //!< \~english A2BHUB connect
+ VEHICLE_SNS_MULTI_MIC1_BIT = 0x02, //!< \~english MULTIMIC1 connect
+ VEHICLE_SNS_MULTI_MIC2_BIT = 0x04, //!< \~english MULTIMIC2 connect
+ VEHICLE_SNS_MULTI_MIC3_BIT = 0x08, //!< \~english MULTIMIC3 connect
+ VEHICLE_SNS_MULTI_MIC4_BIT = 0x10, //!< \~english MULTIMIC4 connect
+ VEHICLE_SNS_MULTI_MIC5_BIT = 0x20, //!< \~english MULTIMIC5 connect
+ VEHICLE_SNS_MULTI_MIC6_BIT = 0x40, //!< \~english MULTIMIC6 connect
+ VEHICLE_SNS_ANC_BIT = 0x80, //!< \~english ANC connect
+};
+
+/*-------------------------------------------------------------------------------
+ * Time status return value
+ -------------------------------------------------------------------------------*/
+/**
+ * \~english Real time clock
+ */
+#define GPS_TIMESTS_RTC (0x02U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/**
+ * \~english Exception time
+ */
+#define GPS_TIMESTS_NG (0x03U) // Ignore -> MISRA-C++ Rule 16-2-2
+
+/** @}*/ // end of vehicle
+/** @}*/ // end of VehicleService
+/** @}*/ // end of BaseSystem
+
+#endif // VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_SENSOR_COMMON_API_H_
diff --git a/vehicle/client/include/stub/vehicle_notifications.h b/vehicle/client/include/stub/vehicle_notifications.h
new file mode 100644
index 00000000..83481479
--- /dev/null
+++ b/vehicle/client/include/stub/vehicle_notifications.h
@@ -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.
+ */
+
+#ifndef VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_NOTIFICATIONS_H_
+#define VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_NOTIFICATIONS_H_
+
+/**
+ * @file vehicle_notifications.h
+ * @brief vehicle notification name define header file
+ */
+
+/** @addtogroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle_service
+ * @ingroup BaseSystem
+ * @{
+ */
+/** @addtogroup vehicle
+ * @ingroup vehicle_service
+ * @{
+ */
+
+#include <agl_thread.h>
+
+/**
+ * \~english Vehicle notification availability
+ */
+#define NTFY_Vehicle_Availability MN_VEHICLE"/Availability"
+
+/** @}*/ // end of vehicle
+/** @}*/ // end of VehicleService
+/** @}*/ // end of BaseSystem
+
+#endif // VEHICLE_CLIENT_INCLUDE_VEHICLE_SERVICE_VEHICLE_NOTIFICATIONS_H_
diff --git a/vehicle/client/libVehicle_API.ver b/vehicle/client/libVehicle_API.ver
new file mode 100644
index 00000000..14be9070
--- /dev/null
+++ b/vehicle/client/libVehicle_API.ver
@@ -0,0 +1,28 @@
+/*
+ * @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.
+ */
+
+#########################
+# libVehicle_API version script #
+#########################
+{
+ global:
+ ### .text section ###
+ Vehicle_*;
+ ### .data section ###
+ local:
+ *;
+};
+
diff --git a/vehicle/client/src/Vehicle_API.cpp b/vehicle/client/src/Vehicle_API.cpp
new file mode 100644
index 00000000..cefee014
--- /dev/null
+++ b/vehicle/client/src/Vehicle_API.cpp
@@ -0,0 +1,43 @@
+/*
+ * @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.
+ */
+
+/*
+ * Information.
+ * This source code is a sample source code .
+ * Implementation of the function must be performed by the vendor.
+ */
+
+#include "Vehicle_API.h"
+
+VEHICLE_RET_API Vehicle_DeliveryEntry(HANDLE h_app, PCSTR notify_name,
+ uint32_t ul_did, uint8_t uc_ctrl_flg,
+ uint8_t uc_delivery_timing) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return VEHICLE_RET_NORMAL;
+}
+
+int32_t Vehicle_GetVehicleData(HANDLE h_app, uint32_t ul_did, void *p_dest_data,
+ uint16_t us_dest_size) {
+ /*
+ * Note.
+ * This feature needs to be implemented by the vendor.
+ */
+ return 1;
+}
+