From d756ff8c38ba9bc769e24dc382a6ac60fbdaee15 Mon Sep 17 00:00:00 2001 From: takeshi_hoshina Date: Wed, 21 Oct 2020 14:58:52 +0900 Subject: stub branch --- clock/LICENSE | 177 ++ clock/Makefile.client | 19 + clock/client_clock/Makefile | 45 + clock/client_clock/include/stub/Clock_API.h | 503 +++++ clock/client_clock/include/stub/clock_clock.h | 41 + clock/client_clock/libClock_API.ver | 29 + clock/client_clock/src/Clock_API.cpp | 118 ++ clock/client_display_time/Makefile | 47 + clock/client_display_time/include/stub/DTime_Api.h | 916 ++++++++ .../include/stub/clock_display_time.h | 42 + .../include/stub/clock_notifications.h | 46 + clock/client_display_time/libDTime_Api.ver | 31 + clock/client_display_time/src/DTime_Api.cpp | 246 +++ clock/localtime/Makefile | 49 + clock/localtime/zoneinfo_base | 232 +++ communication_subcpu/LICENSE | 177 ++ communication_subcpu/Makefile | 19 + communication_subcpu/client/Makefile | 43 + .../client/include/stub/CommSubCpu_API.h | 266 +++ .../client/include/stub/com_message_header.h | 65 + communication_subcpu/client/src/CommSubCpu_API.cpp | 57 + communication_usb/LICENSE | 177 ++ communication_usb/Makefile | 19 + communication_usb/client/Makefile | 43 + .../client/include/stub/commusb_api.h | 186 ++ .../client/include/stub/commusb_notifications.h | 56 + communication_usb/client/src/commusb_api.cpp | 33 + diag_code/LICENSE | 177 ++ diag_code/Makefile | 18 + diag_code/library/Makefile | 51 + diag_code/library/include/stub/DIAGCODE.h | 46 + diag_code/library/include/stub/DiagCodeAPI.h | 1226 +++++++++++ diag_code/library/include/stub/ss_diag.h | 24 + diag_code/library/libDiagCodeAPI.ver | 64 + diag_code/library/src/DiagCodeAPI.cpp | 202 ++ diag_code/library_dummy_dccc/Makefile | 46 + .../include/stub/DIAG_API_DCCC.h | 109 + diag_code/library_dummy_dccc/src/DIAG_API_DCCC.cpp | 64 + diag_record/LICENSE | 177 ++ diag_record/Makefile | 19 + diag_record/library_dummy_drec/Makefile | 48 + .../library_dummy_drec/include/stub/MM_DREC_API.h | 2203 ++++++++++++++++++++ diag_record/library_dummy_drec/src/MM_DREC_API.cpp | 450 ++++ diag_record/library_record_api/Makefile | 47 + .../library_record_api/include/stub/PFDREC_API.h | 975 +++++++++ .../library_record_api/libDiagRecordAPI.ver | 44 + .../library_record_api/src/DiagRecordAPI.cpp | 178 ++ diag_record/library_record_thread/Makefile | 47 + .../include/stub/pfdrec_thread_ifc.h | 168 ++ .../library_record_thread/src/pfdrec_thread.cpp | 162 ++ memory_gpio_access_library/LICENSE | 177 ++ memory_gpio_access_library/Makefile | 20 + memory_gpio_access_library/client/Makefile | 44 + .../client/include/stub/el_gpio.h | 802 +++++++ .../client/include/stub/el_mem.h | 396 ++++ memory_gpio_access_library/client/src/el_gpio.c | 79 + memory_gpio_access_library/client/src/el_mem.c | 73 + stub.mk | 42 + vehicle/LICENSE | 177 ++ vehicle/Makefile | 19 + vehicle/client/Makefile | 60 + vehicle/client/include/stub/Vehicle_API.h | 298 +++ .../include/stub/Vehicle_Sensor_Common_API.h | 502 +++++ .../client/include/stub/vehicle_notifications.h | 48 + vehicle/client/libVehicle_API.ver | 28 + vehicle/client/src/Vehicle_API.cpp | 43 + 66 files changed, 13035 insertions(+) create mode 100644 clock/LICENSE create mode 100644 clock/Makefile.client create mode 100644 clock/client_clock/Makefile create mode 100644 clock/client_clock/include/stub/Clock_API.h create mode 100644 clock/client_clock/include/stub/clock_clock.h create mode 100644 clock/client_clock/libClock_API.ver create mode 100644 clock/client_clock/src/Clock_API.cpp create mode 100644 clock/client_display_time/Makefile create mode 100644 clock/client_display_time/include/stub/DTime_Api.h create mode 100644 clock/client_display_time/include/stub/clock_display_time.h create mode 100644 clock/client_display_time/include/stub/clock_notifications.h create mode 100644 clock/client_display_time/libDTime_Api.ver create mode 100644 clock/client_display_time/src/DTime_Api.cpp create mode 100644 clock/localtime/Makefile create mode 100644 clock/localtime/zoneinfo_base create mode 100644 communication_subcpu/LICENSE create mode 100644 communication_subcpu/Makefile create mode 100644 communication_subcpu/client/Makefile create mode 100644 communication_subcpu/client/include/stub/CommSubCpu_API.h create mode 100644 communication_subcpu/client/include/stub/com_message_header.h create mode 100644 communication_subcpu/client/src/CommSubCpu_API.cpp create mode 100644 communication_usb/LICENSE create mode 100644 communication_usb/Makefile create mode 100644 communication_usb/client/Makefile create mode 100644 communication_usb/client/include/stub/commusb_api.h create mode 100644 communication_usb/client/include/stub/commusb_notifications.h create mode 100644 communication_usb/client/src/commusb_api.cpp create mode 100644 diag_code/LICENSE create mode 100644 diag_code/Makefile create mode 100644 diag_code/library/Makefile create mode 100644 diag_code/library/include/stub/DIAGCODE.h create mode 100644 diag_code/library/include/stub/DiagCodeAPI.h create mode 100644 diag_code/library/include/stub/ss_diag.h create mode 100644 diag_code/library/libDiagCodeAPI.ver create mode 100644 diag_code/library/src/DiagCodeAPI.cpp create mode 100644 diag_code/library_dummy_dccc/Makefile create mode 100644 diag_code/library_dummy_dccc/include/stub/DIAG_API_DCCC.h create mode 100644 diag_code/library_dummy_dccc/src/DIAG_API_DCCC.cpp create mode 100644 diag_record/LICENSE create mode 100644 diag_record/Makefile create mode 100644 diag_record/library_dummy_drec/Makefile create mode 100644 diag_record/library_dummy_drec/include/stub/MM_DREC_API.h create mode 100644 diag_record/library_dummy_drec/src/MM_DREC_API.cpp create mode 100644 diag_record/library_record_api/Makefile create mode 100644 diag_record/library_record_api/include/stub/PFDREC_API.h create mode 100644 diag_record/library_record_api/libDiagRecordAPI.ver create mode 100644 diag_record/library_record_api/src/DiagRecordAPI.cpp create mode 100644 diag_record/library_record_thread/Makefile create mode 100644 diag_record/library_record_thread/include/stub/pfdrec_thread_ifc.h create mode 100644 diag_record/library_record_thread/src/pfdrec_thread.cpp create mode 100644 memory_gpio_access_library/LICENSE create mode 100644 memory_gpio_access_library/Makefile create mode 100644 memory_gpio_access_library/client/Makefile create mode 100644 memory_gpio_access_library/client/include/stub/el_gpio.h create mode 100644 memory_gpio_access_library/client/include/stub/el_mem.h create mode 100644 memory_gpio_access_library/client/src/el_gpio.c create mode 100644 memory_gpio_access_library/client/src/el_mem.c create mode 100644 stub.mk create mode 100644 vehicle/LICENSE create mode 100644 vehicle/Makefile create mode 100644 vehicle/client/Makefile create mode 100644 vehicle/client/include/stub/Vehicle_API.h create mode 100644 vehicle/client/include/stub/Vehicle_Sensor_Common_API.h create mode 100644 vehicle/client/include/stub/vehicle_notifications.h create mode 100644 vehicle/client/libVehicle_API.ver create mode 100644 vehicle/client/src/Vehicle_API.cpp 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 + +/** @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 + +/** @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 + +/* 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 +#include + +/** @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. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
API name(Switch ON notification) OFF notification neccessary/unneccessary note(reason of unneccessary)
DTime_loadDisplaySetting unneccessary apart from button operation
DTime_getDisplaySetting unneccessary apart from button operation
DTime_setGpsTime unneccessary apart from button operation
DTime_registerListener_DTime unneccessary apart from button operation
DTime_UnregisterListener_DTime unneccessary apart from button operation
DTime_setAutoAdjust neccessary
DTime_increaseHour neccessary
DTime_decreaseHour neccessary
DTime_increaseMinute neccessary
DTime_decreaseMinute neccessary
DTime_clearMinute neccessary
DTime_setAMPM unneccessary extern clock is unneccessary
DTime_setFormat neccessary
DTime_setTimeZone unneccessary there is no extern clock SW ON/OFF notification
DTime_setDST unneccessary there is no extern clock SW ON/OFF notification
+ * \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 +#include + +/** @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 + +/** @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 +#include + +#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 +#include +#include +#include + +#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 + +/**************************************************************************** + * 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 + +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 +#include + +/** @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 +#include + +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 +#include +#include + +#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 + +#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 + +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 + +#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, //! + +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 +#include + +#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 +#include +#include + +#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 + +/** + * @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 + +/** + * \~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 +#include + +/** +* \~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 +#include +#include +#include + +/************************************************************************ + * 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 + +/** + * \~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; +} + -- cgit 1.2.3-korg