summaryrefslogtreecommitdiffstats
path: root/video_in_hal/otherservice
diff options
context:
space:
mode:
authorTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>2020-11-20 23:17:04 +0900
committerTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>2020-11-20 23:17:04 +0900
commit9e86046cdb356913ae026f616e5bf17f6f238aa5 (patch)
tree1bfe1ff416fcd3951dc41828d43f1a397944ec6a /video_in_hal/otherservice
parent2219d0168f8f8418aee784a7542388ef064fa833 (diff)
Remove unused directories and files in video_in_hal
The directory video_in_hal contained a lot of unnecessary directories and files which supposed to have been accidentally copied from staging/toyota.git druing migration. Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com> Change-Id: I12f2d72562bc008080ae866831d966c0b751914c
Diffstat (limited to 'video_in_hal/otherservice')
-rwxr-xr-xvideo_in_hal/otherservice/event_library/LICENSE177
-rwxr-xr-xvideo_in_hal/otherservice/event_library/Makefile.client18
-rwxr-xr-xvideo_in_hal/otherservice/event_library/library/Makefile37
-rwxr-xr-xvideo_in_hal/otherservice/event_library/library/include/other_service/ev_lib.h1856
-rwxr-xr-xvideo_in_hal/otherservice/event_library/library/include/other_service/event_library.h39
-rwxr-xr-xvideo_in_hal/otherservice/event_library/library/libev.ver41
-rwxr-xr-xvideo_in_hal/otherservice/event_library/library/src/ev_lib.c1551
-rwxr-xr-xvideo_in_hal/otherservice/other_service.mk42
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/LICENSE177
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/Makefile.client20
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/Makefile48
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001ClockCycleApi.h83
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001TimeApi.h86
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/itoa.h74
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/posix_based_os001_legacy_library.h46
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcat.h78
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcpy.h78
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/ultoa.h74
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c56
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c57
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/src/itoa.c45
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c40
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c49
-rwxr-xr-xvideo_in_hal/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c33
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/LICENSE177
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/Makefile.client19
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/Makefile46
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/include/other_service/rpc.h765
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/include/other_service/rpc_id.h96
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/include/other_service/rpc_library.h41
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/include/rpc_internal.h135
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/include/rpc_thread.h240
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/include/rpc_udp.h162
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/librpc.ver29
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/src/rpc_event.c158
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/src/rpc_lib.c1264
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/src/rpc_marshall.c740
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/src/rpc_thread.c1224
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/library/src/rpc_udp.c473
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/tool/Makefile62
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/tool/apidef.cc1104
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/tool/apidef.h333
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/tool/apidef.l136
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/tool/apidef.y615
-rwxr-xr-xvideo_in_hal/otherservice/rpc_library/tool_for_arm/Makefile50
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/LICENSE177
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/Makefile.client18
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/Makefile40
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/VP_FuncCheck_CanRcv_private.h90
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_FuncCheck_CanRcv.h133
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_GetEnv.h114
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_ext.h45
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicle.h331
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary.h138
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary_serial.h46
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/vehicle_parameter_library.h46
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/src/VP_FuncCheck_CanRcv.c732
-rwxr-xr-xvideo_in_hal/otherservice/vehicle_parameter_library/library/src/VP_GetEnv.c291
58 files changed, 0 insertions, 14875 deletions
diff --git a/video_in_hal/otherservice/event_library/LICENSE b/video_in_hal/otherservice/event_library/LICENSE
deleted file mode 100755
index f433b1a..0000000
--- a/video_in_hal/otherservice/event_library/LICENSE
+++ /dev/null
@@ -1,177 +0,0 @@
-
- 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/video_in_hal/otherservice/event_library/Makefile.client b/video_in_hal/otherservice/event_library/Makefile.client
deleted file mode 100755
index f00b09d..0000000
--- a/video_in_hal/otherservice/event_library/Makefile.client
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# @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 := library
-
-include ../other_service.mk
diff --git a/video_in_hal/otherservice/event_library/library/Makefile b/video_in_hal/otherservice/event_library/library/Makefile
deleted file mode 100755
index 3127439..0000000
--- a/video_in_hal/otherservice/event_library/library/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# @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.
-#
-
-INST_SHLIBS = libev
-libev_SRCS := src/ev_lib.c
-VPATH = ./src ./include/$(COMPONENT_NAME)/
-INST_HEADERS = ev_lib.h event_library.h
-
-CPPFLAGS = -I./include
-
-FDLAGS += -Wl,--no-undefined
-CPPFLAGS += -Werror=implicit-function-declaration
-CPPFLAGS += -Werror=format-security
-
-CPPFLAGS += -Wconversion
-CPPFLAGS += -Wpointer-to-int-cast
-CPPFLAGS += -Wint-to-pointer-cast
-CPPFLAGS += -Wpointer-arith
-CPPFLAGS += -Wformat
-
-LDFLAGS += -Wl,--no-as-needed
-LDLIBS := -lpthread
-
-include ../../other_service.mk
diff --git a/video_in_hal/otherservice/event_library/library/include/other_service/ev_lib.h b/video_in_hal/otherservice/event_library/library/include/other_service/ev_lib.h
deleted file mode 100755
index 6b87ea2..0000000
--- a/video_in_hal/otherservice/event_library/library/include/other_service/ev_lib.h
+++ /dev/null
@@ -1,1856 +0,0 @@
-/*
- * @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 ev_lib.h
- * @brief \~english Event library -- API define head file
- */
-
-#ifndef OTHERSERVICE_EV_LIB_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_EV_LIB_H_ // NOLINT(build/header_guard)
-
-#include <agl_types_obsoluted.h>
-#include <agldd/ev_common.h>
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup event_library
- * @ingroup other_service
- * @{
- */
-
-#ifndef __KERNEL__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* Create/Delete flag and message queue */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_flag
-/// \~english @par Brief
-/// Create flag for event flag by the flag_id.
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID of the flag event
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread.
-/// \~english @retval EV_ERR_Exist Duplication Error
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id: The ID is not created by function of EV_moduleID_to_flagID().
-/// - EV_ERR_Invalid_ID
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - flag_id registered in launch thread
-/// - Flag corresponding to flag_id already exists
-/// - EV_ERR_Exist
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Flag pool is NULL
-/// - Flag generation corresponding to flag_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Creates flag with ID specified by the argument.
-/// An error occurs if flag of the specified ID already exists.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_create_flag, evk_set_poll
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_flag(EV_ID flag_id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_flag64
-/// \~english @par Brief
-/// Create flag for event flag by the flag_id.
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID of the flag event
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread.
-/// \~english @retval EV_ERR_Exist Duplication Error
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id: The ID is not created by function of EV_moduleID_to_flag64ID ().
-/// - EV_ERR_Invalid_ID
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - flag_id registered in launch thread
-/// - Flag corresponding to flag_id already exists
-/// - EV_ERR_Exist
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Flag pool is NULL
-/// - Flag generation corresponding to flag_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Creates flag with ID specified by the argument.
-/// An error occurs if flag of the specified ID already exists.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_create_flag, evk_set_poll
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_flag64(EV_ID flag_id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_queue
-/// \~english @par Brief
-/// Create message queue with the queue_id.
-/// \~english @param [in] queue_id
-/// EV_ID - queue_id of message event
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [in] length
-/// UINT8 - length of message queue (Maximum accumulated number of the messages)
-/// \~english @param [in] max_bytes
-/// UINT16 - the maximum number of bytes per 1 message(MAX 2048)
-/// \~english @param [in] type
-/// EV_Message_Queue_Type - classification of the processing when the queue received more event
-/// - in the queue full state.
-/// \~english @par
-/// EV_Message_Queue_Type
-/// \~english @code
-/// typedef UINT8 EV_Message_Queue_Type;
-/// - EV_MESSAGE_QUEUE_TYPE_BUSY = 0 // Return error(EV_ERR_Busy) to origin of message transmission
-/// - EV_MESSAGE_QUEUE_TYPE_FIFO = 1 // Delete the top message of the queue, and shift message
-/// // (Delete the oldest message)
-/// - EV_MESSAGE_QUEUE_TYPE_REPLACE = 2 // Overwrite the last message of the queue
-/// // (Overwrite the newest message)
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread.
-/// \~english @retval EV_ERR_Exist Duplication Error
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id is not created by function of EV_moduleID_to_queueID ().
-/// - EV_ERR_Invalid_ID
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - queue_id registered in launch thread
-/// - Message queue corresponding to queue_id already exists
-/// - EV_ERR_Exist
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Message queue pool is NULL
-/// - Message queue generation corresponding to queue_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Creates message queue with ID specified by the argument.
-/// When queue is created, a memory area corresponding to "length" x "max_bytes" is dynamically secured.
-/// An error occurs if queue of the specified ID already exists.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_create_message_queue, evk_set_poll
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_queue(EV_ID queue_id, // NOLINT (readability/nolint)
- UINT8 length, // NOLINT (readability/nolint)
- UINT16 max_bytes, // NOLINT (readability/nolint)
- EV_Message_Queue_Type type); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_flag_auto_id
-/// \~english @par Brief
-/// Automatically assign flag ID, and creates flag with flag ID.
-/// \~english @param [out] flag_id
-/// EV_ID* - flag_id assigned automatically
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Flag pool is NULL
-/// - Flag generation corresponding to flag_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Automatically assign flag ID, and creates flag with flag ID.
-/// It is the same as "EV_create_flag" except that flag ID is automatically allocated.
-/// \~english @see EV_create_flag, evk_open, evk_close, evk_ioctl, evk_create_flag, evk_alloc_flag_id, evk_set_poll
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_flag_auto_id(/* OUT */EV_ID *flag_id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_flag64_auto_id
-/// \~english @par Brief
-/// Automatically assign flag ID, and creates flag with flag ID.
-/// \~english @param [out] flag_id
-/// EV_ID* - flag_id assigned automatically
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Flag pool is NULL
-/// - Flag generation corresponding to flag_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Automatically assign flag ID, and creates flag with flag ID.
-/// It is the same as "EV_create_flag" except that flag ID is automatically allocated.
-/// \~english @see EV_create_flag, evk_open, evk_close, evk_ioctl, evk_create_flag, evk_alloc_flag_id, evk_set_poll
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_flag64_auto_id(/* OUT */EV_ID *flag_id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_queue_auto_id
-/// \~english @par Brief
-/// Automatically assign queue ID, and creates message queue with queue ID.
-/// It stores queue_id assigned automatically in argument.
-/// \~english @param [out] queue_id
-/// EV_ID* - queue_id assigned automatically
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [in] length
-/// UINT8 - length of message queue (Maximum accumulated number of the messages)
-/// \~english @param [in] max_bytes
-/// UINT16 - the maximum number of bytes per 1 message(MAX 2048)
-/// \~english @param [in] type
-/// EV_Message_Queue_Type - classification of the processing when the queue received more event
-/// in the queue full state.
-/// \~english @par
-/// EV_Message_Queue_Type
-/// \~english @code
-/// typedef UINT8 EV_Message_Queue_Type;
-/// - EV_MESSAGE_QUEUE_TYPE_BUSY = 0 // Return error(EV_ERR_Busy) to origin of message transmission
-/// - EV_MESSAGE_QUEUE_TYPE_FIFO = 1 // Delete the top message of the queue, and shift message
-/// // (Delete the oldest message)
-/// - EV_MESSAGE_QUEUE_TYPE_REPLACE = 2 // Overwrite the last message of the queue
-/// // (Overwrite the newest message)
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Thread is unregistered and threads started up to the maximum of event thread(16 threads)
-/// - EV_ERR_Thread_Over
-/// - Message queue corresponding to queue_id already exists
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Message queue pool is NULL
-/// - Message queue generation corresponding to queue_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Automatically assign queue id, and creates message queue with queue id, It stores queue_id
-/// assigned automatically in argument.
-/// It is the same as "EV_queue_flag" except that queue ID is automatically allocated.
-/// \~english @see EV_create_queue, evk_open, evk_close, evk_ioctl, evk_create_message_queue,
-/// evk_alloc_queueID, evk_set_poll
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_queue_auto_id(/* OUT */EV_ID *queue_id, // NOLINT (readability/nolint)
- UINT8 length, // NOLINT (readability/nolint)
- UINT16 max_bytes, // NOLINT (readability/nolint)
- EV_Message_Queue_Type type); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_destroy_flag
-/// \~english @par Brief
-/// Deletes flag with ID specified by the argument.
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID of the flag event
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Flag corresponding to queue_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Deletes flag with ID specified by the argument.
-/// The user can only delete flag created by user process.
-/// Due to deletion, program waiting for this flag (poll or wait) wakes up.
-/// \~english @see evk_close, evk_ioctl, evk_destroy_queue
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_destroy_flag(EV_ID queue_id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_destroy_queue
-/// \~english @par Brief
-/// Delete queue for message event by the queue_id.
-/// \~english @param [in] queue_id
-/// EV_ID - queue_id of the message event
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_queue(),EV_create_queue_auto_id() and message queue has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Message queue corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Deletes message queue with ID specified by the argument.
-/// The user can only delete message queue created by user process.
-/// Due to deletion, program waiting for this message queue (poll or wait) wakes up.
-/// \~english @see EV_destroy_flag, evk_close, evk_ioctl, evk_destroy_queue
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_destroy_queue(EV_ID queue_id); // NOLINT (readability/nolint)
-
-/* Send event */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_set_flag
-/// \~english @par Brief
-/// Set Event flag
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID of the event flag
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [in] bits
-/// UINT32 - event flag bit pattern
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - Flag corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Sets bit pattern specified by argument to flag of ID specified by argument.
-/// When setting a plurality of bit patterns in the same flag, "only OR
-/// operation result of all bit patterns" is held in flag.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_store_flag
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_set_flag(EV_ID flag_id, UINT32 bits); // NOLINT (readability/nolint)
-
-/* Send event */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_set_flag64
-/// \~english @par Brief
-/// Set Event flag
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID of the event flag
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [in] bits
-/// UINT32 - event flag bit pattern
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - Flag corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Sets bit pattern specified by argument to flag of ID specified by argument.
-/// When setting a plurality of bit patterns in the same flag, "only OR operation
-/// result of all bit patterns" is held in flag.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_store_flag
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_set_flag64(EV_ID flag_id, UINT64 bits); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_send_message
-/// \~english @par Brief
-/// Send Message event
-/// \~english @param [in] queue_id
-/// EV_ID - Queue ID of the message destination
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [in] bytes
-/// UINT16 - The bytes of the send message
-/// \~english @param [in] message
-/// const void * - Pointer to a transmitting byte line
-/// \~english @param [in] senderInfo
-/// UINT32 - Message Source(It is specified when it is used for application identification.
-/// When do not use it, appoint 0.)
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Busy Queue overflow
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_queue(),EV_create_queue_auto_id() and message queue has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Message queue corresponding to queue_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// - Queue overflow in kernel space
-/// - EV_ERR_Busy
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Invalid queue types
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Sends message specified by argument to message queue of ID specified by argument.
-/// An error occurs when message queue of the specified ID doesn't exist or
-/// message size exceeds the specified size.
-/// When message queue is FULL, the processing differs depending on the type of message queue specified
-/// at the time of creation message queue.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_store_message
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_send_message(EV_ID queue_id, // NOLINT (readability/nolint)
- UINT16 bytes, // NOLINT (readability/nolint)
- const void *message, // NOLINT (readability/nolint)
- UINT32 senderInfo); // NOLINT (readability/nolint)
-
-/* \~english Get events in the order of arrivals */
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_get_next_event
-/* \~english get events by reaching time */
-/// \~english @par Brief get the first reached event(non-block)
-/// \~english @param [out] ev
-/// event Structure
-/// \~english @par
-/// EV_Event struct
-/// @code
-/// typedef unsigned int UINT32;
-/// typedef UINT32 EV_Type;
-/// typedef UINT32 EV_ID;
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// enum ev_message_queue_type {
-/// EV_MESSAGE_QUEUE_TYPE_BUSY,
-/// EV_MESSAGE_QUEUE_TYPE_FIFO,
-/// EV_MESSAGE_QUEUE_TYPE_REPLACE,
-/// };
-///
-/// typedef struct {
-/// EV_ID flagID;
-/// UINT32 bits;
-/// } EV_Flag;
-///
-/// typedef struct {
-/// EV_ID flagID;
-/// UINT64 bits;
-/// } EV_Flag64;
-///
-/// typedef struct {
-/// EV_ID queueID;
-/// UINT32 senderInfo;
-/// UINT32 length;
-/// UINT32 dummy;
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH];
-/// } EV_Message;
-///
-/// typedef struct {
-/// EV_Type type; // please reference ev_message_queue_type.
-/// union {
-/// EV_Flag flag;
-/// EV_Flag64 flag64;
-/// EV_Message message;
-/// } u;
-/// } EV_Event;
-///
-/// @endcode
-
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_Thread: unregistered thread
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - unregistered thread
-/// - EV_ERR_Invalid_Thread
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Get the first reached event which occurred for
-/// flags or message queues created in current process.
-/// If there is no event, set ev->type to EV_EVENT_None, then return immediately.
-/// The event is flag or message is decided by
-/// the ev->type is EV_EVENT_Flag or EV_EVENT_Message.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_get_next_event(/* OUT */EV_Event *ev); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_peek_next_event
-/// \~english @par Brief get the first reached event(non-destructive)
-/// \~english @param [out] ev
-/// event Structure
-/// @code
-/// typedef unsigned int UINT32;
-/// typedef UINT32 EV_Type;
-/// typedef UINT32 EV_ID;
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// enum ev_message_queue_type {
-/// EV_MESSAGE_QUEUE_TYPE_BUSY,
-/// EV_MESSAGE_QUEUE_TYPE_FIFO,
-/// EV_MESSAGE_QUEUE_TYPE_REPLACE,
-/// };
-///
-/// typedef struct {
-/// EV_ID flagID;
-/// UINT32 bits;
-/// } EV_Flag;
-///
-/// typedef struct {
-/// EV_ID flagID;
-/// UINT64 bits;
-/// } EV_Flag64;
-///
-/// typedef struct {
-/// EV_ID queueID;
-/// UINT32 senderInfo;
-/// UINT32 length;
-/// UINT32 dummy;
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH];
-/// } EV_Message;
-///
-/// typedef struct {
-/// EV_Type type; // please reference ev_message_queue_type.
-/// union {
-/// EV_Flag flag;
-/// EV_Flag64 flag64;
-/// EV_Message message;
-/// } u;
-/// } EV_Event;
-///
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_Thread: unregistered thread
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - unregistered thread
-/// - EV_ERR_Invalid_Thread
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Get the first reached event which occurred for
-/// flags or message queues created in current process non-destructively.
-/// If the event is not getted from other processes, then call the function of
-/// EV_get_next_event() or EV_peek_next_event(), it will return a same event.
-/// If there is no event, set ev->type to EV_EVENT_None, then return immediately.
-/// The event is flag or message is decided by
-/// ev->type is EV_EVENT_Flag or EV_EVENT_Message.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_peek_next_event(/* OUT */EV_Event *ev); // NOLINT (readability/nolint)
-
-/* Get eventflag (ID specified) */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_get_flag
-/// \~english @par Brief
-/// Get event flag(non-block)
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] flag
-/// EV_Flag * - event flag structure
-/// \~english @par
-/// EV_Flag structure
-/// \~english @code
-/// typedef struct {
-/// EV_ID flagID; // Flag ID
-/// UINT32 bits; // event flag bit pattern
-/// } EV_Flag;
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Flag corresponding to flag_id doesn't exist
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets bit pattern specified by argument to flag of ID specified by argument.
-/// The user can only get flag created by user process, and clear bit pattern of acquired flag.
-/// An error occurs if flag of the specified ID doesn't exist.
-/// \~english @see
-/// evk_ioctl, evk_get_event
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_get_flag(EV_ID flag_id, /* OUT */EV_Flag *flag); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_wait_flag
-/// \~english @par Brief
-/// Get event flag(block)
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] flag
-/// EV_Flag * - event flag structure
-/// \~english @par
-/// EV_Flag structure
-/// \~english @code
-/// typedef struct {
-/// EV_ID flagID; // Flag ID
-/// UINT32 bits; // event flag bit pattern
-/// } EV_Flag;
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Interrupted signal interrupt
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Flag corresponding to flag_id doesn't exist
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Task blocking was canceled by signal interrupt
-/// - EV_ERR_Interrupted
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets bit pattern specified by argument to flag of ID specified by argument.
-/// The user can only get flag created by user process, and clear bit pattern of acquired flag.
-/// An error occurs if flag of the specified ID doesn't exist.
-/// If bit pattern is not set in flag, block until bit pattern is set.
-/// However, if a signal interrupt or corresponding flag is deleted, it will abort and return an error.
-/// \~english @see
-/// evk_ioctl, evk_get_event
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_wait_flag(EV_ID flag_id, /* OUT */EV_Flag *flag); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_peek_flag
-/// \~english @par Brief get flag event(non-destructive)
-/// \~english @param [in] flag_id
-/// ID of message event queue
-/// \~english @param [out] flag
-/// flag struct
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @par
-/// EV_Flag Structure
-/// @code
-/// typedef struct {
-/// EV_ID flagID;
-/// UINT32 bits;
-/// } EV_Flag;
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: The specified flag ID is not existing,
-/// or it is not created in current process.
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Flag corresponding to flag_id doesn't exist
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Task blocking was canceled by signal interrupt
-/// - EV_ERR_Interrupted
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Get a flag event whose ID is specified non-destructively.
-/// If there is no event, just return.
-/// If there is no event, set flag->flagID to EV_NO_ID.
-/// You can judge that there is no event, even though flag->bits is 0.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_peek_flag(EV_ID flag_id, /* OUT */EV_Flag *flag); // NOLINT (readability/nolint)
-
-/* Get eventflag (ID specified) */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_get_flag64
-/// \~english @par Brief
-/// Get event flag(non-block)
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] flag
-/// EV_Flag * - event flag structure
-/// \~english @par
-/// EV_Flag structure
-/// \~english @code
-/// typedef unsigned int UINT32;
-/// typedef UINT32 EV_ID
-///
-/// typedef struct {
-/// EV_ID flagID; // Flag ID
-/// UINT32 bits; // event flag bit pattern
-/// } EV_Flag;
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Flag corresponding to flag_id doesn't exist
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets bit pattern specified by argument to flag of ID specified by argument.
-/// The user can only get flag created by user process, and clear bit pattern of acquired flag.
-/// An error occurs if flag of the specified ID doesn't exist.
-/// \~english @see
-/// evk_ioctl, evk_get_event
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_get_flag64(EV_ID flag_id, /* OUT */EV_Flag64 *flag); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_wait_flag64
-/// \~english @par Brief
-/// Get event flag(block)
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] flag
-/// EV_Flag * - event flag structure
-/// \~english @par
-/// EV_Flag structure
-/// \~english @code
-/// typedef unsigned int UINT32;
-/// typedef UINT32 EV_ID
-///
-/// typedef struct {
-/// EV_ID flagID; // Flag ID
-/// UINT32 bits; // event flag bit pattern
-/// } EV_Flag;
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Interrupted signal interrupt
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Flag corresponding to flag_id doesn't exist
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Task blocking was canceled by signal interrupt
-/// - EV_ERR_Interrupted
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets bit pattern specified by argument to flag of ID specified by argument.
-/// The user can only get flag created by user process, and clear bit pattern of acquired flag.
-/// An error occurs if flag of the specified ID doesn't exist.
-/// If bit pattern is not set in flag, block until bit pattern is set.
-/// However, if a signal interrupt or corresponding flag is deleted, it will abort and return an error.
-/// \~english @see
-/// evk_ioctl, evk_get_event
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_wait_flag64(EV_ID flag_id, /* OUT */EV_Flag64 *flag); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_peek_flag64
-/// \~english @par Brief get flag event(non-destructive)
-/// \~english @param [in] flag_id
-/// ID of message event queue
-/// \~english @param [out] flag
-/// flag struct
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @par
-/// EV_Flag Structure
-/// @code
-/// typedef struct {
-/// EV_ID flagID;
-/// UINT32 bits;
-/// } EV_Flag;
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: The specified flag ID is not existing,
-/// or it is not created in current process.
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Flag corresponding to flag_id doesn't exist
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Task blocking was canceled by signal interrupt
-/// - EV_ERR_Interrupted
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Get a flag event whose ID is specified non-destructively.
-/// If there is no event, just return.
-/// If there is no event, set flag->flagID to EV_NO_ID.
-/// You can judge that there is no event, even though flag->bits is 0.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_peek_flag64(EV_ID flag_id, /* OUT */EV_Flag64 *flag); // NOLINT (readability/nolint)
-
-/* Get Message Event (ID specified) */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_get_message
-/// \~english @par Brief
-/// Get message event(non-block)
-/// \~english @param [in] queue_id
-/// EV_ID - Message queue ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] message
-/// EV_Message * - Message event structure
-/// \~english @par
-/// EV_Message structure
-/// \~english @code
-/// typedef unsigned int UINT32;
-/// typedef UINT32 EV_ID
-///
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// typedef struct {
-/// EV_ID queueID; // ID of message queue
-/// UINT32 senderInfo; // Message Source
-/// UINT32 length; // length of message
-/// UINT32 dummy; // dummy for padding
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH]; // message
-/// } EV_Message;
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_queue(),EV_create_queue_auto_id() and message queue has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Message queue corresponding to queue_id doesn't exist
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets 1 message specified by argument to message queue of ID specified by argument.
-/// The user can only get message queue created by user process, and clear 1 message of acquired message queue.
-/// An error occurs if message queue of the specified ID doesn't exist.
-/// \~english @see
-/// evk_ioctl, evk_get_event
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_get_message(EV_ID queue_id, /* OUT */EV_Message *message); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_wait_message
-/// \~english @par Brief
-/// Get message event(block)
-/// \~english @param [in] queue_id
-/// EV_ID - Message queue ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] message
-/// EV_Message * - Message event structure
-/// \~english @par
-/// EV_Message structure
-/// \~english @code
-/// typedef unsigned int UINT32;
-/// typedef UINT32 EV_ID
-///
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// typedef struct {
-/// EV_ID queueID; // ID of message queue
-/// UINT32 senderInfo; // Message Source
-/// UINT32 length; // length of message
-/// UINT32 dummy; // dummy for padding
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH]; // message
-/// } EV_Message;
-/// @endcode
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Interrupted signal interrupt
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_queue(),EV_create_queue_auto_id() and message queue has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Message queue corresponding to queue_id doesn't exist
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Task blocking was canceled by signal interrupt
-/// - EV_ERR_Interrupted
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets 1 message specified by argument to message queue of ID specified by argument.
-/// The user can only get message queue created by user process, and clear 1 message of acquired message queue.
-/// An error occurs if message queue of the specified ID doesn't exist.
-/// If message is not set in message queue, block until message is sent.
-/// However, if a signal interrupt or corresponding message queue is deleted, it will abort and return an error.
-/// \~english @see
-/// evk_ioctl, evk_get_event
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_wait_message(EV_ID queue_id, /* OUT */EV_Message *message); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_peek_message
-/// \~english @par Brief get message event(non-destructive)
-/// \~english @param [in] queue_id
-/// ID of message event queue
-/// \~english @param [out] message
-/// message event queue struct
-/// \~english @par
-/// EV_ID define
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-
-/// \~english @par
-/// EV_Message struct
-/// @code
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// typedef struct {
-/// EV_ID queueID;
-/// UINT32 senderInfo;
-/// UINT32 length;
-/// UINT32 dummy;
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH];
-/// } EV_Message;
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: The specified queue ID is not existing,
-/// or it is not created in current process.
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Message queue corresponding to queue_id doesn't exist
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Get a message event queue whose ID is specified non-destructively.
-/// If there is no event, just return.
-/// If there is no event, set message->queueID to EV_NO_ID.
-/// It is the same with EV_get_message(), except the message is remained in the queue.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_peek_message(EV_ID queue_id, /* OUT */EV_Message *message); // NOLINT (readability/nolint)
-
-/* \~english Get events(with search criteria) */
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_find_message_by_sender
-/* \~english get event(with search sender infomation condition) */
-/// \~english @param [in] queue_id
-/// ID of message event queue
-/// \~english @param [in] senderInfo
-/// sender information
-/// \~english @param [out] message
-/// message event struct
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @par
-/// EV_Message struct
-/// @code
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// typedef struct {
-/// EV_ID queueID;
-/// UINT32 senderInfo;
-/// UINT32 length;
-/// UINT32 dummy;
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH];
-/// } EV_Message;
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: The specified queue ID is not existing,
-/// or it is not created in current process.
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Not find same sender information's message according to input sender information information
-/// - EV_ERR_Invalid_ID
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Message queue pool is NULL
-/// - Message queue generation corresponding to queue_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// If there is a event whose sender information is same with
-/// any event in message event queue whose ID is specified, get the event and delete it from queue.
-/// If such a message is not existing,
-/// set message->queueID to EV_NO_ID, then return.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_find_message_by_sender(EV_ID queue_id, UINT32 senderInfo, EV_Message *message); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_find_message_by_content
-/// \~english @par Brief get message event(search with contents)
-/// \~english @param [in] queue_id
-/// ID of message event queue
-/// \~english @param [in] bytes
-/// size of compare bytes
-/// \~english @param [in] compare_bytes
-/// bytes that used to campare the contents
-/// \~english @param [out] message
-/// message event struct
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @par
-/// EV_Message struct
-/// @code
-/// #define EV_MAX_MESSAGE_LENGTH 2048
-/// typedef struct {
-/// EV_ID queueID;
-/// UINT32 senderInfo;
-/// UINT32 length;
-/// UINT32 dummy;
-/// UINT8 message[EV_MAX_MESSAGE_LENGTH];
-/// } EV_Message;
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: The specified queue ID is not existing,
-/// or it is not created in current process.
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Not find contents's message according to input contents information
-/// - EV_ERR_Invalid_ID
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Message queue pool is NULL
-/// - Message queue generation corresponding to queue_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// If the event in compare bytes is same with
-/// any event in message event queue whose ID is specified,
-/// get the event and delete it from queue.
-/// If such a message is not existing, set message->queueID to EV_NO_ID, then return.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_find_message_by_content(EV_ID queue_id, // NOLINT (readability/nolint)
- UINT16 length, // NOLINT (readability/nolint)
- const void *compare_bytes, // NOLINT (readability/nolint)
- /* OUT */EV_Message *message); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_get_flag_fd
-/// \~english @par Brief
-/// Obtain fd for polling flag event
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] fd
-/// int * - event flag queue fd for Polling
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @par Prerequisite
-/// Execute EV_create_flag(),EV_create_flag_auto_id() and flag has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - Flag corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets fd(File Descriptor) corresponding to flag of ID specified by argument.
-/// The user can only get flag created by user process .
-/// This fd(File Descriptor) can be used only for designation to poll / select, and operation when other
-/// operations are performed is not guaranteed.
-/// At the time of poll, only POLLIN can be specified, and at the time of select,
-/// it is possible to check only whether it can be read.
-/// Also, if flag is deleted in poll / select, it exits poll / select. * In case of poll, POLLERR is set.
-/// When calling the same ID more than once, it returns the same fd(File Descriptor)
-/// each time (unless destroy / create is done).
-/// \~english @see
-/// nothing
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_get_flag_fd(EV_ID flag_id, /* OUT */int *fd); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_get_queue_fd
-/// \~english @par Brief
-/// Obtain fd for polling message event
-/// \~english @param [in] flag_id
-/// EV_ID - Flag ID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @param [out] fd
-/// int * - Message queue fd for Polling
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @par Prerequisite
-/// Execute EV_create_queue(),EV_create_queue_auto_id() and message queue has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error
-/// - Message queue corresponding to queue_id doesn't exist
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - EV_ERR_Invalid_ID
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Gets fd(File Descriptor) corresponding to message queue of ID specified by argument.
-/// The user can only get message queue created by user process .
-/// This fd(File Descriptor) can be used only for designation to poll / select,
-/// and operation when other operations are performed is not guaranteed.
-/// At the time of poll, only POLLIN can be specified, and at the time of select,
-/// it is possible to check only whether it can be read.
-/// Also, if message queue is deleted in poll / select, it exits poll / select.
-/// * In case of poll, POLLERR is set.
-/// When calling the same ID more than once, it returns the same fd(File Descriptor)
-/// each time (unless destroy / create is done).
-/// \~english @see
-/// nothing
-////////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_get_queue_fd(EV_ID queue_id, /* OUT */int *fd); // NOLINT (readability/nolint)
-
-/* \~english Functions that specify the module ID (16 bits) instead of the flag ID and queue ID */
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_moduleID_to_flag_id
-/* \~english function group used to specify moduleID(16bit) instead of flag_id, queue_id */
-/// \~english @par Brief change from moduleID to flag_id
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @retval flag_id
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - none
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of flags with one moduleID. return error:EV_ERR_Exist.
-/// This function is only used for generating one event by one module ID.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ID EV_moduleID_to_flagID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_moduleID_to_flag64ID
-/// \~english @par Brief change from moduleID to 64bit flag_id
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval 64bit flag_id
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - none
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of flags with one moduleID. return error:EV_ERR_Exist.
-/// This function is only used for generating one event by one module ID.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ID EV_moduleID_to_flag64ID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_moduleID_to_queueID
-/// \~english @par Brief change from moduleID to queue_id
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @par
-/// EV_ID type parameter
-/// @code
-/// typedef UINT32 EV_ID
-/// @endcode
-/// \~english @retval queue_id
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - none
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of queues with one moduleID.
-// \~english @see none
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ID EV_moduleID_to_queueID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_flag_by_mID
-/// \~english @par Brief create flag(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread.
-/// \~english @retval EV_ERR_Exist Duplication Error
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The ID is not created by function of EV_moduleID_to_flagID ().
-/// - EV_ERR_Invalid_ID
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - flag_id registered in launch thread
-/// - Flag corresponding to flag_id already exists
-/// - EV_ERR_Exist
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Flag pool is NULL
-/// - Flag generation corresponding to flag_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of flags with one moduleID.return error:EV_ERR_Exist.
-/// This function is only used for generating one event by one module ID.
-// \~english @see EV_create_flag
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_flag_by_mID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_flag64_by_mID
-/// \~english @par Brief create 64bit flag(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread.
-/// \~english @retval EV_ERR_Exist Duplication Error
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The ID is not created by function of EV_moduleID_to_flag64ID ().
-/// - EV_ERR_Invalid_ID
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - flag_id registered in launch thread
-/// - Flag corresponding to flag_id already exists
-/// - EV_ERR_Exist
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Flag pool is NULL
-/// - Flag generation corresponding to flag_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of flags with one moduleID. return error:EV_ERR_Exist.
-/// This function is only used for generating one event by one module ID.
-// \~english @see EV_create_flag64
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_create_flag64_by_mID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_create_queue_by_mID
-/// \~english @par Brief create queue(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @param [in] length
-/// length of message queue
-/// \~english @param [in] max_bytes
-/// one max bytes for message
-/// \~english @param [in] type
-/// treat type of receiving events even though the queue is full
-/// \~english @par
-/// ev_message_queue_type struct
-/// @code
-/// enum ev_message_queue_type {
-/// EV_MESSAGE_QUEUE_TYPE_BUSY,
-/// EV_MESSAGE_QUEUE_TYPE_FIFO,
-/// EV_MESSAGE_QUEUE_TYPE_REPLACE,
-/// };
-/// @endcode
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: set en invalid flag ID
-/// \~english @retval EV_ERR_Thread_Over The MAX of event thread.
-/// \~english @retval EV_ERR_Exist: a same flag ID is existing
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// There is no prerequisite
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - EV_ERR_Invalid_ID
-/// - Startup thread upper limit (16) error
-/// - EV_ERR_Thread_Over
-/// - queue_id registered in launch thread
-/// - Message queue corresponding to queue_id already exists
-/// - EV_ERR_Exist
-/// - Securing free space of thread information management table (malloc) Failure
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Message queue pool is NULL
-/// - Message queue generation corresponding to queue_id failed
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of queues with one moduleID.
-// \~english @see EV_create_queue
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR
-EV_create_queue_by_mID(UINT16 m_id, // NOLINT (readability/nolint)
- UINT8 length, // NOLINT (readability/nolint)
- UINT16 max_bytes, // NOLINT (readability/nolint)
- EV_Message_Queue_Type type); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_destroy_flag_by_mID
-/// \~english @par Brief delete flag(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @par length [in]length of message queue
-/// \~english @par max_bytes [in]one max bytes for message
-/// \~english @par type [in]treat type of receiving events even though the queue is full
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: set en invalid flag ID
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// - none
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The flag_id of event/message which has not been created.
-/// - Flag corresponding to queue_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// \~english You can not use this function to
-/// \~english create a multiple of flags with one moduleID. return error:EV_ERR_Exist.
-/// This function is only used for generating one event by one module ID.
-// \~english @see EV_destroy_flag
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_destroy_flag_by_mID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_destroy_queue_by_mID
-/// \~english @par Brief delete queue(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Message queue corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// You can not use this function to
-/// create a multiple of queues with one moduleID
-// \~english @see EV_destroy_queue
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_destroy_queue_by_mID(UINT16 m_id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_set_flag_by_mID
-/// \~english @par Brief send flag(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @param [in] bits
-/// value of flag
-/// \~english @retval EV_OK: normal termination
-/// \~english @retval EV_ERR_Invalid_ID: set en invalid flag ID
-/// \~english @retval EV_ERR_Fatal: Fatal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - Flag corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Sets bit pattern specified by argument to flag of ID specified by argument.
-/// When setting a plurality of bit patterns in the same flag,
-/// "only OR operation result of all bit patterns" is held in flag.
-// \~english @see EV_set_flag
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_set_flag_by_mID(UINT16 m_id, UINT32 bits); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_set_flag64_by_mID
-/// \~english @par Brief send 64bit flag(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @param [in] bits
-/// value of flag
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid flag_id
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// - none
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect flag_id)
-/// --incorrect flag_id:The flag_id of event which has not been created.
-/// - Flag corresponding to flag_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Sets bit pattern specified by argument to flag of ID specified by argument.
-/// When setting a plurality of bit patterns in the same flag, "only
-/// OR operation result of all bit patterns" is held in flag.
-// \~english @see EV_set_flag64
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR EV_set_flag64_by_mID(UINT16 m_id, UINT64 bits); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup EV_send_message_by_mID
-/// \~english @par Brief send message(moduleID specified)
-/// \~english @param [in] m_id
-/// moduleID
-/// \~english @param [in] bytes
-/// number of send bytes
-/// \~english @param [in] message
-/// pointer to sender contents
-/// \~english @param [in] senderInfo
-/// sender information
-/// \~english @retval EV_OK Successful completion
-/// \~english @retval EV_ERR_Invalid_ID Invalid queue_id
-/// \~english @retval EV_ERR_Busy Queue overflow
-/// \~english @retval EV_ERR_Fatal Abnormal error
-/// \~english @par Prerequisite
-/// Execute EV_create_queue(),EV_create_queue_auto_id() and message queue has already been created.
-/// \~english @par Change of internal state
-/// There is no change of the internal Status
-/// \~english @par Conditions of processing failure
-/// - Input parameter error (specifying incorrect queue_id)
-/// --incorrect queue_id:The queue_id of essage which has not been created.
-/// - Message queue corresponding to queue_id doesn't exist
-/// - EV_ERR_Invalid_ID
-/// - Queue overflow in kernel space
-/// - EV_ERR_Busy
-/// - Access failed from kernel space to user space reference area
-/// - Failed to copy data from user space to kernel space
-/// - Invalid queue types
-/// - EV_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Sends message specified by argument to message moduleID specified by argument.
-/// An error occurs when message queue of the specified ID doesn't exist
-/// or message size exceeds the specified size.
-/// When message queue is FULL, the processing differs depending on the type
-/// of message queue specified at the time of creation message queue.
-/// \~english @see evk_open, evk_close, evk_ioctl, evk_store_message
-////////////////////////////////////////////////////////////////////////////////
-
-EV_ERR
-EV_send_message_by_mID(UINT16 m_id, // NOLINT (readability/nolint)
- UINT16 bytes, // NOLINT (readability/nolint)
- const void *message, // NOLINT (readability/nolint)
- UINT32 senderInfo); // NOLINT (readability/nolint)
-
-/** @}*/ // end of event_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-/**
- *
- * @brief Method to specify module IDs as flag IDs and queue IDs
- *
- * The function with module ID as an argument directly can be used in the case of that created only
- * one flag and queue in the module, other than using macros EV_Flag_ID_Base() or EV_Queue_ID_Base().
- * @see EV_create_flag_by_mID
- * @see EV_create_queue_by_mID
- * @see EV_destroy_flag_by_mID
- * @see EV_destroy_queue_by_mID
- * @see EV_set_flag_by_mID
- * @see EV_send_message_by_mID
- *
- * So the following API can be used to convert IDs created using above method to flag IDs or queue ID
- * when pass them to other modules.
- * @see EV_moduleID_to_flagID(UINT16 m_id)
- * @see EV_moduleID_to_queueID(UINT16 m_id)
- *
- * @see EV_ID_spec
- */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* !__KERNEL__ */
-
-#endif // OTHERSERVICE_EV_LIB_H_
diff --git a/video_in_hal/otherservice/event_library/library/include/other_service/event_library.h b/video_in_hal/otherservice/event_library/library/include/other_service/event_library.h
deleted file mode 100755
index ea6285c..0000000
--- a/video_in_hal/otherservice/event_library/library/include/other_service/event_library.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * @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
- * @brief \~english include all event_library head files
- */
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup event_library
- * @ingroup other_service
- * @{
- */
-#ifndef OTHERSERVICE_EVENTLIBRARY_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_EVENTLIBRARY_H_ // NOLINT(build/header_guard)
-
-#include <other_service/ev_lib.h>
-
-#endif // OTHERSERVICE_EVENTLIBRARY_H_
-/** @}*/
-/** @}*/
-/** @}*/
diff --git a/video_in_hal/otherservice/event_library/library/libev.ver b/video_in_hal/otherservice/event_library/library/libev.ver
deleted file mode 100755
index a361455..0000000
--- a/video_in_hal/otherservice/event_library/library/libev.ver
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * @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.
- */
-
-######################
-# ev version script #
-######################
-{
- global:
- ### .text section ###
- EV_*;
- ev_lock_func;
- ev_lock_line;
- ev_lock_pid;
- ev_process_global_mutex;
- g_destory_message_invalid_id_wrapper_flag;
- g_destory_message_fatal_wrapper_flag;
- g_receive_message_no_exist_fatal_wrapper_flag;
- g_receive_message_fatal_wrapper_flag;
- g_send_message_invalid_id_wrapper_flag;
- g_send_message_fatal_wrapper_flag;
- g_create_event_fatal_wrapper_flag;
- g_create_event_set_poll_fatal_wrapper_flag;
- ### .data section ###
- ### .bss section ###
- local:
- *;
-};
-
diff --git a/video_in_hal/otherservice/event_library/library/src/ev_lib.c b/video_in_hal/otherservice/event_library/library/src/ev_lib.c
deleted file mode 100755
index f6b784a..0000000
--- a/video_in_hal/otherservice/event_library/library/src/ev_lib.c
+++ /dev/null
@@ -1,1551 +0,0 @@
-/*
- * @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 ev_lib.c
- * @brief Events Library -- Implementing API Functions
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <pthread.h>
-#include <sys/prctl.h>
-#include <other_service/ev_lib.h>
-#include <agldd/evk_lib.h>
-#include <agldd/ev_common.h>
-#include <assert.h>
-#define EV_perror perror
-#define EV_assert assert
-
-/*
- * Not use dbg_output in the EV so that the DTV apps and semiconductor vendor use this function.
- */
-#define ev_log(format, arg...) \
-{ \
- { \
- char procname[33]; \
- prctl(PR_GET_NAME, procname); \
- int pid = getpid(); \
- printf(format, procname, pid, ##arg); \
- } \
-}
-
-#define EV_DEBUG_INFO(format, arg...) \
-{ \
- if (getenv("EV_DEBUG") != NULL) { \
- ev_log("[EV: info](%s:%d) " format, ##arg); \
- } \
-}
-
-#define EV_DEBUG_WARNING(format, arg...) \
-{ \
- ev_log("[EV: warning](%s:%d) " format, ##arg); \
-}
-
-#define EV_DEBUG_ERR(format, arg...) \
-{ \
- ev_log("[EV: ERR](%s:%d) " format, ##arg); \
-}
-
-/** @brief Structures for managing ID and FD in use by processes
- */
-typedef struct {
- EV_ID id; /**< flag/queue ID */
- INT32 fd; /**< file descriptor */
-}
-EV_Info;
-
-/*----------------------------------------*/
-/** @brief EV management information table per thread */
-/*----------------------------------------*/
-typedef struct {
- /** Thread calling the EV library */
- pthread_t thread;
- /** Registration information by ID */
- EV_Info ev_info[EV_MAX_IDS_IN_THREAD];
- /** Number of registered IDs */
- UINT8 num;
-}
-EV_thread_info_type;
-
-/** Thread information acquisition mode */
-#define EV_THREAD_INFO_CREATE 0
-#define EV_THREAD_INFO_PEEK 1
-#define EV_SEARCH_ALL_THREAD -1
-
-/* Related process exclusion control in the process */
-const char *g_ev_lock_func;
-int g_ev_lock_line;
-int g_ev_lock_pid;
-pthread_mutex_t g_ev_process_global_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-#define EV_PROCESS_MUTEX_LOCK \
- pthread_mutex_lock(&g_ev_process_global_mutex); \
- g_ev_lock_func = __FUNCTION__; \
- g_ev_lock_line = __LINE__; \
- g_ev_lock_pid = getpid();
-#define EV_PROCESS_MUTEX_UNLOCK \
- pthread_mutex_unlock(&g_ev_process_global_mutex);
-
-/** @mainpage
- * This document describes the following specifications:
- * - Event Library (EV) API specifications
- * - Event ID specifications
- *
- * In principle, the API specifications of the event library for kernel space (EVK) is
- * the same as the event library for user space (EV) except for the function name prefixed ""EVK"".
- * If there are differences between the EV and EVK, it is described as "difference in kernel version".
- */
-/** @defgroup Event Library (EV) API specifications */
-/** @defgroup EV_ID_spec Event ID specifications */
-/** @defgroup EV_m_id Function specifying module ID instead of event ID */
-/** @defgroup EV_in internal specifications of the event library for user space (EV) */
-/** @defgroup EVK_in Internal specifications of the event library for kernel space (EVK) */
-/** @addtogroup EV_in
- * @{ */
-
-/** EV thread information management table */
-EV_thread_info_type *EV_thread_info[EV_MAX_THREADS_IN_PROCESS];
-
-/*----------------------------------------------------------------------
- * Return the registered position of the thread ID
- * Allocate and initialize space for unregistered threads
- * @brief Sending message (specified module-ID)
- * @param index [OUT] Thread index
- * @param flag [IN] Operating Mode
- ----------------------------------------------------------------------*/
-EV_ERR
-EV_thread_id_check(int *index, int flag) {
- int i, empty;
-
- /* Current threadID */
- pthread_t EV_self_thread_id;
-
- /* Get thread ID */
- EV_self_thread_id = pthread_self();
-
- /* Control-process lock */
- EV_PROCESS_MUTEX_LOCK;
-
- /* Whether or not the thread has already been registered. */
- for(i = 0, empty = -1; i < EV_MAX_THREADS_IN_PROCESS; i++) {
- /* Free space */
- if(EV_thread_info[i] == NULL) {
- /* Set free space index */
- empty = (empty == -1) ? i: empty;
- continue;
- }
-
- if(EV_thread_info[i]->thread == EV_self_thread_id) {
- *index = i;
-
- /* Cancel in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
- return EV_OK;
- }
- }
-
- if(flag == EV_THREAD_INFO_PEEK) {
- EV_DEBUG_ERR("thread id is not found.\n");
-
- /* Cancel in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
- return EV_ERR_Invalid_Thread;
- }
-
- /* If there are no unregistered threads and there is no space */
- if(empty == -1) {
- EV_DEBUG_ERR("thread id is full.\n");
-
- /* Cancel in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
- return EV_ERR_Thread_Over;
- }
-
- /* Set to free space */
- EV_thread_info[empty] = malloc(sizeof(*(EV_thread_info[empty])));
- EV_thread_info_type *th = EV_thread_info[empty];
-
- /* malloc failed */
- if(th == NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for glibc function malloc
- /* Cancel in-process mutual exclusion */
- // LCOV_EXCL_START 5: fail safe for glibc function malloc
-
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-
- EV_PROCESS_MUTEX_UNLOCK;
- return EV_ERR_Fatal;
- }
- // LCOV_EXCL_STOP
-
- /* Initialization */
- memset(th, '\0', sizeof(*th));
- th->thread = EV_self_thread_id;
- /* th->num = 0; */
-
- /* Cancel in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
-
- /* Set registration position */
- *index = empty;
-
- return EV_OK;
-}
-
-// free thread information when create event/message fail and no release thread buffer.
-// If no release thread buffer will cause be error:
-// Creation event's Thread count num less than MAX count(16) when one thread create event/message
-// fail and no longer to create event/message.
-static void
-free_thread_buffer(int th_index) {
- /* in-process mutual exclusion */
- EV_PROCESS_MUTEX_LOCK;
- if ((th_index >= 0)
- &&(th_index < EV_MAX_THREADS_IN_PROCESS)
- && (NULL != EV_thread_info[th_index])
- && (0 == EV_thread_info[th_index]->num)) {
- free(EV_thread_info[th_index]);
- EV_thread_info[th_index] = NULL;
- EV_DEBUG_ERR("Free thread buffer by th_index:%d.\n", th_index);
- }
- /* in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
-}
-
-/* EV_info update function */
-static void
-add_ev_info(int th_index, EV_ID id, int fd) {
- /* Check storage position of ID information */
- /* beginning of in-process mutual exclusion */
- EV_PROCESS_MUTEX_LOCK;
-
- int id_index = EV_thread_info[th_index]->num;
- EV_assert(id_index < EV_MAX_IDS_IN_THREAD);
-
- /* Set information */
- EV_thread_info[th_index]->ev_info[id_index].id = id;
- EV_thread_info[th_index]->ev_info[id_index].fd = fd;
- EV_thread_info[th_index]->num++;
-
- /* end of in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
-}
-
-/* EV_info search function */
-static int
-find_ev_info(int th_index, EV_ID id) {
- int i, j, start, end;
- int ret = -1;
-
- /* Search all threads */
- if(th_index == EV_SEARCH_ALL_THREAD) {
- start = 0;
- end = EV_MAX_THREADS_IN_PROCESS;
- } else {
- start = th_index;
- end = th_index + 1;
- }
-
- /* in-process mutual exclusion */
- EV_PROCESS_MUTEX_LOCK;
-
- for(j = start; j < end; j++) {
- if(EV_thread_info[j] == NULL) {
- continue;
- }
-
- for(i = 0; i < EV_thread_info[j]->num; i++) {
- if(id == EV_thread_info[j]->ev_info[i].id) {
- ret = EV_thread_info[j]->ev_info[i].fd;
- break;
- }
- }
- }
-
- /* Cancel in-process mutual exclusion */
- EV_PROCESS_MUTEX_UNLOCK;
-
- return ret;
-}
-
-static int
-delete_ev_info(EV_ID id) {
- int fd = -1;
- int i, j;
- int found_th_index = -1;
- int found_idx = -1;
- EV_thread_info_type *th = NULL;
-
- /* beginning of in-thread mutual exclusion */
- EV_PROCESS_MUTEX_LOCK;
-
- for(i = 0 ; i < EV_MAX_THREADS_IN_PROCESS && found_idx == -1 ; i++) {
- th = EV_thread_info[i];
- if (th == NULL) {
- continue;
- }
- for(j = 0 ; j < th->num ; j++) {
- if (th->ev_info[j].id == id) {
- fd = th->ev_info[j].fd;
- found_th_index = i;
- found_idx = j;
- break;
- }
- }
- }
-
- if(found_idx == -1) {
- EV_PROCESS_MUTEX_UNLOCK;
- return -1;
- }
-
- if (found_idx < th->num - 1) { /* pgr0060 */
- memmove(&(th->ev_info[found_idx]), &(th->ev_info[found_idx+1]),
- sizeof(th->ev_info[0]) * (size_t)(th->num - 1 - found_idx));
- }
- th->num--;
-
- /* If everything is deleted */
- if(th->num == 0 && EV_thread_info[found_th_index] != NULL) {
- free(EV_thread_info[found_th_index]);
- EV_thread_info[found_th_index] = NULL;
- }
- EV_PROCESS_MUTEX_UNLOCK;
- return fd;
-}
-
-/** @} */
-/** @addtogroup EV
- * @{ */
-
-static EV_ERR
-EV_create_flag_in(int th_index, EV_ID flag_id, int is64bit) {
- int fd;
-
- /* Open device driver */
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- int ret = ioctl(fd, is64bit ? EVK_IOC_CREATE_FLAG64:
- EVK_IOC_CREATE_FLAG, flag_id);
- int myerrno = errno;
-
- if(ret < 0) {
- if(myerrno == EEXIST) { // LCOV_EXCL_BR_LINE 5: fail safe for glibc function ioctl
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-
- close(fd); // LCOV_EXCL_LINE 5: fail safe for glibc function ioctl
- EV_DEBUG_ERR("flag_id %x already exists.\n", flag_id); // LCOV_EXCL_LINE 5: fail safe for glibc function ioctl
- return EV_ERR_Exist; // LCOV_EXCL_LINE 5: fail safe for glibc function ioctl
- } else {
- close(fd);
- errno = myerrno;
- return EV_ERR_Fatal;
- }
- }
-
- ret = ioctl(fd, EVK_IOC_SET_POLL, flag_id);
- if(ret < 0) {
- close(fd);
- EV_DEBUG_ERR("set_poll: internal error\n");
- return EV_ERR_Fatal;
- }
-
- add_ev_info(th_index, flag_id, fd);
- return EV_OK;
-}
-
-/** @brief Create flag
- *
- * Create a flag with the given ID.
- * Return error if a flag with the same flag ID already exists
- *
- * @param flag_id [IN]flag ID
- * @see EV_ID
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Specified an invalid flag ID
- * @retval EV_ERR_Exist: A flag with the same ID already exists
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_create_flag (EV_ID flag_id) {
- EV_ERR err;
- int th_index;
-
- /* Flag ID check */
- if(!EV_ID_IS_FLAG(flag_id) || EV_ID_IS_AUTO_ID(flag_id)) {
- EV_DEBUG_ERR("create_flag: Invalid flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- /* Thread information check */
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_CREATE);
- if(err != EV_OK) {
- return err;
- }
-
- EV_DEBUG_INFO("EV_create_flag (th_index=%d)\n", th_index);
-
- /* case of already created */
- int fd = find_ev_info(th_index, flag_id);
- if(fd >= 0) {
- EV_DEBUG_ERR("create_flag: You already created flag_id %x.\n", flag_id);
- return EV_ERR_Exist;
- }
-
- err = EV_create_flag_in(th_index, flag_id, 0);
- if (EV_OK != err) {
- free_thread_buffer(th_index);
- }
-
- return err;
-}
-
-/** @brief Create 64-bit flag
- *
- * Create a 64-bit flag with the given ID.
- * Return error if a flag with the same flag ID already exists
- *
- * @param flag_id [IN]64-bit flag ID
- * @see EV_ID
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Specified an invalid 64-bit flag ID
- * @retval EV_ERR_Exist: A 64-bit flag with same ID already exists
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_create_flag64(EV_ID flag_id) {
- EV_ERR err;
- int th_index;
-
- if(!EV_ID_IS_FLAG64(flag_id) || EV_ID_IS_AUTO_ID(flag_id)) {
- EV_DEBUG_ERR("create_flag: Invalid flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- /* Thread information check */
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_CREATE);
- if(err != EV_OK) {
- return err;
- }
-
- int fd = find_ev_info(th_index, flag_id);
- if(fd >= 0) {
- EV_DEBUG_ERR("create_flag: You already created flag_id %x.\n", flag_id);
- return EV_ERR_Exist;
- }
-
- err = EV_create_flag_in(th_index, flag_id, 1);
- if (EV_OK != err) {
- free_thread_buffer(th_index);
- }
-
- return err;
-}
-
-/** @brief Create flag (auto-assign ID)
- *
- * Automatically assign a flag ID and creates a flag.
- * Same as EV_create_flag(), except that ID is automatically assigned.
- *
- * @param flag_id [OUT]Area for storing the assigned flag ID
- *
- * @see EV_create_flag
- */
-EV_ERR
-EV_create_flag_auto_id(EV_ID *flag_id) {
- EV_assert(flag_id != NULL);
-
- EV_ERR err;
- int fd, th_index;
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- int ret = ioctl(fd, EVK_IOC_ALLOC_FLAG_ID, flag_id);
- close(fd);
- EV_assert(ret == 0);
-
- /* Thread information check */
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_CREATE);
- if(err != EV_OK) {
- *flag_id = EV_NO_ID;
- return err;
- }
-
- err = EV_create_flag_in(th_index, *flag_id, 0);
- if (err != EV_OK) {
- free_thread_buffer(th_index);
-
- *flag_id = EV_NO_ID;
- return EV_ERR_Fatal;
- }
- return EV_OK;
-}
-
-/** @brief Create 64-bit flag(auto-assign ID)
- *
- * Automatically assign a 64-bit flag ID and creates a 64-bit flag.
- * Same as EV_create_flag64(), except that ID is automatically assigned.
- *
- * @param flag_id [OUT]Area for storing the assigned 64-bit flag ID
- *
- * @see EV_create_flag64
- */
-EV_ERR
-EV_create_flag64_auto_id(EV_ID *flag_id) {
- EV_assert(flag_id != NULL);
-
- EV_ERR err;
- int fd, th_index;
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- int ret = ioctl(fd, EVK_IOC_ALLOC_FLAG64_ID, flag_id);
- close(fd);
- EV_assert(ret == 0);
-
- /* Thread information check */
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_CREATE);
- if(err != EV_OK) {
- *flag_id = EV_NO_ID;
- return err;
- }
-
- err = EV_create_flag_in(th_index, *flag_id, 1);
- if (err != EV_OK) {
- free_thread_buffer(th_index);
-
- *flag_id = EV_NO_ID;
- return EV_ERR_Fatal;
- }
- return EV_OK;
-}
-
-static EV_ERR
-EV_create_queue_in(int th_index, EV_ID queue_id, UINT8 length,
- UINT16 max_bytes, EV_Message_Queue_Type type) {
- int fd;
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- EVK_Message_Queue_Request req;
- req.queueID = queue_id;
- req.length = length;
- req.max_bytes = max_bytes;
- req.type = type;
-
- int ret = ioctl(fd, EVK_IOC_CREATE_MESSAGE_QUEUE, &req);
- int myerrno = errno;
- if (ret < 0) {
- if (myerrno == EEXIST) { // LCOV_EXCL_BR_LINE 5: fail safe for glibc function ioctl
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-
- close(fd); // LCOV_EXCL_LINE 5: fail safe for glibc function ioctl
- EV_DEBUG_ERR("queue %x already exists.\n", queue_id); // LCOV_EXCL_LINE 5: fail safe for glibc function ioctl
- return EV_ERR_Exist; // LCOV_EXCL_LINE 5: fail safe for glibc function ioctl
- } else {
- close(fd);
- errno = myerrno;
- //EV_perror("create queue");
- return EV_ERR_Fatal;
- }
- }
-
- ret = ioctl(fd, EVK_IOC_SET_POLL, queue_id);
- if (ret < 0) {
- close(fd);
- EV_DEBUG_ERR("set_poll: internal error\n");
- return EV_ERR_Fatal;
- }
-
- add_ev_info(th_index, queue_id, fd);
- return EV_OK;
-}
-
-/** @brief message event queue creation
- *
- * Create a queue of message event with the specified ID.
- * Return error if a queue with the same ID already exists.
- *
- * A memory area corresponding to the specified maximum number of bytes x queue length is allocated dynamically.
- *
- * @param queue_id [IN] Message queue ID
- * @param length [IN] Message queue length
- * @param max_bytes [IN] - Maximum number of bytes per message
- * @param type [IN] Type of action to take when more events are received when the queue is full
- * @see EV_ID
- * @see ev_message_queue_type
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Specified an invalid flag ID
- * @retval EV_ERR_Exist: A flag with the same ID already exists
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_create_queue(EV_ID queue_id, UINT8 length, UINT16 max_bytes,
- EV_Message_Queue_Type type) {
- EV_ERR err;
- int th_index;
-
- if(!EV_ID_IS_QUEUE(queue_id) || EV_ID_IS_AUTO_ID(queue_id)) {
- EV_DEBUG_ERR("create_queue: Invalid queue_id %x was specified.\n",
- queue_id);
- return EV_ERR_Invalid_ID;
- }
-
- /* Thread information check */
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_CREATE);
- if(err != EV_OK) {
- return err;
- }
-
- int fd = find_ev_info(th_index, queue_id);
- if(fd >= 0) {
- EV_DEBUG_ERR("create_queue: You already created queue_id %x.\n",
- queue_id);
- return EV_ERR_Exist;
- }
-
- err = EV_create_queue_in(th_index, queue_id, length, max_bytes, type);
- if (EV_OK != err) {
- free_thread_buffer(th_index);
- }
-
- return err;
-}
-
-/** @brief message event queue creation(auto-assign ID)
- *
- * Automatically assigns a queue ID and creates a queue for message events.
- * Same as EV_create_queue(), except that ID is automatically assigned.
- *
- * @param queue_id [OUT] Area for storing the assigned flag ID
- * @param length [IN] Message queue length
- * @param max_bytes [IN] - Maximum number of bytes per message
- * @param type [IN] Type of action to take when more events are received when the queue is full
- *
- * @see EV_create_queue
- */
-EV_ERR
-EV_create_queue_auto_id(EV_ID *queue_id, UINT8 length, UINT16 max_bytes,
- EV_Message_Queue_Type type) {
- int th_index;
-
- EV_assert(queue_id != NULL);
- EV_ERR err;
- int fd;
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- int ret = ioctl(fd, EVK_IOC_ALLOC_QUEUE_ID, queue_id);
- close(fd);
- EV_assert(ret == 0);
-
- /* Thread information check */
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_CREATE);
- if(err != EV_OK) {
- *queue_id = EV_NO_ID;
- return err;
- }
-
- err = EV_create_queue_in(th_index, *queue_id, length, max_bytes,
- type);
- if (err != EV_OK) {
- free_thread_buffer(th_index);
-
- *queue_id = EV_NO_ID;
- return EV_ERR_Fatal;
- }
- return EV_OK;
-}
-
-/** @brief Deleting flag event
- *
- * Delete the flag with the specified ID.
- * Only flags created by this process can be deleted.
- *
- * - differences in kernel versions
- * EVK_destroy_flag can be used to delete any existing message event queue.
- *
- * @note The program wakes up that waiting for this queue (poll or wait)
- * due to deletion.
- *
- * @param flag_id [IN] ID of flag
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_destroy_flag(EV_ID flag_id) {
- int fd = delete_ev_info(flag_id);
- if (fd < 0) {
- EV_DEBUG_ERR("You haven't created flag/queue_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- int ret = ioctl(fd, EVK_IOC_DESTROY_QUEUE, flag_id);
- int myerrno = errno;
- close(fd);
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_ERR("destroy: no such ID %x\n", flag_id);
- return EV_ERR_Invalid_ID;
- } else {
- errno = myerrno;
- EV_perror("destroy");
- return EV_ERR_Fatal;
- }
- }
- return EV_OK;
-}
-
-/** @brief Delete message event queue
- *
- * Delete the message event queue with the specified ID.
- * Only message event queues created by this process can be deleted.
- *
- * - differences in kernel versions
- * EVK_destroy_queue can be used to delete any existing message event queue.
- *
- * @note The program wakes up that waiting for this queue (poll or wait)
- * due to deletion.
- *
- * @param flag_id [IN] Message event queue ID
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The message queue with the specified ID does not exist,
- * or there is no message event queue created by this process.
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_destroy_queue(EV_ID queue_id) {
- return EV_destroy_flag(queue_id);
-}
-
-static EV_ERR
-EV_get_flag_in(EV_ID flag_id, EV_Flag *flag, int peek_only, int wait) {
- EV_assert(flag != NULL);
- flag->flagID = EV_NO_ID;
- flag->bits = 0;
-
- if (!EV_ID_IS_FLAG(flag_id)) {
- EV_DEBUG_ERR("get_flag: %x is not a flag_id.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- int fd = find_ev_info(EV_SEARCH_ALL_THREAD, flag_id);
- if(fd < 0) {
- EV_DEBUG_ERR("You have not created flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- EV_Event ev;
- ev.type = EV_EVENT_Flag;
- ev.u.flag.flagID = flag_id;
- ev.u.flag.bits = 0;
- int ret = ioctl(
- fd,
- (peek_only ? EVK_IOC_PEEK_EVENT : (wait ? EVK_IOC_WAIT_EVENT : EVK_IOC_GET_EVENT)),
- &ev);
-
- int myerrno = errno;
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_ERR("get_flag: No such flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
- else if (myerrno == EINTR) {
- EV_DEBUG_ERR("get_flag: Interrupted\n");
- return EV_ERR_Interrupted;
- } else {
- errno = myerrno;
- EV_perror("get flag");
- return EV_ERR_Fatal;
- }
- }
-
- if (ev.type == EV_EVENT_Flag) {
- flag->flagID = ev.u.flag.flagID;
- flag->bits = ev.u.flag.bits;
- }
- return EV_OK;
-}
-
-static EV_ERR
-EV_get_flag64_in(EV_ID flag_id, EV_Flag64 *flag, int peek_only, int wait) {
- EV_assert(flag != NULL);
- flag->flagID = EV_NO_ID;
- flag->bits = 0;
-
- if (!EV_ID_IS_FLAG64(flag_id)) {
- EV_DEBUG_ERR("get_flag: %x is not a flag_id.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- int fd = find_ev_info(EV_SEARCH_ALL_THREAD, flag_id);
- if (fd < 0) {
- EV_DEBUG_ERR("You have not created flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- EV_Event ev;
- ev.type = EV_EVENT_Flag64;
- ev.u.flag64.flagID = flag_id;
- ev.u.flag64.bits = 0;
- int ret = ioctl(
- fd,
- (peek_only ? EVK_IOC_PEEK_EVENT : (wait ? EVK_IOC_WAIT_EVENT : EVK_IOC_GET_EVENT)),
- &ev);
-
- int myerrno = errno;
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_ERR("get_flag: No such flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
- else if (myerrno == EINTR) {
- EV_DEBUG_ERR("get_flag: Interrupted\n");
- return EV_ERR_Interrupted;
- } else {
- errno = myerrno;
- EV_perror("get flag");
- return EV_ERR_Fatal;
- }
- }
-
- if (ev.type == EV_EVENT_Flag64) {
- flag->flagID = ev.u.flag64.flagID;
- flag->bits = ev.u.flag64.bits;
- }
- return EV_OK;
-}
-
-/** @brief Get flag event(non-block)
- *
- * Get the flag event with the specified ID, and clears the flag.
- * Even if there is no event, it returns immediately.
- * If there are no events, EV_NO_ID is stored in flag->flagID.
- * A flag->bits of 0 can also be used to determine no events.
- * Only flags created by this process can be gotten.
- *
- * @param flag_id [IN] Message event queue ID
- * @param flag [OUT] Flag Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_get_flag(EV_ID flag_id, EV_Flag *flag) {
- return EV_get_flag_in(flag_id, flag, 0, 0);
-}
-
-/** @brief Get 64bit flag event(non-block)
- *
- * Get the 64-bit flag event with the specified ID, and clears the 64-bit flag.
- * Even if there is no event, it returns immediately.
- * If there are no events, EV_NO_ID is stored in flag->flagID.
- * A flag->bits of 0 can also be used to determine no events.
- * Only flags created by this process can be gotten.
- * Be sure to specify the flag ID created by specifying 64-bits.
- *
- * @param flag_id [IN] Message event queue ID
- * @param flag [OUT] 64-bit flag struct
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_get_flag64(EV_ID flag_id, EV_Flag64 *flag) {
- return EV_get_flag64_in(flag_id, flag, 0, 0);
-}
-
-/** @brief Get flag event(block)
- *
- * Get the flag event with the specified ID, and clear the flag.
- * If there is no event, block until an event is received.
- * However, if the interrupt is interrupted by a signal interrupt, EV_ERR_Interrupted is returned.
- * If the flag is deleted while waiting, the wait is suspended
- * and EV_ERR_Invalid_ID is returned.
- * When interrupted, EV_NO_ID is stored in flag->flagID.
- * A flag->bits of 0 can also be judged to have been interrupted.
- *
- * @param flag_id [IN] Message event queue ID
- * @param flag [OUT] Flag Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval EV_ERR_Interrupted: Interrupted by a signal interrupt
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_wait_flag(EV_ID flag_id, EV_Flag *flag) {
- return EV_get_flag_in(flag_id, flag, 0, 1);
-}
-
-/** @brief Get 64bit flag event(block)
- *
- * Get the 64-bit flag event with the specified ID, and clear the 64-bit flag.
- * If there is no event, block until an event is received.
- * However, if the interrupt is interrupted by a signal interrupt, EV_ERR_Interrupted is returned.
- * If the flag is deleted while waiting, the wait is suspended
- * and EV_ERR_Invalid_ID is returned.
- * When interrupted, EV_NO_ID is stored in flag->flagID.
- * A flag->bits of 0 can also be judged to have been interrupted.
- * Be sure to specify the flag ID created by specifying 64 bits.
- *
- * @param flag_id [IN] Message event queue ID
- * @param flag [OUT] 64-bit flag structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval EV_ERR_Interrupted: Interrupted by a signal interrupt
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_wait_flag64(EV_ID flag_id, EV_Flag64 *flag) {
- return EV_get_flag64_in(flag_id, flag, 0, 1);
-}
-
-/** @brief Get flag event(non-destructive)
- *
- * Get the flag event with the specified ID non-destructively.
- * Even if there is no event, it returns immediately.
- * If there are no events, EV_NO_ID is stored in flag->flagID.
- * A flag->bits of 0 can also be used to determine no events.
- *
- * @param flag_id [IN] Message event queue ID
- * @param flag [OUT] Flag Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_peek_flag(EV_ID flag_id, EV_Flag *flag) {
- return EV_get_flag_in(flag_id, flag, 1, 0);
-}
-
-/** @brief Get 64bit flag event(non-destructive)
- *
- * Gets the 64-bit flag event with the specified ID non-destructively.
- * Even if there is no event, it returns immediately.
- * If there are no events, EV_NO_ID is stored in flag->flagID.
- * A flag->bits of 0 can also be used to determine no events.
- *
- * @param flag_id [IN] Message event queue ID
- * @param flag [OUT] 64-bit flag structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist,
- * Or it is not a flag created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_peek_flag64(EV_ID flag_id, EV_Flag64 *flag) {
- return EV_get_flag64_in(flag_id, flag, 1, 0);
-}
-
-static EV_ERR
-EV_get_message_in(EV_ID queue_id, EV_Message *message, UINT32 senderInfo,
- UINT32 length, const void *compare_bytes,
- int peek_only, int wait) {
- EV_assert(message != NULL);
- message->queueID = EV_NO_ID;
- message->senderInfo = 0;
- message->length = 0;
-
- if (!EV_ID_IS_QUEUE(queue_id)) {
- EV_DEBUG_ERR("get_message: Invalid queue_id %x\n", queue_id);
- return EV_ERR_Invalid_ID;
- }
-
- int fd = find_ev_info(EV_SEARCH_ALL_THREAD, queue_id);
- if(fd < 0) {
- EV_DEBUG_ERR("You have not created queue_id %x.\n", queue_id);
- return EV_ERR_Invalid_ID;
- }
-
- EV_Event ev;
- ev.type = EV_EVENT_Message;
- ev.u.message.queueID = queue_id;
- ev.u.message.senderInfo = senderInfo;
- if(length > 0 && compare_bytes != NULL) {
- ev.u.message.length = length;
- memcpy(ev.u.message.message, compare_bytes, length);
- } else {
- ev.u.message.length = 0;
- }
-
- int ret = ioctl(
- fd,
- (peek_only ? EVK_IOC_PEEK_EVENT : (wait ? EVK_IOC_WAIT_EVENT : EVK_IOC_GET_EVENT)),
- &ev);
-
- int myerrno = errno;
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_ERR("No such queue_id %x\n", queue_id);
- return EV_ERR_Invalid_ID;
- }
- else if (myerrno == EINTR) {
- EV_DEBUG_INFO("Interrupted.\n");
- return EV_ERR_Interrupted;
- } else {
- errno = myerrno;
- EV_perror("get message");
- return EV_ERR_Fatal;
- }
- }
-
- if(ev.type == EV_EVENT_Message) {
- message->queueID = ev.u.message.queueID;
- message->senderInfo = ev.u.message.senderInfo;
- message->length = ev.u.message.length;
- memcpy(message->message, ev.u.message.message,
- ev.u.message.length);
- }
-
- return EV_OK;
-}
-
-/** @brief Get message events(non-block)
- *
- * Get one message event from the queue with the specified ID.
- * Even if there is no event, it returns immediately.
- * If there are no events, EV_NO_ID is stored in message-> queue_id.
- * The acquired message is deleted from the queue.
- *
- * @param queue_id [IN] Message event queue ID
- * @param message [OUT] Message Event Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Queue with specified ID does not exist
- * Or not a message event queue created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_get_message(EV_ID queue_id, EV_Message *message) {
- return EV_get_message_in(queue_id, message, 0, 0, NULL, 0, 0);
-}
-
-/** @brief Get message event(block)
- *
- * Get one message event from the queue with the specified ID.
- * If there is no event, block until an event is received.
- * However, if the interrupt is interrupted by a signal interrupt, EV_ERR_Interrupted is returned.
- * If the queue is deleted while waiting, the waiting is suspended,
- * EV_ERR_Invalid_ID is returned.
- * When interrupted, EV_NO_ID is stored in message-> queue_id.
- *
- * @param queue_id [IN] Message event queue ID
- * @param message [OUT] Message Event Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Queue with specified ID does not exist
- * Or not a message event queue created by invoking process
- * @retval EV_ERR_Interrupted: Interrupted by a signal interrupt
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_wait_message(EV_ID queue_id, EV_Message *message) {
- return EV_get_message_in(queue_id, message, 0, 0, NULL, 0, 1);
-}
-
-/** @brief Get message event(non-destructive)
- *
- * Get one message event queue of the specified ID non-destructively.
- * Even if there is no event, it returns immediately.
- * If there are no events, EV_NO_ID is stored in message-> queue_id.
- * Same as EV_get_message(), except that the retrieved message remains in the queue.
- *
- * @param queue_id [IN] Message event queue ID
- * @param message [OUT] Message Event Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Queue with specified ID does not exist
- * Or not a message event queue created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_peek_message(EV_ID queue_id, EV_Message *message) {
- return EV_get_message_in(queue_id, message, 0, 0, NULL, 1, 0);
-}
-
-static EV_ERR
-EV_get_next_event_in(EV_Event *ev, int peek_only) {
- int i, th_index;
- EV_ERR err;
- EVK_Next_Event_Query query;
-
- EV_assert(ev != NULL);
- ev->type = EV_EVENT_None;
-
- bzero(&query, sizeof(query));
-
- err = EV_thread_id_check(&th_index, EV_THREAD_INFO_PEEK);
- if(err != EV_OK) {
- return err;
- }
-
- EV_PROCESS_MUTEX_LOCK;
- query.num = EV_thread_info[th_index]->num;
- for(i = 0 ; i < query.num ; i++) {
- query.ids[i] = EV_thread_info[th_index]->ev_info[i].id;
- }
- EV_PROCESS_MUTEX_UNLOCK;
-
- if (query.num == 0) {
- return EV_OK;
- }
-
- int fd;
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- int ret = ioctl(
- fd,
- (peek_only ? EVK_IOC_PEEK_NEXT_EVENT: EVK_IOC_GET_NEXT_EVENT),
- &query);
-
- int myerrno = errno;
- close(fd);
-
- if (ret < 0) {
- errno = myerrno;
- EV_perror("get_next_event");
- return EV_ERR_Fatal;
- }
- memcpy(ev, &(query.ev), sizeof(*ev));
- return EV_OK;
-}
-
-/** @brief Get the first event that arrived(non-block)
- *
- * Get the first arrival of a flag created by invoking process or an event
- * that occurred in the message queue.
- * If there are no events, EV_EVENT_None is stored in the ev->type and returned immediately.
- *
- * @param ev [OUT] Event Structure
- * Whether the acquired event type is flag or message is determined
- * by ev->type is EV_EVENT_Flag or EV_EVENT_Message.
- *
- * @retval EV_OK: Normal completion
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_get_next_event(EV_Event *ev) {
- return EV_get_next_event_in(ev, 0);
-}
-
-/** @brief Get the first event that arrived(non-destructive)
- *
- * Get the first arrival of a flag created by invoking process or an event
- * that occurred in the message queue non-destructively.
- * The next call to EV_get_next_event() or EV_peek_next_event(),
- * return the same event as long as no other program gets it.
- * If there are no events, EV_EVENT_None is stored in the ev->type and returned immediately.
- *
- * @param ev [OUT] Event Structure
- * Whether the acquired event flag or message is a message is determined
- * by whether ev->type is EV_EVENT_Flag or EV_EVENT_Message.
- *
- * @retval EV_OK: Normal completion
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_peek_next_event(EV_Event *ev) {
- return EV_get_next_event_in(ev, 1);
-}
-
-/** @brief Get message event(search by source info)
- *
- * If there is an event whose source information matches
- * in the message event queue of the specified ID,it is gotten and deleted from the queue.
- * If there are no such messages,
- * EV_NO_ID is stored in message->queue_id, and the system call returns immediately.
- *
- * @param queue_id [IN] Message event queue ID
- * @param senderInfo [IN] Source Info
- * @param message [OUT] Message Event Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Queue with specified ID does not exist
- * Or not a message event queue created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_find_message_by_sender(EV_ID queue_id, UINT32 senderInfo,
- EV_Message *message) {
- EV_assert(message != NULL);
- EV_assert(senderInfo != 0);
- return EV_get_message_in(queue_id, message, senderInfo, 0, NULL, 0, 0);
-}
-
-/** @brief Get message event(search by content)
- *
- * If there is an event with byte sequence matching the specified bytes from the beginning
- * in the message event queue of the specified ID,it is gotten and deleted from the queue.
- * If there are no such messages,
- * EV_NO_ID is stored in message->queue_id, and the system call returns immediately.
- *
- * @param queue_id [IN] Message event queue ID
- * @param bytes [IN] Bytes to compare
- * @param compare_bytes [IN] Byte sequence to compare content against
- * @param message [OUT] Message Event Structure
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Queue with specified ID does not exist
- * Or not a message event queue created by invoking process
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_find_message_by_content(EV_ID queue_id,
- UINT16 bytes, const void *compare_bytes,
- EV_Message *message) {
- EV_assert(message != NULL);
- EV_assert(bytes <= EV_MAX_MESSAGE_LENGTH);
- EV_assert(compare_bytes != NULL);
-
- return EV_get_message_in(queue_id, message, 0, bytes,
- compare_bytes, 0, 0);
-}
-
-/** @brief Set flag event
- *
- * Set the flag with the specified ID.
- *
- * @param queue_id [IN] Flag ID
- * @param bits [IN] Flag bit-pattern
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist.
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_set_flag(EV_ID flag_id, UINT32 bits) {
- if (!EV_ID_IS_FLAG(flag_id)) {
- EV_DEBUG_ERR("set_flag: %x is not a valid flag_id.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- int fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- EV_Flag flag;
- flag.flagID = flag_id;
- flag.bits = bits;
-
- int ret = ioctl(fd, EVK_IOC_STORE_FLAG, &flag);
- int myerrno = errno;
- close(fd);
-
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_WARNING("set_flag: No such flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
- errno = myerrno;
- EV_perror("set flag");
- return EV_ERR_Fatal;
- }
- return EV_OK;
-}
-
-/** @brief Set 64bit flag event
- *
- * Set the flag with the specified ID.
- *
- * @param queue_id [IN] Flag ID
- * @param bits [IN] Bit pattern of 64-bit flag
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: The flag with the specified ID does not exist.
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_set_flag64(EV_ID flag_id, UINT64 bits) {
- if (!EV_ID_IS_FLAG64(flag_id)) {
- EV_DEBUG_ERR("set_flag: %x is not a valid flag_id.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- int fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- EV_assert(fd >= 0);
-
- EV_Flag64 flag;
- flag.flagID = flag_id;
- flag.bits = bits;
-
- int ret = ioctl(fd, EVK_IOC_STORE_FLAG64, &flag);
- int myerrno = errno;
- close(fd);
-
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_ERR("set_flag: No such flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- errno = myerrno;
- EV_perror("set flag");
- return EV_ERR_Fatal;
- }
-
- return EV_OK;
-}
-
-/** @brief Send Messaging Event
- *
- * Send a message event to the specified queue ID.
- *
- * @param queue_id [IN] Queue ID
- * @param bytes [IN] Bytes to send
- * @param buf [IN] Pointer to the byte sequence to send
- * @param senderInfo [IN] Source info
- * Specify this option to identify applications, etc.
- * When not used, specify 0.
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: Message event queue with specified ID does not exist
- * @retval EV_ERR_Busy: Queue overflow
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_send_message(EV_ID queue_id, UINT16 bytes, const void *buf, UINT32 senderInfo) {
- EV_assert(buf != NULL);
- EV_assert(bytes <= EV_MAX_MESSAGE_LENGTH);
- if (!EV_ID_IS_QUEUE(queue_id)) {
- EV_DEBUG_ERR("send_message: %x is not a valid queue_id.\n", queue_id);
- return EV_ERR_Invalid_ID;
- }
-
-
- /*
- * Open fd at the first time of send_message in process,
- * and continue to use the fd with it open after that.
- * Reason:
- * - Prevent frequent use of open/close system calls.
- * - If the process is nonresident, the fd is close after the process is terminated.
- * - Even for resident processes, there is no problem because processes
- * that use event library normally continue to use event library
- * from the beginning to the end.
- */
- static int fd = -1;
- EV_PROCESS_MUTEX_LOCK;
- if (fd < 0) {
- fd = open(EVK_DEV_NAME, O_RDWR|O_CLOEXEC);
- if (fd < 0) { // LCOV_EXCL_BR_LINE 5: fail safe for glibc function open
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-
- EV_PROCESS_MUTEX_UNLOCK; // LCOV_EXCL_LINE 5: fail safe for glibc function open
- return EV_ERR_Fatal; // LCOV_EXCL_LINE 5: fail safe for glibc function open
- }
- fcntl(fd, F_SETFD, FD_CLOEXEC|(fcntl(fd, F_GETFD, 0)));
- }
-
- EV_Message msg;
- msg.queueID = queue_id;
- msg.senderInfo = senderInfo;
- msg.length = bytes;
- memcpy(msg.message, buf, bytes);
-
- int ret = ioctl(fd, EVK_IOC_STORE_MESSAGE, &msg);
- int myerrno = errno;
- EV_PROCESS_MUTEX_UNLOCK;
-
- if (ret < 0) {
- if (myerrno == ENOENT) {
- EV_DEBUG_WARNING("send_message: No such queue_id %x.\n", queue_id);
- return EV_ERR_Invalid_ID;
- } else if (myerrno == EBUSY) {
- EV_DEBUG_WARNING("send_message: queue_id %x returned BUSY.\n", queue_id);
- return EV_ERR_Busy;
- }
-
- errno = myerrno;
- EV_perror("send message");
- return EV_ERR_Fatal;
- }
-
- return EV_OK;
-}
-
-/** @brief Get fd for poll flag event
- *
- * Get file descriptor (FD) that used to wait for a flag
- * with the specified ID in a poll/select.
- * Only flags created by invoked process can be specified.
- *
- * This FD can only be used to specify a poll/select.
- * Subsequent operations are not guaranteed if any other operations are performed.
- * When use poll, only POLLIN can be specified in events.
- * When use select, you can only check if it is readable.
- *
- * If the same flag_id is called more than once,
- * The same FD is returned each time (unless there is a destroy/create during that time).
- *
- * - differences in kernel versions
- * - This API is not provided in the EVK.
- *
- * @note If the flag is deleted during poll/select using the FD gotten by the API,
- * the poll/select is exited.
- * POLLERR is set as event for poll.
- *
- * @param flag_id [IN] Flag ID
- * @param fd [OUT] Pointer to the area to store the file descriptor
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: An invalid flag ID was specified.
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_get_flag_fd(EV_ID flag_id, int *fd) {
- EV_assert(fd != NULL);
- *fd = -1;
- if ((!EV_ID_IS_FLAG(flag_id))&& (!EV_ID_IS_FLAG64(flag_id))) {
- EV_DEBUG_ERR("get_flag_fd: %x is not a valid flag_id.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- *fd = find_ev_info(EV_SEARCH_ALL_THREAD, flag_id);
- if (*fd < 0) {
- EV_DEBUG_ERR("You have not created flag_id %x.\n", flag_id);
- return EV_ERR_Invalid_ID;
- }
-
- return EV_OK;
-}
-
-/** @brief Get fd for message event queue poll
- *
- * Get file descriptor (FD) that used to wait for a queue
- * with the specified ID in a poll/select.
- * Only message event queues created by invoked process can be specified.
- *
- * This FD can only be used to specify a poll/select.
- * Subsequent operations are not guaranteed if any other operations are performed.
- * When use poll, only POLLIN can be specified in events.
- * When use select, you can only check if it is readable.
- *
- * If the same queue_id is called more than once,
- * The same FD is returned each time (unless there is a destroy/create during that time).
- *
- * - differences in kernel versions
- * - This API is not provided in the EVK.
- *
- * @note If the queue is deleted during poll/select using the FD gotten by the API,
- * the poll/select is exited.
- * POLLERR is set as event for poll.
- *
- * @param queue_id [IN] Message event queue ID
- * @param fd [OUT] Pointer to the area to store the file descriptor
- *
- * @retval EV_OK: Normal completion
- * @retval EV_ERR_Invalid_ID: An invalid flag ID was specified.
- * @retval Otherwise: FATAL error
- */
-EV_ERR
-EV_get_queue_fd(EV_ID queue_id, int *fd) {
- EV_assert(fd != NULL);
- *fd = -1;
- if (!EV_ID_IS_QUEUE(queue_id)) {
- EV_DEBUG_ERR("get_queue_fd: %x is not a valid queue_id.\n",
- queue_id);
- return EV_ERR_Invalid_ID;
- }
-
- *fd = find_ev_info(EV_SEARCH_ALL_THREAD, queue_id);
- if (*fd < 0) {
- EV_DEBUG_ERR("You have not created queue_id %x.\n", queue_id);
- return EV_ERR_Invalid_ID;
- }
- return EV_OK;
-}
-
-/* \~english Functions that specify the module ID (16 bits) instead of the flag ID and queue ID */
-EV_ID EV_moduleID_to_flagID(UINT16 mID)
-{
- return EV_Flag_ID_Base(mID);
-}
-
-EV_ID EV_moduleID_to_flag64ID(UINT16 mID)
-{
- return EV_Flag64_ID_Base(mID);
-}
-
-EV_ID EV_moduleID_to_queueID(UINT16 mID)
-{
- return EV_Queue_ID_Base(mID);
-}
-
-EV_ERR EV_create_flag_by_mID(UINT16 mID)
-{
- return EV_create_flag(EV_moduleID_to_flagID(mID));
-}
-
-EV_ERR EV_create_flag64_by_mID(UINT16 mID)
-{
- return EV_create_flag64(EV_moduleID_to_flag64ID(mID));
-}
-
-EV_ERR EV_create_queue_by_mID(UINT16 mID, UINT8 length,UINT16 max_bytes,
- EV_Message_Queue_Type type)
-{
- return EV_create_queue(EV_moduleID_to_queueID(mID), length, max_bytes, type);
-}
-
-EV_ERR EV_destroy_flag_by_mID(UINT16 mID)
-{
- return EV_destroy_flag(EV_moduleID_to_flagID(mID));
-}
-
-EV_ERR EV_destroy_queue_by_mID(UINT16 mID)
-{
- return EV_destroy_queue(EV_moduleID_to_queueID(mID));
-}
-
-EV_ERR EV_set_flag_by_mID(UINT16 mID, UINT32 bits)
-{
- return EV_set_flag(EV_moduleID_to_flagID(mID), bits);
-}
-
-EV_ERR EV_set_flag64_by_mID(UINT16 mID, UINT64 bits)
-{
- return EV_set_flag64(EV_moduleID_to_flag64ID(mID), bits);
-}
-
-EV_ERR EV_send_message_by_mID(UINT16 mID, UINT16 bytes, const void *message,
- UINT32 senderInfo)
-{
- return EV_send_message(EV_moduleID_to_queueID(mID),
- bytes, message, senderInfo);
-}
-/** @} */
diff --git a/video_in_hal/otherservice/other_service.mk b/video_in_hal/otherservice/other_service.mk
deleted file mode 100755
index 85a2f2c..0000000
--- a/video_in_hal/otherservice/other_service.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-#############################################################
-#
-# Common Makefile for other_service
-# 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 := other_service
-
-#############################################################
-
-#############################################################
-# 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/video_in_hal/otherservice/posix_based_os001_legacy_library/LICENSE b/video_in_hal/otherservice/posix_based_os001_legacy_library/LICENSE
deleted file mode 100755
index f433b1a..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/LICENSE
+++ /dev/null
@@ -1,177 +0,0 @@
-
- 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/video_in_hal/otherservice/posix_based_os001_legacy_library/Makefile.client b/video_in_hal/otherservice/posix_based_os001_legacy_library/Makefile.client
deleted file mode 100755
index 4192704..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/Makefile.client
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# @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 := library
-
-include ../other_service.mk
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/Makefile b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/Makefile
deleted file mode 100755
index 874a431..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# @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.
-#
-
-INST_SHLIBS = libPosixBasedOS001legacy
-
-VPATH = ./src ./include/$(COMPONENT_NAME)/
-INST_HEADERS = strlcat.h strlcpy.h \
-itoa.h \
-PosixBasedOS001TimeApi.h \
-PosixBasedOS001ClockCycleApi.h \
-ultoa.h \
-posix_based_os001_legacy_library.h
-
-libPosixBasedOS001legacy_SRCS += strlcat.c strlcpy.c \
-itoa.c \
-PosixBasedOS001TimeApi.c \
-PosixBasedOS001ClockCycleApi.c \
-ultoa.c
-
-CPPFLAGS = -I./include
-
-LDFLAGS += -Wl,--no-undefined
-LDFLAGS += -Wl,--no-as-needed
-CPPFLAGS += -Werror=implicit-function-declaration
-CPPFLAGS += -Werror=format-security
-
-CPPFLAGS += -Wconversion
-CPPFLAGS += -Wpointer-to-int-cast
-CPPFLAGS += -Wint-to-pointer-cast
-CPPFLAGS += -Wpointer-arith
-CPPFLAGS += -Wformat
-
-
-
-include ../../other_service.mk
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001ClockCycleApi.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001ClockCycleApi.h
deleted file mode 100755
index 2c3fb44..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001ClockCycleApi.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * @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 OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_CLOCK_CYCLE_API_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_CLOCK_CYCLE_API_H_ // NOLINT(build/header_guard)
-
-#include <stdint.h>
-
-/******************************************************************************/
-/* define */
-
-/******************************************************************************/
-/* typedef */
-
-/******************************************************************************/
-/* struct */
-
-
-/******************************************************************************/
-/* function */
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * @file PosixBasedOS001ClockCycleApi.h
- * @brief \~english This file provides ClockCycle API to get number of clock cycles.
- */
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup ClockCycle
-/// \~english @par Brief
-/// Get the number of clock cycles.
-/// \~english @retval Microsecond
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync
-/// \~english @par Detail
-/// None
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-uint64_t ClockCycle(void);
-
-/** @}*/ // end of posix_based_os001_legacy_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_CLOCK_CYCLE_API_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001TimeApi.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001TimeApi.h
deleted file mode 100755
index 616bda4..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/PosixBasedOS001TimeApi.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * @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.
- */
-
-// libraries for replacing PosixBasedOS001 to Linux
-// PosixBasedOS001TimeApi.h
-
-#ifndef OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_TIMEAPI_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_TIMEAPI_H_ // NOLINT(build/header_guard)
-
-#include <sys/types.h>
-
-/*******************************************************************************/
-/* define */
-
-/*******************************************************************************/
-/* typedef */
-
-/*******************************************************************************/
-/* struct */
-
-/*******************************************************************************/
-/* function */
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * @file PosixBasedOS001TimeApi.h
- * @brief \~english This file provides delay API to delay for the specified time.
- */
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup delay
-/// \~english @par Brief
-/// Delay for the specified time.
-/// \~english @param [in] duration
-/// unsigned int - The number of milliseconds for which to suspend the calling thread from execution
-/// \~english @retval EOK
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Detail
-/// If duration is more than 1000 milliseconds, return immediately.
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-unsigned int delay(unsigned int duration); // NOLINT(readability/nolint)
-
-/** @}*/ // end of posix_based_os001_legacy_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_TIMEAPI_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/itoa.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/itoa.h
deleted file mode 100755
index 4f26634..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/itoa.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * @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 OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_ITOA_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_ITOA_H_ // NOLINT(build/header_guard)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * @file itoa.h
- * @brief \~english This file provides itoa API to convert integer value to null terminated string
- */
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup itoa
-/// \~english @par Brief
-/// Integer value to null terminated string.
-/// \~english @param [in] value
-/// int - value Number to convert
-/// \~english @param [out] buff
-/// char - buff Result string
-/// \~english @param [in] radix
-/// int - radix Radix of value
-/// \~english @retval String pointer
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync
-/// \~english @par Detail
-/// None
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-char* itoa(int value, char buff[], int radix); // NOLINT(readability/nolint)
-
-/** @}*/ // end of posix_based_os001_legacy_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_ITOA_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/posix_based_os001_legacy_library.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/posix_based_os001_legacy_library.h
deleted file mode 100755
index 188cb01..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/posix_based_os001_legacy_library.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * @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
- * @brief \~english include all posix_based_os001_legacy_library head files
- */
-#ifndef OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_H_ // NOLINT(build/header_guard)
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-
-#include <other_service/PosixBasedOS001ClockCycleApi.h>
-#include <other_service/PosixBasedOS001TimeApi.h>
-#include <other_service/itoa.h>
-#include <other_service/strlcat.h>
-#include <other_service/strlcpy.h>
-#include <other_service/ultoa.h>
-
-
-/** @}*/ // posix_based_os001_legacy_library
-/** @}*/ // other_service
-/** @}*/ // BaseSystem
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcat.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcat.h
deleted file mode 100755
index d42c136..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcat.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * @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 OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_STRLCAT_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_STRLCAT_H_ // NOLINT(build/header_guard)
-
-#include <strings.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * @file strlcat.h
- * @brief \~english This file provides strlcat API to concatenate strings
- */
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup strlcat
-/// \~english @par Brief
-/// Concatenate strings
-/// \~english @param [in/out] dst
-/// char * - Destination string
-/// \~english @param [in] src
-/// const char * - Concatenated string
-/// \~english @param [in] siz
-/// size_t - Size of dst
-/// \~english @retval String length after concatenation
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync
-/// \~english @par Detail
-/// Appends src to string dst of size siz (unlike strncat, siz is the full size of dst, not space left).
-/// At most siz-1 characters will be copied. Always NUL terminates (unless siz <= strlen(dst)).
-/// Returns strlen(src) + MIN(siz, strlen(initial dst)). If retval >= siz, truncation occurred.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-size_t strlcat(char *dst, const char *src, size_t siz); // NOLINT(readability/nolint)
-
-/** @}*/ // end of posix_based_os001_legacy_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_STRLCAT_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcpy.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcpy.h
deleted file mode 100755
index 14c51fe..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/strlcpy.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * @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 OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_STRLCPY_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_STRLCPY_H_ // NOLINT(build/header_guard)
-
-#include <strings.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * @file strlcpy.h
- * @brief \~english This file provides API to copy string
- */
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup strlcpy
-/// \~english @par Brief
-/// Copy string
-/// \~english @param [in/out] dst
-/// char * - Destination string
-/// \~english @param [in] src
-/// const char * - Copy string
-/// \~english @param [in] siz
-/// size_t - Size of dst
-/// \~english @retval Length of copied character string
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync
-/// \~english @par Detail
-/// Copy src to string dst of size siz. At most siz-1 characters will be copied.
-/// Always NUL terminates (unless siz == 0).
-/// Returns strlen(src); if retval >= siz, truncation occurred.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-size_t strlcpy(char *dst, const char *src, size_t siz); // NOLINT(readability/nolint)
-
-/** @}*/ // end of posix_based_os001_legacy_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_STRLCPY_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/ultoa.h b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/ultoa.h
deleted file mode 100755
index 2291f1a..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/include/other_service/ultoa.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * @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 OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_ULTOA_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_ULTOA_H_ // NOLINT(build/header_guard)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * @file ultoa.h
- * @brief \~english This file provides ultoa API to convert unsigned long type to NULL terminated character string
- */
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup posix_based_os001_legacy_library
- * @ingroup other_service
- * @{
- */
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup ultoa
-/// \~english @par Brief
-/// Convert unsigned long type to NULL terminated character string.
-/// \~english @param [in] value
-/// int - value Number to convert
-/// \~english @param [out] buff
-/// char - buff Result string
-/// \~english @param [in] radix
-/// int - radix Radix of value
-/// \~english @retval String pointer
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Detail
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-char *ultoa(unsigned long value, char *buf, int radix); // NOLINT (readability/nolint)
-
-/** @}*/ // end of posix_based_os001_legacy_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_POSIXBASEDOS001LEGACYLIBRARY_POSIXBASEDOS001_ULTOA_H_
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c
deleted file mode 100755
index b4e73c5..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * @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.
- */
-
-#include <other_service/PosixBasedOS001ClockCycleApi.h>
-#include <time.h>
-
-/******************************************************************************/
-/*
-Overview :GetTickCount() like Win32 API
-Arguments :void
-Return :OK:usec NG:0
-Note :
-*/
-static uint64_t GetTickCount(void )
-{
- struct timespec tp;
- /*--------------------------------------------------------------------*/
-
- if(clock_gettime(CLOCK_MONOTONIC, &tp) != 0) // LCOV_EXCL_BR_LINE 5: fail safe for libc clock_gettime
- {
- return 0;
- }
-
- return (uint64_t)(tp.tv_sec * 1000000 + tp.tv_nsec / 1000);
-}
-
-
-/******************************************************************************/
-/*
-Overview :Get the number of clock cycles
-Arguments :void
-Return :OK:usec NG:0
-Note :
-*/
-uint64_t ClockCycle( void )
-{
- return GetTickCount();
-}
-
-/******************************************************************************/
-/* End of souce code.*/
-/******************************************************************************/
-
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c
deleted file mode 100755
index 2a1dd72..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * @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.
- */
-
-// libraries for replacing PosixBasedOS001 to Linux
-// PosixBasedOS001TimeApi.c
-
-#include <other_service/PosixBasedOS001TimeApi.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <unistd.h> // for using usleep()
-#include <time.h> // for using clock()
-
-// delay()
-// NOTE: Control a device
-// duration
-// The number of milliseconds for which to suspend the calling thread from execution.
-//
-// _CWORD72_ doesnot use return code of delay, and sets 1,100,and 1000.
-unsigned int delay( unsigned int duration ){
-
- int ret;
- useconds_t duration_usec = duration * 1000;
-
- ret = EOK;
-
- if( duration_usec > 1000000 ){
- printf("delay():over flow!\n");
- }else{
-
- // using usec order
- ret = usleep(duration_usec);
-
- // error of usleep() = 0(E_OK), -1(ERROR)
- // delay() cannot return error code. [data type unmatch]
- if(ret < 0){ // LCOV_EXCL_BR_LINE 5: fail safe for libc function usleep
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- printf("delay():error!\n"); // LCOV_EXCL_LINE 5: fail safe for libc function usleep
- }
- }
-
- return EOK;
-}
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/itoa.c b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/itoa.c
deleted file mode 100755
index 49a24bf..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/itoa.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * @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.
- */
-
-char* itoa( int value, char buff[], int radix ) {
- static const char table[] = "0123456789abcdefghijklmnopqrstuvwxyz";
- char *head = buff;
- char *tail = buff;
- char temp;
-
- // Converting minus sign to character
- if ( value < 0 ){
- *tail++ = '-';
- value = -value;
- }
- // Converting integer to character
- if ( value == 0 ){
- *tail++ = '0';
- }
- else for ( head = tail ; value != 0 ; value /= radix ){
- *tail++ = table[ value % radix ];
- }
- *tail = '\0';
-
- // swapping characters
- for ( tail-- ; head < tail ; head++, tail-- ){
- temp = *head;
- *head = *tail;
- *tail = temp;
- }
-
- return buff;
-}
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c
deleted file mode 100755
index 8d11eab..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * @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.
- */
-
-#include <sys/types.h>
-#include <string.h>
-
-size_t
-strlcat(char *dst, const char *src, size_t size)
-{
- size_t dstsize, srcsize, copysize;
-
- dstsize = strnlen(dst, size);
- srcsize = strlen(src);
- if (dstsize == size) {
- return dstsize + srcsize;
- }
-
- copysize = size - dstsize - 1;
- if (srcsize < copysize) {
- copysize = srcsize;
- }
-
- memcpy(dst + dstsize, src, copysize);
- dst[dstsize + copysize] = '\0';
-
- return dstsize + srcsize;
-}
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c
deleted file mode 100755
index f440c0e..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * @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.
- */
-
-#include <sys/types.h>
-#include <string.h>
-
-/*
- * Copy src to string dst of size siz. At most siz-1 characters
- * will be copied. Always NUL terminates (unless siz == 0).
- * Returns strlen(src); if retval >= siz, truncation occurred.
- */
-size_t
-strlcpy(char *dst, const char *src, size_t siz)
-{
- char *d = dst;
- const char *s = src;
- size_t n = siz;
-
- /* Copy as many bytes as will fit */
- if (n != 0) {
- while (--n != 0) {
- if ((*d++ = *s++) == '\0')
- break;
- }
- }
-
- /* Not enough room in dst, add NUL and traverse rest of src */
- if (n == 0) {
- if (siz != 0)
- *d = '\0'; /* NUL-terminate dst */
- while (*s++)
- ;
- }
-
- return (size_t)(s - src - 1); /* count does not include NUL */
-}
diff --git a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c b/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c
deleted file mode 100755
index 1984246..0000000
--- a/video_in_hal/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * @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.
- */
-
-#include <string.h>
-
-char *ultoa(unsigned long value, char *buf, int radix)
-{
- const static char c[] = "0123456789abcdef";
- char b[65];
- char *p = b + sizeof(b);
-
- *--p ='\0';
- do {
- *--p = c[value % (unsigned int)radix];
- value /= (unsigned int)radix;
- } while (value);
- strcpy(buf, p);
-
- return buf;
-}
diff --git a/video_in_hal/otherservice/rpc_library/LICENSE b/video_in_hal/otherservice/rpc_library/LICENSE
deleted file mode 100755
index f433b1a..0000000
--- a/video_in_hal/otherservice/rpc_library/LICENSE
+++ /dev/null
@@ -1,177 +0,0 @@
-
- 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/video_in_hal/otherservice/rpc_library/Makefile.client b/video_in_hal/otherservice/rpc_library/Makefile.client
deleted file mode 100755
index 36a4dee..0000000
--- a/video_in_hal/otherservice/rpc_library/Makefile.client
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# @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 := tool_for_arm library
-
-include ../other_service.mk
diff --git a/video_in_hal/otherservice/rpc_library/library/Makefile b/video_in_hal/otherservice/rpc_library/library/Makefile
deleted file mode 100755
index 75c734a..0000000
--- a/video_in_hal/otherservice/rpc_library/library/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# @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.
-#
-
-INST_SHLIBS := librpc
-librpc_SRCS := rpc_lib.c \
- rpc_marshall.c \
- rpc_event.c \
- rpc_udp.c \
- rpc_thread.c
-
-CPPFLAGS = -I../tool \
- -I./include \
- -D_GNU_SOURCE \
-
-CPPFLAGS += -Wl,--no-undefined
-CPPFLAGS += -Werror=implicit-function-declaration
-CPPFLAGS += -Werror=format-security
-
-CPPFLAGS += -Wconversion
-CPPFLAGS += -Wpointer-to-int-cast
-CPPFLAGS += -Wint-to-pointer-cast
-CPPFLAGS += -Wpointer-arith
-CPPFLAGS += -Wformat
-LDFLAGS += -Wl,--no-as-needed
-LDLIBS := -lrt -lcommon
-
-
-VPATH = ./src ./include/$(COMPONENT_NAME)
-INST_HEADERS := rpc.h \
- rpc_id.h \
- rpc_library.h \
-
-include ../../other_service.mk
diff --git a/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc.h b/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc.h
deleted file mode 100755
index f669331..0000000
--- a/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc.h
+++ /dev/null
@@ -1,765 +0,0 @@
-/*
- * @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 rpc.h
- * @brief \~english RPC library --API define header file
- */
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup rpc_library
- * @ingroup other_service
- * @{
- */
-#ifndef OTHERSERVICE_RPC_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_RPC_H_ // NOLINT(build/header_guard)
-
-#include <stdio.h>
-#include <unistd.h>
-
-#include <other_service/rpc_id.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
-* @brief \~english RPC_ID max number
-*/
-#define RPC_MAX_THREADS_IN_PROCESS 64
-
-/** @brief \~english fd max number in one process.
- * 0 = main/sub thread communication pipe fd.
- * 1 = inotify() process listen fd.
- * 2~129 = even num : API request data socket.
- * odd num : secure stream socket.
- * */
-#define RPC_MAX_FD_IN_PROCESS 130
-
-
-#define RPC_MAX_API_ARG_NUM 8
-///< \~english API call parameter max num
-
-
-#define RPC_MAX_API_ARG_SIZE 1024
-///< \~english API call one parameter max byte
-
-#define RPC_MAX_API_ARG_TOTAL_SIZE 1500
-///< \~english API call all parameter max byte
-
-#define RPC_MAX_APICALL_QUEUE 16
-///< \~english API call max queue num
-
-#define RPC_NO_PORT 0
-///< \~english invalid port num
-
-/** @brief \~english RPC library function return value
- */
-enum rpc_result { // NOLINT (readability/nolint)
- RPC_OK = 0, ///< \~english ok
- RPC_ERR_No_Response = 0x8fff0000, ///< \~english has no response
- RPC_ERR_Timeout, ///< \~english timeout
- RPC_ERR_Busy, ///< \~english busy
- RPC_ERR_API_Error, ///< \~english API error
- RPC_ERR_API_Fatal, ///< \~english API fatal
- RPC_ERR_Fatal, ///< \~english fatal
- RPC_ERR_Configuration, ///< \~english configuration
- RPC_ERR_Server_DeadLock, ///< \~english server deadlock
- RPC_ERR_Server_Finish, ///< \~english server finish
- RPC_ERR_Reject_connect, ///< \~english reject connect
-};
-/** @brief \~english RPC library function return type
- * @see rpc_result
- * */
-typedef INT32 RPC_Result;
-
-/** @brief \~english RPC ID
- *
- */
-typedef UINT32 RPC_ID;
-
-#define RPC_NO_ID RPC_NO_PORT
-///< \~english The ID when destination is invalid
-
-#define RPC_SELF_ID RPC_NO_PORT
-///< \~english The ID when destination is self
-
-/** @brief \~english The ID when destination is any
- * */
-#define RPC_ANY_ID RPC_NO_PORT
-
-
-typedef RPC_Result (*RPC_dispatch_func_t)(UINT16 api_num,
- const char *args_string,
- unsigned int args_size,
- char **ret_string,
- unsigned int *ret_bytes);
-
-#ifdef RPC_DISPATCH_FUNC
-#error "Please include <rpc.h> before \"*_srvr.h\"."
-#else /* !RPC_DISPATCH_FUNC */
-#define RPC_DISPATCH_FUNC NULL
-#endif /* !RPC_DISPATCH_FUNC */
-
-/* RPC Library Start Function Macro */
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_START_SERVER
-/// \~english @par Brief
-/// server start(certification of the client by UID)
-/// \~english @param [in] ID
-/// RPC_ID - program's RPC_ID
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Case of an input parameter error
-/// - Case of fail to information generation
-/// - When RPC_start has already been issued
-/// - Case of space reservation fails
-/// - Case of socket generation fails
-/// - Case of socket allocation fails
-/// - Case of creating a pipe fails
-/// - RPC_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - Used when the server program of RPC-API performs RPC library use start processing
-/// - ID specifies a symbol in the form of XXX_RPC_ID defined by rpc_id.h
-/// - Only one server program is permitted per thread
-/// - When the server program calls the API as a client of another server,
-/// it only needs to call RPC_START_SERVER, there is no need to call RPC_START_CLIENT
-/// \~english @see RPC_start, RPC_end
-////////////////////////////////////////////////////////////////////////////////////
-#define RPC_START_SERVER(ID) RPC_start((ID), RPC_DISPATCH_FUNC, NULL, NO_SECURE_CHECK)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_START_SECURE_SERVER
-/// \~english @par Brief
-/// server start(certification of the client by UID)
-/// \~english @param [in] ID
-/// RPC_ID - program's RPC_ID
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Case of an input parameter error
-/// - Case of fail to information generation
-/// - When RPC_start has already been issued
-/// - Case of space reservation fails
-/// - Case of socket generation fails
-/// - Case of socket allocation fails
-/// - Case of creating a pipe fails
-/// - RPC_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - Used when the server program of RPC-API performs RPC library use start processing
-/// - ID specifies a symbol in the form of XXX_RPC_ID defined by rpc_id.h
-/// - Only one server program is permitted per thread
-/// - When the server program calls the API as a client of another server,
-/// it only needs to call RPC_START_SERVER, there is no need to call RPC_START_CLIENT
-/// \~english @see RPC_start, RPC_end
-////////////////////////////////////////////////////////////////////////////////////
-#define RPC_START_SECURE_SERVER(ID) RPC_start((ID), RPC_DISPATCH_FUNC, NULL, NEED_SECURE_CHECK)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_START_CLIENT
-/// \~english @par Brief
-/// client start
-/// \~english @param [out] pID
-/// RPC_ID * - auto allocated program's RPC_ID
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - input parameter error
-/// - Unable to get the rpc lib info for the self-thread.
-/// - Memory allocation fail for id info.
-/// - Socket generation fail.
-/// - Socket allocation fail.
-/// - Unable to get the socket name.
-/// - RPC_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - This macro supports only client function of RPC library.
-/// - Run the start processing by using this macro only when the APIs provided by the other program are called.
-/// \~english @see RPC_start, RPC_end
-////////////////////////////////////////////////////////////////////////////////////
-#define RPC_START_CLIENT(pID) RPC_start((UINT16)RPC_NO_ID, NULL, (pID), NO_SECURE_CHECK)
-//!< \~english client start
-
-/* Client authentication by registering the server's UID list */
-#define NEED_SECURE_CHECK 1 ///< \~english has secure check
-#define NO_SECURE_CHECK 0 ///< \~english has no secure check
-
-/* Setting whether to register UID list of server */
-#define REGISTERED 1 ///< \~english registered
-#define NO_REGISTERED 0 ///< \~english not registered
-
-/* API Function Prototypes in the RPC Library */
-RPC_Result RPC_start(RPC_ID id, RPC_dispatch_func_t func, RPC_ID *pID, INT32 secure_check); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_get_fd
-/// \~english @par Brief
-/// Get the file descriptor to judge whether there is the request of RPC-API call or not.
-/// \~english @param [in] id
-/// RPC_ID - server program's RPC_ID
-/// \~english @param [out] fd
-/// int * - area for fd
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @par Prerequisite
-/// RPC_START_SERVER or RPC_START_SECURE_SERVER is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Argument(id) is RPC_NO_ID.
-/// - Argument(fd) is NULL.
-/// - Unable to get the rpc lib info for the self-thread.
-/// - RPC sub thread doesn't exist.
-/// - RPC_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - This function returns the fd(file descriptor) to judge whether there is the request to server.
-/// - Return value(fd) is used only for poll function or select function parameter.
-/// - Usage
-/// - To get fd from this function.
-/// - Wait for the data to use poll function or select function.
-/// - After that, call RPC_process_API_request function.
-/// - As a result, the API call request from client is done(that is, run the server API).
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_get_fd(RPC_ID id, int *fd); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_process_API_request
-/// \~english @par Brief
-/// Run the processing of RPC-API call
-/// \~english @param [in] id
-/// RPC_ID - server program's RPC_ID
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @par Prerequisite
-/// RPC_START_SERVER or RPC_START_SECURE_SERVER is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Argument(id) is RPC_NO_ID.
-/// - Unable to get the rpc lib info for the self-thread.
-/// - RPC sub thread doesn't exist.
-/// - fail to send UDP packet.
-/// - API processing from the client returns the error.
-/// - RPC_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - Process all the queued API running requests from the client.
-/// - API function of server program is called in this function.
-/// - If there are no requests to run API, this function doesn't wait and return immediately.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_process_API_request(RPC_ID id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_end
-/// \~english @par Brief
-/// End processing of RPC library.
-/// \~english @param [in] id
-/// RPC_ID - program's RPC_ID
-/// \~english @retval None
-/// \~english @par Prerequisite
-/// RPC_START_SERVER or RPC_START_SECURE_SERVER or RPC_START_CLIENT is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - End processing(socket close and memory release etc) is done.
-/// - When there are no more program that uses RPC_ID, RPC sub thread started by RPC_start will be ended.
-/// - Need to call this function before the program is ended.
-/// - Need to call this function from which the thread called RPC_start.
-/// - Nothing is done when incorrect or no more used RPC_ID is designated.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-void RPC_end(RPC_ID id); // NOLINT (readability/nolint)
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_end_all
-/// \~english @par Brief
-/// End processing of RPC library(forcing to clean up).
-/// \~english @par Prerequisite
-/// - None
-/// \~english @par Change of internal state
-/// - None
-/// \~english @par Conditions of processing failure
-/// - None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Delete the socket files created in process for communication. /n
-/// The program which use RPC library must call RPC_end() to free resource, /n
-/// This API is used for insurance processing when socket file's link lost. /n
-/// 1,Before process ends, call this API. /n
-/// When process is ending, auto running socket's close and memory free is not work. /n
-/// 2,After called this API, all the RPC's process(both server and client) become to useless. /n
-/// Even if after called this API, call RPC_START to repair it also can't make sure to active. /n
-/// RPC library which use Unix autobind is nothing to do. /n
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////
-void RPC_end_all(void); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_set_API_timeout
-/// \~english @par Brief
-/// Set timeout time for server side API processing time
-/// \~english @param [in] sec
-/// INT32 - timeout time
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @retval RPC_ERR_Configuration Argument is out of range
-/// \~english @par Prerequisite
-/// RPC_START_SERVER or RPC_START_SECURE_SERVER is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Unable to get the rpc lib info for the self-thread.
-/// - Server id info doesn't exist.
-/// - Info for API call reception processing doesn't exist.
-/// - RPC_ERR_Fatal
-/// - The value of the argument(sec) is out of range.
-/// - RPC_ERR_Configuration
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// None
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_set_API_timeout(INT32 sec); // NOLINT (readability/nolint)
-
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_is_server_ready
-/// \~english @par Brief
-/// Return RPC server's status
-/// \~english @param [in] id
-/// RPC_ID - server program's RPC_ID
-///
-/// \~english @retval RPC_OK : Success
-/// \~english @retval RPC_ERR_No_Response : No response
-///
-/// \~english @par Prerequisite
-/// - None
-/// \~english @par Change of internal state
-/// - None
-/// \~english @par Conditions of processing failure
-/// - None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// return the server's work status.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_is_server_ready(RPC_ID id); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_regist_credential
-/// \~english @par Brief
-/// Register UID and GID list
-/// \~english @param [in] uid_num
-/// int - UID number to regist(number of elements of UID list)
-/// \~english @param [in] uid_list
-/// uid_t* - head pointer of UID list
-/// \~english @param [in] gid_num
-/// int - GID number to regist(number of elements of GID list)
-/// \~english @param [in] uid_list
-/// gid_t* - head pointer of GID list
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @retval RPC_ERR_Configuration Argument is out of range
-/// \~english @par Prerequisite
-/// RPC_START_SECURE_SERVER is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Unable to get the rpc lib info for the self-thread.
-/// - Server id info doesn't exist.
-/// - Info for API call reception processing doesn't exist.
-/// - Arguments(client_uid and client_gid) are NULL.
-/// - Client authentication check is not necessary.
-/// - Authentication info is already registered.
-/// - Memory allocation fail for UID and GID lists.
-/// - RPC_ERR_Fatal
-/// - Values of Arguments(uid_num and gid_num) are out of range.
-/// - RPC_ERR_Configuration
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - Register the UID and GID lists acceptable by the RPC server.
-/// - If RPC_START_SECURE_SERVER is not called, this function returns the error.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_regist_credential(int uid_num, uid_t *uid_list, int gid_num, gid_t *gid_list); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_get_client_credential
-/// \~english @par Brief
-/// Get UID and GID of client that requested to run APIs processing
-/// \~english @param [out] client_uid
-/// uid_t* - UID of client that requested to run APIs processing
-/// \~english @param [out] client_gid
-/// gid_t* - GID of client that requested to run APIs processing
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal Error
-/// \~english @par Prerequisite
-/// RPC_START_SECURE_SERVER is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Server id info doesn't exist.
-/// - Info for API call reception processing doesn't exist.
-/// - Arguments(client_uid and client_gid) are NULL.
-/// - Client authentication check is not necessary.
-/// - There are no running clients.
-/// - Info for the running client is not applicable.
-/// - RPC_ERR_Fatal
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - This function is to get UID and GID of client that requested to run APIs processing.
-/// - If RPC_START_SECURE_SERVER is not called, this function returns the error.
-/// - If the running client doesn't exist, this function returns the error.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_get_client_credential(uid_t *client_uid, gid_t *client_gid); // NOLINT (readability/nolint)
-
-/*
- * The following are only used in stub files
- */
-#define RPC_RETCODE_LEN 9
-
-#define RPC_MARSHALL_FLAG_BITS_CODE 12
-#define RPC_MARSHALL_FLAG_BITS_IS_VARARRAY 1
-#define RPC_MARSHALL_FLAG_BITS_IS_POINTER 1
-#define RPC_MARSHALL_FLAG_BITS_IN_OUT 2
-
-/** @brief \~english APIcall property stored struct
- *
- */
-typedef union {
- UINT32 all; ///< \~english all property
- struct {
- unsigned int code: RPC_MARSHALL_FLAG_BITS_CODE; ///< \~english value type
- /** @brief \~english vararray or not
- *
- */
- unsigned int is_vararray: RPC_MARSHALL_FLAG_BITS_IS_VARARRAY;
- /** @brief \~english pointer or not
- *
- */
- unsigned int is_pointer: RPC_MARSHALL_FLAG_BITS_IS_POINTER;
- /** @brief \~english in/out parameter property
- *
- */
- unsigned int in_out: RPC_MARSHALL_FLAG_BITS_IN_OUT;
- /** @brief \~english string or user define type byte num.other is 0
- *
- */
- UINT16 bytes;
- } bits; ///< \~english variable properties
-} RPC_marshall_flag;
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_API_call
-/// \~english @par brief
-/// API call execution function (client)
-/// \~english @param [in] id
-/// RPC_ID - RPC_ID of server program
-/// \~english @param [in] api_num
-/// UINT16 - Request API number
-/// \~english @param [in] args_string
-/// const char* - Argument string
-/// \~english @param [in] args_size
-/// unsigned int - Argument string length
-/// \~english @param [out] ret_string
-/// char** - Process result string
-/// \~english @param [out] ret_size
-/// unsigned int* - Process result string length
-/// \~english @retval RPC_OK Normal End
-/// \~english @retval RPC_ERR_Fatal Fatal error
-/// \~english @retval RPC_ERR_No_Response No response
-/// \~english @retval RPC_ERR_Busy API call queue overflow
-/// \~english @retval RPC_ERR_Server_DeadLock RPC server deadlock
-/// \~english @retval RPC_ERR_Reject_connect The RPC server does not allow communication
-/// \~english @par Prerequisite
-/// The RPC server is running.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Acquisition of rpc library information for self thread fails
-/// - Generation of self-thread rpc library information fails
-/// - The RPC ID information does not exist
-/// - Failed to receive data from the server at initial authentication
-/// - Analysis of received data failed during initial authentication
-/// - Commands not expected to be received during initial authentication
-/// - Server response when initial authentication is API call error
-/// - Failed to receive data from the server at API processing request
-/// - Analysis of received data failed during API processing request
-/// - Commands not expected to be received during API processing request
-/// - Server response when API processing request is API call error
-/// - Error in server response other than deadlock when processing results are received
-/// - Server shut down
-/// - RPC_ERR_Fatal
-/// - UDP packet transmission fails at initial authentication
-/// - A timeout occurred in response from the server during initial authentication
-/// - UDP packet transmission failed at API processing request
-/// - A timeout occurred in response from the server during API processing request
-/// - RPC_ERR_No_Response
-/// - Server response when initial authentication is API call queue overflow
-/// - Server response when API processing request is API call queue overflow
-/// - RPC_ERR_Busy
-/// - When the server response is deadlocked on initial authentication
-/// - When the server response is deadlocked on API processing request
-/// - Server response is deadlocked when processing result is received
-/// - RPC_ERR_Server_DeadLock
-/// - Server response is not authenticated at initial authentication
-/// - RPC_ERR_Reject_connect
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - Request execution of RPC-API from the client side.
-/// - However, since this API is called from the automatically generated code, it is not used directly by the user.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-RPC_Result RPC_API_call(RPC_ID id, UINT16 api_num, // NOLINT (readability/nolint)
- const char *args_string, unsigned int args_size,
- char **ret_string, unsigned int *ret_size);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_demarshall_arguments
-/// \~english @par Brief
-/// Confirm whether the input character string conforms to the prescribed format.
-/// \~english @param [in] from
-/// const char * - Input string
-/// \~english @param [in] size
-/// unsigned int - Byte length of the input string
-/// \~english @param [in] need_alloc
-/// int - Flag whether memory allocation is necessary or not.
-/// \~english @param [in] num_args
-/// int - Number of the variable length arguments
-/// \~english @param [in] ...
-/// void * - Variable length arguments
-/// \~english @retval 0 Normal End
-/// \~english @retval -1 Abnormal End
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - Byte length of the input string is 0 bytes or less or larger than 1024 bytes.
-/// - The input character string doesn't conform to the prescribed format.
-/// - -1
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// This function is used in the stub file only and user must not call this function directly.
-/// \~english @see RPC_marshall_arguments
-////////////////////////////////////////////////////////////////////////////////////
-int RPC_demarshall_arguments(const char *from, unsigned int size, // NOLINT (readability/nolint)
- int need_alloc, int num_args, ...);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_marshall_arguments
-/// \~english @par Brief
-/// Collect variable arguments, convert them to a format that matches the receiver's specification,
-/// and stuff them into the message buffer.
-/// \~english @param [in] size
-/// unsigned int * - data size after conversion
-/// \~english @param [in] dont_marshall_out_args
-/// int - input/output kind(when the argument is a pointer)
-/// \~english @param [in] num_args
-/// int - value of variable argument
-/// \~english @param [in] ...
-/// void * - variable argument
-/// \~english @retval char * Message buffer after conversion
-/// \~english @retval NULL Abnormal
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// - When marshall work securing work area fails
-/// - When the specified type size is abnormal
-/// - When securing the area of the message buffer after conversion fails
-/// - NULL
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// This function is used in the stub file for client only and user must not call this function directly.
-/// \~english @see RPC_demarshalol_arguments
-////////////////////////////////////////////////////////////////////////////////////
-char *RPC_marshall_arguments(unsigned int *size, int dont_marshall_out_args, // NOLINT (readability/nolint)
- int num_args, ...);
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_marshall_free
-/// \~english @par Brief
-/// Variadic function for memory release
-/// \~english @param [in] num
-/// int - number of memory to be released
-/// \~english @param [in] ...
-/// void * - allocated memory
-/// \~english @retval None
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - This function is used in the stub file only and user must not call this function directly.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-void RPC_marshall_free(int num, ...); // NOLINT (readability/nolint)
-
-/////////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_free_return_string
-/// \~english @par Brief
-/// release memory allocated during running API call.
-/// \~english @param [in] ptr
-/// void * - allocated memory
-/// \~english @retval None
-/// \~english @par Prerequisite
-/// RPC_API_call is already called.
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - This function is used in the stub file for client only and user must not call this function directly.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////////
-void RPC_free_return_string(void *ptr); // NOLINT (readability/nolint)
-
-#ifdef DBG_ENABLE
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup RPC_record_dbg_log
-/// \~english @par Brief
-/// RPC-API call process's log
-/// \~english @param [in] filename
-/// const char - filename's point
-/// \~english @param [in] funcname
-/// const char - function name's point
-/// \~english @param [in] line
-/// int - file's line
-/// \~english @param [in] apiname
-/// const char - called API name's point
-/// \~english @param [out]
-///
-/// \~english @retval 0 : Success
-///
-/// \~english @par Prerequisite
-/// - DBG_ENABLE is defined.
-/// \~english @par Change of internal state
-/// - None
-/// \~english @par Conditions of processing failure
-/// - None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// Receipt and record the client's filename, function name,
-/// line and called API's function name which called this API.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////
-int RPC_record_dbg_log(const char *filename, const char *funcname, int line,
- const char *apiname);
-#endif
-
-#define rpc_malloc malloc
-#define rpc_free free
-
-/*
- * RPC debug message control
- * if set to non-null and some critical information is displayed.
- */
-extern char *RPC_DEBUG; // NOLINT (readability/nolint)
-
-/** @}*/ // end of rpc_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // OTHERSERVICE_RPC_H_
diff --git a/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc_id.h b/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc_id.h
deleted file mode 100755
index e43e03c..0000000
--- a/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc_id.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * @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 rpc_id.h
- * @brief \~english RPC library -- RPC_ID(port no) define
- */
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup rpc_library
- * @ingroup other_service
- * @{
- */
-
-/** @brief \~english define the RPC_ID used by program
- * like #define XXX_RPC_ID ID
- * but RPC_START_CLIENT() is not necessary
- *
- * RPC_ID as the following
- * - UI Application : 50xxx
- * - Application Service : 51xxx
- * + HMI : 511xx
- * + AV : 512xx
- * + Radio : 513xx
- * + Connectivity : 514xx
- * + Navigation/Location: 515xx
- * + Vehicle : 516xx
- * + Communication : 517xx
- * + BasePF : 518xx
- * + System : 519xx
- * + Others : 510xx
- * - Common Service : 53xxx
- * - Extension Service : 55xxx
- * - System/Device Driver : 56xxx
- *
- * - 49152~59999 are Reserved.
- * @note \~english RPC_ID==port num ,
- * when not call from RPClibrary, and not well-known(~1023)/registered(1024~49151)
- * use the fixed port num to IP communicate, use 6xxxx port number.
- * @note \~english when RPC_START_CLIENT,and distribute automatically.
- * use the linux kernel port distribute function
- * 1024~4999 as the port num unused.
- */
-
-#ifndef OTHERSERVICE_RPCID_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_RPCID_H_ // NOLINT(build/header_guard)
-
-
-#define test_RPC_ID 49999
-///< \~english sample(ID is used by RPClibrary test program)
-
-/* UI Aapplication : 50xxx */
-
-/* Application Service : 51xxx */
-#define MODEMANAGER_RPC_ID 51100 /* ModeManager */
-#define ACTIVITYMANAGER_RPC_ID 51101 /* ActivityManager */
-
-/* Common Service : 53xxx */
-#define TIMERENTRYDRV_RPC_ID 53000 /* TimerEntryDrv */
-#define TSKM_RPC_ID 53001 /* TaskManager */
-#define MSGBRK_RPC_ID 53002 /* MessageBroker */
-#define IPMANAGER_RPC_ID 53003 /* IPManager */
-#define IPMANAGER_RPC_ID 53003 /* IPManager */
-#define DEVICEMANAGER_RPC_ID 53004 /* DeviceManager */
-#define CAN_RPC_ID 53005 /* Communication(CAN) */
-#define _CWORD83__RPC_ID 53006 /* Communication(_CWORD83_) */
-#define SENSOR_RPC_ID 53007 /* Vehicle(Sensor) */
-#define GPS_RPC_ID 53008 /* Vehicle(GPS) */
-#define RESMGR_RPC_ID 53009 /* ResourceManager */
-#define GRAPHICS_RPC_ID 53010 /* Graphic */
-
-/* Extension Service : 55xxx */
-
-/* System/Device Driver : 56xxx */
-/** @}*/ // end of rpc_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-#endif // OTHERSERVICE_RPCID_H_
diff --git a/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc_library.h b/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc_library.h
deleted file mode 100755
index 298f741..0000000
--- a/video_in_hal/otherservice/rpc_library/library/include/other_service/rpc_library.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// @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
- * @brief \~english include all rpc_library head files
- */
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup rpc_library
- * @ingroup other_service
- * @{
- */
-#ifndef OTHERSERVICE_RPCLIBRARY_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_RPCLIBRARY_H_ // NOLINT(build/header_guard)
-
-#include <other_service/rpc.h>
-#include <other_service/rpc_id.h>
-
-#endif // OTHERSERVICE_RPCLIBRARY_H_
-/** @}*/
-/** @}*/
-/** @}*/
diff --git a/video_in_hal/otherservice/rpc_library/library/include/rpc_internal.h b/video_in_hal/otherservice/rpc_library/library/include/rpc_internal.h
deleted file mode 100755
index 2b293ca..0000000
--- a/video_in_hal/otherservice/rpc_library/library/include/rpc_internal.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * @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 rpc_internal.h
- * @brief RPC Library Internal Implementation-Type, macro, and function definitions used internally
- *
- */
-/** @addtogroup RPClib_in
- */
-#ifndef OTHERSERVICE_RPCINTERNAL_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_RPCINTERNAL_H_ // NOLINT(build/header_guard)
-
-#include <unistd.h>
-#include <stdlib.h>
-
-#if defined(__linux__)
-/* Using unix autobind Features That Are Only Available in linux */
-#define RPC_USE_UNIX_AUTOBIND
-#endif /* __linux__ */
-
-#define RPC_USE_SYSLOG
-
-typedef RPC_ID *RPC_ID_p;
-
-#include "rpc_udp.h"
-#include "rpc_thread.h"
-
-RPC_Result RpcQueueAPIRequestBefore(RpcIdInfo *id,
- UINT32 size, char **buff);
-RPC_Result RpcQueueAPIRequestAfter(RpcIdInfo *id, RPC_ID client,
- const char *mesg, UINT32 size,
- char *args);
-void RpcFreeAPIArgsString(char *args_string);
-UINT16 RpcGetAPIRequest(RpcIdInfo *id, RPC_ID_p client,
- char **args_string, unsigned int *args_size);
-RPC_Result RpcSetAPIcallReturn(RpcIdInfo *id,
- const char *mesg, UINT32 size);
-void RpcDiscardAPIcallReturn(RpcIdInfo *id);
-
-RPC_Result RpcDeleteSrvrPid(RpcIdInfo *idinfo, RPC_ID srvr_rpc_id, int wd);
-
-#define StrEqual(a, b) (strcmp((a), (b)) == 0)
-#define MemEqual(a, b, c) (memcmp((a), (b), (c)) == 0)
-
-#define RPC_IS_INVALID_ID(a) ((a) == RPC_NO_ID)
-#define RPC_INVALIDATE_ID(a) ((a) = RPC_NO_ID)
-#define RPC_ID_COPY(a, b) ((a) = (b))
-#define RPC_ID_Equal(a, b) ((a) == (b))
-
-/* inotify Events read Sizes */
-#define EVENT_SIZE ( sizeof(struct inotify_event) ) /* One inotify event size */
-#define BUF_LEN (4 * EVENT_SIZE) /* Read sizes */
-
-#define LESS_THAN <
-
-#define SET_NONBLOCK(fd) { \
- int flag; \
- flag = fcntl((fd), F_GETFL, 0); \
- fcntl((fd), F_SETFL, O_NONBLOCK|flag); \
- }
-
-#define SET_CLOSE_ON_EXEC(fd) { \
- int flag; \
- flag = fcntl((fd), F_GETFD, 0); \
- fcntl((fd), F_SETFD, FD_CLOEXEC|flag); \
- }
-
-#if defined(RPC_USE_SYSLOG)
-
-#include <syslog.h>
-
-#define RPC_LOG_CRIT(format, arg...) syslog(LOG_CRIT, format "\n", ##arg)
-#define RPC_LOG_ERR(format, arg...) syslog(LOG_ERR, format "\n", ##arg)
-#define RPC_LOG_STATE(format, arg...) syslog(LOG_INFO, format "\n", ##arg)
-#define RPC_LOG_DEBUG(format, arg...) syslog(LOG_DEBUG, format "\n", ##arg)
-
-#else // defined(RPC_USE_SYSLOG)
-
-#define RPC_LOG_CRIT(format, arg...) fprintf(stderr, "[RPC:CRIT](%d): " format "\n", getpid(), ##arg)
-#define RPC_LOG_ERR(format, arg...) fprintf(stderr, "[RPC:ERR](%d): " format "\n", getpid(), ##arg)
-#define RPC_LOG_STATE(format, arg...) fprintf(stderr, "[RPC:STATE](%d): " format "\n", getpid(), ##arg)
-#define RPC_LOG_DEBUG(format, arg...)
-
-#endif // defined(RPC_USE_SYSLOG)
-
-#include <sys/prctl.h>
-
-#define RPC_LOG_ERR_W_NAME(format, arg...) \
-do { \
- char name[16]; \
- prctl(PR_GET_NAME, name); \
- name[15] = '\0'; \
- RPC_LOG_ERR("(%s): " format, name, ##arg); \
-} while (0)
-
-#define RPC_LOG_PERROR(format, arg...) RPC_LOG_ERR("[%s:%d] %s : " format, __FILE__, __LINE__, strerror(errno), ##arg);
-
-#include <assert.h>
-#define rpc_assert assert
-
-#define BUG_ASSERT(cond, x) \
- if (!(cond)) { \
- rpc_assert("BUG ASSERTION! " #x " @ " __FILE__ ==NULL); \
- }
-#define CONFIG_ASSERT(s) rpc_assert((s) == NULL)
-
-#define RUNS_IN_CALLERS_THREAD
-#define RUNS_IN_READING_THREAD
-
-#if !defined(RPC_USE_UNIX_AUTOBIND)
-
-#define RPC_SOCKET_NAME "/tmp/RPC/%05d"
-
-static inline void
-rpc_set_socket_name(char *str, RPC_ID id) {
- sprintf(str, RPC_SOCKET_NAME, id); // NOLINT (readability/nolint)
-}
-
-#endif /* !AUTOBIND */
-
-#endif // OTHERSERVICE_RPCINTERNAL_H_
diff --git a/video_in_hal/otherservice/rpc_library/library/include/rpc_thread.h b/video_in_hal/otherservice/rpc_library/library/include/rpc_thread.h
deleted file mode 100755
index 819e5a6..0000000
--- a/video_in_hal/otherservice/rpc_library/library/include/rpc_thread.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * @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 OTHERSERVICE_RPCTHREAD_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_RPCTHREAD_H_ // NOLINT(build/header_guard)
-
-#include <pthread.h>
-
-/** @addtogroup RPClib_in
- * @{
- */
-
-#define RPC_NO_SOCKET -1
-#define RPC_NO_THREAD 0
-
-#define RPC_MAIN_SUB_COMMAND "%-2d %-16lx"
-#define RPC_MAIN_SUB_COMMAND_SIZE 20
-#define RPC_MAIN_SUB_COMMANDs "%d %lx"
-/** Type of command sent from the main thread to the subthread */
-enum {
- RPC_COMMAND_ADD_SERVER, /* Addition of RPC_ID */
- RPC_COMMAND_REMOVE_SERVER, /* Remove RPC_ID */
- RPC_COMMAND_EXIT, /* Sub-thread termination (when all RPC_ID are exhausted) */
-};
-
-#define APICALL_TIMEOUT_DEFAULT -1
-
-/** Periodic checking timeout (mSec) for detecting deadlocks */
-#define TIMEOUT_FOR_DEADLOCK_CHECK 1000
-
-/** Length of the socket name
- API request datagram socket = '\0' + "5-digit number associated with RPC_ID"
- Authentication stream socket = '\0' + "secure_" + "5-digit number associated with RPC_ID" */
-#define SOCK_NAME_LEN (1+5) /* API request datagram socket */
-#define SECURE_SOCK_NAME_LEN (1+12) /* Authentication stream socket */
-
-#define rpc_mutex_lock pthread_mutex_lock
-#define rpc_mutex_unlock pthread_mutex_unlock
-
-/** Upper limit of UID and GID list registration */
-#define CREDENTIAL_LIST_NUM_MAX 32
-
-/** Authentication result to be sent to the client */
-typedef struct {
- UINT16 certify_res; /**< Client Authentication Result */
- pid_t srvr_pid; /**< Server PID */
-} RpcCertifyResult;
-
-#define CERTIFY_OK 0
-#define CERTIFY_NG 1
-
-/** Received API call request */
-typedef struct {
- RPC_ID client; /**< API ID of the requested program */
- UINT16 api_num; /**< Calling API number */
- char *args_string; /**< API Call Arguments */
- UINT32 args_size; /**< Number of bytes in the argument */
-} rpc_apicall_queue;
-
-/** Source Client Socket Name Management Table */
-typedef struct RpcClientSockNameInfoST RpcClientSockNameInfo;
-struct RpcClientSockNameInfoST {
- char client_sock_name[SOCK_NAME_LEN]; /**< Socket Name List for Source Client */
- pid_t pid; /**< Source pid */
- uid_t uid; /**< Source uid */
- gid_t gid; /**< Source gid */
- int wd; /**< Non-negative inotify monitored descriptors */
- RpcClientSockNameInfo *next; /**< Pointer to the next node */
-};
-
-/** Communication server PID management table */
-typedef struct RpcSrvrPidInfoST RpcSrvrPidInfo;
-struct RpcSrvrPidInfoST {
- RPC_ID srvr_rpc_id; /**< Communication destination server RPC_ID */
- pid_t srvr_pid; /**< Communication destination server pid */
- int wd; /**< Non-negative inotify monitored descriptors */
- RpcSrvrPidInfo *next; /**< Pointer to the next node */
-};
-
-/** Buffer structure for API call acceptance processing.
- * This function is allocated only when the dispatch function is specified by RPC_start().
- */
-typedef struct {
- RPC_dispatch_func_t dispatch_func;/**< Dispatch Functions to APIs (in stub) */
-#define RPC_apicall_dispatch_func(id) \
- ((id)->apicall ? (id)->apicall->dispatch_func : 0)
-
- INT32 pipe_sub_main[2];/**< Notification pipe from the subthread to the main thread */
-#define RPC_pipe_sub_main(th) ((th)->srvr_id->apicall->pipe_sub_main)
-
- UINT16 num_queue;/**< Number of queued API call requests */
-#define RPC_apicall_num_queue(id) \
- ((id)->apicall ? (id)->apicall->num_queue : 0)
-#define RPC_apicall_num_queue_inc(id) ((id)->apicall->num_queue++)
-#define RPC_apicall_num_queue_dec(id) ((id)->apicall->num_queue--)
-
- rpc_apicall_queue queue[RPC_MAX_APICALL_QUEUE];/**< Queuing API Call Requests (FIFO) */
-#define RPC_apicall_queue(id, i) ((id)->apicall->queue[(i)])
-#define RPC_apicall_queue_client(id, i) ((id)->apicall->queue[(i)].client)
-#define RPC_apicall_queue_api_num(id, i) ((id)->apicall->queue[(i)].api_num)
-#define RPC_apicall_queue_args(id, i) ((id)->apicall->queue[(i)].args_string)
-#define RPC_apicall_queue_args_size(id, i) ((id)->apicall->queue[(i)].args_size)
-
- RPC_ID in_process_client;/**< Clients running on ID */
-#define RPC_apicall_in_process_client(id) ((id)->apicall->in_process_client)
-
- INT32 timeout_sec;/**< API processing timeout */
-#define RPC_apicall_api_timeout_sec(id) ((id)->apicall->timeout_sec)
-
- INT32 secure_check;/**< Client Authentication Check Enabled/Disabled */
-#define RPC_secure_check(id) ((id)->apicall->secure_check)
-
- INT32 regist_credential_info;/**< Registration of authentication information */
-#define RPC_regist_credential_info(id) ((id)->apicall->regist_credential_info)
-
- uid_t *uid_list;/**< List of UIDs that can communicate */
-#define RPC_uid_list(id, i) ((id)->apicall->uid_list[(i)])
-
- INT32 uid_num;/**< Number of UID list elements that can communicate */
-#define RPC_uid_num(id) ((id)->apicall->uid_num)
-
- gid_t *gid_list;/**< GID list that can communicate */
-#define RPC_gid_list(id, i) ((id)->apicall->gid_list[(i)])
-
- INT32 gid_num;/**< Number of GID list elements that can communicate */
-#define RPC_gid_num(id) ((id)->apicall->gid_num)
-
- RpcClientSockNameInfo *sock_info_head;/**< Leading node of the source client's socket information management table */
-#define RPC_sock_info_head(id) ((id)->apicall->sock_info_head)
-#define RPC_client_sock_name(id) ((id)->apicall->sock_info_head->client_sock_name)
-#define RPC_client_sock_pid(id) ((id)->apicall->sock_info_head->pid)
-#define RPC_client_sock_next_node(id) ((id)->apicall->sock_info_head->next)
-
- INT32 client_sock_name_num;/**< Number of elements in the source client's socket name list */
-#define RPC_client_sock_name_num(id) ((id)->apicall->client_sock_name_num)
-#define RPC_client_sock_name_num_inc(id) ((id)->apicall->client_sock_name_num++)
-#define RPC_client_sock_name_num_dec(id) ((id)->apicall->client_sock_name_num--)
-} RpcApicallInfo;
-
-struct RpcThreadInfo;
-
-/** Structure that holds information about each RPC_ID */
-typedef struct RpcIdInfo {
- struct RpcThreadInfo *thread_info;
-
- RPC_ID port;/**< Port number (=ID) used by the RPC library */
-#define RPC_port(id) ((id)->port)
-#define RPC_my_id(id) RPC_port(id)
-#define rpc_get_port(id) (id)
-
- INT32 sock;/**< Sockets used by the RPC library */
-#define RPC_my_sock(id) ((id)->sock)
-
- INT32 secure_sock;/**< Authentication socket used by the RPC library */
-#define RPC_my_secure_sock(id) ((id)->secure_sock)
-
- int inotify_fd;/**< Server process monitoring inotify */
-#define RPC_clnt_inotify_fd(id) ((id)->inotify_fd)
-
- INT32 count;/**< Number of clients using the same RPC_ID */
-#define RPC_clnt_count(id) ((id)->count)
-#define RPC_inc_clnt_count(id) ((id)->count++)
-#define RPC_dec_clnt_count(id) ((id)->count--)
-
- RpcApicallInfo *apicall;/**< Information for API call acceptance processing */
-#define RPC_apicall_info(id) ((id)->apicall)
-
- RpcSrvrPidInfo *srvr_pid_head;/**< Communication destination server PID management table top node */
-#define RPC_srvr_pid_head(id) ((id)->srvr_pid_head)
-#define RPC_srvr_rpc_id(id) ((id)->srvr_pid_head->srvr_rpc_id)
-#define RPC_srvr_pid(id) ((id)->srvr_pid_head->srvr_pid)
-#define RPC_srvr_pid_next_node(id) ((id)->srvr_pid_head->next)
-
- UINT32 return_str_len;/**<Number of bytes in the returned string as a result of an API call*/
- /* Including the terminating '\0' */
-#define RPC_apicall_return_str_len(id) ((id)->return_str_len)
-
- UINT8 *return_str;/**<String returned as a result of an API call*/
-#define RPC_apicall_return_str(id) ((id)->return_str)
-} RpcIdInfo;
-
-/** Received response packet */
-typedef struct {
- RPC_ID id;/**< ID of the thread that sent the response */
- UINT16 type;/**< Response type */
- UINT32 seq_num;/**< The packet number to which this was sent (the response to this) */
-} RpcResponse;
-
-/** Structure that stores the state of each thread that called the RPC library */
-typedef struct RpcThreadInfo {
- pthread_mutex_t th_mtx;/**< Mutex for modifying this struct */
-#define RPC_THREAD_MUTEX_LOCK(th) (rpc_mutex_lock(&((th)->th_mtx)))
-#define RPC_THREAD_MUTEX_UNLOCK(th) (rpc_mutex_unlock(&((th)->th_mtx)))
-
- pthread_t thread;/**< Thread calling the RPC library */
-#define RPC_main_thread(th) ((th)->thread)
-
- UINT32 sequence_number;/**< Sequence number given to the transmitted packet */
- /* Send 30 times per second from the beginning of the thread, then wrap around two years.
- * It is not necessary to wrap around 0 because there is no comparison.
- */
- UINT32 magic;/**< Magic number to detect corrupted memories */
-
- RpcIdInfo *srvr_id;/**< Information by RPC_ID (server) */
-#define RPC_srvr_idinfo(th) ((th)->srvr_id)
-
- RpcIdInfo *clnt_id;/**< Info by RPC_ID (client) */
-#define RPC_clnt_idinfo(th) ((th)->clnt_id)
-} RpcThreadInfo;
-
-extern pthread_t g_rpc_thread;
-extern UINT32 g_rpc_thread_alive;
-
-#define PIPE_READ 0
-#define PIPE_WRITE 1
-extern int g_rpc_pipe_main_sub[2];
-
-RpcThreadInfo *RpcMyThreadInfo(void);
-RpcThreadInfo *RpcCreateThreadInfo(void);
-int RpcCreateIdInfo(RpcThreadInfo *th, RPC_ID id,
- RPC_dispatch_func_t dispatch, INT32 secure_check);
-void RpcDestroyIdInfo(RpcThreadInfo *th, RpcIdInfo *idinfo);
-void RpcDestroyThreadInfo(void);
-void RpcUnlinkSocketFiles(void);
-
-/** @} */
-#endif // OTHERSERVICE_RPCTHREAD_H_
diff --git a/video_in_hal/otherservice/rpc_library/library/include/rpc_udp.h b/video_in_hal/otherservice/rpc_library/library/include/rpc_udp.h
deleted file mode 100755
index 8c45ce6..0000000
--- a/video_in_hal/otherservice/rpc_library/library/include/rpc_udp.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * @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 OTHERSERVICE_RPCUDP_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_RPCUDP_H_ // NOLINT(build/header_guard)
-
-/** @addtogroup RPClib_in */
-/** @{ */
-/** Number of bytes of payload that can be stored in a UDP packet */
-#define RPC_UDP_PAYLOAD RPC_MAX_API_ARG_TOTAL_SIZE
-
-/** UDP packet header
- *
- * Packet type, source ID, sequence number, packet size, packet position
- */
-#define RPC_PACKET_HEADER "%-2d %-5x %-8x %-4u %1d "
-/** Number of bytes in the UDP packet header
- */
-#define RPC_PACKET_HEADER_LEN (2+1 + 5+1 + 8+1 + 4+1 + 1+1)
-
-/** Number of bytes to store in the UDP packet */
-#define RPC_UDP_PACKET_SIZE (RPC_UDP_PAYLOAD + RPC_PACKET_HEADER_LEN)
-
-#define RPC_COMMAND_LEN 3
-
-/** Format string for UDP packet header analysis */
-#define RPC_PACKET_HEADER_scanf "%d %x %x %d"
-
-/** Header (API number) to be added to the API call packet */
-#define RPC_APICALL_FORMAT "%-4d "
-/** Number of bytes in the header of an API call packet */
-#define RPC_APICALL_FORMAT_ARGS_START 5
-
-#define RPC_MAX_RESPONSE_MESSAGE_SIZE 5
-
-#define RPC_SEQ_NUM_START 1
-#define RPC_SEQ_NUM_INVALID 0
-
-/** Internal API call number for checking server existence */
-#define RPC_API_NUM_RPC_ALIVE 0
-
-/** Type of packet that the RPC library sends */
-typedef enum {
- RPC_PACKET_APICALL = 0,/**< API call request */
-
- RPC_RESPONSE_APICALL,/**< Responding to API Call Requests */
-#define RPC_RESPONSE_NONE 0x0000
-#define RPC_RESPONSE_API_OK 0x0001
-#define RPC_RESPONSE_API_BUSY 0x0002
-#define RPC_RESPONSE_API_ERR 0x0004
-#define RPC_RESPONSE_API_DEADLOCK 0x0005 /* Server deadlock */
-#define RPC_RESPONSE_API_CERTIFY 0x0006 /* Authentication request */
-
- RPC_PACKET_APIRETURN,/**< Result of the API call */
-
- RPC_PACKET_NONE,
-} RPC_packet_type;
-
-/** Packet Location (Multi-Fragment Packet Support) */
-typedef enum {
- RPC_PACKET_POS_ONEANDONLY = 0,/**< Complete with one packet */
-} rpc_packet_position;
-
-/** Transmitting buffer */
-typedef struct {
- unsigned int bytes;
- const void *buf;
-} rpc_send_buf;
-
-/** Valid bytes in the sockaddr_un struct specified for send */
-#define RPC_SOCKET_NAME_LEN 6 /**< Name: 5 characters + first NULL bytes */
-#define RPC_SOCKET_ADDR_LEN (sizeof(short) + RPC_SOCKET_NAME_LEN) // NOLINT (readability/nolint)
-
-enum {
- RPC_SEND_TO_CLIENT,
- RPC_SEND_TO_SERVER,
- RPC_SEND_TO_SERVER_NO_RETRY,
-};
-
-struct RpcIdInfo;
-
-int RpcSendUdp(struct RpcIdInfo *id, RPC_ID receiver, int direction,
- RPC_packet_type type, const void *mesg, unsigned int bytes);
-int RpcSendUdp2(struct RpcIdInfo *id, RPC_ID receiver, int direction,
- RPC_packet_type type, unsigned int num, rpc_send_buf *sendbuf);
-RPC_Result RpcSendUdpResponse(struct RpcIdInfo *id, RPC_ID receiver,
- int direction,
- RPC_packet_type type,
- UINT32 seq_num, char *mesg, UINT32 bytes);
-
-int RpcReadUdpPacket(const struct RpcIdInfo *id, UINT8 *buf);
-
-RPC_Result RpcParsePacketHeader(const char *str, RPC_packet_type *command,
- RPC_ID_p id, UINT32 *seq_num, UINT32 *size);
-
-RPC_Result RpcClientWaitResponse(struct RpcIdInfo *idinfo,
- UINT32 seq_num,
- UINT32 timeout_msec, UINT16 *response);
-RPC_Result RpcClientWaitResult(struct RpcIdInfo *idinfo, RPC_ID srvr_id);
-
-#if defined(RPC_USE_UNIX_AUTOBIND)
-/* ===pathname of datagram sockets for API requests=== */
-static inline void
-RpcSetServerName(char *str, RPC_ID id) {
- *str = '\0';
- sprintf(str + 1, "S%04x", id); // NOLINT (readability/nolint)
-}
-
-static inline void
-RpcSetClientName(char *str, RPC_ID id) {
- *str = '\0';
- sprintf(str + 1, "%05x", id); // NOLINT (readability/nolint)
-}
-
-static inline void
-RpcGetClientName(const char *str, RPC_ID *id) {
- char buf[6];
- memcpy(buf, str + 1, 5);
- buf[5] = '\0';
- if (buf[1] == 'X') {
- *id = (RPC_ID)(strtoul(buf + 1, NULL, 16));
- } else {
- *id = (RPC_ID)(strtoul(buf, NULL, 16));
- }
-}
-
-/* ===pathname of stream-socket for authenticating=== */
-static inline void
-RpcSetServerSecureName(char *str, RPC_ID id) {
- *str = '\0';
- sprintf(str + 1, "secure_S%04x", id); // NOLINT (readability/nolint)
-}
-
-static inline void
-RpcSetClientSecureName(char *str, RPC_ID id) {
- *str = '\0';
- sprintf(str + 1, "secure_%05x", id); // NOLINT (readability/nolint)
-}
-
-static inline void
-RpcGetClientNameFromSock(const char *str, char *client_sock_name) {
- memcpy(client_sock_name, str + 8, 5);
- client_sock_name[5] = '\0';
-}
-
-#endif /* !AUTOBIND */
-
-/** @} */
-#endif // OTHERSERVICE_RPCUDP_H_
diff --git a/video_in_hal/otherservice/rpc_library/library/librpc.ver b/video_in_hal/otherservice/rpc_library/library/librpc.ver
deleted file mode 100755
index 2fbb9dc..0000000
--- a/video_in_hal/otherservice/rpc_library/library/librpc.ver
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * @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.
- */
-
-######################
-# rpc version script #
-######################
-{
- global:
- ### .text section ###
- RPC_*;
- ### .data section ###
- local:
- *;
-};
-
-
diff --git a/video_in_hal/otherservice/rpc_library/library/src/rpc_event.c b/video_in_hal/otherservice/rpc_library/library/src/rpc_event.c
deleted file mode 100755
index 2e3fd38..0000000
--- a/video_in_hal/otherservice/rpc_library/library/src/rpc_event.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * @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 rpc_event.c
- * @brief RPC Library Internal Implementation--Event Handling
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <native_service/cl_monitor.h>
-
-#include <other_service/rpc.h>
-#include "rpc_internal.h"
-
-/** @ingroup RPClib_in
- */
-RUNS_IN_READING_THREAD
-RPC_Result
-RpcQueueAPIRequestBefore(RpcIdInfo *id, UINT32 size, char **buff) {
- RPC_THREAD_MUTEX_LOCK(id->thread_info);
-
- int n = RPC_apicall_num_queue(id); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_thread.h
-
- if (n >= RPC_MAX_APICALL_QUEUE) {
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info);
- RPC_LOG_STATE("Returned BUSY.");
- return RPC_ERR_Busy;
- } else {
- *buff = rpc_malloc(size);/* malloc */
- if (*buff == NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for libc function malloc
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info); // LCOV_EXCL_START 5: fail safe for libc function malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_STATE("queue API request: No Memory");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- }
- return RPC_OK;
-}
-/** @ingroup RPClib_in
- */
-RUNS_IN_READING_THREAD
-RPC_Result
-RpcQueueAPIRequestAfter(RpcIdInfo *id, RPC_ID client,
- const char *mesg, UINT32 size, char *args) {
- int n = RPC_apicall_num_queue(id); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_thread.h
-
- UINT16 api_num;
- api_num = (UINT16)strtol(mesg, NULL, 10);
- memcpy(args, mesg + RPC_APICALL_FORMAT_ARGS_START, size);
- RPC_ID_COPY(RPC_apicall_queue_client(id, n), client);
- RPC_apicall_queue_api_num(id, n) = api_num;
- RPC_apicall_queue_args(id, n) = args;
- RPC_apicall_queue_args_size(id, n) = size;
- RPC_apicall_num_queue_inc(id);
-
- /* set RUN state */
- CL_MonitorSetEntry(CL_MONITOR_TYPE_RPC,
- RPC_port(id),
- CL_MONITOR_STATE_RUN,
- (uint32_t)(RPC_apicall_api_timeout_sec(id)),
- api_num);
-
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info);
- return RPC_OK;
-}
-
-/** @ingroup RPClib_in
- */
-RUNS_IN_CALLERS_THREAD
-void
-RpcFreeAPIArgsString(char *args_string) {
- if (args_string != NULL) { // LCOV_EXCL_BR_LINE 5: free the memory, malloced in RpcQueueAPIRequestBefore(...)
- rpc_free(args_string);/* free */
- }
-}
-
-/** @ingroup RPClib_in
- */
-RUNS_IN_CALLERS_THREAD
-UINT16
-RpcGetAPIRequest(RpcIdInfo *id, RPC_ID_p client,
- char **args_string, unsigned int *args_size) {
- UINT16 api_num = 0;
-
- RPC_THREAD_MUTEX_LOCK(id->thread_info);
-
- UINT32 n = RPC_apicall_num_queue(id); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_thread.h
- if (n > 0) {
- RPC_ID_COPY(*client, RPC_apicall_queue_client(id, 0));
- api_num = RPC_apicall_queue_api_num(id, 0);
- *args_string = RPC_apicall_queue_args(id, 0);
- /* this string must be freed by the caller using discard_APIcall_return()*/
- *args_size = RPC_apicall_queue_args_size(id, 0);
-
- if (n > 1) {
- memmove(&(RPC_apicall_queue(id, 0)), &(RPC_apicall_queue(id, 1)),
- (n - 1) * sizeof(RPC_apicall_queue(id, 0)));
- }
- RPC_apicall_num_queue_dec(id);
- }
-
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info);
- return api_num;
-}
-
-/** @ingroup RPClib_in
- */
-RUNS_IN_READING_THREAD
-RPC_Result
-RpcSetAPIcallReturn(RpcIdInfo *id, const char *mesg, UINT32 size) {
- if (RPC_apicall_return_str(id) != NULL) { // LCOV_EXCL_BR_LINE 6: double check
- RPC_LOG_STATE("previous APIcall return string was not used"); // LCOV_EXCL_START 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RpcDiscardAPIcallReturn(id);
- } // LCOV_EXCL_STOP
- RPC_THREAD_MUTEX_LOCK(id->thread_info);
-
- RPC_apicall_return_str(id) = rpc_malloc(size);/* malloc */
- if (RPC_apicall_return_str(id) == NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for libc function malloc
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info); // LCOV_EXCL_START 5: fail safe for libc function malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_STATE("set APIcall return: No Memory");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- RPC_apicall_return_str_len(id) = size;
- memcpy(RPC_apicall_return_str(id), mesg, size);
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info);
- return RPC_OK;
-}
-
-/** @ingroup RPClib_in
- */
-RUNS_IN_CALLERS_THREAD
-void
-RpcDiscardAPIcallReturn(RpcIdInfo *id) {
- RPC_THREAD_MUTEX_LOCK(id->thread_info);
- if (RPC_apicall_return_str(id) != NULL) { // LCOV_EXCL_BR_LINE 6: double check
- rpc_free(RPC_apicall_return_str(id));/* free */
- RPC_apicall_return_str_len(id) = 0;
- RPC_apicall_return_str(id) = NULL;
- }
- RPC_THREAD_MUTEX_UNLOCK(id->thread_info);
-}
diff --git a/video_in_hal/otherservice/rpc_library/library/src/rpc_lib.c b/video_in_hal/otherservice/rpc_library/library/src/rpc_lib.c
deleted file mode 100755
index 76f0d49..0000000
--- a/video_in_hal/otherservice/rpc_library/library/src/rpc_lib.c
+++ /dev/null
@@ -1,1264 +0,0 @@
-/*
- * @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 rpc_lib.c
- * @brief RPC Library-API Function Implementation
- *
- */
-/** @mainpage
- * This document describes the following API functions, structures,
- * type declarations, and macros.
- * - RPC library external specification
- * - External specifications for RPC tools
- *
- * For an overview of other RPC libraries and tools and anomaly processing,
- * to reference the Word version of the documentation.
- * (external specifications and programming guides) */
-/** @defgroup RPClib RPC library external specification */
-/** @defgroup RPCtool RPC tool (rpc_apidef) */
-/** @defgroup RPC_ID_assign RPC_ID Assignment */
-/** @defgroup RPClib_in RPC library internal specifications (incomplete) */
-/** @addtogroup RPClib
- * @{
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/select.h>
-#include <sys/poll.h>
-#include <sys/stat.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-#include <sys/inotify.h>
-
-#include <other_service/rpc.h>
-#include "rpc_internal.h"
-
-#include <native_service/cl_process.h> // for CL_INTFY_FILENAME_FORMAT
-#include <native_service/cl_monitor.h>
-
-
-/* Prototype declarations */
-static RPC_Result ProcessAPIcallRequest(RpcIdInfo *idinfo, RPC_ID client,
- UINT16 api_num, char *args_string,
- unsigned int args_size);
-static RPC_Result RpcAllDeleteSrvrPid(RpcIdInfo *idinfo);
-static RPC_Result RpcClientWaitCertification(RpcIdInfo *idinfo, pid_t *srvr_pid);
-static RPC_Result RpcRegistSrvrPid(RpcIdInfo *idinfo, RPC_ID srvr_rpc_id, pid_t srvr_pid, int wd);
-
-#define THREAD_INFO_CHECK(th) \
- if ((th) == NULL) { \
- RPC_LOG_STATE("No thread info"); \
- return RPC_ERR_Fatal; \
- }
-
-#define SUB_THREAD_CHECK() \
- if (g_rpc_thread_alive == 0) { \
- RPC_LOG_STATE("No sub thread -- shutdown"); \
- RpcDestroyThreadInfo(); \
- return RPC_ERR_Fatal; \
- }
-
-/**
- * Waiting for response packet for API call and API result transmission
- * Timeout time in msec.
- * If the other program is abnormal (process termination), delay occurs in the meanwhile.
- * Confirm the operation on the actual machine and set again.
- */
-#define RESPONSE_WAIT_MSEC_DEFAULT 2000
-static unsigned int Response_wait_msec = RESPONSE_WAIT_MSEC_DEFAULT;
-
-char *RPC_DEBUG = NULL;
-
-#if defined(RPC_USE_UNIX_AUTOBIND)
-
- static RPC_Result
-CreateClientIdinfo(RpcThreadInfo *th, RPC_ID *pID) {
- if (RpcCreateIdInfo(th, *pID, NULL, NO_SECURE_CHECK) < 0) {
- RPC_LOG_ERR("Can't create id_info");
- return RPC_ERR_Fatal;
- }
-
- *pID = RPC_my_id(RPC_clnt_idinfo(th));
- RPC_LOG_DEBUG("RPC: assigned client ID %d", *pID);
- if (RPC_DEBUG) { // LCOV_EXCL_BR_LINE 7: debug
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- printf("RPC[%s]: client start finished.\n", RPC_DEBUG); // LCOV_EXCL_LINE 7: debug
- }
- return RPC_OK;
-}
-#else /* !AUTOBIND */
-
-#include <sys/file.h>
-
- static int
-FindUniqClientId(void) {
-#define RPC_ID_FILE_NAME "/tmp/RPC/id"
-#define RPC_MIN_CLIENT_ID 1024
-#define RPC_MAX_CLIENT_ID (1024+32768-1)
-
- int fd, found;
- RPC_ID id, next;
- struct stat statbuf;
- char fname[32];
-
- fd = open(RPC_ID_FILE_NAME, O_RDWR|O_CLOEXEC, 0777);
- if (fd < 0) {
- id = RPC_MIN_CLIENT_ID;
- fd = open(RPC_ID_FILE_NAME, O_RDWR|O_CREAT|O_CLOEXEC, 0777);
- if (fd < 0) {
- return -1;
- }
- flock(fd, LOCK_EX); // Possible sleep here
- } else {
- flock(fd, LOCK_EX); // Possible sleep here
- read(fd, &id, sizeof(id));
- }
-
- found = 0;
- while(found == 0) {
- rpc_set_socket_name(fname, id);
- if (stat(fname, &statbuf) < 0) {
- found = 1;
- break;
- }
- id++;
- if (id > RPC_MAX_CLIENT_ID) {
- id = RPC_MIN_CLIENT_ID;
- }
- }
-
- next = id + 1;
- if (next > RPC_MAX_CLIENT_ID) {
- next = RPC_MIN_CLIENT_ID;
- }
-
- lseek(fd, 0, SEEK_SET);
- write(fd, &next, sizeof(next));
- flock(fd, LOCK_UN);
- close(fd);
-
- return id;
-}
-
- static RPC_Result
-CreateClientIdinfo(RpcThreadInfo *th, UINT16 port) {
- if (RpcCreateIdInfo(th, port, NULL, NO_SECURE_CHECK) < 0) {
- RPC_LOG_ERR("Can't create id_info");
- return RPC_ERR_Fatal;
- }
- // LCOV_EXCL_BR_START 7: debug
- if (RPC_DEBUG) {
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- printf("RPC[%s]: client start finished.\n", RPC_DEBUG);
- }
- // LCOV_EXCL_BR_STOP
- return RPC_OK;
-}
-#endif /* AUTOBIND */
-
-/** @fn RPC_START_SERVER(ID)
- * @brief RPC_start() macro for the server
- *
- * Used by RPC-API server programs to activate the RPC library.
- * ID specifies a symbol of the form XXX_RPC_ID defined in rpc_id.h.
- * Only one server program per thread is allowed.
- * When a server program calls an API as a client of another server,
- * it only needs to call RPC_START_SERVER,
- * not RPC_START_CLIENT.
- *
- * RPC_end() should be called when the RPC library is no longer needed.
- * @param ID [IN]RPC_ID of the program
- * @see RPC_start
- * @see RPC_end
- */
-/** @fn RPC_START_CLIENT(pID)
- * @brief RPC_start() macro for clients
- *
- * Use only the client functions of the RPC library
- * (only calling APIs provided by other programs),
- * This macro is used for the start process.
- *
- *
- * RPC_end() should be called when the RPC library is no longer needed.
- *
- * @param pID [OUT]Pointer to the RPC_ID of the program
- * @see RPC_start
- * @see RPC_end
- */
-/** @brief Start processing of the RPC library
- *
- * - With an open socket, RPC_ID, and API call dispatching functions
- * Register in the global variable (managed separately for each thread and RPC_ID)
- * - Starting use as a server
- * - func specifies a function pointer (defined in stub) that is not a NULL.
- * - Specifies a fixed ID defined in rpc_id.h as the ID.
- * - If the same thread has already started using the server, an error code is returned.
- * - When the server function is started for the first time in a process,
- * one subthread is started to process received packets
- * in the background.
- * - Starting use as a client
- * - NULL is specified in the func.
- * - In principle, an invalid ID value (RPC_NO_PORT) is specified.
- * This function automatically assigns IDs and returns the assignment result to pID.
- * - However, if another program has already started using it as a client,
- * it shares the socket/RPC_ID instead of creating a new socket.
- * - Exceptionally, it is allowed to specify a fixed ID defined in rpc_id.h as the ID.
- * This is the only way to use RPC_start() in programs
- * where it is difficult to always call RPC_end() at the end of use by program structure/design.
- * - In this case, the pID argument is not referenced.
- * - The maximum number of threads that use the RPC library in a process is
- * specified by RPC_MAX_THREADS_IN_PROCESS.
- *
- * @param id [IN]RPC_ID of the program (in the case of RPC_NO_PORT, this means automatic assignment)
- * @param dispatch_func Dispatching functions (defined in stub files for servers,
- * and NULL specified in programs that do not provide APIs)
- * @param pID [OUT]RPC_ID of the automatically assigned program
- *
- * @retval RPC_OK: normal completion
- * @retval Otherwise: Abnormal termination (FATAL)
- *
- * @note Normally, this function is not called directly, but the following macro is used.
- * - RPC_START_SERVER(ID)
- * For programs that provide RPC server functions.
- * This macro is also used when both server and client functions are used.
- * - RPC_START_CLIENT(pID)
- * For programs that use only the RPC client function.
- */
- RPC_Result
-RPC_start(RPC_ID id, RPC_dispatch_func_t func, RPC_ID *pID, INT32 secure_check)
-{
-#if defined(RPC_USE_SYSLOG)
- static int init_syslog = 0;
-
- if (init_syslog == 0) {
- openlog("librpc", LOG_PID, LOG_USER);
- setlogmask(LOG_UPTO(LOG_INFO));
- /* setlogmask(LOG_MASK(LOG_DEBUG)); */
- init_syslog = 1;
- if (func != NULL)
- RPC_LOG_STATE("RPC_START_SERVER(%#x)\n", id);
- }
-#endif /* RPC_USE_SYSLOG */
-
- if (func != NULL && id == RPC_NO_ID) { /* No ID is specified despite as a server */
- RPC_LOG_ERR("Invalid RPC_start server arg");
- return RPC_ERR_Fatal;
- }
- if (func != NULL && pID != NULL) { /* Requested obtaining pID despite as a server */ // LCOV_EXCL_BR_LINE 200: macro guarantee impossible both not NULL, RPC_START_***
- RPC_LOG_ERR("Invalid RPC_start server arg"); // LCOV_EXCL_START 200: macro guarantee impossible both not NULL, RPC_START_***
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- if (func == NULL && id != RPC_NO_ID) { /* Specified ID despite as a client */
- RPC_LOG_ERR("Invalid RPC_start server arg");
- return RPC_ERR_Fatal;
- }
-#if defined(RPC_USE_UNIX_AUTOBIND)
- if (func == NULL && pID == NULL) {
- /* pID is NULL despite as a client (not supported for ID-specified clients) */
- RPC_LOG_ERR_W_NAME("RPC_Start(ID, NULL, NULL) is no longer supported, ID is auto-assigned");
- return RPC_ERR_Fatal;
- }
-#else /* !AUTOBIND */
- if (func == NULL && id == RPC_NO_ID && pID == NULL) {
- /* pID is NULL despite as an auto-assigned client */
- RPC_LOG_ERR("Invalid RPC_start arg");
- return RPC_ERR_Fatal;
- }
-#endif /* !AUTOBIND */
- if ((secure_check != NO_SECURE_CHECK) && (secure_check != NEED_SECURE_CHECK)) { // LCOV_EXCL_BR_LINE 200: macro guarantee only two value, RPC_START_***
- /* Check Arguments for Client Authentication */
- RPC_LOG_ERR("Invalid RPC_start arg"); // LCOV_EXCL_START 200: macro guarantee only two value, RPC_START_***
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- RpcThreadInfo *th = RpcMyThreadInfo();
- if (th == NULL) {
- th = RpcCreateThreadInfo();
- if (th == NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- return RPC_ERR_Fatal;
- }
- }
-
- /* RPC_start is already done in the same thread */
- if (func != NULL) {/* Server start */
- if (RPC_srvr_idinfo(th) != NULL) {/* Server already started */
- RPC_LOG_ERR("duplicated RPC_START_SERVER");
- return RPC_ERR_Fatal;
- }
- } else { /* Client start */
- if (RPC_clnt_idinfo(th) != NULL) {/* Client already started */
- if (pID != NULL) { // LCOV_EXCL_BR_LINE 6: double check
- *pID = (RPC_clnt_idinfo(th))->port;
- RPC_LOG_DEBUG("use existing client ID=%d", *pID);
- RPC_inc_clnt_count(RPC_clnt_idinfo(th));
- }
- /*
- * When pID == NULL (RPC_ID fixed), there is no guarantee
- * that RPC_end() will be called as many times as needed, so it does not count up.
- */
- return RPC_OK;
- }
- }
-
- if (func == NULL) {/* Client start */
-#if defined(RPC_USE_UNIX_AUTOBIND)
- /* Automatically assign everything without supporting ID specification */
- RPC_ID id_local = RPC_NO_ID;
- RPC_Result ret = CreateClientIdinfo(th, &id_local);
- if(RPC_OK != ret) return ret;
-
- if (pID) { // LCOV_EXCL_BR_LINE 6: double check
- *pID = id_local;
- }
- RPC_clnt_inotify_fd(RPC_clnt_idinfo(th)) = inotify_init1(IN_CLOEXEC);
- return ret;
-#else /* !AUTOBIND */
- if (id == RPC_NO_ID) {
- /* No port number specified -> Automatically assign an ID and port number here */
- /*
- * FindUniqClientId() returns ID within the range of RPC_MIN_CLIENT_ID(1024) to RPC_MAX_CLIENT_ID(1024+32768-1)
- */
- int ret;
- ret = FindUniqClientId();
- if (ret < 0) {
- return RPC_ERR_Fatal;
- }
- /* pID != NULL is already checked */
- *pID = (UINT16)ret;
- return CreateClientIdinfo(th, *pID);
- } else {
- /*
- * Client start with specified port number
- * Programs that cannot guarantee an RPC_end() call
- * at termination specify a fixed RPC_ID from the upper level and use it.
- * (To avoid memory shortage caused by building up socket-files in /tmp/RPC)
- */
- return CreateClientIdinfo(th, id);
- }
-#endif /* !AUTOBIND */
- }
-
- /* Dispatch func specified (servers) -> bind */
- CL_MonitorInit(CL_MONITOR_INIT_USER); /* Using the API for Error Monitoring */
-
- if (RpcCreateIdInfo(th, id, func, secure_check) < 0) {
- RPC_LOG_ERR("Can't create id_info");
- return RPC_ERR_Fatal;
- }
-
- if (RPC_DEBUG) { // LCOV_EXCL_BR_LINE 7: debug
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- printf("RPC[%s]: server thread invoked\n", RPC_DEBUG); // LCOV_EXCL_LINE 7: debug
- }
- char *env;
- if ((env = getenv("RPC_RESPONSE_WAIT")) != NULL) {
- Response_wait_msec = (unsigned int)strtol(env, NULL, 10);
- }
-
- return RPC_OK;
-}
-
- static void
-RpcEndSub(RpcThreadInfo *th, RpcIdInfo *idinfo) {
- int sockfd;
-#if !defined(RPC_USE_UNIX_AUTOBIND)
- char path[120];
-
- rpc_set_socket_name(path, RPC_my_id(idinfo));
-#endif /* !AUTOBIND */
- sockfd = idinfo->sock;
- RpcDestroyIdInfo(th, idinfo);
- close(sockfd);
-#if !defined(RPC_USE_UNIX_AUTOBIND)
- unlink(path);
-#endif /* !AUTOBIND */
-}
-
-/** @brief RPC Library End-of-Use Processing
- *
- * - Perform termination processing such as closing the opened socket, releasing the memory.
- * (Server/Client Common)
- * - If there are no programs in the thread that use RPC_ID,
- * the subthread started by RPC_start is terminated.
- * - Each RPC_ID must be called before the program exits.
- * - RPC_end must be called by the thread that performed the RPC_start.
- * - Ignored unused or no longer used RPC_ID if specified.
- *
- * @param ID [IN]RPC_ID of the program
- */
- void
-RPC_end(RPC_ID id) {
- RpcThreadInfo *th = RpcMyThreadInfo();
- if (th == NULL) {
- return;
- }
- RpcIdInfo *idinfo;
- idinfo = RPC_srvr_idinfo(th);
- if (idinfo != NULL && RPC_my_id(idinfo) == id) {/* srvr */
- RpcEndSub(th, idinfo);
- }
-
- idinfo = RPC_clnt_idinfo(th);
- if (idinfo != NULL && RPC_my_id(idinfo) == id) {/* client */
-
- RPC_dec_clnt_count(idinfo);
- if (RPC_clnt_count(idinfo) == 0) {
- /* Deleting management table of the communication destination server PID */
- RpcAllDeleteSrvrPid(idinfo);
- close(RPC_clnt_inotify_fd(idinfo));
-
- RpcEndSub(th, idinfo);
- }
- }
- if (RPC_srvr_idinfo(th) == NULL && RPC_clnt_idinfo(th) == NULL) {
- RPC_LOG_DEBUG("destroy thread info %p", th);
- RpcDestroyThreadInfo();
- }
-}
-
-/** @brief RPC library use termination processing (forced cleanup at process termination)
- *
- * Deletes the socket file created for RPC communication in the process.
- * For to release the resources of programs that use the RPC library with RPC_end() in principle,
- * but this API is an insurance process to eliminate socket file leaks.
- *
- * - Since it is assumed that the socket is called immediately before the process terminates,
- * closing sockets and releasing memory is not performed automatically when the process terminates.
- * - All RPC processing (both server and client) after this API call cannot be used.
- * Operation is not guaranteed even if RPC_START is performed again after that.
- *
- * No action for versions of the RPC library that use Unix autobind.
- */
- void
-RPC_end_all(void) {
-#if !defined(RPC_USE_UNIX_AUTOBIND)
- RpcUnlinkSocketFiles();
-#endif
-}
-
-/**
- * @fn RPC_Result RPC_set_API_timeout(RPC_ID id, UINT32 sec)
- * @brief Setting the timeout period during server API processing
- *
- * @param sec [IN] Timeout (sec) Set within the range of 1 to 60 sec.
- *
- * @retval RPC_OK: normal completion
- * @retval RPC_ERR_Configuration: Argument out of range
- * @retval RPC_ERR_Fatal: Fatal error
- */
- RPC_Result
-RPC_set_API_timeout(INT32 sec) {
- /* param check */
- if ((sec > 60) || (sec < 1)) {
- RPC_LOG_ERR( "RPC_set_API_timeout() : Invalid Param." );
- return RPC_ERR_Configuration;
- }
-
- /* thread_info check */
- RpcThreadInfo *th = RpcMyThreadInfo();
- THREAD_INFO_CHECK(th);
-
- /* thread_info->id_info check */
- if (RPC_srvr_idinfo(th) != NULL ) { // LCOV_EXCL_BR_LINE 200: server start abnormal can't test
- RpcIdInfo *idinfo = RPC_srvr_idinfo(th);
-
- /* thread_info->id_info->apicall_info check */
- if( RPC_apicall_info(idinfo) != NULL ) { // LCOV_EXCL_BR_LINE 200: server start abnormal can't test
- RPC_apicall_api_timeout_sec(idinfo) = sec;
- } else { // LCOV_EXCL_START 200: server start abnormal can't test
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR( "No apicall_info" );
- return RPC_ERR_Fatal;
- }
-
- } else {
- RPC_LOG_STATE("No srvr_id info");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- return RPC_OK;
-}
-
-
-/** @brief API call execution function (client side)
- *
- * (These functions are called from within a client-facing STUB. Users never use these directly.)
- */
- RPC_Result
-RPC_API_call(RPC_ID server, UINT16 api_num,
- const char *args_string, unsigned int args_size,
- char **ret_string, unsigned int *ret_size) {
- *ret_string = NULL;
-
- RpcThreadInfo *th = RpcMyThreadInfo();
-
- THREAD_INFO_CHECK(th);
-
- RpcIdInfo *idinfo;
- idinfo = RPC_clnt_idinfo(th);
-
- pid_t srvr_pid;
-
- if (idinfo == NULL) { // LCOV_EXCL_BR_LINE 8: dead code, idinfo always isn't NULL
- /*
- * In the past, the remedy of uninitialized clients has been done here.
- * However, because it becomes to accumulate garbage in the /tmp/RPC by changing UNIX sockets,
- * as an error without remedies.
- */
- // LCOV_EXCL_START 8: dead code, idinfo always isn't NULL
- RPC_LOG_ERR_W_NAME("warning!!! RPC call without RPC_start(): server=%d, api_num=%d", server, api_num);
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-#if defined(RPC_USE_UNIX_AUTOBIND)
- RPC_ID id = RPC_NO_ID;
- RPC_Result ret = CreateClientIdinfo(th, &id);
-#else /* !AUTOBIND */
- int id;
- id = FindUniqClientId();
- if (id < 0) {
- return RPC_ERR_Fatal;
- }
- RPC_Result ret = CreateClientIdinfo(th, (UINT16)id);
-#endif /* !AUTOBIND */
- if (ret != RPC_OK) {
- return ret;
- }
- idinfo = RPC_clnt_idinfo(th);
- if (idinfo == NULL) {
- return RPC_ERR_Fatal;
- }
- } // LCOV_EXCL_STOP
-
- char api_head[RPC_APICALL_FORMAT_ARGS_START + 1];
- sprintf(api_head, RPC_APICALL_FORMAT, api_num);
-
- rpc_send_buf sendbuf[2];
- sendbuf[0].buf = api_head;
- sendbuf[0].bytes = RPC_APICALL_FORMAT_ARGS_START;
- if (args_size > 0) {
- sendbuf[1].buf = args_string;
- sendbuf[1].bytes = args_size;
- }
-
- int seq_num;
-
-send_api_call:
- seq_num = RpcSendUdp2(idinfo, server,
- (api_num == RPC_API_NUM_RPC_ALIVE
- ? RPC_SEND_TO_SERVER_NO_RETRY
- : RPC_SEND_TO_SERVER),
- RPC_PACKET_APICALL,
- (args_size > 0) ? 2 : 1, sendbuf);
- if (seq_num < 0) {
- return RPC_ERR_No_Response;
- }
-
- // wait for response
- UINT16 response;
- RPC_Result result = RpcClientWaitResponse(idinfo, (UINT32)seq_num, Response_wait_msec,
- &response);
- if (result != RPC_OK) {
- return result;
- }
-
- if (response == RPC_RESPONSE_API_BUSY) { /* Server is busy */
- return RPC_ERR_Busy;
- } else if (response == RPC_RESPONSE_API_ERR) { /* API call error */
- RPC_LOG_STATE("APIcall error (can't queue)");
- return RPC_ERR_Fatal;
- } else if (response == RPC_RESPONSE_API_DEADLOCK) { /* Server is in deadlock */
- RPC_LOG_STATE("server DeadLock.");
- return RPC_ERR_Server_DeadLock;
- } else if (response == RPC_RESPONSE_API_CERTIFY) { /* Authentication request */
- struct sockaddr_un srvr_sa_un, secure_sa_un;
- socklen_t srvr_sa_len, secure_sa_len;
- int secure_sock_un;
-
- /* Create client socket for authentication */
- memset(&secure_sa_un, 0, sizeof(secure_sa_un));
- secure_sa_un.sun_family = AF_UNIX;
- secure_sock_un = socket(PF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0);
- RpcSetClientSecureName(secure_sa_un.sun_path, RPC_port(idinfo));
- secure_sa_len = (socklen_t)(sizeof(secure_sa_un.sun_family) + SECURE_SOCK_NAME_LEN);
- if (bind(secure_sock_un, (struct sockaddr *)&secure_sa_un, secure_sa_len) < 0) {
- RPC_LOG_PERROR("STREAM : bind(unix), ID:%#x", RPC_port(idinfo));
- }
- idinfo->secure_sock = secure_sock_un;
-
- /* Destination Server Socket Setting */
- memset(&srvr_sa_un, 0, sizeof(srvr_sa_un));
- srvr_sa_un.sun_family = AF_UNIX;
- RpcSetServerSecureName(srvr_sa_un.sun_path, server);
- srvr_sa_len = (socklen_t)(sizeof(srvr_sa_un.sun_family) + SECURE_SOCK_NAME_LEN);
-
- /* Connection */
- int cr = connect(RPC_my_secure_sock(idinfo), (struct sockaddr *)&srvr_sa_un, srvr_sa_len);
- if (0 > cr) {
- RPC_LOG_STATE("client connect() is failed.");
- return RPC_ERR_Fatal;
- }
-
- /* Waiting for server authentication */
- RPC_Result ret_certify = RpcClientWaitCertification(idinfo, &srvr_pid);
- close(RPC_my_secure_sock(idinfo));
- if (RPC_OK != ret_certify) {/* Authentication NG */
- RPC_LOG_STATE("denied the connection.");
- return ret_certify;
- }
-
- /* inotify monitoring of server processes */
- char intfy_fname[32];
- snprintf(intfy_fname, sizeof(intfy_fname), CL_INTFY_FILENAME_FORMAT, srvr_pid);
- int wd = inotify_add_watch(RPC_clnt_inotify_fd(idinfo), intfy_fname, IN_DELETE_SELF);
- if (0 > wd) {
- RPC_LOG_STATE("intfy_fname is Not Found [%s].", intfy_fname);
- }
-
- /* Register the communication destination server PID in the management table. */
- if (RPC_OK != RpcRegistSrvrPid(idinfo, server, srvr_pid, wd)) {
- return RPC_ERR_Fatal;
- }
- goto send_api_call; /* Sending the API request again */
-
- } else if (response == RPC_RESPONSE_NONE) { // LCOV_EXCL_BR_LINE 8: dead code, not implement
- // Not implemented to cancel processing
- // LCOV_EXCL_START 8: dead code, not implement
- RPC_LOG_STATE("No response for API call");
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_No_Response;
- } // LCOV_EXCL_STOP
-
- // When the server ALIVE is queried, no result is returned, so return here
- if (api_num == RPC_API_NUM_RPC_ALIVE) {
- return RPC_OK;
- }
-
- // API call is accepted at server
- // now wait for the return packet
- result = RpcClientWaitResult(idinfo, server);
- if (result != RPC_OK) {
- RpcDiscardAPIcallReturn(idinfo);
- return result;
- }
-
- /****** Function error and return value must be handled separately *******/
- UINT8 *return_str = RPC_apicall_return_str(idinfo); /* pgr0689 */
-#ifdef APICALL_RETURN_TIMEOUT
- if (return_str == NULL) {
- RPC_LOG_STATE("APIcall return timeout");
- return RPC_ERR_No_Response;
- }
-#else
- rpc_assert(return_str != NULL); // LCOV_EXCL_BR_LINE 6: double check
-#endif
-
- RPC_THREAD_MUTEX_LOCK(idinfo->thread_info);
-
- *ret_string = rpc_malloc(RPC_apicall_return_str_len(idinfo));
- if (*ret_string != NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- if (ret_size) {
- *ret_size = RPC_apicall_return_str_len(idinfo);
- }
- memcpy(*ret_string, RPC_apicall_return_str(idinfo),
- RPC_apicall_return_str_len(idinfo));
- } else {
- RPC_LOG_STATE("APIcall: No Memory"); // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- result = RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- RPC_THREAD_MUTEX_UNLOCK(idinfo->thread_info);
- RpcDiscardAPIcallReturn(idinfo);
-
- return result;
-}
-
-/** @brief Releasing allocated memory while API call is processing
- *
- * (These functions are called from within a client-facing STUB. Users never use it directly.)
- */
- void
-RPC_free_return_string(void *ptr) {
- if (ptr != NULL) {
- rpc_free(ptr);
- }
-}
-
-/** @brief Retrieving file descriptors for determining whether RPC-API calls are requested
- *
- * - This function returns a file descriptor used to determine whether or not there is a request to the server.
- * - For the FD returned by this function, Don't use the other way than the FD specified
- * in the poll or select parameter.
- * - Intended use
- * - Obtain FD using this function.
- * - Wait for data to arrive by poll or select.
- * - Call RPC_process_API_request() when data arrived.
- * - This procedure performs handling request of the API call from the client.
- * (Server-side API function is executed.)
- *
- * @param id [IN]RPC_ID of the server program.
- * @param fd [OUT]Storage of file descriptor
- *
- * @retval RPC_OK: normal completion
- * @retval Otherwise: Abnormal termination (FATAL)
- * @see RPC_process_API_request
- */
- RPC_Result
-RPC_get_fd(RPC_ID id, int *fd) {
- if ((id == RPC_NO_ID) || (fd == NULL)) {
- return RPC_ERR_Fatal;
- }
- rpc_assert(fd != NULL); // LCOV_EXCL_BR_LINE 6: double check
-
- RpcThreadInfo *th = RpcMyThreadInfo();
-
- THREAD_INFO_CHECK(th);
-
- SUB_THREAD_CHECK(); // LCOV_EXCL_BR_LINE 15: macro define in rpc_lib.c
-
- RpcIdInfo *idinfo = RPC_srvr_idinfo(th);
-
- rpc_assert(idinfo != NULL && RPC_my_id(idinfo) == id); // LCOV_EXCL_BR_LINE 6: double check
-
- *fd = RPC_pipe_sub_main(th)[PIPE_READ];
-
- return RPC_OK;
-}
-
-/** API Call Request Handling
-*/
- static RPC_Result
-ProcessAPIcallRequest(RpcIdInfo *idinfo, RPC_ID client, UINT16 api_num,
- char *args_string, unsigned int args_size) {
- /* ----------------------------
- * call API dispatch function
- * ----------------------------
- */
-
- /* API Running Client RPC_ID Setting */
- RPC_apicall_in_process_client(idinfo) = client;
-
- char *ret_string = NULL;
- unsigned int ret_size = 0;
- RPC_dispatch_func_t dispatch = RPC_apicall_dispatch_func(idinfo);
- rpc_assert(dispatch != NULL); // LCOV_EXCL_BR_LINE 6: double check
- RPC_Result api_ret;
- api_ret = dispatch(api_num, args_string, args_size, &ret_string, &ret_size); /* pgr0060 */
-
- unsigned char retcode[RPC_RETCODE_LEN+1];
- sprintf((char *)retcode, "%08x ", api_ret);
-
- rpc_send_buf sendbuf[2];
- sendbuf[0].buf = retcode;
- sendbuf[0].bytes = sizeof(retcode) - 1;
-
- int seq_num;
-
- if (ret_string != NULL) {
- sendbuf[1].buf = ret_string;
- sendbuf[1].bytes = ret_size;
- seq_num = RpcSendUdp2(idinfo, client, RPC_SEND_TO_CLIENT,
- RPC_PACKET_APIRETURN, 2, sendbuf);
- } else {
- seq_num = RpcSendUdp2(idinfo, client, RPC_SEND_TO_CLIENT,
- RPC_PACKET_APIRETURN, 1, sendbuf);
- }
- RPC_marshall_free(1, ret_string);
-
- if (seq_num < 0) {
- RPC_LOG_ERR("send result failed!");
- return RPC_ERR_Fatal;
- }
-
- /* Set API Running Client RPC_ID to None */
- RPC_apicall_in_process_client(idinfo) = RPC_NO_PORT;
-
- /* Sleep API-processing entries */
- RPC_THREAD_MUTEX_LOCK(idinfo->thread_info);
- CL_MonitorSetEntry(CL_MONITOR_TYPE_RPC, RPC_port(idinfo),
- CL_MONITOR_STATE_SLEEP, 0, 0);
- RPC_THREAD_MUTEX_UNLOCK(idinfo->thread_info);
-
- return api_ret;
-}
-
-/** @brief Executing RPC-API calls
- *
- * Process all queued API execution requests from clients.
- * The API function of the server program is called from here.
- * If there is no API execution request, the system returns normally immediately without waiting.
- *
- * @param id [IN]RPC_ID of the server program
- * @retval RPC_OK: normal completion
- * @retval Otherwise: Fatal errors
- */
- RPC_Result
-RPC_process_API_request(RPC_ID id) {
- if (id == RPC_NO_ID) {
- return RPC_ERR_Fatal;
- }
- RpcThreadInfo *th = RpcMyThreadInfo();
-
- THREAD_INFO_CHECK(th);
-
- SUB_THREAD_CHECK();
-
- RpcIdInfo *idinfo = RPC_srvr_idinfo(th);
-
- rpc_assert(idinfo != NULL && id == RPC_my_id(idinfo)); // LCOV_EXCL_BR_LINE 6: double check
-
- rpc_assert(RPC_apicall_info(idinfo) != NULL /* pgr0689 */ // LCOV_EXCL_BR_LINE 6: double check
- && RPC_apicall_dispatch_func(idinfo) != NULL); // LCOV_EXCL_BR_LINE 6: double check
-
- char c;
- read(RPC_pipe_sub_main(th)[PIPE_READ], &c, sizeof(c));
-
- /* Process all API calls here */
- UINT16 api_num;
- RPC_ID client = RPC_NO_PORT;
- RPC_Result result = RPC_OK;
- char *args_string;
- unsigned int args_size;
- do {
- api_num = RpcGetAPIRequest(idinfo, &client,
- &args_string, &args_size);
-
- if (api_num > 0) {/* API calls were queued */
- result = ProcessAPIcallRequest(idinfo, client, api_num,
- args_string, args_size);
-
- RpcFreeAPIArgsString(args_string);
-
- if (result == RPC_ERR_API_Fatal || result == RPC_ERR_Fatal) {
- break;
- } else {
- result = RPC_OK;
- }
- }
- } while(api_num > 0);
-
- return result;
-}
-
-/** @brief Returns the operational state of the RPC server
- *
- * Returns whether or not the server with the specified RPC_ID is running.
- *
- * @param id [IN]RPC_ID of the server program
- * @retval RPC_OK: Running
- * @retval RPC_ERR_No_Response: Server is not running
- */
- RPC_Result
-RPC_is_server_ready(RPC_ID id) {
-#if defined(RPC_USE_UNIX_AUTOBIND)
- char *ret_string = NULL;
- unsigned int ret_size;
- RPC_Result ret;
-
- // Invoke Internal-API Calls for Server ALIVE Queries
- ret = RPC_API_call(id, RPC_API_NUM_RPC_ALIVE, NULL, 0,
- &ret_string, &ret_size);
- RPC_free_return_string(ret_string);
-
- return ret;
-#else /* !AUTOBIND */
- struct stat statbuf;
- int err;
- char sockname[128];
-
- /* Check if server socket is created */
- rpc_set_socket_name(sockname, id);
- err = stat(sockname, &statbuf);
- if (err == 0) {
- return RPC_OK;
- } else {
- return RPC_ERR_No_Response;
- }
-#endif /* !AUTOBIND */
-}
-
-/** @brief Registering UIDs and GID Lists
- *
- * Register a list of UIDs and GIDs that can be accepted by the RPC server.
- * A function used by the RPC server after RPC_START_SECURE_SERVER().
- * Return error if called from an RPC client or an RPC server that has not called RPC_START_SECURE_SERVER().
- *
- * @param uid_num [IN] Number of registered UIDs (number of elements in UID list array)
- * @param *uid_list [IN] Start pointer of registered UID list
- * @param gid_num [IN] Number of registered GIDs (number of elements in the array of GID lists)
- * @param *gid_list [IN] Start pointer of registered GID list
- * @retval RPC_OK: List registration completed
- * @retval RPC_ERR_Fatal: Failed to save to list
- */
-RPC_Result
-RPC_regist_credential(int uid_num, uid_t *uid_list, int gid_num, gid_t *gid_list) {
- RpcThreadInfo *th = RpcMyThreadInfo();
- THREAD_INFO_CHECK(th);
-
- if (NULL == RPC_srvr_idinfo(th)) {
- RPC_LOG_ERR("No server thread info");
- return RPC_ERR_Fatal;
- }
-
- RpcIdInfo *idinfo = RPC_srvr_idinfo(th);
- if ((NULL == idinfo) || (NULL == RPC_apicall_info(idinfo))) { // LCOV_EXCL_BR_LINE 8: dead code, idinfo always isn't NULL
- // LCOV_EXCL_START 8: dead code, idinfo always isn't NULL
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("No RPC_ID info");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- /* Neither UID nor GID list is specified. */
- if ((NULL == uid_list) && (NULL == gid_list)) {
- RPC_LOG_ERR("RPC_regist_credential() : UID and GID list is NULL.");
- return RPC_ERR_Fatal;
- }
-
- /* UID list argument check */
- if ((NULL == uid_list) && ((0 < uid_num ) && (uid_num <= CREDENTIAL_LIST_NUM_MAX))) {/* UID list is invalid */
- RPC_LOG_ERR("RPC_regist_credential() : UID list is illegal.");
- return RPC_ERR_Fatal;
- } else if ((NULL != uid_list) && ((1 > uid_num) || (uid_num > CREDENTIAL_LIST_NUM_MAX))) {/* Number of UID list elements is invalid */
- RPC_LOG_ERR("RPC_regist_credential() : UID list num is illegal.");
- return RPC_ERR_Configuration;
- }
-
- /* GID list argument check */
- if ((NULL == gid_list) && ((0 < gid_num ) && (gid_num <= CREDENTIAL_LIST_NUM_MAX))) {/* GID list is invalid */
- RPC_LOG_ERR("RPC_regist_credential() : GID list is illegal.");
- return RPC_ERR_Fatal;
- } else if ((NULL != gid_list) && ((1 > gid_num) || (gid_num > CREDENTIAL_LIST_NUM_MAX))) {/* Number of GID list elements is invalid */
- RPC_LOG_ERR("RPC_regist_credential() : GID list num is illegal.");
- return RPC_ERR_Configuration;
- }
-
- if (NO_SECURE_CHECK == RPC_secure_check(idinfo)) {/* Return error if registration is not necessary */
- RPC_LOG_ERR("Needless secure check.");
- return RPC_ERR_Fatal;
- }
-
- if (REGISTERED == RPC_regist_credential_info(idinfo)) {/* Return error if a list has already been registered */
- RPC_LOG_ERR("credential info has been registered already.");
- return RPC_ERR_Fatal;
- }
-
- /* Allocate as many memory areas as there are UID and GID lists */
- RPC_apicall_info(idinfo)->uid_list = rpc_malloc(sizeof(uid_t) * (unsigned int)uid_num);
- if (NULL == RPC_apicall_info(idinfo)->uid_list) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- RPC_LOG_ERR("Can't malloc uid_list."); // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- RPC_apicall_info(idinfo)->gid_list = rpc_malloc(sizeof(gid_t) * (unsigned int)gid_num);
- if (NULL == RPC_apicall_info(idinfo)->gid_list) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- RPC_LOG_ERR("Can't malloc gid_list."); // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- /* Copy UID and GID registration list and number of elements */
- memcpy(RPC_apicall_info(idinfo)->uid_list, uid_list, sizeof(uid_t) * (unsigned int)uid_num); /* UID list */
- memcpy(RPC_apicall_info(idinfo)->gid_list, gid_list, sizeof(gid_t) * (unsigned int)gid_num); /* GID list */
- RPC_uid_num(idinfo) = uid_num; /* Number of elements in the UID list */
- RPC_gid_num(idinfo) = gid_num; /* Number of elements in the GID list */
-
- /* Set whether to register authentication information to Yes/No */
- RPC_regist_credential_info(idinfo) = REGISTERED;
-
- return RPC_OK;
-}
-
-/** @brief Obtain authentication info (UID, GID) of API requesting client
- *
- * Obtain the UID and GID of the client that requested the API processing being executed.
- * Return error if called from an RPC client or to an RPC server that has not called RPC_START_SECURE_SERVER().
- * This function should be called within an API function (in other words, API is being executed) provided to the client.
- * if called the other function, error is returned because there is no API being executed.
- *
- * @param *client_uid [OUT] Requesting client UID of running API
- * @param *client_gid [OUT] Requesting client GID of running API
- * @retval RPC_OK: Succeeded to obtain of authentication info
- * @retval RPC_ERR_Fatal: Failed to obtain of authentication Info
- */
-RPC_Result
-RPC_get_client_credential(uid_t *client_uid, gid_t *client_gid) {
- RpcThreadInfo *th = RpcMyThreadInfo();
- THREAD_INFO_CHECK(th);
-
- if (NULL == RPC_srvr_idinfo(th)) {
- RPC_LOG_ERR("No server thread info");
- return RPC_ERR_Fatal;
- }
-
- RpcIdInfo *idinfo = RPC_srvr_idinfo(th);
- if ((NULL == idinfo) || (NULL == RPC_apicall_info(idinfo))) { // LCOV_EXCL_BR_LINE 8: dead code, idinfo always isn't NULL
- // LCOV_EXCL_START 8: dead code, idinfo always isn't NULL
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("No RPC_ID info");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- if ((NULL == client_uid) || (NULL == client_gid)) {/* Argument check */
- RPC_LOG_ERR("RPC_regist_credential() : Invalid Param.");
- return RPC_ERR_Fatal;
- }
-
- if (NO_SECURE_CHECK == RPC_secure_check(idinfo)) {/* Return error if no security */
- RPC_LOG_ERR("Needless secure check.");
- return RPC_ERR_Fatal;
- }
-
- if (RPC_NO_PORT == RPC_apicall_in_process_client(idinfo)) {/* Return error if the API is not being executed */
- RPC_LOG_ERR("NOT in process APIcall.");
- return RPC_ERR_Fatal;
- }
-
- char buf[7], client_path_name[SOCK_NAME_LEN]; /* Client socket name */
-
- /* Converting client_id to the socket name associated with RPC_ID */
- RpcSetClientName(buf, RPC_apicall_in_process_client(idinfo));
- memcpy(client_path_name, buf + 1, 5);
- client_path_name[5] = '\0';
- RpcClientSockNameInfo *current = RPC_sock_info_head(idinfo);
-
- /* Search info of running client from the management table */
- while (NULL != current) {
- if (0 == strcmp(current->client_sock_name, client_path_name)) {/* Match Running Client Info */
- *client_uid = current->uid;
- *client_gid = current->gid;
- return RPC_OK;
- }
- current = current->next;
- }
- RPC_LOG_ERR("Nothing client credential info.");
- return RPC_ERR_Fatal; /* Not found Client info */
-}
-
-/** @brief Waiting for server authentication
- *
- * When a client requests an API to the server,
- * wait for the server to check whether it is allowed to communicate.
- *
- * @param *idinfo [IN] Information associated with the client's RPC_ID
- *
- * @retval RPC_OK: Authentication OK (communication with the server is permitted)
- * @retval RPC_ERR_Reject_connect: Authentication NG (Communication denied)
- */
-static RPC_Result
-RpcClientWaitCertification(RpcIdInfo *idinfo, pid_t *srvr_pid) {
- fd_set fds;
- RpcCertifyResult recv_ret; /* Authentication result from the server */
- RPC_Result ret = RPC_ERR_Fatal;
-
- for(;;) {
- FD_ZERO(&fds);
- FD_SET(RPC_my_secure_sock(idinfo), &fds);
-
- int sret = select(RPC_my_secure_sock(idinfo) + 1, &fds, NULL, NULL, NULL);
- if (sret < 0 && errno == EINTR) {/* signal interrupt */ // LCOV_EXCL_BR_LINE 5: fail safe for libc select
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- continue; // LCOV_EXCL_LINE 5: fail safe for libc select
- } else if (sret > 0 && FD_ISSET(RPC_my_secure_sock(idinfo), &fds)) {
- /* Check the response from the server */
- ssize_t rret = recv(RPC_my_secure_sock(idinfo), (char*)&recv_ret, sizeof(RpcCertifyResult), 0);
- if (0 < rret) { // LCOV_EXCL_BR_LINE 5: fail safe for libc recv
- switch(recv_ret.certify_res) {
- case CERTIFY_OK: /* OK */
- ret = RPC_OK;
- *srvr_pid = recv_ret.srvr_pid;
- break;
-
- case CERTIFY_NG: /* NG */
- ret = RPC_ERR_Reject_connect;
- break;
-
- default:
- ret = RPC_ERR_Fatal;
- break;
- }
- goto exit_loop_ok;
- } else if(0 == rret) { // LCOV_EXCL_START 5: fail safe for libc recv
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("server process terminate.");
- return RPC_ERR_Fatal;
- } else {
- RPC_LOG_PERROR("certification_wait recv()");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- }
- }
-exit_loop_ok:
- return ret;
-}
-
-/** @brief Register the PID of the communication destination server in the management table.
- *
- * Register a pair of the PID and ID of the server in the management table.
- *
- * @param *idinfo [IN] Information associated with the client's RPC_ID
- * @param srvr_rpc_id [IN] RPC_ID of the communication destination server
- * @param srvr_pid [IN] PID of the communication destination server
- *
- * @retval RPC_OK : Registration completed
- * @retval RPC_ERR_Fatal : Registration failed
- */
-static RPC_Result
-RpcRegistSrvrPid(RpcIdInfo *idinfo, RPC_ID srvr_rpc_id, pid_t srvr_pid, int wd) {
- if ((NULL == idinfo) || (srvr_rpc_id == RPC_NO_ID) || (0 > srvr_pid)) { // LCOV_EXCL_START 8: dead code, idinfo always isn't NULL
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("RpcRegistSrvrPid() : Invalid Param.");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- RpcSrvrPidInfo *srvr_pid_buf, *current;
-
- srvr_pid_buf = rpc_malloc(sizeof(RpcSrvrPidInfo));
- if( srvr_pid_buf == NULL ){ // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- srvr_pid_buf->srvr_rpc_id = srvr_rpc_id; /* Server RPC_ID */
- srvr_pid_buf->srvr_pid = srvr_pid; /* Server PID */
- srvr_pid_buf->wd = wd; /* wd */
- srvr_pid_buf->next = NULL; /* Next node in the communication destination server PID management table */
-
- if (0 == RPC_srvr_pid_head(idinfo)) {
- RPC_srvr_pid_head(idinfo) = srvr_pid_buf;
- } else {
- for (current = RPC_srvr_pid_head(idinfo); current->next != NULL; current = current->next)
- ;
- current->next = srvr_pid_buf;
- }
- return RPC_OK;
-}
-
-/** @brief Delete Termination Process PID from Management Table
- *
- * Check whether the terminated process matches the communicating server process, and delete it from the management table.
- *
- * @param *idinfo [IN] Information associated with the client's RPC_ID
- * @param srvr_rpc_id [IN] Currently communicating server RPC_ID
- * @param wd [IN] Wd of the termination process
- *
- * @retval RPC_OK : Deletion completed
- * @retval RPC_ERR_Server_Finish: Deletion completed (server process in communication terminated)
- * @retval RPC_ERR_Fatal : Argument error
- */
- RPC_Result
-RpcDeleteSrvrPid(RpcIdInfo *idinfo, RPC_ID srvr_rpc_id, int wd) {
- if ((NULL == idinfo) || (RPC_NO_ID == srvr_rpc_id)) { // LCOV_EXCL_START 8: dead code, idinfo always isn't NULL
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("rpc_check_srvr_pid() : Invalid Param.");
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- RPC_Result ret = RPC_OK;
- int cnt = 0;
- RpcSrvrPidInfo *current, *previous;
- current = RPC_srvr_pid_head(idinfo);
-
- while (NULL != current) {
- if (wd == current->wd) {
-
- /* Check whether the termination process matches the communicating server process */
- if (srvr_rpc_id == current->srvr_rpc_id) {
- ret = RPC_ERR_Server_Finish;
- }
-
- /* Delete info from the Server info table */
- if (0 == cnt) {/* Delete the start of the management table */
- RPC_srvr_pid_head(idinfo) = RPC_srvr_pid_head(idinfo)->next;
- rpc_free(current);
- current = RPC_srvr_pid_head(idinfo);
- cnt = -1;
- } else {/* Delete all but the first element */
- // LCOV_EXCL_START 8: dead code
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- previous->next = current->next;
- rpc_free(current);
- current = previous->next;
- // LCOV_EXCL_STOP
- }
- } else {
- previous = current;
- current = current->next;
- }
- cnt ++;
- }
- return ret;
-}
-
-/** @brief Delete all PID management tables of the communication destination server
- *
- * Releases the PID management table and deletes all data when the client terminates with RPC_end().
- *
- * @param *idinfo [IN] Information associated with the client's RPC_ID
- *
- * @retval RPC_OK : Deletion completed
- * @retval RPC_ERR_Fatal : Argument error
- */
-static RPC_Result
-RpcAllDeleteSrvrPid(RpcIdInfo *idinfo) {
- if (NULL == idinfo) { // LCOV_EXCL_BR_LINE 6: double check in rpc_lib.c --> RPC_end()
- RPC_LOG_ERR("RpcAllDeleteSrvrPid() : Invalid Param."); // LCOV_EXCL_START 6: double check in rpc_lib.c --> RPC_end()
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- RpcSrvrPidInfo *current = RPC_srvr_pid_head(idinfo);
- while (NULL != current) {
-
- if (0 <= current->wd) {
- inotify_rm_watch(RPC_clnt_inotify_fd(idinfo), current->wd);
- }
-
- RpcSrvrPidInfo *previous = current;
- current = current->next;
-
- rpc_free(previous);
- }
- RPC_srvr_pid_head(idinfo) = NULL;
- return RPC_OK;
-}
-
-/** @brief Logging RPC-API calling process
- *
- * Receive File name, function name and line-number of the client calling API and API-function-name, and logging them.
- *
- * @param filename [IN]Pointer to caller filename string
- * @param funcname [IN]Pointer to caller function-name string
- * @param line [IN]Line-number in the source file of the client
- * @param apiname [IN]Pointer to call-API-function-name string
- * @retval 0: normal completion
- * @retval Otherwise: Fatal error
- */
- int
-RPC_record_dbg_log( const char *filename, const char *funcname, int line,
- const char *apiname ) {
- printf( "[RPC debug log]%s() called from %s() [%s, line %d]\n",
- apiname, funcname, filename, line );
- return 0;
-}
-
-/** @}*/
diff --git a/video_in_hal/otherservice/rpc_library/library/src/rpc_marshall.c b/video_in_hal/otherservice/rpc_library/library/src/rpc_marshall.c
deleted file mode 100755
index 8a4a56a..0000000
--- a/video_in_hal/otherservice/rpc_library/library/src/rpc_marshall.c
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- * @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 rpc_marshall.c
- * @brief RPC Library Internal Implementation--Argument Conversion During API Calls
- *
- */
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netinet/in.h>
-#include <math.h>
-
-#include <other_service/rpc.h>
-#include "rpc_internal.h"
-
-#include "apidef.tab.h"
-#include "apidef.h"
-
-/** @addtogroup RPClib_in
- * @{
- */
-/** Structures for String Add Operations */
-typedef struct {
- char *start;
- char *wp;
- unsigned int units;
- unsigned int remain;
-} RpcString;
-
-#ifdef STRETCH_STRING
-#define _STRING_ALLOC_UNIT 512
-#else
-/*
- * Batch allocate total bytes of arguments + data to be added internally
- * (maximal 6 bytes per argument)
- */
-#define _STRING_ALLOC_UNIT \
- (RPC_MAX_API_ARG_TOTAL_SIZE + RPC_MAX_API_ARG_NUM * (2 + 4))
-#endif
-
-#define _ENOUGH_SPACE_FOR_ALL_TYPES \
- (sizeof(UINT64) > sizeof(double) ? sizeof(UINT64) : sizeof(double))
-
-static RpcString* NewRpcString(void);
-#ifdef STRETCH_STRING
-static int StretchString(RpcString *str, UINT16 bytes);
-#endif
-static char *CopyString(RpcString *str, unsigned int *size);
-static void DestroyString(RpcString *str);
-static inline int AppendString(RpcString *str,
- const UINT8 *append, UINT16 applen);
-static inline int MarshallUINT8(RpcString *str, UINT8 uc);
-static inline int MarshallUINT16(RpcString *str, UINT16 uh);
-static inline int MarshallUINT32(RpcString *str, UINT32 ui);
-static inline int MarshallUINT64(RpcString *str, UINT64 ul);
-static inline int Marshallfloat(RpcString *str, float f);
-static inline int Marshalldouble(RpcString *str, double d);
-static inline int MarshallUINT8Stream(RpcString *str, const UINT8 *buf,
- UINT16 bytes);
-static inline int MarshallString(RpcString *str, char *buf,
- UINT16 bytes);
-static inline int MarshallNullPointer(RpcString *str);
-static inline int MarshallPointer(RpcString *str);
-
-static RpcString *
-NewRpcString(void) {
- RpcString *str;
-
- str = rpc_malloc(sizeof(RpcString));
- if (str == NULL) { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return NULL;
- } // LCOV_EXCL_STOP
-
- str->start = rpc_malloc(_STRING_ALLOC_UNIT);
- if (str->start == NULL) { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- rpc_free(str);
- return NULL;
- } // LCOV_EXCL_STOP
- str->start[0] = '\0';
- str->wp = str->start;
- str->units = 1;
- str->remain = _STRING_ALLOC_UNIT - 1;
-
- return str;
-}
-
-#ifdef STRETCH_STRING
-static int
-StretchString(RpcString *str, UINT16 bytes) {
- unsigned int oldunits = str->units;
- unsigned int units = 1 + (bytes / _STRING_ALLOC_UNIT) + oldunits;
- if (units == oldunits) {
- return 0;
- }
- unsigned int length = str->wp - str->start;
- char *newp = rpc_malloc(units * _STRING_ALLOC_UNIT);
- if (newp == NULL) {
- return -1;
- }
- memcpy(newp, str->start, length);
- rpc_free(str->start);
- str->start = newp;
- str->wp = str->start + length;
- *(str->wp) = '\0';
- str->units = units;
- str->remain += (units - oldunits) * _STRING_ALLOC_UNIT;
- return 0;
-}
-#endif /* STRETCH_STRING */
-
-static inline int
-AppendString(RpcString *str, const UINT8 *append, UINT16 applen) {
- rpc_assert(append != NULL); // LCOV_EXCL_BR_LINE 6: double check
-#ifdef STRETCH_STRING
- if (applen > str->remain) {
- if (StretchString(str, applen - str->remain) < 0) {
- return -1;
- }
- }
-#else
- rpc_assert(applen <= str->remain); // LCOV_EXCL_BR_LINE 6: double check
-#endif
- memcpy(str->wp, append, applen);
- str->wp += applen;
- str->remain -= applen;
- return 0;
-}
-
-static char *
-CopyString(RpcString *str, unsigned int *size) {
- unsigned int length = (unsigned int)(str->wp - str->start);
- char *ret = rpc_malloc(length);
- // LCOV_EXCL_BR_START 5: fail safe for libc malloc
- if (ret == NULL) {
- return NULL;
- }
- // LCOV_EXCL_BR_STOP
- memcpy(ret, str->start, length);
- if (size != NULL) {
- *size = length;
- }
-
- return ret;
-}
-
-static void
-DestroyString(RpcString *str) {
- rpc_free(str->start);
- rpc_free(str);
-}
-
-static inline int
-MarshallUINT8(RpcString *str, UINT8 c) {
- UINT8 buf[1 + sizeof(c)];
- buf[0] = 'C';
- buf[1] = c;
- return AppendString(str, buf, sizeof(buf));
-}
-
-static inline int
-MarshallUINT8Stream(RpcString *str, const UINT8 *buf, UINT16 bytes) {
- int ret = AppendString(str, (const UINT8 *)"B", 1);
- if (ret < 0) { // LCOV_EXCL_BR_LINE 15: inline func rpc_marshall.c
- return -1;
- }
- return AppendString(str, buf, bytes);
-}
-
-static inline int
-MarshallVararrayStream(RpcString *str, const UINT8 *buf, UINT16 bytes) {
- char head_str[1+4+1+1]; /* Area where symbol "V" + size is stored */
- sprintf(head_str, "V%03d ", bytes);
- head_str[1+4+1] = '\0';
-
- if (AppendString(str, (const UINT8 *)head_str, (UINT16)strlen(head_str)) < 0) { // LCOV_EXCL_BR_LINE 15: inline func rpc_marshall.c
- return -1;
- }
-
- if (AppendString(str, buf, bytes) < 0) { // LCOV_EXCL_BR_LINE 15: inline func rpc_marshall.c
- return -1;
- }
- return 0;
-}
-
-static inline int
-MarshallString(RpcString *str, char *buf, UINT16 bytes) {
- char *p = buf;
- UINT16 count = 0;
- /* count the number of bytes in the argument */
- while(*p != '\0' && count < (UINT16)(bytes - 1)) {
- count++;
- p++;
- }
-
- char count_str[1+strlen("1024")+1+1];
- sprintf(count_str, "S%d ", count);
-
- if (AppendString(str, (const UINT8 *)count_str, (UINT16)strlen(count_str)) < 0 || AppendString(str, (const UINT8 *)buf, count) < 0) { // LCOV_EXCL_BR_LINE 11: Unexpected branch // NOLINT(readability/nolint)
- return -1;
- }
- return 0;
-}
-
-static int
-MarshallUINT16(RpcString *str, UINT16 uh) {
- UINT8 buf[1 + sizeof(uh)];
- buf[0] = 'H';
- memcpy(buf + 1, &uh, sizeof(uh));
- return AppendString(str, buf, sizeof(buf));
-}
-
-static inline int
-MarshallUINT32(RpcString *str, UINT32 ui) {
- UINT8 buf[1 + sizeof(ui)];
- buf[0] = 'I';
- memcpy(buf + 1, &ui, sizeof(ui));
- return AppendString(str, buf, sizeof(buf));
-}
-
-static inline int
-Marshallint(RpcString *str, int i) {
- return MarshallUINT32(str, (UINT32)i);
-}
-
-static inline int
-MarshallUINT64(RpcString *str, UINT64 ul) {
- UINT8 buf[1 + sizeof(ul)];
- buf[0] = 'L';
- memcpy(buf + 1, &ul, sizeof(ul));
- return AppendString(str, buf, sizeof(buf));
-}
-
-static inline int
-Marshallfloat(RpcString *str, float f) {
- UINT8 buf[1 + sizeof(f)];
- buf[0] = 'F';
- memcpy(buf + 1, &f, sizeof(f));
- return AppendString(str, buf, sizeof(buf));
-}
-
-static inline int
-Marshalldouble(RpcString *str, double d) {
- UINT8 buf[1 + sizeof(d)];
- buf[0] = 'D';
- memcpy(buf + 1, &d, sizeof(d));
- return AppendString(str, buf, sizeof(buf));
-}
-
-static inline int
-MarshallPointer(RpcString *str) {
- /* only to specify that a non-NULL pointer was delivered */
- return AppendString(str, (const UINT8 *)"P", 1);
-}
-
-static inline int
-MarshallNullPointer(RpcString *str /*, int code*/) {
- return AppendString(str, (const UINT8 *)"N", 1);
-}
-
-/** @ingroup RPClib_in
- */
-
-#define MACROMarshallPointer(TYPE) \
- do { \
- TYPE *p = (TYPE *)temp; \
- error = Marshall##TYPE(str, *p); \
- } while(0)
-
-#define MACROMarshallValue(TYPE, STACK_TYPE) \
- do { \
- TYPE value = (TYPE)va_arg(ap, STACK_TYPE); \
- error = Marshall##TYPE(str, value); \
- } while(0)
-
-char *
-RPC_marshall_arguments(unsigned int *size, int dont_marshall_out_pointer,
- int num_args, ...) {
- rpc_assert(num_args <= RPC_MAX_API_ARG_NUM); // LCOV_EXCL_BR_LINE 6: double check
- va_list ap;
-
- RpcString *str;
- str = NewRpcString();
- if (str == NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return NULL; // LCOV_EXCL_LINE 5: fail safe for libc malloc
- }
-
- va_start(ap, num_args);
-
- int ii, error;
- error = 0;
-
- for(ii = 0 ; ii < num_args && error == 0 ; ii++) {
- unsigned int code, is_vararray, is_pointer, in_out, out_only;
- UINT16 bytes;
- unsigned int val = va_arg(ap, unsigned int);
-
- RPC_marshall_flag flag;
- flag.all = ntohl(val);
- code = flag.bits.code;
- is_vararray = flag.bits.is_vararray;
- is_pointer = flag.bits.is_pointer;
- in_out = flag.bits.in_out;
- bytes = flag.bits.bytes;
- rpc_assert(bytes <= RPC_MAX_API_ARG_SIZE); // LCOV_EXCL_BR_LINE 6: double check
-
-
- out_only = 0;
- if (in_out == RPC_OUT_ARG) { /* OUT only argument */
- out_only = 1;
- }
-
- if (is_pointer) { /* Argument passed by pointer */
-
- void *temp = (void *)va_arg(ap, void *);
- if (temp == NULL) {
- /* NULL pointer */
- error = MarshallNullPointer(str);
- } else if (dont_marshall_out_pointer && out_only) {
- /* Not refer to the contents of a pointer */
- error = MarshallPointer(str);
- } else {/* Marshall the contents of pointers */
- if (is_vararray) {
- /* Variable-length array */
- error = MarshallVararrayStream(str, temp, bytes);
- } else {
- switch(code) {
- case rpc_CHAR:
- case rpc_INT8:
- case rpc_UINT8:
- MACROMarshallPointer(UINT8);
- break;
- case rpc_INT16:
- case rpc_UINT16:
- MACROMarshallPointer(UINT16);
- break;
- case rpc_INT:
- case rpc_SINT:
- case rpc_UINT:
- MACROMarshallPointer(int);
- break;
- case rpc_INT32:
- case rpc_UINT32:
- MACROMarshallPointer(UINT32);
- break;
- case rpc_INT64:
- case rpc_UINT64:
- MACROMarshallPointer(UINT64);
- break;
- case rpc_FLOAT:
- MACROMarshallPointer(float);
- break;
- case rpc_DOUBLE:
- MACROMarshallPointer(double);
- break;
- case rpc_STRING:
- error = MarshallString(str, temp, bytes);
- break;
- case rpc_USER_DEFINED:
- error = MarshallUINT8Stream(str, temp, bytes);
- break;
- default:
- error = -1;
- break;
- }
- }
- }
- } else {/* Argument passed by value */
-
- /* Note: In this area, the code depends on the CPU architecture */
-
- switch(code) {
- case rpc_CHAR:
- case rpc_INT8:
- case rpc_UINT8:
- MACROMarshallValue(UINT8, unsigned int);
- break;
- case rpc_INT16:
- case rpc_UINT16:
- MACROMarshallValue(UINT16, unsigned int);
- break;
- case rpc_INT:
- case rpc_SINT:
- case rpc_UINT:
- MACROMarshallValue(int, int); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_INT32:
- case rpc_UINT32:
- MACROMarshallValue(UINT32, UINT32); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_INT64:
- case rpc_UINT64:
- MACROMarshallValue(UINT64, UINT64); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_FLOAT:
- MACROMarshallValue(float, double); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_DOUBLE:
- MACROMarshallValue(double, double); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_USER_DEFINED:
- rpc_assert(bytes <= sizeof(UINT64));
- /* This area is very architecture-dependent! */
- if (bytes <= sizeof(UINT32)) {
- UINT32 value = (UINT32)va_arg(ap, UINT32); // LCOV_EXCL_BR_LINE 15: macro defined in stdarg.h
- error = MarshallUINT8Stream(str, (UINT8 *)&value, bytes);
- } else if (bytes <= sizeof(UINT64)) { // LCOV_EXCL_BR_LINE 6: double check
- UINT64 value = (UINT64)va_arg(ap, UINT64); // LCOV_EXCL_BR_LINE 15: macro defined in stdarg.h
- error = MarshallUINT8Stream(str, (UINT8 *)&value, bytes);
- }
- break;
- default:
- error = -1;
- break;
- }
- }
- }
- va_end(ap);
-
- if (error != 0) {
- DestroyString(str);
- return NULL;
- }
-
- char *ret = CopyString(str, size);
- DestroyString(str);
- return ret;
-}
-
-static inline int DeMarshallUINT8(const char *from, UINT8 *ucp);
-static inline int DeMarshallUINT16(const char *from, UINT16 *uhp);
-static inline int DeMarshallUINT32(const char *from, UINT32 *uip);
-static inline int DeMarshallUINT64(const char *from, UINT64 *ulp);
-static inline int DeMarshallfloat(const char *from, float *fp);
-static inline int DeMarshalldouble(const char *from, double *dp);
-static inline int DeMarshallUINT8Stream(const char *from, UINT8 *buffer,
- UINT16 bytes);
-static inline int DeMarshallString(const char *from, char *buffer,
- UINT16 bytes);
-
-static inline int
-DeMarshallUINT8(const char *from, UINT8 *ucp) {
- if (*from == 'C') {
- *ucp = *(UINT8 *)(from + 1);
- return 1 + sizeof(*ucp);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshallUINT16(const char *from, UINT16 *uhp) {
- if (*from == 'H') {
- memcpy(uhp, from + 1, sizeof(*uhp));
- return 1 + sizeof(*uhp);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshallUINT32(const char *from, UINT32 *uip) {
- if (*from == 'I') {
- memcpy(uip, from + 1, sizeof(*uip));
- return 1 + sizeof(*uip);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshallint(const char *from, int *ip) {
- return DeMarshallUINT32(from, (UINT32 *)ip);
-}
-
-static inline int
-DeMarshallUINT64(const char *from, UINT64 *ulp) {
- if (*from == 'L') {
- memcpy(ulp, from + 1, sizeof(*ulp));
- return 1 + sizeof(*ulp);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshallfloat(const char *from, float *fp) {
- if (*from == 'F') {
- memcpy(fp, from + 1, sizeof(*fp));
- return 1 + sizeof(*fp);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshalldouble(const char *from, double *dp) {
- if (*from == 'D') {
- memcpy(dp, from + 1, sizeof(*dp));
-
- return 1 + sizeof(*dp);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshallUINT8Stream(const char *from, UINT8 *buffer, UINT16 bytes) {
- if (*from == 'B') {
- memcpy(buffer, from + 1, bytes);
- return (int)(1 + bytes);
- } else {
- return -1;
- }
-}
-
-static inline int
-DeMarshallString(const char *from, char *buffer, UINT16 bytes) {
- if (*from == 'S') {
- char *start;
- long len = strtol(from + 1, &start, 10);
- if (len < 0 || len >= bytes) { // LCOV_EXCL_BR_LINE 5: fail safe for libc strtol
- return -1;
- }
- start++; /* skip ' ' */
- int skip = (int)(start - from);
- memcpy(buffer, start, (size_t)len);
- buffer[len] = '\0';
- return skip + (int)len;
- } else {
- return -1;
- }
-}
-
-/* Variable-length array data */
-static inline int
-DemarshallVararrayInfo(const char *from, UINT16 *bytes/* OUT */) {
- if (*from == 'V') {
- char *end;
- long len = strtol((char *)(from + 1), &end, 10);
- if (len <= 0 || len > RPC_MAX_API_ARG_SIZE) { // LCOV_EXCL_BR_LINE 5: fail safe for libc strtol
- return -1;
- }
- *bytes = (UINT16)len;
- return (int)(end - from + 1); /* skip ' ' */
- } else {
- return -1;
- }
-}
-
-/** @ingroup RPClib_in
- */
-
-#define MACRODemarshall(TYPE) \
- do {\
- TYPE *p; \
- if (need_alloc && is_pointer) { \
- p = rpc_malloc(sizeof(TYPE)); \
- *(TYPE **)temp = p; \
- } else { \
- p = (TYPE *)temp; \
- } \
- if (p != NULL) { \
- ret = DeMarshall##TYPE(from, p); \
- } \
- } while(0)
-
-int
-RPC_demarshall_arguments(const char *from, unsigned int size,
- int need_alloc, int num_args, ...) {
- rpc_assert(num_args <= RPC_MAX_API_ARG_NUM); // LCOV_EXCL_BR_LINE 6: double check
- va_list ap;
- va_start(ap, num_args);
-
- int ii, error;
- error = 0;
- int remain_len = (int)size;
-
- for(ii = 0 ; ii < num_args && error == 0 && remain_len > 0 ; ii++) {
- unsigned int code, is_pointer, is_vararray;
- UINT16 bytes;
- unsigned int val = va_arg(ap, unsigned int);
- RPC_marshall_flag flag;
- flag.all = ntohl(val);
- code = flag.bits.code;
- is_vararray = flag.bits.is_vararray;
- is_pointer = flag.bits.is_pointer;
- bytes = flag.bits.bytes;
- rpc_assert(bytes <= RPC_MAX_API_ARG_SIZE); // LCOV_EXCL_BR_LINE 6: double check
-
-
- void *temp = va_arg(ap, void *);
- int ret = -1;
-
- if (*from == 'N') { /* NULL pointer */
- if (bytes > 0 || is_pointer != 0) {
- if (need_alloc) {
- *(void **)temp = NULL;
- } else {
- /* do nothing */
- }
- ret = 1;
- }
- } else if (*from == 'P') { /* Pointer(no content) */
- if (need_alloc) {
- if (bytes > 0) { /* String type or user-defined type */
- *(void **)temp = rpc_malloc(bytes);
- } else if (is_pointer != 0) { /* Other pointers */
- *(void **)temp = rpc_malloc(_ENOUGH_SPACE_FOR_ALL_TYPES);
- }
- ret = 1;
- }
- } else { /* non-NULL pointer */
- if ( is_vararray ) { /* Variable-length array */
- ret = DemarshallVararrayInfo(from, &bytes);
- if( ret < 0 ) {
- va_end(ap);
- return -1; /* pgr0524 */
- }
- char *p;
- if (need_alloc) {
- p = rpc_malloc(sizeof(char)*bytes);
- *(char **)temp = p;
- } else {
- p = (char *)temp; /* pgr0524 */
- }
- if (p != NULL) {
- memcpy(p, from + ret, bytes);
- ret += bytes;
- }
- } else {
- switch(code) {
- case rpc_CHAR:
- case rpc_INT8:
- case rpc_UINT8:
- MACRODemarshall(UINT8); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_INT16:
- case rpc_UINT16:
- MACRODemarshall(UINT16); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_INT:
- case rpc_SINT:
- case rpc_UINT:
- MACRODemarshall(int); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_INT32:
- case rpc_UINT32:
- MACRODemarshall(UINT32); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_INT64:
- case rpc_UINT64:
- MACRODemarshall(UINT64); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_FLOAT:
- MACRODemarshall(float); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_DOUBLE:
- MACRODemarshall(double); /* pgr0524 */ // LCOV_EXCL_BR_LINE 15: marco defined in rpc_marshall.c
- break;
- case rpc_USER_DEFINED: {
- UINT8 *p;
- if (need_alloc && is_pointer) {
- p = rpc_malloc(bytes);
- *(UINT8 **)temp = p;
- } else {
- p = (UINT8 *)temp; /* pgr0524 */
- }
- if (p != NULL) {
- ret = DeMarshallUINT8Stream(from, p, bytes);
- }
- break;
- }
- case rpc_STRING: {
- char *p;
- if (need_alloc) {
- p = rpc_malloc(sizeof(char)*bytes);
- *(char **)temp = p;
- } else {
- p = (char *)temp; /* pgr0524 */
- }
- if (p != NULL) {
- ret = DeMarshallString(from, p, bytes);
- }
- break;
- }
- default:
- break;
- }
- }
- }
- if (ret < 0) {
- error = 1;
- } else {
- remain_len -= ret;
- from += ret;
- }
- }
- va_end(ap);
-
- if (error) {
- return -1; /* pgr0524 */
- } else {
- return 0; /* pgr0524 */
- }
-}
-
-void
-RPC_marshall_free(int num, ...) {
- va_list ap;
- va_start(ap, num);
-
- int i;
- for(i = 0 ; i < num ; i++) {
- void *ptr = va_arg(ap, void *); // LCOV_EXCL_BR_LINE 15: macro defined in stdarg.h
- if (ptr != NULL) {
- rpc_free(ptr);
- }
- }
- va_end(ap);
-}
diff --git a/video_in_hal/otherservice/rpc_library/library/src/rpc_thread.c b/video_in_hal/otherservice/rpc_library/library/src/rpc_thread.c
deleted file mode 100755
index df0f746..0000000
--- a/video_in_hal/otherservice/rpc_library/library/src/rpc_thread.c
+++ /dev/null
@@ -1,1224 +0,0 @@
-/*
- * @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 rpc_thread.c
- * @brief RPC Library Internal Implementation--Processing of Internally Generated Threads
- *
- */
-/** @addtogroup RPClib_in */
-/** @{ */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <malloc.h>
-#include <fcntl.h>
-#include <sys/time.h>
-#include <sys/select.h>
-#include <sys/poll.h>
-#include <sys/prctl.h>
-
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <sys/inotify.h>
-
-#include <other_service/rpc.h>
-#include "rpc_internal.h"
-
-#include <native_service/cl_monitor.h>
-#include <native_service/cl_process.h>
-
-/** Sub-threads that wake up in the RPC library */
-static RpcThreadInfo *Thread_info[RPC_MAX_THREADS_IN_PROCESS];
-static int Num_thread_info;
-pthread_t g_rpc_thread = RPC_NO_THREAD;
-UINT32 g_rpc_thread_alive;/**< Sub-thread running */
-
-#define RPC_MAGIC_ID (('R'<<24)|('P'<<16)|('C'<<8)|'L')
-
-/** Pipes used for communication with sub-threads
- * Read: Main thread, Write: Sub-thread */
-int g_rpc_pipe_main_sub[2] = { -1, -1 };
-
-static pthread_mutex_t process_global_mutex = PTHREAD_MUTEX_INITIALIZER;
-#define PROCESS_MUTEX_LOCK rpc_mutex_lock(&process_global_mutex)
-#define PROCESS_MUTEX_UNLOCK rpc_mutex_unlock(&process_global_mutex)
-
-static void *RpcThreadMain(void *ptr);
-static void NotifyMainThread(RpcThreadInfo *th);
-
-static void KillRpcThread(void);
-static void NotifyAddServer(RpcThreadInfo *th);
-static void NotifyRemoveServer(RpcThreadInfo *th);
-
-static RPC_Result RpcRegistSockName(RpcIdInfo *idinfo, char *client_sock_name, const struct ucred *cr, int wd);
-static RPC_Result RpcCheckSockName(RpcIdInfo *idinfo, RPC_ID client_id);
-static RPC_Result RpcDeleteSockName(RpcIdInfo *idinfo, int wd);
-static RPC_Result RpcAllDeleteSockName(RpcIdInfo *idinfo, int inotify_fd);
-static RPC_Result RpcCheckClientCredential(RpcIdInfo *idinfo, const struct ucred *cr);
-
-#define RPC_SUB_THREAD_WAIT_SEC 5
-
-#define WAIT_FOR_SUB_THREAD(loop_cond, sec) \
-{ \
- struct timeval timeout; \
- timeout.tv_sec = sec; \
- timeout.tv_usec = 0; \
- \
- int fd = RPC_pipe_sub_main(th)[PIPE_READ]; \
- fd_set fds; \
- \
- while((loop_cond)) { \
- FD_ZERO(&fds); \
- FD_SET(fd, &fds); \
- int sret = select(fd + 1, &fds, NULL, NULL, &timeout); \
- if (sret < 0 && errno == EINTR) { \
- continue; \
- } else if (sret > 0 && FD_ISSET(fd, &fds)) { \
- char c; \
- read(fd, &c, sizeof(c)); \
- } else { \
- break; \
- } \
- } \
-}
-
-RUNS_IN_CALLERS_THREAD
- RpcThreadInfo *
-RpcMyThreadInfo(void) {
- RpcThreadInfo *ret = NULL;
- int i;
- pthread_t me = pthread_self();
-
- PROCESS_MUTEX_LOCK;
- for(i = 0; i < RPC_MAX_THREADS_IN_PROCESS ; i++) {
- if (Thread_info[i] != NULL
- && pthread_equal(Thread_info[i]->thread, me)) {
- ret = Thread_info[i];
- break;
- }
- }
- PROCESS_MUTEX_UNLOCK;
- return ret;
-}
-
-RUNS_IN_CALLERS_THREAD
- RpcThreadInfo *
-RpcCreateThreadInfo(void) {
- int i;
- pthread_t me = pthread_self();
-
- PROCESS_MUTEX_LOCK;
- /* Look for a free slot to store the thread info pointer */
- for(i = 0; i < RPC_MAX_THREADS_IN_PROCESS ; i++) {
- if (Thread_info[i] != NULL) {
- if (pthread_equal(Thread_info[i]->thread, me)) { // LCOV_EXCL_BR_LINE 6: double check
- PROCESS_MUTEX_UNLOCK; // LCOV_EXCL_START 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return Thread_info[i];
- } // LCOV_EXCL_STOP
- } else {
- break;
- }
- }
-
- if (i == RPC_MAX_THREADS_IN_PROCESS) {
- PROCESS_MUTEX_UNLOCK;
- //CONFIG_ASSERT("Must increase RPC_MAX_THREADS_IN_PROCESS");
- RPC_LOG_ERR("Must increase RPC_MAX_THREADS_IN_PROCESS");
- return NULL;
- }
-
- /* Allocate area for thread info */
- // Because there is a timing when the server sub-thread is accessed without being initialized,
- // corrected so as to fill up to 0 in the MUTEX.
- RpcThreadInfo *th = rpc_malloc(sizeof(*th));
- if (th != NULL) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- memset(th, 0, sizeof(*th));
- Thread_info[i] = th;
- th->magic = RPC_MAGIC_ID;
- Num_thread_info++;
- }
- PROCESS_MUTEX_UNLOCK;
-
- if (th == NULL) { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("Can't alloc thread_info.");
- return NULL;
- } // LCOV_EXCL_STOP
-
- /* Initializing Thread Info */
- th->thread = me;
- pthread_mutex_init(&(th->th_mtx), NULL);
- th->sequence_number = RPC_SEQ_NUM_START;
-
- return th;
-}
-
-/*
- * check if the allocated client ID conflicts with the server ID
- * of the same thread
- */
- static int
-RpcCheckIdConflict(RpcThreadInfo *th, RPC_ID id) {
- RpcIdInfo *idinfo;
- idinfo = RPC_srvr_idinfo(th);
- if (idinfo != NULL && RPC_my_id(idinfo) == id) { // LCOV_EXCL_START 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return 1;
- } // LCOV_EXCL_STOP
- return 0;
-}
-
-/** Adding IDs with RPC_start()
- *
- * - Main: Create and initialize structures and tell sub-threads to add
- * - Sub: Add pointer to thread info (RpcThreadInfo) and notify it to the main process
- * - The main process waits for this procedure to finish.
- * Use id_info->thread_info to determine completion (completed if not NULL)
- */
-RUNS_IN_CALLERS_THREAD
- int
-RpcCreateIdInfo(RpcThreadInfo *th,
- RPC_ID id, RPC_dispatch_func_t dispatch, INT32 secure_check) {
- RpcIdInfo *id_info = rpc_malloc(sizeof(*id_info));
- if (id_info == NULL) { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return -1;
- } // LCOV_EXCL_STOP
- memset(id_info, 0, sizeof(*id_info));
-
- /*
- * Creates a Unix domain socket based on a given number of ports
- */
-#if defined(RPC_USE_UNIX_AUTOBIND)
- int sock_un = -1, secure_sock_un = -1;
- socklen_t sa_len;
- struct sockaddr_un sa_un;
-
-get_id_retry:
- sock_un = socket(PF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); /* Datagram socket for receiving API requests */
- if (sock_un < 0) {
- RPC_LOG_PERROR("socket");
- goto error;
- }
- SET_NONBLOCK(sock_un);
- SET_CLOSE_ON_EXEC(sock_un);
-
- /*
- * Naming Rules for Unix domain Sockets
- * Server:(ID=50000-59999)
- * sa_un.sun_path[0] = 0x00;
- * sa_un.sun_path[1] = 'S';
- * sa_un.sun_path[2-5] = sprintf("%04x", ID);
- *
- * Client:(ID=1-0xfffff)
- * sa_un.sun_path[0] = 0x00;
- * sa_un.sun_path[1-5] = sprintf("%05x", ID);
- * ID is autobind by kernel during bind(see linux/net/unix/af_unix.c)
- * ! Since it depends on the unix socket implementations of Linux, be careful when porting to other operating systems.
- *
- * ID=50000-59999 is duplicated in Server and Client,
- * but generated it according to the above rules when sent in the RPClib (see rpc_udp.c)
- *
- * Because file deletion is leaked when the system is forcibly terminated and abnormal process termination
- * by a traditional way to create and bind files under /tmp/RPC/,
- * change to the above method(2009.02.04,2012.01.21)
- */
- memset(&sa_un, 0, sizeof(sa_un));
- sa_un.sun_family = AF_UNIX;
- if (dispatch != NULL) { // server
- RpcSetServerName(sa_un.sun_path, id);
- sa_len = sizeof(sa_un.sun_family) + SOCK_NAME_LEN;
- } else { // client
- // Automatically assign name (ID) by unix_autobind()
- sa_len = sizeof(sa_un.sun_family);
- }
-
-#else /* !AUTOBIND */
- int sock_un = -1;
- struct sockaddr_un sa_un;
- sa_un.sun_family = AF_UNIX;
- rpc_set_socket_name(sa_un.sun_path, id);
- sock_un = socket(PF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
- if (sock_un < 0) {
- RPC_LOG_PERROR("socket(unix)");
- goto error;
- }
- SET_NONBLOCK(sock_un);
- SET_CLOSE_ON_EXEC(sock_un);
- unlink(sa_un.sun_path);
- sa_len = sizeof(sa_un);
-#endif /* !AUTOBIND */
- if (bind(sock_un, (struct sockaddr *)&sa_un, sa_len) < 0) {
- RPC_LOG_PERROR("DGRAM : bind(unix), ID:%#x", id);
- goto error;
- }
-
-#if defined(RPC_USE_UNIX_AUTOBIND)
- if (dispatch == NULL) { // client
- // Retrieves the assigned name (ID)
- socklen_t len = sizeof(sa_un);
- if (getsockname(sock_un, (struct sockaddr *)&sa_un, &len) < 0) {
- perror("getsockname");
- goto error;
- }
- RpcGetClientName(sa_un.sun_path, &id);
- if (RpcCheckIdConflict(th, id)) { // LCOV_EXCL_BR_LINE 8: dead code, RpcCheckIdConflict always is false
- // LCOV_EXCL_START 8: dead code, RpcCheckIdConflict always is false
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_STATE("ID %d conflicts with server -- get next one", id);
- close(sock_un);
- goto get_id_retry;
- } // LCOV_EXCL_STOP
- RPC_LOG_DEBUG("client %s", sa_un.sun_path + 1);
- }
-#endif /* AUTOBIND */
-
- id_info->port = id;
- id_info->sock = sock_un;
-
- if (dispatch != NULL) { /* server */
- rpc_assert(th->srvr_id == NULL); // LCOV_EXCL_BR_LINE 6: double check
- RpcApicallInfo *apicall = rpc_malloc(sizeof(*apicall));
- if (apicall == NULL) { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- goto error;
- } // LCOV_EXCL_STOP
-
- /* Create Socket for Authentication */
- socklen_t secure_sa_len;
- struct sockaddr_un secure_sa_un;
-
- secure_sock_un = socket(PF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); /* stream socket for authentication */
- if (secure_sock_un < 0) {
- RPC_LOG_PERROR("socket");
- rpc_free(apicall);
- apicall = NULL;
- goto error;
- }
- SET_NONBLOCK(secure_sock_un);
- SET_CLOSE_ON_EXEC(secure_sock_un);
-
- memset(&secure_sa_un, 0, sizeof(secure_sa_un));
- secure_sa_un.sun_family = AF_UNIX;
- RpcSetServerSecureName(secure_sa_un.sun_path, id);
- secure_sa_len = sizeof(secure_sa_un.sun_family) + SECURE_SOCK_NAME_LEN;
-
- /* Bind socket for authentication */
- if (bind(secure_sock_un, (struct sockaddr *)&secure_sa_un, secure_sa_len) < 0) {
- RPC_LOG_PERROR("STREAM : bind(unix), ID:%#x", id);
- rpc_free(apicall);
- apicall = NULL;
- goto error;
- }
-
- id_info->secure_sock = secure_sock_un;
-
- memset(apicall, 0, sizeof(*apicall));
- apicall->dispatch_func = dispatch;
- apicall->pipe_sub_main[PIPE_READ] = -1;
- apicall->pipe_sub_main[PIPE_WRITE] = -1;
- apicall->timeout_sec = 30; /* Server API processing timeout */
- apicall->secure_check = secure_check; /* Authentication check by UID list */
- if (NEED_SECURE_CHECK == secure_check) { /* Initializes the UID list with not-registered if secured given. */
- apicall->regist_credential_info = NO_REGISTERED;
- }
- apicall->sock_info_head = NULL; /* Leading Node of Source Client Socket Info */
- apicall->client_sock_name_num = 0; /* Number of elements in the source client's socket name list */
- apicall->in_process_client = RPC_NO_PORT; /* Client RPC_ID during API processing */
-
- id_info->apicall = apicall;
- th->srvr_id = id_info;
-
- /* Creating a pipe for communication pipe from sub-thread to main-thread direction */
- if (pipe(apicall->pipe_sub_main) != 0) {
- RPC_LOG_PERROR("pipe");
- goto error;
- }
- SET_NONBLOCK(apicall->pipe_sub_main[PIPE_READ]);
- SET_CLOSE_ON_EXEC(apicall->pipe_sub_main[PIPE_READ]);
- SET_NONBLOCK(apicall->pipe_sub_main[PIPE_WRITE]);
- SET_CLOSE_ON_EXEC(apicall->pipe_sub_main[PIPE_WRITE]);
-
- PROCESS_MUTEX_LOCK;
- if (g_rpc_thread == RPC_NO_THREAD) { /* There are no sub-threads. */
- /* Creating a pipe for communication from main-thread to sub-thread direction */
- if (pipe(g_rpc_pipe_main_sub) != 0) {
- RPC_LOG_PERROR("pipe");
- PROCESS_MUTEX_UNLOCK;
- goto error;
- }
-
- SET_NONBLOCK(g_rpc_pipe_main_sub[PIPE_READ]);
- SET_CLOSE_ON_EXEC(g_rpc_pipe_main_sub[PIPE_READ]);
- SET_NONBLOCK(g_rpc_pipe_main_sub[PIPE_WRITE]);
- SET_CLOSE_ON_EXEC(g_rpc_pipe_main_sub[PIPE_WRITE]);
-
- /* Creating sub-thread */
- pthread_t read_th;
- if (pthread_create(&read_th, NULL, RpcThreadMain, 0) != 0) {
- RPC_LOG_PERROR("pthread_create");
- PROCESS_MUTEX_UNLOCK;
- goto error;
- }
- g_rpc_thread = read_th;
- }
- PROCESS_MUTEX_UNLOCK;
-
- /* Instruct a sub-thread to add and wait for completion */
- NotifyAddServer(th);
- // LCOV_EXCL_BR_START 15: macro define in rpc_thread.c
- WAIT_FOR_SUB_THREAD((th->srvr_id->thread_info == NULL),
- RPC_SUB_THREAD_WAIT_SEC);
- // LCOV_EXCL_BR_STOP
- rpc_assert(th->srvr_id->thread_info != NULL); // LCOV_EXCL_BR_LINE 6: double check
-
- } else { /* dispatch == NULL => client */
- id_info->count = 1;
- id_info->thread_info = th;
- th->clnt_id = id_info;
- }
- return 0; /* pgr0524 */
-
-error:
- if (g_rpc_pipe_main_sub[PIPE_READ] >= 0) { // LCOV_EXCL_BR_LINE 5: fail safe for libc socket
- close(g_rpc_pipe_main_sub[PIPE_READ]);
- }
- if (g_rpc_pipe_main_sub[PIPE_WRITE] >= 0) { // LCOV_EXCL_BR_LINE 5: fail safe for libc socket
- close(g_rpc_pipe_main_sub[PIPE_WRITE]);
- }
- if (id_info->apicall != NULL) {
- if (id_info->apicall->pipe_sub_main[PIPE_READ] >= 0) {
- close(id_info->apicall->pipe_sub_main[PIPE_READ]);
- }
- if (id_info->apicall->pipe_sub_main[PIPE_WRITE] >= 0) {
- close(id_info->apicall->pipe_sub_main[PIPE_WRITE]);
- }
- rpc_free(id_info->apicall);
- }
- if (sock_un != -1) {
- close(sock_un);
-#if !defined(RPC_USE_UNIX_AUTOBIND)
- unlink(sa_un.sun_path);
-#endif /* !AUTOBIND */
- }
- if (secure_sock_un != -1) {
- close(secure_sock_un);
-#if !defined(RPC_USE_UNIX_AUTOBIND)
- unlink(secure_sa_un.sun_path);
-#endif /* !AUTOBIND */
- }
- rpc_free(id_info);
- th->srvr_id = NULL;
- return -1; /* pgr0524 */
-}
-
-/*
- * Notify an unfinished request of an error at server termination (RPC_end).
- */
- static void
-RpcSendErrorToPendingRequest(RpcThreadInfo *th, RpcIdInfo *idinfo) {
- UINT16 api_num;
- RPC_ID client;
- char *args_string;
- unsigned int args_size;
- rpc_send_buf sendbuf;
- char retcode[10];
-
- do {
- api_num = RpcGetAPIRequest(idinfo, &client,
- &args_string, &args_size);
- if (api_num > 0) { /* API calls are queued */
-
- sprintf(retcode, "%08x ", RPC_ERR_Fatal);
- sendbuf.buf = retcode;
- sendbuf.bytes = sizeof(retcode) - 1;
- RpcSendUdp2(idinfo, client, RPC_SEND_TO_CLIENT,
- RPC_PACKET_APIRETURN, 1, &sendbuf);
- RPC_LOG_STATE("sent error result to pending client %05x", client);
- RpcFreeAPIArgsString(args_string);
- }
- } while(api_num > 0);
-}
-
-/*
- * Notify unfinished request of deadlock when deadlock of the server is detected.
- */
- static void
-RpcSendDeadlockToPendingRequest(RpcThreadInfo *th, RpcIdInfo *idinfo) {
- UINT16 api_num;
- RPC_ID client;
- char *args_string;
- unsigned int args_size;
- rpc_send_buf sendbuf;
- char retcode[10];
-
- do {
- api_num = RpcGetAPIRequest(idinfo, &client,
- &args_string, &args_size);
- if (api_num > 0) { /* API calls are queued */
-
- sprintf(retcode, "%08x ", RPC_ERR_Server_DeadLock);
- sendbuf.buf = retcode;
- sendbuf.bytes = sizeof(retcode) - 1;
- RpcSendUdp2(idinfo, client, RPC_SEND_TO_CLIENT,
- RPC_PACKET_APIRETURN, 1, &sendbuf);
- RPC_LOG_STATE("sent deadlock result to pending client %05x", client);
- RpcFreeAPIArgsString(args_string);
- }
- } while(api_num > 0);
-
- if (RPC_NO_PORT != RPC_apicall_in_process_client(idinfo)) {
- sprintf(retcode, "%08x ", RPC_ERR_Server_DeadLock);
- sendbuf.buf = retcode;
- sendbuf.bytes = sizeof(retcode) - 1;
- RpcSendUdp2(idinfo, RPC_apicall_in_process_client(idinfo), RPC_SEND_TO_CLIENT,
- RPC_PACKET_APIRETURN, 1, &sendbuf);
- RPC_LOG_STATE("sent deadlock result to pending client %05x", RPC_apicall_in_process_client(idinfo));
- RPC_apicall_in_process_client(idinfo) = RPC_NO_PORT;
- }
-}
-
-/** Delete RPC_ID Info by RPC_end()
- *
- * - Main: Notify sub of deletion of RPC_ID info.
- * - Sub: Delete a pointer from thread info (RpcThreadInfo) and notify main of that.
- * - Main waits for this procedure to finish.
- * Use id_info->thread_info to determine completion (completed if NULL).
- * Then, release the memory related to RPC_ID info and close the socket.
- */
-RUNS_IN_CALLERS_THREAD
- void
-RpcDestroyIdInfo(RpcThreadInfo *th, RpcIdInfo *id_info) {
- rpc_assert(id_info->count == 0); // LCOV_EXCL_BR_LINE 6: double check
- if (id_info->apicall) {
- if (g_rpc_thread_alive != 0) {
- NotifyRemoveServer(th);
- /* Wait for a sub-thread to recognize IDinfo deletion */
- // LCOV_EXCL_BR_LINE 15: macro define in rpc_thread.c
- WAIT_FOR_SUB_THREAD((th->srvr_id->thread_info != NULL),
- RPC_SUB_THREAD_WAIT_SEC);
- // LCOV_EXCL_BR_STOP
- rpc_assert(th->srvr_id->thread_info == NULL); /* not recognized yet */ // LCOV_EXCL_BR_LINE 6: double check
- }
-
- if (id_info->apicall->pipe_sub_main[PIPE_READ] >= 0) {
- close(id_info->apicall->pipe_sub_main[PIPE_READ]);
- }
- if (id_info->apicall->pipe_sub_main[PIPE_WRITE] >= 0) {
- close(id_info->apicall->pipe_sub_main[PIPE_WRITE]);
- }
- if (id_info->secure_sock >= 0) {
- close(id_info->secure_sock);
- }
- rpc_free(id_info->apicall);
- th->srvr_id = NULL;
- } else {
- th->clnt_id = NULL;
- }
- rpc_free(id_info);
-}
-
-RUNS_IN_CALLERS_THREAD
- void
-RpcDestroyThreadInfo(void) {
- unsigned int i;
- RpcThreadInfo *th = RpcMyThreadInfo();
- if (th == NULL) {
- return;
- }
-
- RPC_THREAD_MUTEX_LOCK(th);
- if (th->thread == RPC_NO_THREAD) { // LCOV_EXCL_BR_LINE 6: double check
- RPC_THREAD_MUTEX_UNLOCK(th); // LCOV_EXCL_START 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return;
- } // LCOV_EXCL_STOP
- th->thread = RPC_NO_THREAD;
- RPC_THREAD_MUTEX_UNLOCK(th);
-
- PROCESS_MUTEX_LOCK;
- /*
- * Remove the pointer from the global variable.
- * Subsequent calls to RpcMyThreadInfo() return NULL
- */
- for(i = 0; i < RPC_MAX_THREADS_IN_PROCESS ; i++) {
- if (th == Thread_info[i]) {
- Thread_info[i] = NULL;
- Num_thread_info--;
- break;
- }
- }
- PROCESS_MUTEX_UNLOCK;
- BUG_ASSERT(i < RPC_MAX_THREADS_IN_PROCESS, "No info in Thread_info[]"); // LCOV_EXCL_BR_LINE 15: marco defined in rpc_internal.h
-
- if (Num_thread_info == 0 && g_rpc_thread_alive != 0) {
- KillRpcThread();
- char name[32];
- prctl(PR_GET_NAME, name);
- RPC_LOG_DEBUG("[%s]waiting for sub thread to join...", name);
- pthread_join(g_rpc_thread, NULL);
- RPC_LOG_DEBUG("[%s]sub thread joined.", name);
- g_rpc_thread = RPC_NO_THREAD; /* bug fix */
- rpc_assert(g_rpc_thread_alive == 0); // LCOV_EXCL_BR_LINE 6: double check
- close(g_rpc_pipe_main_sub[PIPE_READ]);
- close(g_rpc_pipe_main_sub[PIPE_WRITE]);
- }
-
- if (th->srvr_id != NULL) { // LCOV_EXCL_BR_LINE 6: double check
- RpcDestroyIdInfo(th, th->srvr_id); // LCOV_EXCL_START 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- th->srvr_id = NULL;
- } // LCOV_EXCL_STOP
- if (th->clnt_id != NULL) { // LCOV_EXCL_BR_LINE 6: double check
- RpcDestroyIdInfo(th, th->clnt_id); // LCOV_EXCL_START 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- th->clnt_id = NULL;
- } // LCOV_EXCL_STOP
-
- pthread_mutex_destroy(&(th->th_mtx));
- rpc_free(th);
-}
-
-#if !defined(RPC_USE_UNIX_AUTOBIND)
-/**
- * Sub-function of RPC_end_all()
- *
- * Assuming releasing memory and closing the socket are processing at immediately after the end of the process,
- * Suppress socket file leaks by only deleting socket files because to avoid deadlocks and shorten the time
- * by exclusive processing.
- */
- void
-RpcUnlinkSocketFiles(void) {
- int i;
- char sock_name[16];
-
- for(i = 0; i < RPC_MAX_THREADS_IN_PROCESS ; i++) {
- RpcThreadInfo *th = Thread_info[i];
- if (th != NULL) {
- if (th->srvr_id != NULL) {
- rpc_set_socket_name(sock_name, RPC_port(th->srvr_id));
- RPC_LOG_STATE("unlink srvr %s", sock_name);
- unlink(sock_name);
- }
- if (th->clnt_id != NULL) {
- rpc_set_socket_name(sock_name, RPC_port(th->clnt_id));
- RPC_LOG_STATE("unlink clnt %s", sock_name);
- unlink(sock_name);
- }
- }
- }
-}
-#endif /* !AUTOBIND */
-
-/*
- * Deadlock detection check for servers in the thread
- */
- static void
-RpcDeadlockCheck(RpcThreadInfo** thread_info, unsigned int num_thread_info) {
- struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
-
- unsigned int i = 0;
- for(i = 0 ; i < num_thread_info ; i++) {
- RpcThreadInfo *th = thread_info[i];
- RpcIdInfo *idinfo = th->srvr_id;
- CL_MonitorEntry_t entry;
-
- if (0 == CL_MonitorGetEntry(CL_MONITOR_TYPE_RPC, RPC_port(idinfo), &entry)) {
- if (entry.state == CL_MONITOR_STATE_RUN && entry.timeout <= ts.tv_sec) {
- RPC_LOG_ERR("Time Out : RPC_ID = %#x API_NUM = %#x", entry.id, entry.user_data);
- fprintf(stderr, "Time Out : RPC_ID = %#x API_NUM = %#x\n", entry.id, entry.user_data);
- RpcSendDeadlockToPendingRequest(th, idinfo);
- }
- }
- }
-}
-/** Main functions of the sub-threads (READING THREAD)
-*/
-RUNS_IN_READING_THREAD
- static void *
-RpcThreadMain(void *ptr __attribute__((unused))) {
- struct pollfd wait_files[RPC_MAX_FD_IN_PROCESS];
- RpcThreadInfo *thread_info[RPC_MAX_THREADS_IN_PROCESS];
- unsigned int num_thread_info = 0;
-
- unsigned int poll_num;
- int need_reset_sockfd = 1;
- int normal_exit = 0;
- RPC_Result result;
- unsigned int i, j;
-
- /* Monitoring for clients process with inotify() *//* Monitoring target filename */
- const int inotify_fd = inotify_init1(IN_CLOEXEC); /* fd for process monitoring with inotify() */
-
- UINT8 readbuf[RPC_UDP_PACKET_SIZE];
- memset(readbuf, 0, sizeof(UINT8) * RPC_UDP_PACKET_SIZE);
-
- g_rpc_thread_alive = 1;
-
- CL_MonitorInit(CL_MONITOR_INIT_USER); /* Using the API for Error Monitoring */
-
- // Name the thread created in the RPClib (append "_R")
-#define RPC_APPEND_NAME "_R"
-#ifndef PRF_SIZE_PROCESSNAME
-#define PRF_SIZE_PROCESSNAME 8 /* Limit name length for Profiler Analysis Tools */
-#endif
- {
- char *p, name[32];
- prctl(PR_GET_NAME, name);
- name[PRF_SIZE_PROCESSNAME] = '\0';
- if (strlen(name) + strlen(RPC_APPEND_NAME) > PRF_SIZE_PROCESSNAME) {
- p = name + PRF_SIZE_PROCESSNAME - strlen(RPC_APPEND_NAME);
- } else {
- p = name + strlen(name);
- }
- strcpy(p, RPC_APPEND_NAME);
- prctl(PR_SET_NAME, name);
- }
-
- /* Set the communication pipe with the main thread to poll fd */
- poll_num = 1;
- wait_files[0].fd = g_rpc_pipe_main_sub[PIPE_READ];
- wait_files[0].events = POLLIN;
-
-restart:
- for( ; ; ) {
- if (need_reset_sockfd) {
- /* Set the UDP socket of each RPC_ID to poll fd */
- PROCESS_MUTEX_LOCK;
- for(i = 0, j = 0 ; i < RPC_MAX_THREADS_IN_PROCESS ; i++) {
- if (Thread_info[i] != NULL) {
- if (Thread_info[i]->magic != RPC_MAGIC_ID) { // LCOV_EXCL_BR_LINE 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("Someone(me?) destroyed my area!"); // LCOV_EXCL_LINE 6: double check
- }
- if (Thread_info[i]->srvr_id != NULL
- && Thread_info[i]->srvr_id->thread_info != NULL) {
- thread_info[j] = Thread_info[i];
- j++;
- }
- }
- }
- PROCESS_MUTEX_UNLOCK;
- num_thread_info = j;
-
- poll_num = 1;
- /* Register fd for monitoring with inotify() in poll() */
- wait_files[1].fd = inotify_fd;
- wait_files[1].events = POLLIN;
-
- poll_num = 2;
- for(i = 0 ; i < num_thread_info ; i++) {
- /* Datagram socket for API request */
- wait_files[poll_num].fd = thread_info[i]->srvr_id->sock; /* pgr0000 */
- wait_files[poll_num].events = POLLIN;
- poll_num++;
- // LCOV_EXCL_BR_START 5: fail safe for libc listen
- /* Authentication stream socket */
- if (0 != listen(thread_info[i]->srvr_id->secure_sock, 10)) { /* Number of queues */
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_PERROR("listen(unix)"); // LCOV_EXCL_LINE 5: fail safe for libc listen
- }
- // LCOV_EXCL_BR_STOP
- wait_files[poll_num].fd = thread_info[i]->srvr_id->secure_sock;
- wait_files[poll_num].events = POLLIN;
- poll_num++;
- }
- need_reset_sockfd = 0;
- }
-
- int pollret;
- pollret = poll(wait_files, poll_num, TIMEOUT_FOR_DEADLOCK_CHECK);
-
- int save_errno = errno;
-
- RpcDeadlockCheck(thread_info, num_thread_info);
- if (pollret < 0) { // LCOV_EXCL_BR_LINE 5: fail safe for libc poll
- if (save_errno == EINTR) { // LCOV_EXCL_START 5: fail safe for libc poll
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- continue;
- } else {
- rpc_assert(pollret > 0);
- goto exit_read_thread;
- } // LCOV_EXCL_STOP
- }
-
- /* Commands from the main thread (via pipe) */
- if ((wait_files[0].revents & POLLIN) == POLLIN) {
- char buf[RPC_MAIN_SUB_COMMAND_SIZE];
- long ret, arg;
- int cmd;
- RpcThreadInfo *th;
- ret = read(wait_files[0].fd, buf, sizeof(buf));
- if (ret == sizeof(buf)) {
- sscanf(buf, RPC_MAIN_SUB_COMMANDs, &cmd, &arg);
- switch(cmd) {
- case RPC_COMMAND_ADD_SERVER:
- th = (RpcThreadInfo *)arg;
- th->srvr_id->thread_info = th; /* Indicate the completion of the processing */
- NotifyMainThread(th);
- need_reset_sockfd = 1;
- goto restart;
- break;
-
- case RPC_COMMAND_REMOVE_SERVER:
- th = (RpcThreadInfo *)arg;
- RpcSendErrorToPendingRequest(th, th->srvr_id);
-
- RpcAllDeleteSockName(th->srvr_id, inotify_fd); /* delete client_sock_name_list */
- rpc_free((th->srvr_id)->apicall->uid_list); /* delete uid_list */
- rpc_free((th->srvr_id)->apicall->gid_list); /* delete gid_list */
-
- th->srvr_id->thread_info = NULL;/* Indicate the completion of the processing */
- NotifyMainThread(th);
- need_reset_sockfd = 1;
- goto restart;
- break;
-
- case RPC_COMMAND_EXIT:
- /************ Termination request from the parent thread *************/
- RPC_LOG_DEBUG("Received exit command from main thread.");
- normal_exit = 1;
- goto exit_read_thread;
- break;
- } /* switch */
- } /* if (ret == sizeof(buf)) */
- } /* Complete the processing of commands from the main thread */
-
- /* Client Monitoring Events with inotify() */
- if ((wait_files[1].revents & POLLIN) == POLLIN) {
- UINT32 read_len = 0;
- int length = 0;
- char *buffer;
- buffer = (char *)rpc_malloc(BUF_LEN);
- if (NULL == buffer) {// LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("rpc_malloc() ERROR.");
- goto exit_read_thread;
- } // LCOV_EXCL_STOP
-
- if( (length = (int)read( inotify_fd, buffer, BUF_LEN ) ) < 0 ) { // LCOV_EXCL_START 5: fail safe for libc read
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_PERROR("inotify read() ERROR.");
- rpc_free(buffer);
- buffer = NULL;
- goto exit_read_thread;
- } // LCOV_EXCL_STOP
- while ( read_len < length ) {
- struct inotify_event *event = ( struct inotify_event * )&buffer[read_len];
-
- if ( event->mask & IN_DELETE_SELF ) {/* Terminating a Client Process */
- int i; /* Looping variable */
-
- /* Delete the source socket name from all RpcThreadInfo in the received thread */
- for(i = 0 ; i < num_thread_info ; i++) {
- RpcThreadInfo *th = thread_info[i];
- RpcDeleteSockName(th->srvr_id, event->wd);
- }
- }
- read_len += (UINT32)(EVENT_SIZE + event->len); /* Size of the inotify_event structure */
- }
- rpc_free(buffer);
- goto restart;
- } /* Client Monitoring Events Completed with inotify() */
-
- for(i = 2 ; i < poll_num ; i++) {
- /* Event to the API request datagram socket */
- if ((i % 2 == 0) && ((wait_files[i].revents & POLLIN) == POLLIN)) {
- unsigned int thread_info_num = ((i/2) - 1); /* Compute thread_info[thread_info_num] with events */
- RpcThreadInfo *th = thread_info[thread_info_num]; /* pgr0000 */
- RpcIdInfo *idinfo = th->srvr_id;
- for(;;) {
- /* RPClib packet received */
- int readret = RpcReadUdpPacket(idinfo, readbuf);
- if (readret < 0) { // LCOV_EXCL_BR_LINE 5: fail safe for libc recvfrom
- rpc_assert(readret >= 0); // LCOV_EXCL_START 5: fail safe for libc recvfrom
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- goto exit_read_thread;
- // LCOV_EXCL_STOP
- } else if (readret == 0) {
- break;
- }
- /* successfully read udp packets */
- /* parse the packet and queue events */
- RPC_ID sender = RPC_NO_ID;
- UINT32 seq_num = 0;
- UINT32 size = 0;
- RPC_packet_type command = RPC_PACKET_NONE;
- if (RpcParsePacketHeader((const char *)readbuf, &command, &sender, &seq_num, &size) != RPC_OK) { // LCOV_EXCL_BR_LINE 11: Unexpected branch // NOLINT(readability/nolint)
- goto exit_read_thread;
- }
-
- long int api_num;
- char *buff;
-
- switch(command) {
- case RPC_PACKET_APICALL:
- if (RPC_DEBUG != NULL) { // LCOV_EXCL_BR_LINE 7: debug
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- printf("RPC[%s]: received APIcall\n", RPC_DEBUG); // LCOV_EXCL_LINE 7: debug
- }
- // Return response without queuing for ALIVE query
- api_num = strtol((const char *)(readbuf + RPC_PACKET_HEADER_LEN), NULL, 10);
- if (api_num == RPC_API_NUM_RPC_ALIVE) {
- RpcSendUdpResponse(idinfo, sender, RPC_SEND_TO_CLIENT,
- RPC_RESPONSE_APICALL,
- seq_num, "OK", sizeof("OK"));
- break;
- }
-
- /* Return BUSY if secure and unregistered in UID-list */
- if ((NEED_SECURE_CHECK == RPC_secure_check(idinfo))
- && (NO_REGISTERED == RPC_regist_credential_info(idinfo))) {
- RpcSendUdpResponse(idinfo, sender, RPC_SEND_TO_CLIENT,
- RPC_RESPONSE_APICALL,
- seq_num, "BUSY", sizeof("BUSY"));
- RPC_LOG_ERR("Need UID list register.");
- break;
- }
-
- result = RpcQueueAPIRequestBefore(idinfo, size, (char**)&buff);
- if (result == RPC_OK) {
- /* Check whether the source has been authenticated */
- if(RPC_OK == RpcCheckSockName(idinfo, sender)) { /* Registerd the name of the source socket */
- RpcSendUdpResponse(idinfo, sender, RPC_SEND_TO_CLIENT,
- RPC_RESPONSE_APICALL,
- seq_num, "OK", sizeof("OK"));
- RpcQueueAPIRequestAfter(idinfo, sender,
- (const char *)(readbuf + RPC_PACKET_HEADER_LEN),
- size, buff);
- } else { /* Not registered (in other words, first communication with the source client) */
- /* Authentication request to the client */
- RPC_THREAD_MUTEX_UNLOCK(idinfo->thread_info);
- RpcSendUdpResponse(idinfo, sender, RPC_SEND_TO_CLIENT,
- RPC_RESPONSE_APICALL,
- seq_num, "CERT", sizeof("CERT"));
- rpc_free(buff);
- break;
- }
- } else if (result == RPC_ERR_Busy) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- RpcSendUdpResponse(idinfo, sender, RPC_SEND_TO_CLIENT,
- RPC_RESPONSE_APICALL,
- seq_num, "BUSY", sizeof("BUSY"));
- } else { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RpcSendUdpResponse(idinfo, sender, RPC_SEND_TO_CLIENT,
- RPC_RESPONSE_APICALL,
- seq_num, "ERR", sizeof("ERR"));
- RPC_LOG_ERR("queueing APIcall failed.(%d)", result);
- goto exit_read_thread;
- } // LCOV_EXCL_STOP
- NotifyMainThread(th);
- if (RPC_DEBUG != NULL) { // LCOV_EXCL_BR_LINE 7: debug
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- printf("RPC[%s]: notified APIcall\n", RPC_DEBUG); // LCOV_EXCL_LINE 7: debug
- }
- break;
-
- default:
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- BUG_ASSERT(0, "Unknown UDP packet type"); // LCOV_EXCL_LINE 15: marco defined in rpc_internal.h
- goto exit_read_thread;
- break;
- } /* switch(command) */
- }/* for(;;) */
-
- /* Event to the stream socket for authentication */
- } else if ((i % 2 != 0) && ((wait_files[i].revents & POLLIN) == POLLIN)) {
- unsigned int thread_info_num = ((i-1)/2 - 1); /* Compute thread_info[thread_info_num] with events */
- struct sockaddr_un client_sa_un;
- socklen_t client_len = sizeof(struct sockaddr_un);
- struct ucred cr; /* Structure of client credit info */
- RpcCertifyResult send_ret; /* Authentication result to pass to the client */
- RpcThreadInfo *th = thread_info[thread_info_num];
- RpcIdInfo *idinfo = th->srvr_id;
-
- send_ret.certify_res = CERTIFY_NG;
- send_ret.srvr_pid = 0;
-
- /* Obtain client credit info from a connected socket */
- int accept_sock = accept4(wait_files[i].fd, (struct sockaddr *)&client_sa_un, &client_len, SOCK_CLOEXEC);
- int ret = getsockopt(accept_sock, SOL_SOCKET, SO_PEERCRED, &cr, &client_len);
- if (ret == 0) { // LCOV_EXCL_BR_LINE 5: fail safe for libc getsockopt
- client_sa_un = (struct sockaddr_un )client_sa_un;
- /* Check if UID of client is allowed to communicate */
- if (RPC_OK == RpcCheckClientCredential(idinfo, &cr)) {
-
- /* Obtain the socket name associated with the RPC_ID of the client from the socket info */
- char client_sock_name[SOCK_NAME_LEN];
- RpcGetClientNameFromSock(client_sa_un.sun_path, client_sock_name);
-
- /* Monitoring client processes with inotify */
- char intfy_fname[32];
- snprintf(intfy_fname, sizeof(intfy_fname), CL_INTFY_FILENAME_FORMAT, cr.pid);
- int wd = inotify_add_watch(inotify_fd, intfy_fname, IN_DELETE_SELF);
- if (0 > wd) { // LCOV_EXCL_BR_LINE 5: fail safe for libc inotify_add_watch
- RPC_LOG_STATE("intfy_fname is Not Found [%s].", intfy_fname);
- }
-
- /* Register the source socket name in the management table */
- RpcRegistSockName(idinfo, client_sock_name, &cr, wd);
-
- /* Send server credit info to the client */
- send_ret.certify_res = CERTIFY_OK;
- send_ret.srvr_pid = getpid();
- }
- }
-
- /* Send authentication result to client */
- send(accept_sock, (char*)&send_ret, sizeof(RpcCertifyResult), 0);
- close(accept_sock);
-
- goto restart;
-
- } else if ((wait_files[i].revents & ~POLLIN) != 0) { // LCOV_EXCL_START 5: fail safe for libc poll
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- // POLLERR, etc. on UDP port
- RPC_LOG_STATE("poll error %x", wait_files[i].revents);
-
- if ((wait_files[i].revents & POLLNVAL) == POLLNVAL) {
- need_reset_sockfd = 1;
- goto restart;
- }
- } /* if ((wait_files[i].revents & POLLIN) == POLLIN) */ // LCOV_EXCL_STOP
-
- } /* processing UDP packets finished */
-
- } /* end of forever loop */
-
-exit_read_thread:
-
- g_rpc_thread_alive = 0;
- for(i = 0 ; i < num_thread_info ; i++) { // LCOV_EXCL_BR_LINE 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- NotifyMainThread(thread_info[i]); /* pgr0000 */ // LCOV_EXCL_LINE 6: double check
- }
-
- close(inotify_fd);
-
- if (normal_exit == 0) { // LCOV_EXCL_BR_LINE 6: double check
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_CRIT("sub thread ABNORMALLY exited."); // LCOV_EXCL_LINE 6: double check
- } else {
- RPC_LOG_DEBUG("sub thread normally exited.");
- }
- return NULL;
-}
-
-/* Notification of sub-thread -> main-thread (via pipe) */
-RUNS_IN_READING_THREAD
- static void
-NotifyMainThread(RpcThreadInfo *th) {
- rpc_assert(th->srvr_id->apicall != NULL); // LCOV_EXCL_BR_LINE 6: double check
- char c = 0;
- write(th->srvr_id->apicall->pipe_sub_main[PIPE_WRITE], &c, sizeof(c));
-}
-
-/* Notification of main-thread -> sub-thread(via pipe) */
-/* Termination instruction */
-RUNS_IN_CALLERS_THREAD
- static void
-KillRpcThread(void) {
- char buf[RPC_MAIN_SUB_COMMAND_SIZE];
- sprintf(buf, RPC_MAIN_SUB_COMMAND, RPC_COMMAND_EXIT, (unsigned long)0);
- write(g_rpc_pipe_main_sub[PIPE_WRITE], buf, sizeof(buf));
-}
-
-/* AddRPC_ID */
-RUNS_IN_CALLERS_THREAD
- static void
-NotifyAddServer(RpcThreadInfo *th) {
- char buf[RPC_MAIN_SUB_COMMAND_SIZE];
- sprintf(buf, RPC_MAIN_SUB_COMMAND, RPC_COMMAND_ADD_SERVER,
- (unsigned long)th);
- write(g_rpc_pipe_main_sub[PIPE_WRITE], buf, sizeof(buf));
-}
-
-/* Remove RPC_ID */
-RUNS_IN_CALLERS_THREAD
- static void
-NotifyRemoveServer(RpcThreadInfo *th) {
- char buf[RPC_MAIN_SUB_COMMAND_SIZE];
- sprintf(buf, RPC_MAIN_SUB_COMMAND, RPC_COMMAND_REMOVE_SERVER,
- (unsigned long)th);
- write(g_rpc_pipe_main_sub[PIPE_WRITE], buf, sizeof(buf));
-}
-
-/* Register the socket name of the source client in the management table. */
- static RPC_Result
-RpcRegistSockName(RpcIdInfo *idinfo, char *client_sock_name, const struct ucred *cr, int wd) {
- if ((NULL == idinfo) || (NULL == client_sock_name) || (NULL == cr) || (0 > cr->pid)) { // LCOV_EXCL_BR_LINE 6: void *RpcThreadMain(void *ptr)
- RPC_LOG_ERR("RpcRegistSockName() : Invalid Param."); // LCOV_EXCL_START 6: void *RpcThreadMain(void *ptr)
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- RpcClientSockNameInfo *sock_name_buf, *current;
-
- sock_name_buf = rpc_malloc(sizeof(RpcClientSockNameInfo));
- // LCOV_EXCL_BR_START 5: fail safe for libc malloc
- if( sock_name_buf == NULL ){
- return RPC_ERR_Fatal;
- }
- // LCOV_EXCL_BR_STOP
- strcpy(sock_name_buf->client_sock_name, client_sock_name); /* Socket name */
- sock_name_buf->pid = cr->pid; /* PID */
- sock_name_buf->uid = cr->uid; /* UID */
- sock_name_buf->gid = cr->gid; /* GID */
- sock_name_buf->wd = wd; /* Non-negative inotify monitored descriptors */
- sock_name_buf->next = NULL; /* Pointer to next node (NULL since last node) */
-
- if (0 == RPC_client_sock_name_num(idinfo)) {
- RPC_sock_info_head(idinfo) = sock_name_buf;
- } else {
- for (current = RPC_sock_info_head(idinfo); current->next != NULL; current = current->next)
- ;
- current->next = sock_name_buf;
- }
- RPC_client_sock_name_num_inc(idinfo);
- return RPC_OK;
-}
-
-/* Check if the socket name of the source client is registered in the management table */
- static RPC_Result
-RpcCheckSockName(RpcIdInfo *idinfo, RPC_ID client_id) {
- if ((NULL == idinfo) || (client_id == RPC_NO_ID)) { // LCOV_EXCL_BR_LINE 6: void *RpcThreadMain(void *ptr)
- RPC_LOG_ERR("RpcCheckSockName() : Invalid Param."); // LCOV_EXCL_START 6: void *RpcThreadMain(void *ptr)
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- char buf[7], client_path_name[SOCK_NAME_LEN]; /* Client socket name */
-
- /* Converting client_id to the socket name associated with RPC_ID */
- RpcSetClientName(buf, client_id);
- memcpy(client_path_name, buf + 1, 5);
- client_path_name[5] = '\0';
- RpcClientSockNameInfo *current = RPC_sock_info_head(idinfo);
-
- /* Search source socket name in management table */
- while (NULL != current) {
- if (0 == strcmp(current->client_sock_name, client_path_name)) { /* Registered socket name (authenticated) */
- return RPC_OK;
- }
- current = current->next;
- }
- return RPC_ERR_Fatal; /* Not registerd socket name (unauthenticated) */
-}
-
-/* Remove source client socket name from management table */
- static RPC_Result
-RpcDeleteSockName(RpcIdInfo *idinfo, int wd) {
- if ((NULL == idinfo) || (0 > wd)) {
- RPC_LOG_ERR("RpcDeleteSockName() : Invalid Param.");
- return RPC_ERR_Fatal;
- }
-
- RpcClientSockNameInfo *current, *previous;
- current = RPC_sock_info_head(idinfo);
- previous = current;
- int cnt = 0;
-
- /* Remove Source Socket Name in Management Table */
- while (NULL != current) {
- if (wd == current->wd) { /* Delete element */
- if (0 == cnt) { /* Delete the start element in the management table */
- RPC_sock_info_head(idinfo) = RPC_sock_info_head(idinfo)->next;
- rpc_free(current);
- current = RPC_sock_info_head(idinfo);
- cnt = -1;
- } else { /* Delete other than the start element in the management table */
- previous->next = current->next;
- rpc_free(current);
- current = previous->next;
- }
- RPC_client_sock_name_num_dec(idinfo);
- } else { /* Refer to the next node without deleting */
- previous = current;
- current = current->next;
- }
- cnt ++;
- }
-
- return RPC_OK;
-}
-
-/* Remove all source client socket names in the management table */
- static RPC_Result
-RpcAllDeleteSockName(RpcIdInfo *idinfo, int inotify_fd) {
- if (NULL == idinfo) { // LCOV_EXCL_BR_LINE 6: double check in void RpcDestroyThreadInfo(void)
- RPC_LOG_ERR("RpcAllDeleteSockName() : Invalid Param."); // LCOV_EXCL_START 6: void RpcDestroyThreadInfo(void)
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- RpcClientSockNameInfo *current = RPC_sock_info_head(idinfo);
-
- while (NULL != current) {
- RpcClientSockNameInfo *previous = current;
- current = current->next;
-
- if (0 <= previous->wd) {
- inotify_rm_watch(inotify_fd, previous->wd);
- }
-
- rpc_free(previous);
- previous = NULL;
- RPC_client_sock_name_num_dec(idinfo);
- }
-
- return RPC_OK;
-}
-
-
-/* Check if client is allowed to communicate */
- static RPC_Result
-RpcCheckClientCredential(RpcIdInfo *idinfo, const struct ucred *cr) {
- if ((NULL == idinfo) || (NULL == cr)) { // LCOV_EXCL_BR_LINE 6: double check in void *RpcThreadMain(void *ptr)
- RPC_LOG_ERR("RpcCheckClientCredential() : Invalid Param."); // LCOV_EXCL_START 6: void *RpcThreadMain(void *ptr)
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
-
- /* Retern RPC_OK if authentication is not required */
- if (NO_SECURE_CHECK == RPC_secure_check(idinfo)) {
- return RPC_OK;
- }
-
- INT32 i = 0; /* Loop counter */
-
- /* Search client UID in registered UID list */
- for(i = 0; i < RPC_uid_num(idinfo); i++) {
- if(RPC_uid_list(idinfo, i) == cr->uid) { /* Found UID in registered UID list */
- return RPC_OK;
- }
- }
-
- /* Search client GID in registered GID list */
- for(i = 0; i < RPC_gid_num(idinfo); i++) {
- if(RPC_gid_list(idinfo, i) == cr->gid) { /* Found GID in registered GID list. */
- return RPC_OK;
- }
- }
-
- RPC_LOG_ERR("[Client isn't authenticated!!!!]");
- return RPC_ERR_Fatal; /* Not found UID in registered UID list */
-}
diff --git a/video_in_hal/otherservice/rpc_library/library/src/rpc_udp.c b/video_in_hal/otherservice/rpc_library/library/src/rpc_udp.c
deleted file mode 100755
index 0d4d59f..0000000
--- a/video_in_hal/otherservice/rpc_library/library/src/rpc_udp.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * @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 rpc_udp.c
- * @brief RPC Library Internal Implementation--UDP Communication
- *
- */
-/** @addtogroup RPClib_in */
-/** @{ */
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/poll.h>
-#include <sys/time.h>
-#include <netinet/in.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h> // for usleep
-
-#include <fcntl.h>
-#include <sys/un.h>
-
-#include <sys/inotify.h>
-
-#include <other_service/rpc.h>
-#include "rpc_internal.h"
-
-static /*inline*/ UINT32
-RpcGetSequenceNumber(RpcThreadInfo *th) {
- RPC_THREAD_MUTEX_LOCK(th);
- UINT32 ret = th->sequence_number;
- (th->sequence_number)++;
- if (th->sequence_number == RPC_SEQ_NUM_INVALID) { // LCOV_EXCL_BR_LINE 200: overflow check, but test time is too long
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- th->sequence_number = RPC_SEQ_NUM_START; // LCOV_EXCL_LINE 200: overflow check, but test time is too long
- }
- RPC_THREAD_MUTEX_UNLOCK(th);
- return ret;
-}
-
-/**
- */
-int
-RpcReadUdpPacket(const RpcIdInfo *id, UINT8 *buf) {
- struct sockaddr_un sa;
- socklen_t sa_len = sizeof(sa);
- // sa passed to recvfrom does not require initialization
-
- for(;;) {
-
- ssize_t ret = recvfrom(RPC_my_sock(id), buf, RPC_UDP_PACKET_SIZE,
- 0, (struct sockaddr *)&sa, &sa_len);
-
- if (ret < 0) {
- if (errno == EAGAIN) { // LCOV_EXCL_BR_LINE 5: fail safe for libc recvfrom
- //RPC_LOG_PERROR("recvfrom port %d", RPC_port(id));
- return 0;
- } else if (errno == EINTR) { // LCOV_EXCL_START 5: fail safe for libc recvfrom
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- continue;
- } else {
- RPC_LOG_PERROR("recvfrom port %d", RPC_port(id));
- return -1;
- } // LCOV_EXCL_STOP
- } else if (ret == 0) {
- RPC_LOG_STATE("*** recvfrom ret 0");
- return 0;
- } else {
- return (int)ret;
- }
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- } // LCOV_EXCL_LINE 10: final line
-}
-
-/** Number of sendto retries */
-#define RPC_SENDTO_RETRY 5
-
-RUNS_IN_CALLERS_THREAD
-RUNS_IN_READING_THREAD
-/**
- */
-static int
-RpcSendUdpPacket(RpcIdInfo *id,
- struct sockaddr_un *to, int do_retry,
- void *mesg, unsigned int bytes) {
- int nretry = 0;
- ssize_t ret;
- int myerr;
- retry:
- ret = sendto(RPC_my_sock(id), mesg, bytes, 0,
- (struct sockaddr *)to, RPC_SOCKET_ADDR_LEN);
- myerr = errno;
-
- if (ret < 0) {
- RPC_LOG_STATE("*** sendto %s ***", to->sun_path + 1);
- if (myerr == EAGAIN || (do_retry && myerr==ECONNREFUSED && ++nretry <= RPC_SENDTO_RETRY)) { // LCOV_EXCL_BR_LINE 11: Unexpected branch // NOLINT(readability/nolint)
- usleep(100000);
-#if defined(RPC_USE_UNIX_AUTOBIND)
- RPC_LOG_DEBUG("*** sendto %s ***", to->sun_path + 1);
-#else /* AUTOBIND */
- RPC_LOG_DEBUG("**************** sendto retry *********************");
-#endif /* !AUTOBIND */
- goto retry;
- }
- errno = myerr;
-#if defined(RPC_USE_UNIX_AUTOBIND)
- if (do_retry) {
- RPC_LOG_PERROR("sendto %s", to->sun_path + 1);
- }
-#endif /* !AUTOBIND */
- return -1;
- } else if ((unsigned int)ret != bytes) {
- RPC_LOG_STATE("can't send all");
- return -1;
- }
- return 0;
-}
-
-RUNS_IN_CALLERS_THREAD
-RUNS_IN_READING_THREAD
-/**
- */
-int
-RpcSendUdp(RpcIdInfo *id, const RPC_ID receiver, int direction, RPC_packet_type type, const void *mesg, unsigned int bytes) { // LCOV_EXCL_START 8: dead code
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- rpc_send_buf sendbuf;
- sendbuf.buf = mesg;
- sendbuf.bytes = bytes;
-
- return RpcSendUdp2(id, receiver, direction, type, 1, &sendbuf);
-} // LCOV_EXCL_STOP
-RUNS_IN_CALLERS_THREAD
-RUNS_IN_READING_THREAD
-/** UDP packet transmission process
- *
- * UDP packet format
- * @verbatim
-+--------------+--------------+
-|*1|*2|*3|*4|*5| PAYLOAD |
-+--------------+--------------+
-@endverbatim
- *
- * *1 to *5 indicate the header. @see RPC_PACKET_HEADER
- *
- * - *1: [@%-2d] Type of packet
- * - @see RPC_packet_type
- * - *2: [@%-5x] Source RPC_ID
- * - *3: [@%-8x] Sequence number
- * - Set the value incremented from 1. This value must be unique for each source thread.
- * - In the case of response packets, this field contains the sequence number of the packet from which the response was received.
- * - *4: [@%-4u] Size of send data
- * - In the case of sending data consists of single packet in PAYLOAD, this field contains number of the packet.
- * - For a multipacket, the first packet contains the sum of the PAYLOAD of all packets,
- * the last packet contains the PAYLOAD bytes of the packet.
- * All other intermediate packets are filled with 0.(With up to two packets in the current constraint,
- * there are no intermediate packets.)
- * - *5: [@%1d] Position of packet
- * - @see rpc_packet_position
- */
-int
-RpcSendUdp2(struct RpcIdInfo *id, RPC_ID receiver, int direction,
- RPC_packet_type type, unsigned int num, rpc_send_buf *sendbuf) {
- unsigned char buf[RPC_UDP_PACKET_SIZE];
- UINT32 seq_num = RpcGetSequenceNumber(id->thread_info);
- unsigned int bytes = 0;
- rpc_send_buf *sendbufp = sendbuf;
- int i, do_retry = 1;
- for(i = 0 ; i < num ; i++) {
- bytes += sendbufp->bytes;
- sendbufp++;
- }
- rpc_assert(bytes <= RPC_UDP_PAYLOAD); // LCOV_EXCL_BR_LINE 6: double check
-
- struct sockaddr_un to;
- memset(&to, 0, sizeof(to));
- to.sun_family = AF_UNIX;
-#if defined(RPC_USE_UNIX_AUTOBIND)
- if (direction != RPC_SEND_TO_CLIENT) {
- RpcSetServerName(to.sun_path, receiver);
- if (direction == RPC_SEND_TO_SERVER_NO_RETRY) {
- do_retry = 0;
- }
- } else {
- RpcSetClientName(to.sun_path, receiver);
- }
-#else /* !AUTOBIND */
- rpc_set_socket_name(to.sun_path, rpc_get_port(receiver));
-#endif /* !AUTOBIND */
-
- sprintf((char *)buf, RPC_PACKET_HEADER,
- (int)type, RPC_my_id(id), seq_num, bytes,
- RPC_PACKET_POS_ONEANDONLY);
-
- unsigned char *bufp = buf + RPC_PACKET_HEADER_LEN;
- for(i = 0 ; i < num ; i++) {
- memcpy(bufp, sendbuf->buf, sendbuf->bytes);
- bufp += sendbuf->bytes;
- sendbuf++;
- }
- if (RpcSendUdpPacket(id, &to, do_retry,
- buf, RPC_PACKET_HEADER_LEN + bytes) < 0) {
- return -1;
- }
- return (int)seq_num;
-}
-
-RUNS_IN_READING_THREAD
-/**
- */
-RPC_Result
-RpcSendUdpResponse(RpcIdInfo *id, const RPC_ID receiver, int direction,
- RPC_packet_type type, UINT32 seq_num,
- char *mesg, UINT32 bytes) {
- rpc_assert(bytes <= RPC_MAX_RESPONSE_MESSAGE_SIZE); // LCOV_EXCL_BR_LINE 6: double check
- char buf[RPC_PACKET_HEADER_LEN + RPC_MAX_RESPONSE_MESSAGE_SIZE];
- sprintf(buf, RPC_PACKET_HEADER,
- (int)type, RPC_my_id(id), seq_num, bytes,
- (int)RPC_PACKET_POS_ONEANDONLY);
- memcpy(buf + RPC_PACKET_HEADER_LEN, mesg, bytes);
-
- struct sockaddr_un sa;
- memset(&sa, 0, sizeof(sa));
- sa.sun_family = AF_UNIX;
-#if defined(RPC_USE_UNIX_AUTOBIND)
- if (direction != RPC_SEND_TO_CLIENT) {
- RpcSetServerName(sa.sun_path, receiver);
- } else {
- RpcSetClientName(sa.sun_path, receiver);
- }
-#else /* !AUTOBIND */
- rpc_set_socket_name(sa.sun_path, rpc_get_port(receiver));
-#endif /* !AUTOBIND */
- return RpcSendUdpPacket(id, &sa, 0, buf, RPC_PACKET_HEADER_LEN + bytes);
-}
-
-/**
- */
-RPC_Result
-RpcParsePacketHeader(const char *str, RPC_packet_type *command,
- RPC_ID_p id, UINT32 *seq_num, UINT32 *size) {
- // LCOV_EXCL_BR_START 6: double check
- rpc_assert(str != NULL && command != NULL && id != NULL
- && seq_num != NULL && size != NULL);
- // LCOV_EXCL_BR_STOP
-
- if (sscanf(str, RPC_PACKET_HEADER_scanf, (int *)command, id, seq_num, size) != 4) { // LCOV_EXCL_BR_LINE 11: Unexpected branch // NOLINT(readability/nolint)
- *command = RPC_PACKET_NONE; // LCOV_EXCL_START 5: fail safe for libc sscanf
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- BUG_ASSERT(0, "Parsing packet failed");
- // LCOV_EXCL_STOP
- return RPC_ERR_Fatal;
- }
- return RPC_OK;
-}
-
-#include <sys/time.h>
-
-RPC_Result
-RpcClientWaitResponse(RpcIdInfo *idinfo, UINT32 seq_num,
- UINT32 timeout_msec, UINT16 *response) {
- unsigned char readbuf[RPC_UDP_PACKET_SIZE];
- fd_set fds;
- int fd = idinfo->sock;
-
- struct timeval timeout;
- timeout.tv_sec = (__time_t)(timeout_msec / 1000);
- timeout.tv_usec = (__suseconds_t)((timeout_msec % 1000) * 1000);
-
- *response = RPC_RESPONSE_NONE;
-
- for(;;) {
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- int sret = select(fd + 1, &fds, NULL, NULL, &timeout);
- if (sret < 0 && errno == EINTR) { /* signal interrupt */ // LCOV_EXCL_START 5: fail safe for libc select
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- continue;
- // LCOV_EXCL_STOP
- } else if (sret == 0) { /* timeout */
- RPC_LOG_ERR("server response timeout");
- return RPC_ERR_No_Response;
- } else if (sret > 0 && FD_ISSET(fd, &fds)) { // LCOV_EXCL_BR_LINE 5: fail safe for libc select
- RPC_ID sender;
- UINT32 seq;
- UINT32 size;
- RPC_packet_type command;
- int readret = RpcReadUdpPacket(idinfo, readbuf);
- if (readret <= 0) { // LCOV_EXCL_START 5: fail safe for libc recvfrom
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- /* debug code to see socket status */
- /* why recvfrom() returned 0 ? */
- struct pollfd pfd;
- pfd.fd = fd;
- pfd.events = POLLIN|POLLHUP|POLLERR;
- sret = poll(&pfd, 1, 0/* timeout 0 */);
- RPC_LOG_STATE("** poll revents=%x", pfd.revents);
- return RPC_ERR_Fatal;
- } // LCOV_EXCL_STOP
- if (RpcParsePacketHeader((const char *)readbuf, &command, &sender, &seq, &size) != RPC_OK) { // LCOV_EXCL_BR_LINE 11: Unexpected branch // NOLINT(readability/nolint)
- return RPC_ERR_Fatal;
- }
- unsigned char c;
- if (seq == seq_num) {
- switch(command) {
- case RPC_RESPONSE_APICALL:
- c = readbuf[RPC_PACKET_HEADER_LEN];
- switch(c) {
- case 'O':
- *response = RPC_RESPONSE_API_OK;
- goto exit_loop_ok;
- break;
- case 'B':
- *response = RPC_RESPONSE_API_BUSY;
- goto exit_loop_ok;
- break;
- case 'E':
- *response = RPC_RESPONSE_API_ERR;
- goto exit_loop_ok;
- break;
- case 'D':
- *response = RPC_RESPONSE_API_DEADLOCK;
- goto exit_loop_ok;
- break;
- case 'C':
- *response = RPC_RESPONSE_API_CERTIFY;
- goto exit_loop_ok;
- break;
- default:
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- BUG_ASSERT(0, "illegal response\n"); // LCOV_EXCL_LINE 15: marco defined in rpc_internal.h
- return RPC_ERR_Fatal;
- break;
- }
- break;
-
- default:
- RPC_LOG_STATE("Unknown packet command=%d", command);
- return RPC_ERR_Fatal;
- break;
- }
- } else { /* sequence number mismatch == response to other request */
- RPC_LOG_DEBUG("unwanted response received(delayed response?)");
- continue;
- }
- } else { /* poll error */
- RPC_LOG_PERROR("select in wait response");
- return RPC_ERR_Fatal;
- }
- }
- exit_loop_ok:
- return RPC_OK;
-}
-
-RPC_Result
-RpcClientWaitResult(RpcIdInfo *idinfo, RPC_ID srvr_id) {
- unsigned char readbuf[RPC_UDP_PACKET_SIZE];
- fd_set fds;
- int fd = idinfo->sock;
- int inotify_fd = RPC_clnt_inotify_fd(idinfo);
- int maxfd;
- RPC_Result result = RPC_OK;
-
- for(;;) {
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- FD_SET(inotify_fd, &fds);
-
- /* Determine the maximum value of fd to wait */
- if (fd > inotify_fd) {
- maxfd = fd;
- } else {
- maxfd = inotify_fd;
- }
-
- int sret = select(maxfd + 1, &fds, NULL, NULL, NULL);
- if (sret < 0 && errno == EINTR) { /* signal interrupt */ // LCOV_EXCL_START 5: fail safe for libc select
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- continue;
- // LCOV_EXCL_STOP
- } else if (sret > 0 && FD_ISSET(fd, &fds)) { /* success */ // LCOV_EXCL_BR_LINE 5: fail safe for libc select
- RPC_ID sender;
- UINT32 seq;
- UINT32 size;
- RPC_packet_type command;
- int readret = RpcReadUdpPacket(idinfo, readbuf);
- if (readret <= 0) { // LCOV_EXCL_START 5: fail safe for libc recvfrom
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- rpc_assert(readret >= 0);
- result = RPC_ERR_Fatal;
- goto exit_loop_ok;
- } // LCOV_EXCL_STOP
- if (RpcParsePacketHeader((const char *)readbuf, &command, &sender, &seq, &size) != RPC_OK) { // LCOV_EXCL_BR_LINE 11: Unexpected branch // NOLINT(readability/nolint)
- // LCOV_EXCL_START 5: fail safe for libc sscanf
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- result = RPC_ERR_Fatal;
- goto exit_loop_ok;
- } // LCOV_EXCL_STOP
- switch(command) {
- case RPC_PACKET_APIRETURN:
- result = RpcSetAPIcallReturn(idinfo,
- (const char *)(readbuf + RPC_PACKET_HEADER_LEN),
- size);
- if(result == RPC_OK) { // LCOV_EXCL_BR_LINE 5: fail safe for libc malloc
- if (sscanf((const char *)(readbuf + RPC_PACKET_HEADER_LEN), "%08x ", (unsigned int *)&result) != 1) { // LCOV_EXCL_BR_LINE 5: fail safe for libc sscanf
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- BUG_ASSERT(0, "Parsing packet failed"); // LCOV_EXCL_LINE 15: marco defined in rpc_internal.h
- return RPC_ERR_Fatal;
- }
- }
- goto exit_loop_ok;
- default:
- RPC_LOG_STATE("unwanted packet received while waiting for API return");
- continue;
- break;
- }
- } else if (sret > 0 && FD_ISSET(inotify_fd, &fds)) { /* server process is terminate. */
- UINT32 read_len = 0;
- int length = 0;
- char *buffer;
- buffer = (char *)rpc_malloc(BUF_LEN);
- if (NULL == buffer) { // LCOV_EXCL_START 5: fail safe for libc malloc
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_ERR("rpc_malloc() ERROR.");
- } // LCOV_EXCL_STOP
-
- if((length = (int)read( inotify_fd, buffer, BUF_LEN )) < 0 ) { // LCOV_EXCL_START 5: fail safe for libc read
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_PERROR("inotify read() ERROR.");
- } // LCOV_EXCL_STOP
- while (read_len < length) {
- struct inotify_event *event = ( struct inotify_event * )&buffer[read_len];
-
- if (event->mask & IN_DELETE_SELF) { /* Terminating a Server Process */
- if (RPC_ERR_Server_Finish == RpcDeleteSrvrPid(idinfo, srvr_id, event->wd)) {
- RPC_LOG_PERROR("server process is terminate. : srvr_ID = %x", srvr_id);
- result = RPC_ERR_Fatal;
- }
- }
- read_len += (UINT32)(EVENT_SIZE + event->len); /* Size of the inotify_event structure */
- }
- rpc_free(buffer);
- if (RPC_OK != result) {
- goto exit_loop_ok;
- }
-
- } else { /* poll error */ // LCOV_EXCL_START 5: fail safe for libc select
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- RPC_LOG_PERROR("select in wait result");
- result = RPC_ERR_Fatal;
- goto exit_loop_ok;
- // LCOV_EXCL_STOP
- }
- }
-exit_loop_ok:
-
- return result;
-}
-
-/** @} */
diff --git a/video_in_hal/otherservice/rpc_library/tool/Makefile b/video_in_hal/otherservice/rpc_library/tool/Makefile
deleted file mode 100755
index 8ffd816..0000000
--- a/video_in_hal/otherservice/rpc_library/tool/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# @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.
-#
-
-all: rpc_apidef
-
-clean:
- rm -rf $(CLEAN_FILES)
-
-YACC := bison
-YFLAGS := -d -t
-LEX := flex
-LFLAGS := -d
-
-CPPFLAGS := -I../library/include -include $(SDKTARGETSYSROOT)/usr/agl/include/agl_types_obsoluted.h
-CFLAGS := -Wall -Wno-unused-function -Wno-unused-variable -include $(SDKTARGETSYSROOT)/usr/agl/include/agl_types_obsoluted.h
-
-rpc_apidef: apidef.tab.o lex.yy.o apidef.o
- $(CXX) $(CPPFLAGS) -o $@ $^
-
-apidef.tab.o: apidef.tab.h apidef.tab.c
- $(CC) $(CPPFLAGS) $(CFLAGS) -c $^
-
-lex.yy.o: lex.yy.c
- $(CC) $(CPPFLAGS) $(CFLAGS) -c $^
-
-apidef.o: apidef.cc
- $(CXX) $(CPPFLAGS) $(CFLAGS) -c $^
-
-apidef.tab.h apidef.tab.c: apidef.y
- $(YACC) $(YFLAGS) $<
-
-lex.yy.c: apidef.l apidef.tab.h
- $(LEX) $(LFLAGS) $<
-
-CLEAN_FILES := rpc_apidef *.o apidef.tab.h apidef.tab.c lex.yy.c
-
-CLEAN_TARGET := clean-all clean-all-sub clean-sub
-INSTALL_TARGET := install-header
-EMPTY_TARGET := install-prog install-data install-lib install-arlib install-shlib
-.PHONY: all install clean $(CLEAN_TARGET) $(INSTALL_TARGET) $(EMPTY_TARGET)
-
-$(CLEAN_TARGET): clean
-
-$(INSTALL_TARGET): install
-
-$(EMPTY_TARGET):
-
-include ../../other_service.mk
-
diff --git a/video_in_hal/otherservice/rpc_library/tool/apidef.cc b/video_in_hal/otherservice/rpc_library/tool/apidef.cc
deleted file mode 100755
index ec0a489..0000000
--- a/video_in_hal/otherservice/rpc_library/tool/apidef.cc
+++ /dev/null
@@ -1,1104 +0,0 @@
-/*
- * @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 apidef.cc
- * @brief RPC tools--Main processing(Implementations of APIDef classes)
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netinet/in.h>
-
-#include <other_service/rpc.h>
-
-#include "apidef.h"
-#include "apidef.tab.h"
-
-static APIDef *API_Def;
-
-extern "C" { // C interface functions
-
-void
-ApidefDefineId(const char *id) {
- if (id != NULL) {
- if (API_Def == NULL) {
- API_Def = new APIDef();
- }
- API_Def->DefineId(id);
- }
-}
-
-void
-ApidefAddHeader(const char *filename) {
- if (filename != NULL) {
- if (API_Def == NULL) {
- API_Def = new APIDef();
- }
- API_Def->AddHeader(filename);
- }
-}
-
-int
-ApidefPushFunctionArg(int arg_code, int buffer_bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name, int in_out,
- const char *var_name) {
- if (API_Def == NULL) {
- API_Def = new APIDef();
- }
- return API_Def->AddFunctionArg(arg_code, buffer_bytes, is_pointer,
- is_vararray, is_array_size,
- var_type_name, in_out, var_name);
-}
-
-void
-ApidefProcessFunction(const char *name) {
- if (API_Def == NULL) {
- API_Def = new APIDef();
- }
- API_Def->NameFunction(name);
-}
-
-void
-ApidefListFunctions(int with_args) {
- if (API_Def != NULL) {
- API_Def->Print(with_args);
- }
-}
-
-void
-ApidefFreeAllocation(void) {
- if (API_Def != NULL) {
- delete API_Def;
- API_Def = NULL;
- }
-}
-
-int
-ApidefMakeStubs(void) {
- if (API_Def != NULL) {
- API_Def->MakeStubs();
- return 0;
- } else {
- return 1;
- }
-}
-
-} // extern "C"
-
-/*
- * Retrieving Argument Names Without Decorators
- */
-void
-Arg::GetUndecolatedName(string& name /* OUT */, int num) {
- name = "v";
- if (num > 0) {
- /* Making Variable Names Sequential Numbers */
- char num_str[5];
- sprintf(num_str, "%d", num);
- name += num_str;
- } else {
- /* Use a user-supplied pseudo-variable name */
- name = m_name;
- }
-}
-
-int
-Arg::PrintUndecoratedName(fstream& out, int num) {
- /* Pointer argument */
- if (m_is_pointer) {
- out << "*";
- }
-
- if (num > 0) {
- /* Making Variable Names Sequential Numbers */
- out << "v" << num;
- } else {
- /* Use a user-supplied pseudo-variable name */
- out << m_name;
- }
-
- return 0;
-}
-
-/*
- * Outputs one argument in a function prototype declaration
- * out: Destination file
- * num: Handling of Formal Argument Names
- * 0 :Formal argument name specified in the API definition file
- * Non-zero: Use "v" + specified number(Examples: v1, v2, ...)
- */
-int
-Arg::PrintPrototype(fstream& out, int num) {
- const char *type = TypeCodeString(m_code);
- if (type == NULL) {
- type = m_type_name.c_str();
- }
- if (type == NULL) {
- cout << "Internal Error Occurrence!!\n";
- return 1;
- }
-
- /* Const non-output pointers */
- if ((m_in_out & RPC_OUT_ARG) == 0 && (m_bytes != 0 || m_is_pointer != 0)) {
- out << "const ";
- }
- out << type << " ";
- if (m_is_pointer && m_bytes == 0) {/* Non-string pointer arguments */
- out << "*";
- }
-
- if (num > 0) {/* Making variable names sequential numbers */
- out << "v" << num;
- } else {/* Use a user-supplied pseudo-variable name */
- out << m_name;
- }
-
- /* Variable-length arrays */
- if (m_is_vararray != 0) {
- out << "/* VAR_ARRAY */";
- }
-
- /* Variable-length arrays length */
- if (m_is_array_size != 0) {
- out << "/* VAR_SIZE */";
- }
-
- /*
- * Commenting on OUT/INOUT Arguments
- * Maximum number of bytes of a string argument added to a comment
- */
- if ((m_in_out & RPC_OUT_ARG) != 0 || m_bytes != 0) {
- out << "/* ";
- if ((m_in_out & RPC_OUT_ARG) != 0) {
- if ((m_in_out & RPC_IN_ARG) != 0) {
- out << "IN";
- }
- out << "OUT ";
- }
- if (m_bytes) {
- out << m_bytes << "Byte ";
- }
- out << "*/";
- }
-
- return 0;
-}
-
-int
-Arg::CreateMarshallArgs(fstream& out, int num) {
- return CreateMarshallArgs(out, num, (RPC_IN_ARG|RPC_OUT_ARG));
-}
-
-int
-Arg::CreateMarshallArgs(fstream& out, int num, string &array_size_name) {
- return CreateMarshallArgs(out, num, (RPC_IN_ARG|RPC_OUT_ARG), array_size_name);
-}
-
-int
-Arg::CreateMarshallArgs(fstream& out, int num, int in_out) {
- string dummy = "";
- return CreateMarshallArgs(out, num, in_out, dummy);
-}
-
-/*
- * The arguments to rpc_marshall_args() are generated for each API argument.
- * for each API argument.
- * out: Destination file
- * num: Number given to the variable name of the argument (Examples: 1 for v1)
- * in_out: Specifying the IN or OUT Attributes
- * Output only if the argument has the specified attribute
- */
-int
-Arg::CreateMarshallArgs(fstream& out, int num, int in_out, string &array_size_name) {
- if ((m_in_out & in_out) != 0) {
- /*
- * Collectively passes the argument type, pointer/non-pointer, IN/OUT attribute,
- * and the maximum number of bytes of the argument type to one integer.
- */
- RPC_marshall_flag flag;
- flag.bits.code = m_code & ((1<<RPC_MARSHALL_FLAG_BITS_CODE)-1);
- flag.bits.is_vararray = ((array_size_name.size() != 0) ? 1: 0) &
- ((1<<RPC_MARSHALL_FLAG_BITS_IS_VARARRAY)-1);
- flag.bits.is_pointer = m_is_pointer & ((1<<RPC_MARSHALL_FLAG_BITS_IS_POINTER)-1);
- flag.bits.in_out = m_in_out & ((1<<RPC_MARSHALL_FLAG_BITS_IN_OUT)-1);
- flag.bits.bytes = (UINT16)(m_bytes);
- char str[11];
- sprintf(str, "0x%x", htonl(flag.all));
- out << "\t\t\t" << str;
-
- /*
- * Add size of user-defined type to argument
- */
- if (m_code == rpc_USER_DEFINED) {
- if (array_size_name.size() != 0) {
- out << " + ntohs(sizeof(" << m_type_name << ") * " << array_size_name << ")";
- } else {
- out << " + ntohs(sizeof(" << m_type_name << "))";
- }
- } else if (array_size_name.size() != 0) {
- out << " + ntohs(sizeof(" << TypeCodeString(m_code) << ") * " << array_size_name << ")";
- }
-
- out << ", v" << num;
- return 1;
- } else {
- return 0;
- }
-}
-
-int
-Arg::CreateDemarshallArgs(fstream& out, int deliver_pointer, int num) {
- return CreateDemarshallArgs(out, deliver_pointer, num, (RPC_IN_ARG|RPC_OUT_ARG));
-}
-
-int
-Arg::CreateDemarshallArgs(fstream& out, int deliver_pointer, int num, string &array_size_name) {
- return CreateDemarshallArgs(out, deliver_pointer, num, (RPC_IN_ARG|RPC_OUT_ARG), array_size_name);
-}
-
-int
-Arg::CreateDemarshallArgs(fstream& out, int deliver_pointer, int num, int in_out) {
- string dummy = "";
- return CreateDemarshallArgs(out, deliver_pointer, num, in_out, dummy);
-}
-
-/*
- * The arguments to rpc_demarshall_args() are generated for each API argument.
- * for each API argument.
- * out: Destination file
- * deliver_pointer: Passing a Variable Pointer(non-0)
- * num: Number given to the variable name of the argument (Examples: 1 for v1)
- * in_out: Specifying the IN or OUT Attributes
- * Output only if the argument has the specified attribute
- */
-int
-Arg::CreateDemarshallArgs(fstream& out, int deliver_pointer, int num, int in_out, string &array_size_name) {
- if ((m_in_out & in_out) != 0) {
- /*
- * Collectively passes the argument type, pointer/non-pointer, IN/OUT attribute,
- * and the maximum number of bytes of the argument type to one integer.
- */
- RPC_marshall_flag flag;
- flag.bits.code = m_code & ((1<<RPC_MARSHALL_FLAG_BITS_CODE)-1);
- flag.bits.is_vararray = ((array_size_name.size() != 0) ? 1: 0) &
- ((1<<RPC_MARSHALL_FLAG_BITS_IS_VARARRAY)-1);
- flag.bits.is_pointer = m_is_pointer & ((1<<RPC_MARSHALL_FLAG_BITS_IS_POINTER)-1);
- flag.bits.in_out = m_in_out & ((1<<RPC_MARSHALL_FLAG_BITS_IN_OUT)-1);
- flag.bits.bytes = (UINT16)(m_bytes);
- char str[11];
- sprintf(str, "0x%x", htonl(flag.all));
- out << "\t\t\t" << str;
-
- /*
- * Add size of user-defined type to argument
- */
- if (m_code == rpc_USER_DEFINED) {
- out << " + ntohs(sizeof(" << m_type_name << "))";
- }
-
- out << ", ";
- if (deliver_pointer) {
- /* Pass a pointer */
- out << "&";
- }
- out << "v" << num;
- return 1;
- } else {
- return 0;
- }
-}
-
-int
-Function::AppendArg(int code, int bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name, int in_out, const char *var_name) {
- if (NumOfArgs() >= RPC_MAX_API_ARG_NUM) {
- cout << "Too many API function arguments.\n";
- return -1;
- }
- Arg *a = new Arg(code, bytes, is_pointer, is_vararray, is_array_size,
- var_type_name, in_out, var_name);
- m_args.push_back(*a);
- delete a;
- return 0;
-}
-
-/*
- * Generate prototype declarations for a single API function
- * out: Destination file
- */
-int
-Function::PrintPrototype(fstream& out, int server) {
- int ret = 0;
-
- const char *return_type
- = server ? RPC_API_SERVER_RETURN : RPC_API_CLIENT_RETURN;
-#ifdef DBG_ENABLE
- if ((server) || (!rpc_log_enable)) {
- out << return_type << " " << m_name << "(";
- } else {
- out << return_type << " __" << m_name << "(";
- }
-#else
- out << return_type << " " << m_name << "(";
-#endif
-
- list<Arg>::size_type num_args = m_args.size();
- if (num_args > 0) {
- list<Arg>::iterator a;
- a = m_args.begin();
- for (list<Arg>::size_type i = 1; i <= num_args; ++i, ++a) {
- a->PrintPrototype(out);
-#ifdef DBG_ENABLE
- if ((server) || (!rpc_log_enable)) {
- if (i != num_args) {
- out << ", ";
- }
- } else {
- out << ", ";
- }
-#else
- if (i != num_args) {
- out << ", ";
- }
-#endif
- }
- } else {
-#ifdef DBG_ENABLE
- if ((server) || (!rpc_log_enable)) {
- out << "void";
- }
-#else
- out << "void";
-#endif
- }
-#ifdef DBG_ENABLE
- /* Debug information */
- if ((!server) && (rpc_log_enable)) {
- out << "const char *filename, const char *funcname, int line ";
- }
-#endif
- out << ");\n";
- return ret;
-}
-
-#ifdef DBG_ENABLE
-int
-Function::PrintMacro(fstream& out) {
- int ret = 0;
- out << "#define " << m_name << "(";
-
- int num_args = m_args.size();
- if (num_args > 0) {
- int i;
- char c;
- for (i = 1, c = 'a'; i <= num_args; i++, c++) {
- out << c;
- if (i != num_args) {
- out << ", ";
- }
- }
- out << ") \\\n\t";
-
- /* Entity */
- out << "__" << m_name << "(";
- for (i = 1, c = 'a'; i <= num_args; i++, c++) {
- out << c << ", ";
- }
- out << "__FILE__, __func__, __LINE__)\n";
- } else { /* Without arguments */
- out << ") " << "__" << m_name << "(__FILE__, __func__, __LINE__)\n";
- }
-
- return ret;
-}
-#endif
-
-int
-APIDef::MakeHeaderFiles(int server) {
- char filename[MAX_FILENAME_LEN+1];
- sprintf(filename, "%s%s", m_lowerid.c_str(),
- (server ? SERVER_HEADER_FILE : CLIENT_HEADER_FILE));
- int ret = 0;
-
- fstream out(filename, ios::out);
- if (!out.is_open()) {
- cout << "ERROR: File " << filename << " Could not open.\n";
- return 1;
- }
- cout << "info: Header file " << filename << " Creating.\n";
-
- const char *define_str =
- server ? SERVER_HEADER_DEFINE : CLIENT_HEADER_DEFINE;
- const char *title = server ? SERVER_HEADER_TITLE : CLIENT_HEADER_TITLE;
-
- out << "#ifndef _" << m_lowerid << define_str << "\n";
- out << "#define _" << m_lowerid << define_str << "\n";
- out << "/*\n";
- out << " * " << m_id << " " << title << " " << filename << "\n";
- out << " *\n";
- out << RPCTOOL_WARNING_STRING << "\n";
- out << " */\n\n";
-
- list<string>::iterator i;
- for (i = m_headers.begin(); i != m_headers.end(); ++i) {
- out << "#include <" << *i << ">\n";
- }
- out << "\n";
-
- if (server) {
-
- out << EXTERN_C_START << "\n";
-
- out << RPC_API_DISPATCH_RETURN << " "
- << m_id << RPC_API_DISPATCH_FUNC_FULL << ";\n";
-
- out << "#ifdef RPC_DISPATCH_FUNC\n"
- << "#undef RPC_DISPATCH_FUNC\n"
- << "#define RPC_DISPATCH_FUNC " << m_id << RPC_API_DISPATCH_FUNC_NAME
- << "\n#else /* !RPC_DISPATCH_FUNC */\n"
- << "#error \"Please include <rpc.h> first!!\"\n"
- << "#endif /* !RPC_DISPATCH_FUNC */\n\n";
-
- out << EXTERN_C_END << "\n";
-
- }
-#ifdef DBG_ENABLE
- else if (rpc_log_enable) {
- /* DEBUG INFORMATION EMBEDDED MACRO */
- out << "/* Debug information embedded macro definition */\n";
- list<Function>::iterator f;
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f) {
- if (f->PrintMacro(out) != 0) {
- ret = 1;
- break;
- }
- }
- out << "\n";
- }
-#endif
-
- out << EXTERN_C_START << "\n";
-
- out << "/* API definitions */\n";
- list<Function>::iterator f;
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f) {
- if (f->PrintPrototype(out, server) != 0) {
- ret = 1;
- break;
- }
- }
- out << "\n";
-
- out << EXTERN_C_END << "\n";
-
- out << "#endif /* _" << m_lowerid << define_str << " */\n";
- out.close();
- return ret;
-}
-
-int
-Function::PrintServerStub(fstream& out) {
- int num_args = NumOfArgs();
-
- out << "\tcase " << RPC_API_NUM_PREFIX << m_name << ": {\n";
-
- list<Arg>::iterator a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- const char *type = TypeCodeString(a->Code());
- if (type == NULL) {
- type = (a->TypeName()).c_str();
- }
- if (type == NULL) {
- return 1;
- }
- out << "\t\t" << type << " ";
- if (a->Bytes() > 0 || a->IsPointer()) {/* Pointer-passing argument */
- if (a->Bytes() > 0) {
- out << "v" << i << " = NULL;\n";
- } else if (a->IsPointer()) {
- out << "*v" << i << " = NULL;\n";
- }
- } else {/* Pass-by-value argument */
- out << "v" << i << ";\n";
- }
- }
- if (num_args > 0) {
- out << "\t\tif (" << RPC_DEMARSHALL_FUNCTION
- << " (args_string, args_size, 1, " << num_args << ",\n";
- /* In the STUB of servers for all pre-call demarshall */
- /* Passing Pointers to Local Variables in Server STUB */
- /* Pointer/ Buffer will alloc the required space in demarshall_arguments() */
-
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->IsVararray() != 0) { /* Variable-length arrays */
- a->CreateDemarshallArgs(out, 1, i, m_array_size_name);
- } else {
- a->CreateDemarshallArgs(out, 1, i);
- }
- if (i < num_args) {
- out << ",";
- }
- out << "\n";
- }
- out << "\t\t ) < 0) {\n";
- out << "\t\t\tgoto _" << m_name << "_Error;\n";
- out << "\t\t}\n";
- }
-
- out << "\t\tresult = " << m_name << "(";
- for (int i = 1; i <= num_args; i++) {
- out << "v" << i;
- if (i < num_args) {
- out << ", ";
- }
- }
- out << ");\n";
-
- int to_process = NumOfInOutArgs(RPC_OUT_ARG);
- if (to_process > 0) {
- /* Only OUT-arguments marshall after the server stub is called. */
- out << "\t\t/*if (result == RPC_OK) {*/\n";
- out << "\t\t *ret_string = " << RPC_MARSHALL_FUNCTION
- << "(ret_size, 0, " << to_process << ",\n";
-
- a = m_args.begin();
- int processed = 0;
- int ret;
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->IsVararray() != 0) { /* Variable-length arrays */
- ret = a->CreateMarshallArgs(out, i, RPC_OUT_ARG, m_array_size_name);
- } else {
- ret = a->CreateMarshallArgs(out, i, RPC_OUT_ARG);
- }
- if (ret) {
- processed++;
- if (processed < to_process) {
- out << ",";
- }
- out << "\n";
- }
- }
- out << "\t\t );\n"
- << "\t\t if (*ret_string == NULL) {\n"
- << "\t\t\tresult = " << RPC_API_SERVER_ERROR << ";\n"
- << "\t\t }\n"
- << "\t\t/*}*/\n";
- }
-
- if (num_args > 0) {
- out << "_" << m_name << "_Error:\n";
- }
- int num_pointer_args = 0;
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->Bytes() || a->IsPointer()) {
- num_pointer_args++;
- }
- }
- if (num_pointer_args > 0) {
- int processed = 0;
- out << "\t\t" << RPC_MARSHALL_FREE_FUNCTION
- << "(" << num_pointer_args << ", ";
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->Bytes() || a->IsPointer()) {
- out << "v" << i;
- processed++;
- if (processed < num_pointer_args) {
- out << ", ";
- }
- }
- }
- out << ");\n";
- }
- out << "\t\tbreak;\n\t}\n";
- return 0;
-}
-
-int
-APIDef::MakeServerStub(void) {
- char filename[MAX_FILENAME_LEN+1];
- sprintf(filename, "%s%s", m_lowerid.c_str(), SERVER_STUB_FILE);
- int ret = 0;
-
- fstream out(filename, ios::out);
- if (!out.is_open()) {
- cout << "File " << filename << " Could not open.\n";
- return 1;
- }
- cout << "info: Stub file " << filename << " Creating.\n";
-
- const char *title = SERVER_STUB_TITLE;
-
- out << "/*\n";
- out << " * " << m_id << " " << title << " " << filename << "\n";
- out << " *\n";
- out << RPCTOOL_WARNING_STRING << "\n";
- out << " */\n";
- out << "#include <" RPC_GLOBAL_HEADER_FILE << ">\n";
- out << "#include \"" << m_lowerid << SERVER_HEADER_FILE << "\"\n";
- out << "#include <netinet/in.h> /* for ntohs() */\n\n";
-
- int api_num = 1;
- list<Function>::iterator f;
-
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f, ++api_num) {
- if (api_num >= (1<<16)) {
- cout << "Too many API functions.(Up to 65535)\n";
- return 1;
- }
- out << "#define " << RPC_API_NUM_PREFIX << f->Name()
- << " " << api_num << "\n";
- }
- out << "\n";
-
- out << "RPC_Result\n";
- out << m_id << RPC_API_DISPATCH_FUNC_FULL << "\n";
- out << "{\n";
- out << "\tRPC_Result result = " << RPC_API_SERVER_ERROR << ";\n";
- out << "\t*ret_string = NULL;\n";
- out << "\tswitch(api_num) {\n";
-
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f) {
- if (f->PrintServerStub(out) != 0) {
- ret = 1;
- break;
- }
- }
-
- if (ret != 0) {
- return ret;
- }
-
- out << "\tdefault:\n\t\tbreak;\n\t}\n";
- out << "\treturn result;\n";
- out << "}\n";
-
- return ret;
-}
-
-int
-Function::PrintClientStub(const char *moduleid, fstream& out) {
- int ret = 0;
-
- list<Arg>::iterator a;
- /* Function Names and Arguments */
- out << RPC_API_CLIENT_RETURN << "\n";
-#ifdef DBG_ENABLE
- if (rpc_log_enable) {
- out << "__" << m_name << "(";
- } else {
- out << m_name << "(";
- }
-#else
- out << m_name << "(";
-#endif
- int num_args = (int)(m_args.size());
- if (num_args > 0) {
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->PrintPrototype(out, i)) {
- return 1;
- }
-#ifdef DBG_ENABLE
- if (rpc_log_enable) {
- out << ", ";
- } else {
- if (i < num_args) {
- out << ", ";
- }
- }
-#else
- if (i < num_args) {
- out << ", ";
- }
-#endif
- }
- } else {
-#ifndef DBG_ENABLE
- out << "void";
-#else
- if (!rpc_log_enable) {
- out << "void";
- }
-#endif
- }
-#ifdef DBG_ENABLE
- if (rpc_log_enable) {
- out << "const char *filename, const char *funcname, int line ";
- }
-#endif
- out << ")\n";
-
- out << "{\n";
-
- /* Contents of stub functions */
-
- /* If the argument is present and the variable-length array does not exist */
- if ((num_args > 0) && (m_array_size_pos == 0)) {
- int is_exist_mytype = 0;
- /* Restricted specifications */
- out << "#ifdef RPC_STATIC_ASSERT\n";
- out << "\tchar RPC_TOTAL_ARGSIZE_ERROR_in_" << m_name << "[\n";
- out << "\t(((";
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (i > 1) {
- out << " + ";
- }
- out << "sizeof(";
- a->PrintUndecoratedName(out, i);
- out << ")";
- /* For user types */
- if ((!is_exist_mytype) && (NULL == TypeCodeString(a->Code()))) {
- is_exist_mytype = 1;
- }
- }
- out << ") > RPC_MAX_API_ARG_TOTAL_SIZE) ? -1: 1)\n";
- out << "\t]__attribute__((unused));\n";
-
- /* Have a user type */
- if (is_exist_mytype) {
- char c[3];
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (NULL == TypeCodeString(a->Code())) {
- sprintf(c, "%d", i);
- out << "\tchar RPC_ARGSIZE_ERROR_in_" << m_name << "_arg" << c;
- out << "[\n\t(sizeof(";
- a->PrintUndecoratedName(out, i);
- out << ") > RPC_MAX_API_ARG_SIZE) ? -1: 1\n";
- out << "\t]__attribute__((unused));\n";
- }
- }
- }
-
- out << "#endif /* RPC_STATIC_ASSERT */\n";
-
- }
-
- out << "\tRPC_Result result = " << RPC_API_CLIENT_ERROR << ";\n";
- out << "\tunsigned int args_size = 0, ret_size;\n";
- out << "\tchar retcode[9];\n";
-
- if (num_args > 0) {
- /* Advance preparation==Marshalling of arguments */
- out << "\tchar *args_string = " << RPC_MARSHALL_FUNCTION
- << "(&args_size, 1, " << num_args << ",\n";
- /* In the clients STUB for all pre-call marshall */
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->IsVararray() != 0) { /* Variable-length arrays */
- a->CreateMarshallArgs(out, i, m_array_size_name);
- } else {
- a->CreateMarshallArgs(out, i);
- }
- if (i < num_args) {
- out << ",";
- }
- out << "\n";
- }
- out << "\t);\n";
- out << "\tif (args_string == NULL) {\n"
- << "\t\tgoto _" << m_name << "_Error;\n\t}\n";
- } else {
- out << "\tchar *args_string = NULL;\n";
- }
-
-#ifdef DBG_ENABLE
- if (rpc_log_enable) {
- out << "\tif (" << moduleid << "_record_dbg_log(filename, funcname, line, \"";
- out << m_name << "\") != 0) {\n";
- out << "\t\tgoto _" << m_name << "_Error;\n\t}\n";
- }
-#endif
-
- /* RPC API call */
- out << "\tchar *ret_string = NULL; /* pgr0431 */\n";
-#ifdef RPC_STRING_ID
- out << "\tresult=RPC_API_call(\"" << moduleid << "\", ";
-#else
- out << "\tresult=RPC_API_call(" << moduleid << "_RPC_ID, ";
-#endif
- out << RPC_API_NUM_PREFIX << m_name;
- out << ", args_string, args_size, &ret_string, &ret_size);\n";
-
- // 2007.08.25 To avoid over run within the sscanf
- // Locally copies strings needed for determining return values and uses strtol instead of sscanf
- // (Since there is no guarantee that the byte sequence to be grabbed by communication is 0-terminated)
- out << "\n"
- << "\tif (result == RPC_OK && ret_string != NULL) {\n"
- << "\t strncpy(retcode, ret_string, 8);\n"
- << "\t retcode[8] = '\\0';\n"
- << "\t result = (RPC_Result)strtoul(retcode, NULL, 16);\n";
-
- /* Post-processing==Arguments de-marshalling, free() */
- int num_of_out_args = NumOfInOutArgs(RPC_OUT_ARG);
- if (num_of_out_args > 0) {
- out << "\t if (" << RPC_DEMARSHALL_FUNCTION
- << "(ret_string + RPC_RETCODE_LEN, ret_size - RPC_RETCODE_LEN, 0, "
- << num_of_out_args << ",\n";
-
- a = m_args.begin();
- int processed = 0;
- int ret;
- for (int i = 1; i <= num_args; ++i, ++a) {
- if (a->IsVararray() != 0) { /* Variable-length arrays */
- ret = a->CreateDemarshallArgs(out, 0, i, RPC_OUT_ARG, m_array_size_name);
- } else {
- ret = a->CreateDemarshallArgs(out, 0, i, RPC_OUT_ARG);
- }
- if (ret) {
- processed++;
- if (processed < num_of_out_args) {
- out << ",";
- }
- out << "\n";
- }
- }
- out << "\t ) < 0) {\n"
- << "\t\tresult = " << RPC_API_CLIENT_ERROR << ";\n"
- << "\t }\n";
- }
-
- out << "\t} else {\n\t //result = " << RPC_API_CLIENT_ERROR << ";\n"
- << "\t}\n";
-
- out << "\t" << RPC_RETURN_FREE_FUNCTION << "(ret_string);\n";
- out << "\t" << RPC_MARSHALL_FREE_FUNCTION << "(1, args_string);\n";
-
- /* END, RETURN */
-#ifndef DBG_ENABLE
- if (num_args)
-#else
- if ((num_args)||(rpc_log_enable))
-#endif
- {
- out << "_" << m_name << "_Error:\n";
- }
-
- out << "\treturn result;\n}\n";
-
- return ret;
-}
-
-int
-APIDef::MakeClientStub(void) {
- char filename[MAX_FILENAME_LEN+1];
- sprintf(filename, "%s%s", m_lowerid.c_str(), CLIENT_STUB_FILE);
- int ret = 0;
-
- fstream out(filename, ios::out);
- if (!out.is_open()) {
- cout << "File " << filename << " Could not open.\n";
- return 1;
- }
- cout << "info: Stub file " << filename << " Creating.\n";
-
- const char *title = CLIENT_STUB_TITLE;
-
- out << "/*\n";
- out << " * " << m_id << " " << title << " " << filename << "\n";
- out << " *\n";
- out << RPCTOOL_WARNING_STRING << "\n";
- out << " */\n";
- out << "#include <" RPC_GLOBAL_HEADER_FILE << ">\n";
- out << "#include <" << m_lowerid << CLIENT_HEADER_FILE << ">\n\n";
- out << "#include <stdio.h> /* for sscanf() */\n";
- out << "#include <stdlib.h> /* for getenv() */\n";
- out << "#include <string.h> /* for strncpy() */\n";
- out << "#include <netinet/in.h> /* for ntohs() */\n\n";
-
- int api_num = 1;
- list<Function>::iterator f;
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f, ++api_num) {
- if (api_num >= (1<<16)) {
- cout << "Too many API functions.(Up to 65535)\n";
- return 1;
- }
- out << "#define " << RPC_API_NUM_PREFIX << f->Name()
- << " " << api_num << "\n";
- }
- out << "\n";
-
- /* Specification Restriction Debug Constants */
- out << "/*#define RPC_STATIC_ASSERT*/\n";
- out << "\n";
-
-#ifdef DBG_ENABLE
- if (rpc_log_enable) {
- int m_id_work_cnt;
- string m_id_work = m_id;
- for (m_id_work_cnt = 0; m_id_work_cnt < m_id_work.length(); m_id_work_cnt++) {
- m_id_work[m_id_work_cnt] = toupper(m_id_work[m_id_work_cnt]);
- }
- out << "int\n" << m_id << "_record_dbg_log(const char *filename, " <<
- "const char *funcname, int line, const char *apiname)\n";
- out << "{\n\t";
- out << "if (getenv(\"" << m_id_work << "_RPC_LOG\") != NULL) {\n\t\t";
- out << "return RPC_record_dbg_log(filename, funcname, line, apiname);\n\t";
- out << "}\n\t";
- out << "return 0;\n";
- out << "}\n\n";
- }
-#endif
-
- /* API definitions */
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f) {
- if (f->PrintClientStub(m_id.c_str(), out) != 0) {
- ret = 1;
- break;
- }
- }
- return ret;
-}
-
-int
-Arg::IsArraySize(void) {
- if (m_is_array_size != 0) {
- if (IsTypeCodeNumeric(m_code) == 1) {
- return 1;
- } else {
- cout << "Variable-length array length specification variables must be integers.\n";
- return -1;
- }
- }
- return 0;
-}
-
-int
-Function::CheckFuncArraySize(void) {
- int num_args = (int)(m_args.size());
- list<Arg>::iterator a;
- a = m_args.begin();
- for (int i = 1; i <= num_args; ++i, ++a) {
- int ret = a->IsArraySize();
- if (ret > 0) {
- if (m_array_size_pos != 0)
- {
- cout << "Two or more variable array length specification arguments exist.\n";
- return 1;
- }
- m_array_size_pos = i;
- a->GetUndecolatedName(m_array_size_name, i);
- } else if (ret < 0) {
- return 1;
- }
- }
- return 0;
-}
-
-int
-APIDef::CheckAllArraySize(void) {
- list<Function>::iterator f;
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f) {
- if (f->CheckFuncArraySize() != 0) {
- return 1;
- }
- }
- return 0;
-}
-
-int
-APIDef::MakeStubs(void) {
- if (m_id.size() == 0) {
- cout << "The module name is not specified.\n";
- return 1;
- }
-
- if (m_id.size() > MAX_FILENAME_LEN - strlen(SERVER_STUB_FILE)) {
- cout << "The module name is too long.\n";
- return 1;
- }
-
- /* Pre-examine the ARRAYSIZE specification */
- //cout << "<check_all_array_size>\n";
- if (CheckAllArraySize() != 0) {
- return 1;
- }
-
- //cout << "<MakeHeaderFiles(0)>\n";
- if (MakeHeaderFiles(1) != 0) {
- return 1;
- }
-
- //cout << "<MakeHeaderFiles(1)>\n";
- if (MakeHeaderFiles(0) != 0) {
- return 1;
- }
-
- if (MakeServerStub() != 0) {
- return 1;
- }
-
- if (MakeClientStub() != 0) {
- return 1;
- }
-
- return 0;
-}
-
-void
-Arg::Print(void) {
- cout << "\t";
- if (m_name.size() > 0) {
- cout << "Variable name=" << m_name << " ";
- }
- cout << "Type=" << TypeCodeString(m_code) << "In bytes=" << m_bytes << " ";
- if (m_is_pointer) {
- cout << "Pointer ";
- }
- if ((m_in_out & RPC_OUT_ARG) != 0) {
- cout << "Output ";
- }
- cout << "\n";
-}
-
-void
-Function::Print(int with_args) {
- printf("Function name=%s\n", m_name.c_str());
- if (with_args) {
- list<Arg>::iterator a;
- for (a = m_args.begin(); a != m_args.end(); ++a) {
- a->Print();
- }
- }
-}
-
-void
-APIDef::Print(int with_args) {
- list<Function>::iterator f;
- for (f = m_funcs.begin(); f != m_funcs.end(); ++f) {
- f->Print(with_args);
- }
-}
-
-void
-APIDef::IdTolower(void) {
- char *lower = new char[m_id.size() + 1];
- strcpy(lower, m_id.c_str());
- char *p;
- for (p = lower; *p; p++) {
- *p = (char)(tolower(*p));
- }
- m_lowerid = lower;
- delete[] lower;
-}
diff --git a/video_in_hal/otherservice/rpc_library/tool/apidef.h b/video_in_hal/otherservice/rpc_library/tool/apidef.h
deleted file mode 100755
index b042a90..0000000
--- a/video_in_hal/otherservice/rpc_library/tool/apidef.h
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * @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 apidef.h
- * @brief RPC tools--Function/macro definitions and APIDef class definitions
- */
-/** @addtogroup RPCtool
- *
- * @brief Using the RPC Tool (rpc_apidef)
- *
- * rpc_apidef [CPP option...] API definition file name
- *
- * - CPP option
- * The RPC tool calls the C preprocessor (CPP) internally
- * for processing comments and #if directives.
- * Here, you can specify options to be given to the CPP, such as symbol definitions
- * for conditional branch descriptions in the API definition file.
- * - API definition file name
- * Pathname to the API definition file.
- * The file name must be thread ID + ".api".
- *
- * The output file is as follows.
- * "*" is a lowercase version of the API definition file name preceding ".api".
- * - *_api.h(Client header files)
- * - *_api_stub.c(Client stub file)
- * - *_srvr.h(Server header file)
- * - *_srvr_stub.c(Server stub file)
- *
- * Examples:
- * - Examples1: rpc_apidef -DTEST XXX.api
- * - Examples2: rpc_apidef XXX.api
- * - => Xxx_api.h, xxx_api_stub.c, ... To the output
- */
-#ifndef RPC_LIBRARY_TOOL_APIDEF_H_
-#define RPC_LIBRARY_TOOL_APIDEF_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#ifdef DBG_ENABLE
-extern char rpc_log_enable;
-#endif
-
-/* C++ to C I/F functions */
-const char *TypeCodeString(const int code);
-int IsTypeCodeNumeric(const int code);
-
-/*
- * C to C++ I/F functions (APIDef class)
- */
-void ApidefDefineId(const char *id);
-void ApidefAddHeader(const char *filename);
-int ApidefPushFunctionArg(int arg_code, int buffer_bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name, int in_out,
- const char *var_name);
-void ApidefProcessFunction(const char *funcname);
-void ApidefListFunctions(int with_args);
-void ApidefFreeAllocation(void);
-int ApidefMakeStubs(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RPC_IN_ARG 0x01
-#define RPC_OUT_ARG 0x02
-#define RPC_INOUT_ARG (RPC_IN_ARG|RPC_OUT_ARG)
-
-#define MAX_FILENAME_LEN 63
-#define SERVER_HEADER_FILE "_srvr.h"
-#define CLIENT_HEADER_FILE "_api.h"
-#define SERVER_STUB_FILE "_srvr_stub.c"
-#define CLIENT_STUB_FILE "_api_stub.c"
-#define SERVER_HEADER_DEFINE "_srvr_h_"
-#define CLIENT_HEADER_DEFINE "_api_h_"
-
-#define SERVER_HEADER_TITLE "Server header files"
-#define CLIENT_HEADER_TITLE "Client header files"
-#define SERVER_STUB_TITLE "Server stub file"
-#define CLIENT_STUB_TITLE "Client stub file"
-
-#define RPC_MARSHALL_FUNCTION "RPC_marshall_arguments"
-#define RPC_DEMARSHALL_FUNCTION "RPC_demarshall_arguments"
-#define RPC_MARSHALL_FREE_FUNCTION "RPC_marshall_free"
-#define RPC_RETURN_FREE_FUNCTION "RPC_free_return_string"
-
-#define RPC_API_SERVER_RETURN "RPC_Result"
-#define RPC_API_SERVER_ERROR "RPC_ERR_Fatal"
-#define RPC_API_CLIENT_RETURN "RPC_Result"
-#define RPC_API_CLIENT_ERROR "RPC_ERR_Fatal"
-#define RPC_API_DISPATCH_TYPE "RPC_dispatch_func_t"
-#define RPC_API_DISPATCH_RETURN "RPC_Result"
-#define RPC_API_DISPATCH_FUNC_FULL "_API_dispatch(UINT16 api_num, const char *args_string, unsigned int args_size, char **ret_string, unsigned int *ret_size)" // NOLINT (readability/nolint)
-#define RPC_API_DISPATCH_FUNC_NAME "_API_dispatch"
-#define RPC_API_NUM_PREFIX "RPC_API_NUM_"
-#define RPC_GLOBAL_HEADER_FILE "other_service/rpc.h"
-
-#define RPCTOOL_WARNING_STRING \
-" * The file created by the RPC tool.This file should not be edited."
-
-#define EXTERN_C_START \
-"#ifdef __cplusplus\n" \
-"extern \"C\" {\n" \
-"#endif\n"
-
-#define EXTERN_C_END \
-"#ifdef __cplusplus\n" \
-"}\n" \
-"#endif /* __cplusplus */\n"
-
-#ifdef __cplusplus
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <list>
-
-using namespace std; // NOLINT (readability/nolint)
-
-/** @ingroup RPCtool
- * @class Arg
- * @brief Class that stores and processes the arguments of functions read from the API definition file
- */
-class Arg {
- protected:
- int m_code;
- int m_bytes;
- int m_is_pointer;
- int m_in_out; /* Bit OR of _IN_ARG and _OUT_ARG */
- int m_is_vararray;
- int m_is_array_size;
- string m_type_name;
- string m_name;
-
- public:
- Arg() {
- m_code = m_bytes = m_is_pointer = m_in_out = m_is_vararray = m_is_array_size = 0;
- }
- Arg(int code, int bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *type_name, int in_out,
- const char *var_name) {
- m_code = code;
- m_bytes = bytes;
- m_is_pointer = is_pointer;
- m_is_vararray = is_vararray;
- m_is_array_size = is_array_size;
- m_in_out = in_out;
- if (type_name) {
- m_type_name = type_name;
- }
- if (var_name) {
- m_name = var_name;
- }
- }
- ~Arg() {}
-
- int Code(void) { return m_code; }
- int Bytes(void) { return m_bytes; }
- int IsPointer(void) { return m_is_pointer; }
- int InOut(void) { return m_in_out; }
- string& TypeName(void) { return m_type_name; }
- void GetUndecolatedName(string& name, int num); // NOLINT (readability/nolint)
-
- int PrintUndecoratedName(fstream& out, int num);
- int PrintPrototype(fstream& out, int num);
- int PrintPrototype(fstream& out) { return PrintPrototype(out, 0); }
-
- int CreateMarshallArgs(fstream& out, int num);
- int CreateMarshallArgs(fstream& out, int num, string &array_size_name); // NOLINT (readability/nolint)
- int CreateMarshallArgs(fstream& out, int num, int in_out);
- int CreateMarshallArgs(fstream& out, int num, int in_out, string &array_size_name); // NOLINT (readability/nolint)
- int CreateDemarshallArgs(fstream& out, int deliver_pointer, int num);
- int CreateDemarshallArgs(fstream& out, int deliver_pointer, int num, string &array_size_name); // NOLINT (readability/nolint)
- int CreateDemarshallArgs(fstream& out, int deliver_pointer, int num, int in_out);
- int CreateDemarshallArgs(fstream& out, int deliver_pointer, int num, int in_out, string &array_size_name); // NOLINT (readability/nolint)
-
- int IsVararray(void) { return m_is_vararray; }
- int IsArraySize(void);
- void Print(void);
-};
-
-/** @ingroup RPCtool
- * @class Function
- * @brief Class that stores and processes function definitions read from the API definition file
- */
-class Function {
- protected:
- string m_name;
- list<Arg> m_args;
- int m_array_size_pos;
- string m_array_size_name;
-
- public:
- Function():m_array_size_name("") { m_array_size_pos = 0; }
- ~Function() {
- list<Arg>::size_type size = m_args.size();
- for (list<Arg>::size_type i = 0 ; i < size ; i++) {
- m_args.begin();
- m_args.pop_front();
- }
- }
-
- const char *Name(void) { return m_name.c_str(); }
- void SetName(const char *funcname) {
- m_name = funcname;
- }
-
- int NumOfArgs(void) {
- return (int)(m_args.size()); // NOLINT (readability/nolint)
- }
- int NumOfInOutArgs(int in_out) {
- int count = 0;
- list<Arg>::iterator a;
- for (a = m_args.begin(); a != m_args.end(); ++a) {
- if ((a->InOut() & in_out) != 0) {
- ++count;
- }
- }
- return count;
- }
-
- int AppendArg(int code, int bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name, int in_out, const char *var_name);
-
- int PrintPrototype(fstream& out);
- int PrintPrototype(fstream& out, int server);
-#ifdef DBG_ENABLE
- int PrintMacro(fstream& out);
-#endif
-
- int PrintServerStub(fstream& out);
- int PrintClientStub(const char *moduleid, fstream& out);
-
- int CheckFuncArraySize(void);
- void Print(int with_args);
-};
-
-/** @ingroup RPCtool
- * @class APIDef
- * @brief Class that stores and processes the result of reading the API definition file
- */
-class APIDef {
- protected:
- list<Function> m_funcs;
- Function *m_work;
- string m_id;
- string m_lowerid;
- list<string> m_headers;
-
- public:
- APIDef() { m_work = 0; }
- ~APIDef() {
- list<Function>::size_type size = m_funcs.size();
- for (list<Function>::size_type i = 0; i < size; i++) {
- m_funcs.begin();
- m_funcs.pop_front();
- }
- if (m_work != NULL) {
- delete m_work;
- }
- size = m_headers.size();
- for (list<Function>::size_type i = 0; i < size; i++) {
- m_headers.begin();
- m_headers.pop_front();
- }
- }
-
- void IdTolower(void);
- void DefineId(const char *id) {
- m_id = id;
- IdTolower();
- }
- void AddHeader(const char *filename) {
- string str = filename;
- m_headers.push_back(str);
- }
-
- int AddFunctionArg(int arg_code, int buffer_bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name, int in_out,
- const char *var_name) {
- if (m_work == NULL) {
- m_work = new Function();
- }
- return m_work->AppendArg(arg_code, buffer_bytes, is_pointer,
- is_vararray, is_array_size,
- var_type_name, in_out, var_name);
- }
- void NameFunction(const char *funcname) {
- if (m_work == NULL) {
- m_work = new Function();
- }
- m_work->SetName(funcname);
-
- AppendFunction(m_work);
- delete m_work;
- m_work = NULL;
- }
-
- void AppendFunction(Function *pfunc) {
- m_funcs.push_back(*pfunc);
- }
-
- int CheckAllArraySize(void);
-
- int MakeStubs(void);
- void Print(int with_args);
-
- private:
- int MakeHeaderFiles(int server);
- int MakeServerStub(void);
- int MakeClientStub(void);
-};
-#endif /* __cplusplus */
-
-#endif // RPC_LIBRARY_TOOL_APIDEF_H_
diff --git a/video_in_hal/otherservice/rpc_library/tool/apidef.l b/video_in_hal/otherservice/rpc_library/tool/apidef.l
deleted file mode 100755
index c2f246a..0000000
--- a/video_in_hal/otherservice/rpc_library/tool/apidef.l
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * @file apidef.l
- * @brief RPC tools--Defining lexical analysis rules for API definition files
- *
- */
-/** @ingroup RPCtool
- * Defining Lexical Analysis Rules for Use with RPC Tools (apidef)
- */
-%{
-#include <string.h>
-#include <stdlib.h>
-#include "apidef.tab.h"
-%}
-
-ALPHA [A-Za-z_]
-ALPHANUM [0-9\-A-Za-z_]
-ALPHANUMDOT [0-9.\-A-Za-z_/]
-
-%x include
-%s apidef
-%x str_num
-
-%%
-INCLUDE { BEGIN(include); return rpc_INCLUDE; }
-<include>\< { return '<'; }
-<include>{ALPHANUMDOT}+ {
- yylval.strval = malloc(strlen(yytext)+1);
- strcpy(yylval.strval, yytext);
- return rpc_NAME_DOT;
- }
-<include>\> { BEGIN(INITIAL); return '>'; }
-<include>. /* ignore */
-
-RPC_Result { BEGIN(apidef); return RPC_RESULT; }
-
-<apidef>STRING/[0-9]+ { BEGIN(str_num);
- yylval.ival = rpc_STRING; return rpc_STRING; }
-<str_num>[0-9]+ {
- BEGIN(apidef);
- sscanf(yytext, "%d", &yylval.ival);
- return rpc_NUM;
- }
-<str_num>. /* ignore */
-
-<apidef>{
-char { yylval.ival = rpc_CHAR; return rpc_CHAR; }
-int { yylval.ival = rpc_INT; return rpc_INT; }
-signed[ \t\n]+int { yylval.ival = rpc_SINT; return rpc_SINT; }
-unsigned[ \t\n]+int { yylval.ival = rpc_UINT; return rpc_UINT; }
-INT8 { yylval.ival = rpc_INT8; return rpc_INT8; }
-INT16 { yylval.ival = rpc_INT16; return rpc_INT16; }
-INT32 { yylval.ival = rpc_INT32; return rpc_INT32; }
-INT64 { yylval.ival = rpc_INT64; return rpc_INT64; }
-UINT8 { yylval.ival = rpc_UINT8; return rpc_UINT8; }
-UINT16 { yylval.ival = rpc_UINT16; return rpc_UINT16; }
-UINT32 { yylval.ival = rpc_UINT32; return rpc_UINT32; }
-UINT64 { yylval.ival = rpc_UINT64; return rpc_UINT64; }
-float { yylval.ival = rpc_FLOAT; return rpc_FLOAT; }
-double { yylval.ival = rpc_DOUBLE; return rpc_DOUBLE; }
-void { yylval.ival = rpc_VOID; return rpc_VOID; }
-IN {
- fprintf(stderr,
- "Specification change: IN Pointer argument needs to be prefixed \"const\" instead of \"IN\".\n"
- );
- return rpc_UNKNOWN;
- }
-OUT {
- fprintf(stderr,
- "Specification change: OUT argument no longer needs to be prefixed with \"OUT\".\n"
- );
- /* ignore */
- }
-INOUT { yylval.ival = rpc_INOUT; return rpc_INOUT; }
-const { yylval.ival = rpc_CONST; return rpc_CONST; }
-VARARRAY { yylval.ival = rpc_VARARRAY; return rpc_VARARRAY; }
-ARRAYSIZE { yylval.ival = rpc_ARRAYSIZE; return rpc_ARRAYSIZE; }
-
-{ALPHA}+{ALPHANUM}* {
- yylval.strval = malloc(strlen(yytext)+1);
- strcpy(yylval.strval, yytext);
- return rpc_NAME;
- }
-
-\( { return '('; }
-\) { return ')'; }
-\* { return '*'; }
-, { return ','; }
-\; { BEGIN(INITIAL); return ';'; }
-
-} /* end of <apidef> */
-
-#.*\n /* ignore CPP directives */
-
-{ALPHANUMDOT}+ {
- fprintf(stderr, "Unknown keyword %s\n", yytext);
- return rpc_UNKNOWN;
- }
-
-[ \t\n]+ /* eat up whitespace */
-
-%%
-#ifdef OLD_STUFFS
-%x portdef
-%x addr_num
-PORT { BEGIN(portdef); return DEFINE_PORT; }
-<portdef>[0-9]+ {
- BEGIN(INITIAL);
- sscanf(yytext, "%d", &yylval.ival);
- return NUM;
- }
-
-<apidef>ADDR/[0-9]+ { BEGIN(addr_num); yylval.ival = _ADDR; return _ADDR; }
-<addr_num>[0-9]+ {
- BEGIN(apidef);
- sscanf(yytext, "%d", &yylval.ival);
- return NUM;
- }
-#endif
-
-/*
- * function to free the buffer which flex allocates but not frees
- */
-void
-free_flex_buffer(void)
-{
- yy_delete_buffer(YY_CURRENT_BUFFER);
-}
-
-/*
- * dummy function to avoid a warning of not using 'yyunput'
- */
-void
-dummy(void)
-{
- yyunput(0, 0);
-}
diff --git a/video_in_hal/otherservice/rpc_library/tool/apidef.y b/video_in_hal/otherservice/rpc_library/tool/apidef.y
deleted file mode 100755
index ce20c9c..0000000
--- a/video_in_hal/otherservice/rpc_library/tool/apidef.y
+++ /dev/null
@@ -1,615 +0,0 @@
-/**
- * @file apidef.y
- * @brief RPC tools--API definition file syntax definition and read/front-end processing
- *
- */
-
-/*---------------------------------------------------------------------------*/
-/* C declarative statement */
-/*---------------------------------------------------------------------------*/
-%{
-#define YYDEBUG 1
-#define YYERROR_VERBOSE 1
-
-#include <stdio.h>
-#include <stdlib.h>
-
-/*
- * YACC to C I/F functions
- */
-extern int yylex(void); /* LEX I/F */
-extern int yyerror(const char *); /* dummy */
-
-#include "apidef.h"
-
-/* YACC to C I/F functions */
-static void AddHeader(const char *header_file);
-static int push_function_arg(int arg_type, int num_of_bytes,
- int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name,
- int is_out, const char *var_name);
-static void process_function(const char *funcname);
-static void free_string(char *funcname);
-
-static int var_type;
-static int num_of_bytes;
-static int is_pointer;
-static int in_out;
-static int is_vararray;
-static int is_array_size;
-static char *var_type_name = NULL;
-
-%}
-
-/*---------------------------------------------------------------------------*/
-/* Bison declarations */
-/*---------------------------------------------------------------------------*/
-%union {
- int ival;
- char *strval;
-}
-
-%token '"'
-%left ','
-%left '('
-%right ')'
-%left '*'
-%token '{'
-%token '}'
-%token ';'
-%token '\n'
-%token <strval> rpc_INCLUDE 257
-%token <strval> RPC_RESULT 258
-%token <strval> rpc_NAME_DOT 259
-%token <strval> rpc_NAME 260
-%type <strval> funcdefs funcdef args
-%type <strval> nonvoid_args arg var_type
-%type <strval> var_primitive_type var_string_type var_user_defined_type
-/*
-%token <strval> rpc_OUT
-*/
-%token <strval> rpc_INOUT 261
-%token <strval> rpc_CONST 262
-%token <strval> rpc_VARARRAY 263
-%token <strval> rpc_ARRAYSIZE 264
-%token <ival> rpc_NUM 265
-%token <strval> rpc_VOID 266
-%token <ival> rpc_CHAR 267
-%token <ival> rpc_INT 268
-%token <ival> rpc_SINT 269
-%token <ival> rpc_UINT 270
-%token <ival> rpc_INT8 271
-%token <ival> rpc_INT16 272
-%token <ival> rpc_INT32 273
-%token <ival> rpc_INT64 274
-%token <ival> rpc_UINT8 275
-%token <ival> rpc_UINT16 276
-%token <ival> rpc_UINT32 277
-%token <ival> rpc_UINT64 278
-%token <ival> rpc_FLOAT 279
-%token <ival> rpc_DOUBLE 280
-%token <ival> rpc_STRING 281
-%token <ival> rpc_USER_DEFINED 282
-%token <ival> rpc_UNKNOWN 283
-
-/*---------------------------------------------------------------------------*/
-/* Grammar rule */
-/*---------------------------------------------------------------------------*/
-%%
-input: includes funcdefs
-;
-
-includes: /* empty input */
- | includes include
-;
-
-include: rpc_INCLUDE '<' rpc_NAME_DOT '>'
- { AddHeader($3); free_string($3); }
-;
-
-funcdefs: funcdef
- | funcdefs funcdef
-;
-
-funcdef: RPC_RESULT rpc_NAME '(' args ')' ';'
- { process_function($2); free_string($2);}
-;
-
-args: rpc_VOID
- | nonvoid_args
-;
-
-nonvoid_args: arg
- | nonvoid_args ',' arg
-;
-
-arg: var_type rpc_NAME
- {
- if (push_function_arg(var_type, num_of_bytes, is_pointer,
- is_vararray, is_array_size,
- var_type_name, in_out, $2) < 0) {
- YYERROR;
- }
- if (var_type_name) { free_string(var_type_name); }
- var_type_name = NULL;
- free_string($2);
- }
- | var_type
- {
- if (push_function_arg(var_type, num_of_bytes, is_pointer,
- is_vararray, is_array_size,
- var_type_name, in_out, NULL) < 0) {
- YYERROR;
- }
- if (var_type_name) { free_string(var_type_name); }
- var_type_name = NULL;
- }
-;
-
-/*
- * Standard IN pointers are not allowed.
- * When used as an array address, it is not clear how many bytes to copy.
- * ->You are asked to declare the type and pass the address.
- * Otherwise, you can simply pass it by value.
- */
-var_type: var_primitive_type /* INT8, .. DOUBLE */
- { is_pointer = 0; is_vararray = 0; is_array_size = 0; in_out =RPC_IN_ARG; }
- | var_primitive_type '*' /* OUT INT8 *, ... OUT DOUBLE * */
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_OUT_ARG; }
- /* if allow primitive IN pointer
- | rpc_CONST var_primitive_type '*'
- { is_pointer = 1; in_out = RPC_IN_ARG; }
- */
- | var_string_type
- /* OUT STRING128, ... */
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_OUT_ARG; }
- | rpc_CONST var_string_type
- /* IN STRING128, ... */
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_IN_ARG; }
- | var_user_defined_type
- { is_pointer = 0; is_vararray = 0; is_array_size = 0; in_out = RPC_IN_ARG; }
- | var_user_defined_type '*'
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_OUT_ARG; }
- | rpc_CONST var_user_defined_type '*'
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_IN_ARG; }
-
- /* INOUT specification */
- | rpc_INOUT var_string_type
- /* IN STRING128, ... */
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_INOUT_ARG; }
- | rpc_INOUT var_user_defined_type '*'
- { is_pointer = 1; is_vararray = 0; is_array_size = 0; in_out = RPC_INOUT_ARG; }
-
- /* Variable-length arrays */
- | rpc_CONST rpc_VARARRAY var_primitive_type '*'
- { is_pointer = 1; is_vararray = 1; is_array_size = 0; in_out = RPC_IN_ARG; }
- | rpc_VARARRAY var_primitive_type '*'
- { is_pointer = 1; is_vararray = 1; is_array_size = 0; in_out = RPC_OUT_ARG; }
- | rpc_INOUT rpc_VARARRAY var_primitive_type '*'
- { is_pointer = 1; is_vararray = 1; is_array_size = 0; in_out = RPC_INOUT_ARG; }
- | rpc_CONST rpc_VARARRAY var_user_defined_type '*'
- { is_pointer = 1; is_vararray = 1; is_array_size = 0; in_out = RPC_IN_ARG; }
- | rpc_VARARRAY var_user_defined_type '*'
- { is_pointer = 1; is_vararray = 1; is_array_size = 0; in_out = RPC_OUT_ARG; }
- | rpc_INOUT rpc_VARARRAY var_user_defined_type '*'
- { is_pointer = 1; is_vararray = 1; is_array_size = 0; in_out = RPC_INOUT_ARG; }
-
- /* Variable length array size */
- | rpc_ARRAYSIZE var_primitive_type
- { is_pointer = 0; is_vararray = 0; is_array_size = 1; in_out = RPC_IN_ARG; }
-;
-
-var_primitive_type:
- rpc_CHAR { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_INT { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_SINT { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_UINT { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_INT8 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_UINT8 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_INT16 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_UINT16 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_INT32 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_UINT32 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_INT64 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_UINT64 { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_FLOAT { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
- | rpc_DOUBLE { var_type = $1; num_of_bytes = 0; var_type_name = NULL; }
-;
-
-var_string_type: rpc_STRING rpc_NUM
- { var_type = $1; num_of_bytes = $2; var_type_name = NULL; }
-;
-
-var_user_defined_type: rpc_NAME
- { var_type = rpc_USER_DEFINED; num_of_bytes = 0; var_type_name = $1; }
-;
-
-%%
-
-/*---------------------------------------------------------------------------*/
-/* C additional code */
-/*---------------------------------------------------------------------------*/
-/* Including an older bison results in an error */
-/*#include "apidef.tab.h"*/
-
-#include <unistd.h>
-#include <assert.h>
-#include <string.h>
-/*
- * YACC/Lex interface functions/variables
- */
-extern int yydebug; /* for YACC debug */
-extern int yyparse(void);
-extern FILE *yyin;
-extern int yy_flex_debug; /* for FLEX debug */
-/* my own function to free the buffer flex allocates */
-extern void free_flex_buffer(void);
-
-#ifdef DBG_ENABLE
-char rpc_log_enable;
-#endif
-
-/**/
-static void
-AddHeader(const char *filename)
-{
- ApidefAddHeader(filename);
-}
-
-static int
-push_function_arg(int arg_type, int num_of_bytes, int is_pointer,
- int is_vararray, int is_array_size,
- const char *var_type_name, int in_out, const char *var_name)
-{
- switch(arg_type) {
- case rpc_CHAR:
- case rpc_INT:
- case rpc_SINT:
- case rpc_UINT:
- case rpc_INT8:
- case rpc_INT16:
- case rpc_INT32:
- case rpc_INT64:
- case rpc_UINT8:
- case rpc_UINT16:
- case rpc_UINT32:
- case rpc_UINT64:
- case rpc_FLOAT:
- case rpc_DOUBLE:
- case rpc_STRING:
- case rpc_USER_DEFINED:
- return ApidefPushFunctionArg(arg_type, num_of_bytes, is_pointer,
- is_vararray, is_array_size,
- var_type_name, in_out, var_name);
- break;
-
- default:
- return -1;
- break;
- }
-}
-
-static void
-process_function(const char *funcname)
-{
- ApidefProcessFunction(funcname);
-}
-
-static void
-free_string(char *s)
-{
-#ifdef DEBUG
- fprintf(stderr, "freed %s\n", s);
-#endif
- free(s);
-}
-
-static void
-extract_id(const char *filename, char **id)
-{
- char *dotapi;
- char *slash;
- const char *start;
-
- if (id == NULL) {
- return;
- }
- dotapi = strrchr(filename, '.');
- if (dotapi == NULL) {
- return;
- }
- if (strcmp(dotapi, ".api")) {
- return;
- }
-
- slash = strrchr(filename, '/');
- start = filename;
- if (slash != NULL) {
- start = slash + 1;
- }
-
- *id = malloc((size_t)(dotapi - start + 1));
- if (*id == NULL) {
- return;
- }
- strncpy(*id, start, (size_t)(dotapi - start));
- (*id)[dotapi - start] = '\0';
-}
-
-static void
-usage(const char *prog)
-{
- fprintf(stdout,
- "How to use: %s [CPPFLAGS] ... API definition file name\n",
- prog);
- fprintf(stdout, "Examples1: %s XXX.api\n", prog);
- fprintf(stdout, "Examples2: %s -DSOME_DEFINES XXX.api\n", prog);
-}
-
-#define CPP_PROG "cpp"
-static void free_cpp_argv(char **argv);
-
-static char **
-prepare_cpp_argv(int argc, char *argv[])
-{
- char **cpp_argv;
- char **ret;
-
- cpp_argv = malloc(sizeof(char *) * (long unsigned int)(argc+1));
- if (cpp_argv == NULL) {
- return NULL;
- }
- memset(cpp_argv, 0, sizeof(char *) * (long unsigned int)(argc+1));
- ret = cpp_argv;
-
- cpp_argv[0] = malloc(strlen(CPP_PROG)+1);
- if (cpp_argv[0] == NULL) {
- free_cpp_argv(ret);
- return NULL;
- }
- strcpy(cpp_argv[0], CPP_PROG);
- cpp_argv++;
-
- for( ; *argv != NULL ; argv++, cpp_argv++) {
- *cpp_argv = malloc(strlen(*argv)+1);
- if (*cpp_argv == NULL) {
- free_cpp_argv(ret);
- return NULL;
- }
- strcpy(*cpp_argv, *argv);
- }
- *cpp_argv = NULL;
- return ret;
-}
-
-static void
-free_cpp_argv(char **argv)
-{
- char **orig; orig = argv;
- while(*argv != NULL) {
- free(*argv);
- argv++;
- }
- free(orig);
-}
-
-/** @ingroup RPCtool
- * @brief RPCtool main functions
- *
- * Perform the following processing.
- *
- * - Lexical context analysis of the API definition file(See apidef.y and apidef.l)
- * - The API function definition read from the definition file is stored in the APIDef class.
- * - Outputs stub and header files from function definitions stored in APIDef after a successful read
- */
-int
-main(int argc, char *argv[])
-{
- int start;
- char **cpp_argv;
- int pipefd[2];
- int pid;
- int ret;
-
- if (argc < 2) {
- usage(argv[0]);
- return 1;
- }
-
- start = 1;
- yy_flex_debug = 0;
-
- if (!strcmp(argv[1], "-d")) {
- yydebug=1;
- yy_flex_debug = 1;
- if (argc > 2) {
- start++;
- } else {
- usage(argv[0]);
- return 1;
- }
- }
-
-#ifdef DBG_ENABLE
- /*
- * If the second-to-last argument is a log specification
- */
- if ( ( argc >= 2 ) && (!strcmp(argv[argc-2], "-log")) ) {
- rpc_log_enable = 1;
- } else {
- rpc_log_enable = 0;
- }
-#endif
-
- /*
- * Extract ID from last argument (API definition file name)
- */
- {
- char *moduleid;
- moduleid = NULL;
- extract_id(argv[argc-1], &moduleid);
- if (moduleid == NULL) {
- fprintf(stdout, "%s: The API definition file name is invalid.\n", argv[0]);
- usage(argv[0]);
- return 1;
- }
- ApidefDefineId(moduleid);
- free(moduleid);
- }
-
- /*
- * Preparing options to exec CPPs
- */
- cpp_argv = prepare_cpp_argv(argc, argv + start);
- if (cpp_argv == NULL) {
- printf("No Memory!\n");
- return 1;
- }
-
-#define PIPE_READ 0
-#define PIPE_WRITE 1
-
- if (pipe(pipefd) != 0) {
- perror("pipe");
- return 1;
- }
-
- pid = fork();
- if (pid < 0) {/* fork error */
- close(pipefd[PIPE_READ]);
- close(pipefd[PIPE_WRITE]);
- perror("fork");
- return 1;
- }
- if (pid == 0) {/* child process */
- int must_be_1;
- /*
- * force stdout to be pipefd[PIPE_WRITE]
- */
- close(pipefd[PIPE_READ]);
- close(1);
- must_be_1 = dup(pipefd[PIPE_WRITE]);
- assert(must_be_1 == 1);
- close(pipefd[PIPE_WRITE]);
- /*
- * invoke C preprocessor with flags
- */
- execvp(CPP_PROG, cpp_argv);
- perror("execvp");
- exit(0);
- } else {
- /*
- * parent process
- */
- int must_be_0;
- free_cpp_argv(cpp_argv);
-
- /*
- * force stdin to be pipefd[PIPE_READ]
- */
- close(pipefd[PIPE_WRITE]);
- close(0);
- must_be_0 = dup(pipefd[PIPE_READ]);
- assert(must_be_0 == 0);
- close(pipefd[PIPE_READ]);
- }
-
- ret = yyparse();
-
- free_flex_buffer();
-
- if (ret == 0) {/* Parsed successfully */
- //ApidefListFunctions(1);
- ApidefMakeStubs();
- } else {/* Parse error occurred */
- fputs("The APIs that have been analyzed so far are as follows.\n", stdout);
- fputs("-----start-----\n", stdout);
- ApidefListFunctions(0);
- fputs("------end------\n", stdout);
- fputs("Check this API definition\n", stdout);
- }
- ApidefFreeAllocation();
-
- return ret;
-}
-
-int
-yyerror(const char *s)
-{
- printf("\nError: %s\n", s);
- return 0;
-}
-
-int
-yywrap()
-{
- return 1;
-}
-
-static char const *Types[] = {
- "char",
- "int",
- "signed int",
- "unsigned int",
- "INT8",
- "INT16",
- "INT32",
- "INT64",
- "UINT8",
- "UINT16",
- "UINT32",
- "UINT64",
- "float",
- "double",
- "char *",
-};
-
-static const int TypeCodes[] = {
- rpc_CHAR,
- rpc_INT,
- rpc_SINT,
- rpc_UINT,
- rpc_INT8,
- rpc_INT16,
- rpc_INT32,
- rpc_INT64,
- rpc_UINT8,
- rpc_UINT16,
- rpc_UINT32,
- rpc_UINT64,
- rpc_FLOAT,
- rpc_DOUBLE,
- rpc_STRING,
-};
-
-const char *
-TypeCodeString(const int code)
-{
- int i;
- int num;
- num = sizeof(TypeCodes) / sizeof(int);
-
- for(i = 0 ; i < num ; i++) {
- if (code == TypeCodes[i]) {
- return Types[i];
- }
- }
- return NULL;
-}
-
-int
-IsTypeCodeNumeric( const int code )
-{
- int i;
-
- for(i = 0 ; i < sizeof(TypeCodes) / sizeof(TypeCodes[0]) ; i++) {
- if (TypeCodes[i] == rpc_FLOAT) {
- break;
- }
- if (code == TypeCodes[i]) {
- return 1;
- }
- }
- return 0;
-}
diff --git a/video_in_hal/otherservice/rpc_library/tool_for_arm/Makefile b/video_in_hal/otherservice/rpc_library/tool_for_arm/Makefile
deleted file mode 100755
index 67121b4..0000000
--- a/video_in_hal/otherservice/rpc_library/tool_for_arm/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# @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.
-#
-
-all test: apidef.tab.h
-
-clean:
- rm -rf $(CLEAN_FILES)
-
-YACC := bison
-YFLAGS := -d -t
-
-VPATH += ../tool
-CPPFLAGS += -I../tool
-OUTPUTDIR += ../tool
-
-apidef.tab.h apidef.tab.c: apidef.y
- cd ../tool; $(YACC) $(YFLAGS) $<
-
-CLEAN_FILES := ../tool/apidef.tab.h ../tool/apidef.tab.c
-
-CLEAN_TARGET := clean-test clean-all clean-all-test \
-clean-self clean-self-test clean-all-sub clean-self-sub #comment out for make clean errorclean-sub
-
-EMPTY_TARGET := install-test build-lib build-prog build-shlib build-arlib \
-build-test-mock-lib build-test-mock-arlib build-test-mock-shlib build-cfg \
-install install-header install-test-mock-header install-test-casename install-lib \
-install-shlib install-arlib install-prog install-data install-cfg install-preload
-
-
-.PHONY: all install test clean $(CLEAN_TARGET) $(EMPTY_TARGET)
-
-$(CLEAN_TARGET): clean
-
-$(EMPTY_TARGET):
-
-
-include ../../other_service.mk
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/LICENSE b/video_in_hal/otherservice/vehicle_parameter_library/LICENSE
deleted file mode 100755
index f433b1a..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/LICENSE
+++ /dev/null
@@ -1,177 +0,0 @@
-
- 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/video_in_hal/otherservice/vehicle_parameter_library/Makefile.client b/video_in_hal/otherservice/vehicle_parameter_library/Makefile.client
deleted file mode 100755
index 172da8f..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/Makefile.client
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# @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
-
-include ../other_service.mk
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/Makefile b/video_in_hal/otherservice/vehicle_parameter_library/library/Makefile
deleted file mode 100755
index ae99cfa..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# @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.
-#
-
-INST_SHLIBS = libvp
-
-VPATH = ./src ./include/$(COMPONENT_NAME)
-
-INST_HEADERS = VP_GetEnv.h env_vehicle.h \
- env_vehicleparameterlibrary.h env_vehicleparameterlibrary_serial.h env_ext.h \
- VP_FuncCheck_CanRcv.h vehicle_parameter_library.h
-
-libvp_SRCS = VP_FuncCheck_CanRcv.c VP_GetEnv.c
-
-LDLIBS += -Wl,--no-as-needed
-LDLIBS += -Wl,-Bdynamic -lns_backup
-
-CPPFLAGS += -I./include
-CPPFLAGS += -Werror=implicit-function-declaration
-CPPFLAGS += -Werror=format-security
-CPPFLAGS += -Wconversion
-CPPFLAGS += -Wpointer-to-int-cast
-CPPFLAGS += -Wint-to-pointer-cast
-CPPFLAGS += -Wpointer-arith
-CPPFLAGS += -Wformat
-CPPFLAGS += -DVP_FUNCCHECK_CANRCV_CANRCV_ACTIVATE
-
-include ../../other_service.mk
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/VP_FuncCheck_CanRcv_private.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/VP_FuncCheck_CanRcv_private.h
deleted file mode 100755
index 193e54a..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/VP_FuncCheck_CanRcv_private.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * @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 VP_FuncCheck_CanRcv_private.h
- * @brief Get function existence API internal header file
- * @attention Cannot be included from external functions
- *
- * Exported because it will be inconvenient at MT
- */
-/* ====================================================================== */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_VP_FUNCCHECK_CANRCV_PRIVATE_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_VP_FUNCCHECK_CANRCV_PRIVATE_H_
-
-/* ====================================================================== */
-/* Include public headers */
-/* ====================================================================== */
-#include <other_service/VP_FuncCheck_CanRcv.h>
-
-/* ====================================================================== */
-/* Internal definitions for debugging */
-/* ====================================================================== */
-#ifdef DEBUG_MT
- #include <stdio.h>
-
- #define MT_STATIC /**< Static definitions - Remove the static in order to remove the file scope at MT. */
-
- /**< Debugging output function - Compile the entity at MT */
- #define DEBUG_PRINT(msg) {printf("%s\n", (msg) ) ;}
- /**< Debugging output function - Compile the entity at MT */
- #define DEBUG_PRINTF(format, msg) {printf((format), (msg) ) ;}
-
- /**< Static assertion */
- #define VP_DEBUG_STATIC_ASSERT(expr) do { int static_assert[ (expr)? 1:-1 ]; }while(0);
-#else
- /**< Static definitions. The scope shall be limited by static at the time of releasing.
- * Remove the static in order to remove the file scope at MT.
- */
- #define MT_STATIC static
-
- /**< Static definitions. The scope shall be limited by static at the time of releasing.
- * Remove the static in order to remove the file scope at MT.
- */
- #define DEBUG_PRINT(msg)
-
- /**< Static definitions. The scope shall be limited by static at the time of releasing.
- * Remove the static in order to remove the file scope at MT.
- */
- #define DEBUG_PRINTF(format, msg)
-
- /**< Static definitions. The scope shall be limited by static at the time of releasing.
- * Remove the static in order to remove the file scope at MT.
- */
- #define VP_DEBUG_STATIC_ASSERT(expr)
-#endif
-
-/* ====================================================================== */
-/* General-purpose type definition - Redifined for internal use */
-/* ====================================================================== */
-/**< Internal boolean type - sys/type.h has no type definitions, so defined it here. FCCR: "F"unc"C"heck_"C"an"R"cv */
-typedef enum VP_FCCR_BOOL_Tag {
- B_FALSE, /**< FALSE */
- B_TRUE /**< TRUE */
-} VP_FCCR_BOOL;
-
-
-/* ====================================================================== */
-/* Structure */
-/* ====================================================================== */
-typedef struct TABLE_INDEX_INFO_tag {
- char* code_str; /**< String that can be gotten from vehicle parameters */
- unsigned int index; /**< Index for function existence */
-} TABLE_INDEX_INFO;
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_VP_FUNCCHECK_CANRCV_PRIVATE_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_FuncCheck_CanRcv.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_FuncCheck_CanRcv.h
deleted file mode 100755
index 17b4503..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_FuncCheck_CanRcv.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * @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 VP_FuncCheck_CanRcv.h
- * @brief \~english Get function existence API header file
- */
-/* ====================================================================== */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_VP_FUNCCHECK_CANRCV_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_VP_FUNCCHECK_CANRCV_H_
-
-#include <sys/types.h>
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-
-// typedef unsigned char u_int8;
-
-
-/**
-* @~english XM Audio
-*/
-#define XM_AUDIO ((u_int8_t)1)
-/**
-* @~english _CWORD76_
-*/
-#define _CWORD76_ ((u_int8_t)2)
-
-#define VP_CANRCV__CWORD27_ ((u_int8_t)3) /**< _CWORD27_ */
-/**
-* @~english WiFi HotSpot
-*/
-#define WIFI_HOTSPOT ((u_int8_t)4)
-/**
-* @~english standard driving rregulation of AREA1
-*/
-#define AREA1_STD_TRAF_LIMIT ((u_int8_t)5)
-/**
-* @~english HD Data (Include traffic)
-*/
-#define HD_DATA ((u_int8_t)6)
-/**
-* @~english WiFi 5G
-*/
-#define WIFI_5G ((u_int8_t)7)
-
-/**
-* @~english definiton of return value of API(VP_FuncCheck_CanRcv),which is used to get status of function implemention
-*/
-#define FUNCTION_CHECK_RESULT_OK ((u_int8_t)0)
-/**
-* @~english this function is invalid
-*/
-#define FUNCTION_CHECK_RESULT_NG ((u_int8_t)1)
-/**
-* @~english this function does not exist
-*/
-#define FUNCTION_CHECK_RESULT_UNKNOWN ((u_int8_t)2)
-/**
-* @~english reference out of AREA1
-*/
-#define FUNCTION_CHECK_RESULT_OUT_OF_AREA1 ((u_int8_t)3)
-
-/* Function prototype declaration */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup VP_FuncCheck_CanRcv
-/// \~english @par Brief
-/// VP_FuncCheck_CanRcv
-/// \~english @param [in] FunctionName
-/// function name
-/// \~english @retval FUNCTION_CHECK_RESULT_OK: This function is available
-/// \~english @retval FUNCTION_CHECK_RESULT_NG: This function is unavailable
-/// \~english @retval FUNCTION_CHECK_RESULT_UNKNOWN: This function does not exist
-/// \~english @retval FUNCTION_CHECK_RESULT_OUT_OF_AREA1: reference out of Area1
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - To get the function check result from
-/// - vehicle parameter:CAN info judge
-/// - vehicle parameter:country ID
-/// - country ID and function judge info in API
-/// - When vehicle parameter:CAN info judge
-/// is [CAN_judge] or [country_ID],
-/// and if country_ID is unacquainted or undefined, the API returns [available].
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////
-u_int8_t VP_FuncCheck_CanRcv(u_int8_t FunctionName);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_VP_FUNCCHECK_CANRCV_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_GetEnv.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_GetEnv.h
deleted file mode 100755
index 69f6df2..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/VP_GetEnv.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * @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 VP_GetEnv.h
- * @brief \~english Get vehicle parameter environment variable API header file
- */
-/* ====================================================================== */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_VP_GETENV_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_VP_GETENV_H_
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-#include <other_service/env_ext.h>
-
-/**
-* @~english the max length of vehicle parameter environment viarable
-*/
-
-#define VP_MAX_LENGTH 128
-
-/**
-* @~english definition of parameter environment viarable such as destination
-* destination diff
-*/
-
-#define VEHICLEPARAMETERLIBRARY_AREA "VEHICLEPARAMETERLIBRARY_AREA"
-
-/**
-* @~english brand diff
-*/
-#define VEHICLEPARAMETERLIBRARY_BRAND "VEHICLEPARAMETERLIBRARY_BRAND"
-
-/**
-* @~english definition of _CWORD31_ vehicle parameter environment viarable
-*/
-#include <other_service/env_vehicle.h>
-
-/**
-* @~english definition of vehicle parameter environment viarable
-*/
-#include <other_service/env_vehicleparameterlibrary.h>
-
-/**
-* @~english definition of Serial vehicle parameter environment viarable
-*/
-#include <other_service/env_vehicleparameterlibrary_serial.h>
-
-/* Function prototype declaration */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-////////////////////////////////////////////////////////////////////////////////
-/// \ingroup VP_GetEnv
-/// \~english @par Brief
-/// VP_GetEnv
-/// \~english @param [in] pEnvStr
-/// The pointer of environment variable name string
-/// \~english @param [out] pEnvBuff
-/// The head address of saving environment variable value
-/// \~english @retval None
-/// \~english @par Prerequisite
-/// None
-/// \~english @par Change of internal state
-/// None
-/// \~english @par Conditions of processing failure
-/// None
-/// \~english @par Classification
-/// Public
-/// \~english @par Type
-/// Sync Only
-/// \~english @par Detail
-/// - To get the environment variable value by the environment variable name,
-/// and save it in pEnvBuff.
-/// - When environment variable name is NULL or an undefined value,
-/// a blank string shall be saved in pEnvBuff.
-/// \~english @see None
-////////////////////////////////////////////////////////////////////////////////
-void VP_GetEnv(const char *pEnvStr, char *pEnvBuff);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_VP_GETENV_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_ext.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_ext.h
deleted file mode 100755
index 266e510..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_ext.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * @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.
- */
-
-/**
- * @file env_ext.h
- * @brief \~english Define of supplier vehicle parameter environment variable.
- */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_EXT_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_EXT_H_
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-
-//
-// Please describe supplier-specific definitions of the vehicle parameters.
-//
-
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_EXT_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicle.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicle.h
deleted file mode 100755
index a0eaaf9..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicle.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * @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 env_vehicle.h
- * @brief \~english Define of _CWORD31_ vehicle parameter environment variable
- */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLE_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLE_H_
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-
-/**
-* @~english _CWORD31_ version
-*/
-#define VP__CWORD31__VERSION "VP__CWORD31__version"
-/**
-* @~english _CWORD31_ class type of LAN
-*/
-
-#define VP__CWORD31__CLASS_TYPE_OF_LAN "VP__CWORD31__class_type_of_LAN"
-/**
-* @~english _CWORD31_ reverse signal
-*/
-
-#define VP__CWORD31__REVERSE "VP__CWORD31__reverse"
-/**
-* @~english _CWORD31_ PKB signal
-*/
-
-#define VP__CWORD31__PKB "VP__CWORD31__PKB"
-/**
-* @~english _CWORD31_ ADIM signal of _CWORD62_
-*/
-
-#define VP__CWORD31__ADIM__CWORD62_ "VP__CWORD31__ADIM__CWORD62_"
-/**
-* @~english _CWORD31_ telematics function
-*/
-
-#define VP__CWORD31__TELEMATICS_FUNCTION "VP__CWORD31__telematics_function"
-/**
-* @~english _CWORD31_ opening picture
-*/
-
-#define VP__CWORD31__OPENING_PICTURE "VP__CWORD31__opening_picture"
-/**
-* @~english _CWORD31_ theme color
-*/
-
-#define VP__CWORD31__THEME_COLOR "VP__CWORD31__theme_color"
-/**
-* @~english _CWORD31_ vehicle design vehicle body
-*/
-#define VP__CWORD31__VEHICLE_BODY "VP__CWORD31__vehicle_body"
-/**
-* @~english _CWORD31_ air conditioner on screen
-*/
-#define VP__CWORD31__AC_ONSCREEN "VP__CWORD31__AC_onscreen"
-/**
-* @~english _CWORD31_ air conditioner screen operation
-*/
-#define VP__CWORD31__AC_SCREEN_OPERATION "VP__CWORD31__AC_screen_operation"
-/**
-* @~english _CWORD31_ air conditioner home screen
-*/
-#define VP__CWORD31__AC_SCREEN_HOME "VP__CWORD31__AC_screen_home"
-/**
-* @~english _CWORD31_ air conditioner switch concierge
-*/
-#define VP__CWORD31__AC_SWITCH_CONCIERGE "VP__CWORD31__AC_switch_concierge"
-/**
-* @~english _CWORD31_ _CWORD113_
-*/
-#define VP__CWORD31___CWORD11_ "VP__CWORD31___CWORD11_"
-/**
-* @~english _CWORD31_ EF home screen
-*/
-#define VP__CWORD31___CWORD11__HOME "VP__CWORD31___CWORD11__home"
-/**
-* @~english _CWORD31_ drive wheel of _CWORD113_
-*/
-#define VP__CWORD31___CWORD11__DRIVE_WHEEL "VP__CWORD31___CWORD11__drive_wheel"
-/**
-* @~english _CWORD31_ drive type of _CWORD113_
-*/
-#define VP__CWORD31___CWORD11__DRIVE_TYPE "VP__CWORD31___CWORD11__drive_type"
-/**
-* @~english _CWORD31_ battery position of _CWORD113_
-*/
-#define VP__CWORD31___CWORD11__BATTERY_POSITION "VP__CWORD31___CWORD11__battery_position"
-/**
-* @~english _CWORD31_ _CWORD112_ trip
-*/
-#define VP__CWORD31___CWORD9__TRIP "VP__CWORD31___CWORD9__trip"
-/**
-* @~english _CWORD31_ FC home screen trip
-*/
-#define VP__CWORD31___CWORD9__HOME_TRIP "VP__CWORD31___CWORD9__home_trip"
-/**
-* @~english _CWORD31_ _CWORD112_ fuel
-*/
-#define VP__CWORD31___CWORD9__FUEL "VP__CWORD31___CWORD9__fuel"
-/**
-* @~english _CWORD31_ FC home screen fuel
-*/
-#define VP__CWORD31___CWORD9__HOME_FUEL "VP__CWORD31___CWORD9__home_fuel"
-/**
-* @~english _CWORD31_ FC eco safety point service
-*/
-#define VP__CWORD31__FC_ECO_SAFETY_POINT_SERVICE "VP__CWORD31__FC_eco_safety_point_service"
-/**
-* @~english _CWORD31_ FC GAS scale
-*/
-#define VP__CWORD31__FC_SCALE_GAS "VP__CWORD31__FC_scale_GAS"
-/**
-* @~english _CWORD31_ FC HV scale
-*/
-#define VP__CWORD31__FC_SCALE_HV "VP__CWORD31__FC_scale_HV"
-/**
-* @~english _CWORD31_ fuel consumption display function scale of fuel consumption (ForFC)
-*/
-#define VP__CWORD31__FC_SCALE_FC "VP__CWORD31__FC_scale_FC"
-/**
-* @~english _CWORD31_ fuel consumption display function scale of fuel consumption (ForEV)
-*/
-#define VP__CWORD31__FC_SCALE_EV "VP__CWORD31__FC_scale_EV"
-/**
-* @~english _CWORD31_ FC energy mark
-*/
-#define VP__CWORD31__FC_ENERGY_MARK "VP__CWORD31__FC_energy_mark"
-/**
-* @~english _CWORD31_ _CWORD112_ type
-*/
-#define VP__CWORD31___CWORD9__TYPE "VP__CWORD31___CWORD9__type"
-/**
-* @~english _CWORD31_ FC signal
-*/
-#define VP__CWORD31__FC_SIGNAL "VP__CWORD31__FC_SIGNAL"
-/**
-* @~english _CWORD31_ display setting screen
-*/
-#define VP__CWORD31__DISPLAY_SETTING_SCREEN "VP__CWORD31__display_setting_screen"
-/**
-* @~english _CWORD31_ clock type
-*/
-#define VP__CWORD31__CLOCK_TYPE "VP__CWORD31__clock_type"
-/**
-* @~english _CWORD31_ start up BGM
-*/
-#define VP__CWORD31__START_UP_BGM "VP__CWORD31__start_up_BGM"
-/**
-* @~english _CWORD31_ start up BGM type
-*/
-#define VP__CWORD31__START_UP_BGM_TYPE "VP__CWORD31__start_up_BGM_type"
-/**
-* @~english _CWORD31_ font left DTV antenna
-*/
-#define VP__CWORD31__DTV_ANTENNA_FL "VP__CWORD31__DTV_antenna_FL"
-/**
-* @~english _CWORD31_ font right DTV antenna
-*/
-#define VP__CWORD31__DTV_ANTENNA_FR "VP__CWORD31__DTV_antenna_FR"
-/**
-* @~english _CWORD31_ rear left DTV antenna
-*/
-#define VP__CWORD31__DTV_ANTENNA_RL "VP__CWORD31__DTV_antenna_RL"
-/**
-* @~english _CWORD31_ rear right DTV antenna
-*/
-#define VP__CWORD31__DTV_ANTENNA_RR "VP__CWORD31__DTV_antenna_RR"
-/**
-* @~english _CWORD31_ DTV antenna
-*/
-#define VP__CWORD31__DTV_ANTENNA "VP__CWORD31__DTV_antenna"
-/**
-* @~english _CWORD31_ antenna info antenna available / unavailable
-*/
-#define VP__CWORD31__BEACON_ANTENNA "VP__CWORD31__beacon_antenna"
-/**
-* @~english _CWORD31_ HF voice quality type
-*/
-#define VP__CWORD31__HF_VOICE_QUALITY_TYPE "VP__CWORD31__HF_voice_quality_type"
-/**
-* @~english _CWORD31_ DAB antenna
-*/
-#define VP__CWORD31__DAB_ANTENNA "VP__CWORD31__DAB_antenna"
-/**
-* @~english _CWORD31_ DAB screen display
-*/
-#define VP__CWORD31__DAB_SCREEN "VP__CWORD31__DAB_screen"
-/**
-* @~english _CWORD31_ hard switch beep
-*/
-#define VP__CWORD31__HARD_SWITCH_BEEP "VP__CWORD31__hard_switch_beep"
-/**
-* @~english _CWORD31_ beep while hard SW being pressed
-*/
-#define VP__CWORD31__SCREEN_SWITCH_BEEP "VP__CWORD31__screen_switch_beep"
-/**
-* @~english _CWORD31_ steering SW type of steering SW
-*/
-#define VP__CWORD31__STEERING_SWITCH_TYPE "VP__CWORD31__steering_switch_type"
-/**
-* @~english _CWORD31_ TEL switch of steering
-*/
-#define VP__CWORD31__STEERING_SWITCH_TEL "VP__CWORD31__steering_switch_tel"
-/**
-* @~english _CWORD31_ class circuit mode
-*/
-#define VP__CWORD31__CLASS_CIRCUIT_MODE "VP__CWORD31__class_circuit_mode"
-/**
-* @~english _CWORD31_ panel microcomputer
-*/
-#define VP__CWORD31__PANEL_MICROCOMPUTER "VP__CWORD31__panel_microcomputer"
-/**
-* @~english _CWORD31_ class watch at brake hold
-*/
-#define VP__CWORD31__CLASS_WATCH_AT_BRAKE_HOLD "VP__CWORD31__class_watch_at_brake_hold"
-/**
-* @~english _CWORD31_ GPS antenna
-*/
-#define VP__CWORD31__GPS_ANTENNA "VP__CWORD31__GPS_antenna"
-/**
-* @~english _CWORD31_ ILL- available / unavailable
-*/
-#define VP__CWORD31__ILL_SIGNAL "VP__CWORD31__ILL_signal"
-/**
-* @~english _CWORD31_ switch trigger
-*/
-#define VP__CWORD31__SWITCH_TRIGGER "VP__CWORD31__switch_trigger"
-/**
-* @~english _CWORD31_ sensitivity level
-*/
-#define VP__CWORD31__SENSITIVITY_LEVEL "VP__CWORD31__sensitivity_level"
-/**
-* @~english _CWORD31_ hadsfree bluetooth device name / WiFi AP name selection
-*/
-#define VP__CWORD31__BT_DEVICE_AP_NAME "VP__CWORD31__BT_device_AP_name"
-/**
-* @~english _CWORD31_ Eco drive max vol setting in D4 model
-*/
-#define VP__CWORD31__ECO_RUN_D4_VOL_MAX "VP__CWORD31__eco_run_D4_VOL_max"
-/**
-* @~english _CWORD31_ thumbnail type
-*/
-#define VP__CWORD31__THUMBNAIL_TYPE "VP__CWORD31__thumbnail_type"
-/**
-* @~english _CWORD31_ EOM function
-*/
-#define VP__CWORD31__EOM_FUNCTION "VP__CWORD31__EOM_function"
-/**
-* @~english _CWORD31_ Microphone Type
-*/
-#define VP__CWORD31__MICROPHONE_TYPE "VP__CWORD31__Microphone_Type"
-/**
-* @~english _CWORD31_ Microphone Location
-*/
-#define VP__CWORD31__MICROPHONE_LOCATION "VP__CWORD31__Microphone_Location"
-/**
-* @~english _CWORD31_ VR microphone parameter vehicle noize level
-*/
-#define VP__CWORD31__VEHICLE_NOIZE_LEVEL "VP__CWORD31__vehicle_noize_level"
-
-/**
-* @~english _CWORD31_ wide band FM
-*/
-#define VP__CWORD31__WIDE_BAND_FM "VP__CWORD31__Wide_band_FM"
-/**
-* @~english _CWORD31_ map color
-*/
-#define VP__CWORD31__MAP_COLOR "VP__CWORD31__map_color"
-/**
-* @~english _CWORD31_ cloud eco
-*/
-#define VP__CWORD31__CLOUD_ECO "VP__CWORD31__cloud_eco"
-/**
-* @~english _CWORD31_ eg type
-*/
-#define VP__CWORD31__EG_TYPE "VP__CWORD31__EG_type"
-
-/**
-* @~english _CWORD31_ display type
-*/
-#define VP__CWORD31__DISPLAY_TYPE "VP__CWORD31__display_type"
-/**
-* @~english _CWORD31_ clock display
-*/
-#define VP__CWORD31__CLOCK_DISPLAY "VP__CWORD31__clock_display"
-/**
-* @~english _CWORD31_ destination
-*/
-#define VP__CWORD31__DESTINATION "VP__CWORD31__destination"
-/**
-* @~english _CWORD31_ class operation
-*/
-#define VP__CWORD31__CLASS_OPERATION "VP__CWORD31__class_operation"
-/**
-* @~english _CWORD31_ DES function
-*/
-#define VP__CWORD31__DES_FUNCTION "VP__CWORD31__DES_function"
-
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLE_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary.h
deleted file mode 100755
index 1c0020c..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * @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 env_vehicleparameterlibrary.h
- * @brief \~english Define of vehicle parameter environment variable
- */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLEPARAMETERLIBRARY_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLEPARAMETERLIBRARY_H_
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-
-/**
-* @~english version
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_VERSION "VP_VEHICLEPARAMETERLIBRARY_version"
-/**
-* @~english maker ID
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_MAKER_ID "VP_VEHICLEPARAMETERLIBRARY_maker_ID"
-/**
-* @~english area
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_AREA "VP_VEHICLEPARAMETERLIBRARY_area"
-/**
-* @~english grade
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_GRADE "VP_VEHICLEPARAMETERLIBRARY_grade"
-/**
-* @~english destination country code
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE "VP_VEHICLEPARAMETERLIBRARY_dest_c_code"
-/**
-* @~english DAB tuner number
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_DAB_TUNER_NUM "VP_VEHICLEPARAMETERLIBRARY_DAB_tuner_num"
-/**
-* @~english AM radio
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_AM_RADIO "VP_VEHICLEPARAMETERLIBRARY_AM_Radio"
-/**
-* @~english amp type
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_AMP_TYPE "VP_VEHICLEPARAMETERLIBRARY_AMP_type"
-/**
-* @~english display
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_DISPLAY "VP_VEHICLEPARAMETERLIBRARY_DISPLAY"
-/**
-* @~english touch panel
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_TOUCHPANEL "VP_VEHICLEPARAMETERLIBRARY_TOUCHPANEL"
-/**
-* @~english DECK
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_DECK "VP_VEHICLEPARAMETERLIBRARY_DECK"
-/**
-* @~english JP traffic information show
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_JPTRAFFICINFO_SHOW "VP_VEHICLEPARAMETERLIBRARY_JPTrafficInfo_show"
-/**
-* @~english connection server
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_CONNECTION_SERVER "VP_VEHICLEPARAMETERLIBRARY_CONNECTION_SERVER"
-/**
-* @~english _CWORD40_ generation
-*/
-#define VP_VEHICLEPARAMETERLIBRARY__CWORD40_ "VP_VEHICLEPARAMETERLIBRARY__CWORD40_"
-
-/**
-* @~english Radio reception level
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_RADIO_LV_DIAG "VP_VEHICLEPARAMETERLIBRARY_RADIO_LV_DIAG"
-
-/**
-* @~english Navigation model
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_NAVI "VP_VEHICLEPARAMETERLIBRARY_NAVI"
-
-/**
-* @~english Map update service
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_MAP_UPDATE "VP_VEHICLEPARAMETERLIBRARY_MAP_UPDATE"
-
-/**
-* @~english Headunit identification
-*/
-#define VP_HEAD_UNIT_ID "VP_HEAD_UNIT_ID"
-
-/**
-* @~english Serius raido
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_SDARS "VP_VEHICLEPARAMETERLIBRARY_SDARS"
-
-/**
-* @~english optional amp
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_ACCESSORY_AMP "VP_VEHICLEPARAMETERLIBRARY_ACCESSORY_AMP"
-
-/**
-* @~english Key trace
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_KEY_TRACE "VP_VEHICLEPARAMETERLIBRARY_KEY_TRACE"
-
-/**
-* @~english diatal TV
-*/
-#define VP_VEHICLEPARAMETERLIBRARY_DTV "VP_VEHICLEPARAMETERLIBRARY_DTV"
-
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLEPARAMETERLIBRARY_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary_serial.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary_serial.h
deleted file mode 100755
index 04ae10e..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/env_vehicleparameterlibrary_serial.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * @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 env_vehicleparameterlibrary_serial.h
- * @brief \~english Define of Serial vehicle parameter environment variable
- */
-
-#ifndef VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLEPARAMETERLIBRARY_SERIAL_H_
-#define VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLEPARAMETERLIBRARY_SERIAL_H_
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-
-/**
- * \~english Enviroment variable _CWORD49__ID
- */
-#define VP_VEHICLEPARAMETERLIBRARY_SER__CWORD49__ID "VP_VEHICLEPARAMETERLIBRARY_SER__CWORD49__ID"
-
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // VEHICLE_PARAMETER_LIBRARY_LIBRARY_INCLUDE_OTHER_SERVICE_ENV_VEHICLEPARAMETERLIBRARY_SERIAL_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/vehicle_parameter_library.h b/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/vehicle_parameter_library.h
deleted file mode 100755
index 151bae5..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/include/other_service/vehicle_parameter_library.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * @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 vehicle_parameter_library.h
- * @brief \~english include all vehicle_parameter_library head files
- */
-
-#ifndef OTHERSERVICE_VEHICLEPARAMETERLIBRARY_H_ // NOLINT(build/header_guard)
-#define OTHERSERVICE_VEHICLEPARAMETERLIBRARY_H_ // NOLINT(build/header_guard)
-
-/** @addtogroup BaseSystem
- * @{
- */
-/** @addtogroup other_service
- * @ingroup BaseSystem
- * @{
- */
-/** @addtogroup vehicle_parameter_library
- * @ingroup other_service
- * @{
- */
-#include <other_service/VP_FuncCheck_CanRcv.h>
-#include <other_service/VP_GetEnv.h>
-#include <other_service/env_vehicleparameterlibrary.h>
-#include <other_service/env_vehicleparameterlibrary_serial.h>
-#include <other_service/env_vehicle.h>
-#include <other_service/env_ext.h>
-/** @}*/ // end of vehicle_parameter_library
-/** @}*/ // end of other_service
-/** @}*/ // end of BaseSystem
-
-#endif // OTHERSERVICE_VEHICLEPARAMETERLIBRARY_H_
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/src/VP_FuncCheck_CanRcv.c b/video_in_hal/otherservice/vehicle_parameter_library/library/src/VP_FuncCheck_CanRcv.c
deleted file mode 100755
index 938ea7f..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/src/VP_FuncCheck_CanRcv.c
+++ /dev/null
@@ -1,732 +0,0 @@
-/*
- * @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 VP_FuncCheck_CanRcv.c
- * @brief Get function existence API
- */
-
-
-/* ====================================================================== */
-/* Header */
-/* ====================================================================== */
-#include <assert.h>
-#include <string.h>
-#include <regex.h>
-
-#include <other_service/VP_GetEnv.h>
-#include "VP_FuncCheck_CanRcv_private.h"
-
-/* ====================================================================== */
-/* Enumeration types */
-/* ====================================================================== */
-typedef enum VPFuncTableDestIndexTag{
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- VP_FUNC_TABLE_DEST_INDEX_A ,
- VP_FUNC_TABLE_DEST_INDEX_B ,
-
- VP_FUNC_TABLE_DEST_INDEX_MAX /**< Number of choices (index maximum value: 1) */
-} VP_FUNC_TABLE_DEST_INDEX;
-
-typedef enum VPFuncTableBrandTag{
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- VP_FUNC_TABLE_BRAND_A,
- VP_FUNC_TABLE_BRAND_B,
-
- VP_FUNC_TABLE_BRAND_INDEX_MAX /**< Number of choices (index maximum value: 1) */
-} VP_FUNC_TABLE_BRAND;
-
-typedef enum VPFuncTableGradeLTag{
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- VP_FUNC_TABLE_GRADE_A1,
- VP_FUNC_TABLE_GRADE_A2,
-
- VP_FUNC_TABLE_GRADE_A_INDEX_MAX /**< Number of choices (index maximum value: 1) */
-} VP_FUNC_TABLE_GRADE_A;
-
-typedef enum VPFuncTableGradeTTag{
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- VP_FUNC_TABLE_GRADE_B1,
- VP_FUNC_TABLE_GRADE_B2,
-
- VP_FUNC_TABLE_GRADE_B_INDEX_MAX /**< Number of choices (index maximum value: 1) */
-} VP_FUNC_TABLE_GRADE_B;
-
-typedef enum VPFuncTableFuncTypeIndexTag{
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_UNKNOWN , /**< Unknown function */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_XM_AUDIO , /**< XM Audio */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_VP_CANRCV__CWORD27_ , /**< _CWORD27_ */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_WIFI_HOTSPOT , /**< Wifi Hotspot */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_RESTRICT_FUNCTION , /**< Travel Restriction */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_HD_DATA , /**< HD Data */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_WIFI_5G , /**< Wifi 5G */
-
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_MAX /**< Number of choices (index maximum value: 1) */
-} VP_FUNC_TABLE_FUNC_TYPE;
-
-/** Processing definitions for CAN information availability */
-typedef enum CANFuncCheckSwitchTag{
- CAN_FUNC_CHEK_AVAILABLE ,
- CAN_FUNC_CHEK_UNAVAILABLE ,
- CAN_FUNC_CHEK_COUNTRY_CODE
-} CAN_FUNC_CHEK_SWITCH;
-
-
-
-/**< Definition of number of functions (required for initial definition of function availability table) */
-
-#define VP_FUNC_TABLE_FUNCTION_INDEX_MAX ((unsigned int)7)
-
-/* ====================================================================== */
-/* Macro definitions */
-/* ====================================================================== */
-/* Definition for return value from string functions */
-#define RET_STD_LIB_STRING_STR_CMP_OK ((int)0) /**< The return value of the strncmp. this value is returned when matched. */
-
-/* Default index values */
-#define DEFAULT_TABLE_INDEX_DEST (VP_FUNC_TABLE_DEST_INDEX_A) /* Initial value changed by the specification which returns the setting of the belonging property when the undefined country code is gotten. */
-#define DEFAULT_TABLE_INDEX_BRAND (VP_FUNC_TABLE_BRAND_A)
-#define DEFAULT_TABLE_INDEX_GRADE_A (VP_FUNC_TABLE_GRADE_A1)
-#define DEFAULT_TABLE_INDEX_GRADE_B (VP_FUNC_TABLE_GRADE_B1)
-#define DEFAULT_CAN_JUDGE_STATUS (CAN_FUNC_CHEK_COUNTRY_CODE)
-
-/* ====================================================================== */
-/* Constant definitions */
-/* ====================================================================== */
-
-/* ====================================================================== */
-/* Structures */
-/* ====================================================================== */
-
-/* ====================================================================== */
-/* Internal function prototype declarations */
-/* ====================================================================== */
-#ifdef VP_FUNCCHECK_CANRCV_CANRCV_ACTIVATE
-MT_STATIC u_int8_t getResult_CanJudge( unsigned int idx_func );
-MT_STATIC unsigned int getIndexOfFunc( u_int8_t func );
-MT_STATIC unsigned int getIndexOfTable( const char vp_param_str[] , const TABLE_INDEX_INFO table_index_info[] , unsigned int info_size, unsigned int default_index );
-MT_STATIC VP_FCCR_BOOL hasMultipleCoutnry( const char dest_str[] , const char multiple_country_code_desig[] );
-#endif
-/* ====================================================================== */
-/* Public function definitions */
-/* ====================================================================== */
-/**
- * @fn
- * u_int8_t VP_FuncCheck_CanRcv( u_int8_t FunctionName )
- * @brief Get function existence API(Public)
- * @param[in] (FunctionName) Function Name (Number)
- * @return FUNCTION_CHECK_RESULT_OK :This function is available
- * FUNCTION_CHECK_RESULT_NG :This function is unavailable
- * FUNCTION_CHECK_RESULT_UNKNOWN :This function does not exist
- * @details Read the function name as feature name specified in the argument, then return one of the
- * "This function is available"/"This function is unavailable"/"This function does not exist"
- * of the feature as the following check-result:
- * - vehicle parameter:CAN information availability(destination package) judge
- * - vehicle parameter:country code
- * - Whether or not supported the features corresponding to the country code in this API
- *
- * When CAN information availability (destination package) in vehicle parameters is
- * "Control ON/OFF according to CAN information" or "Country code", return "This function is available"
- * if this function is called when the country code from CAN is unacquired or undetermined country code.
- */
-/* ====================================================================== */
-u_int8_t VP_FuncCheck_CanRcv( u_int8_t FunctionName )
-{
-#ifndef VP_FUNCCHECK_CANRCV_CANRCV_ACTIVATE
- u_int8_t result;
-
- switch(FunctionName) {
- case XM_AUDIO:
- result = FUNCTION_CHECK_RESULT_NG;
- break;
-
- case VP_CANRCV__CWORD27_:
- case WIFI_HOTSPOT:
- case AREA1_STD_TRAF_LIMIT:
- case HD_DATA:
- case WIFI_5G:
- result = FUNCTION_CHECK_RESULT_OK;
- break;
- default:
- result = FUNCTION_CHECK_RESULT_UNKNOWN;
- break;
- }
-
- return result;
-#else
-
- /* ====================================================================== */
- /* Internal table definition */
- /* ====================================================================== */
- /** Vehicle Parameter "CAN information Support/Not Support"- processing selector translation table */
- const TABLE_INDEX_INFO TABLE_STATUS_INFO_CAN_JUDGE[] =
- {
- { "available" , CAN_FUNC_CHEK_AVAILABLE }, // Yes
- { "unavailable" , CAN_FUNC_CHEK_UNAVAILABLE }, // None
- { "CAN_judge" , CAN_FUNC_CHEK_COUNTRY_CODE }, // Control ON/OFF according to CAN information
- { "country_ID" , CAN_FUNC_CHEK_COUNTRY_CODE } // Country code
- };
-
- /* ====================================================================== */
- /* Table Size Definition */
- /* ====================================================================== */
- const unsigned int LENGTHOF_TABLE_INDEX_INFO_CAN_JUDGE = ( sizeof(TABLE_STATUS_INFO_CAN_JUDGE ) / sizeof( TABLE_INDEX_INFO ) );
-
- /* ====================================================================== */
- /* Internal variable declarations */
- /* ====================================================================== */
- u_int8_t result = FUNCTION_CHECK_RESULT_UNKNOWN;
-
- unsigned int idx_func = 0;
-
- unsigned int can_judge_status = CAN_FUNC_CHEK_COUNTRY_CODE;
- char VP_canjudge[ VP_MAX_LENGTH ];
- char VP_area[ VP_MAX_LENGTH ];
-
- /* ====================================================================== */
- /* Process */
- /* ====================================================================== */
- /* Get vehicle parameter */
- VP_GetEnv( VEHICLEPARAMETERLIBRARY_AREA , &(VP_area[0]) );
-
- DEBUG_PRINTF( "AREA = %s; " , VP_area )
-
- /* Get feature name index */
- idx_func = getIndexOfFunc( FunctionName );
-
- DEBUG_PRINTF( "Function = %d; " , FunctionName )
- DEBUG_PRINTF( "idx_func = %d\n" , idx_func )
-
- /* Judge as other than area1 because it is not a area1 */
- if ( strncmp( VP_area, "AREA1", VP_MAX_LENGTH ) != RET_STD_LIB_STRING_STR_CMP_OK )
- {
- result = FUNCTION_CHECK_RESULT_OUT_OF_AREA1;
- }
- else
- {
- /* If the feature is unknown, it is judged to be unknown before checking CAN information. */
- if ( VP_FUNC_TABLE_FUNC_TYPE_INDEX_UNKNOWN == idx_func )
- {
- result = FUNCTION_CHECK_RESULT_UNKNOWN;
- }
- else
- {
- /* Get vehicle parameter */ /* It is unnecessary to get the parameter every time, but because there is no process to check the change, it is gotten every time as a precaution. */
- VP_GetEnv( VP__CWORD31__TELEMATICS_FUNCTION , &(VP_canjudge[0]) );
-
- /* Choose processing according to CAN information Support/Not Support. */
- can_judge_status = getIndexOfTable(
- &(VP_canjudge[0]),
- &(TABLE_STATUS_INFO_CAN_JUDGE[0]),
- LENGTHOF_TABLE_INDEX_INFO_CAN_JUDGE,
- DEFAULT_CAN_JUDGE_STATUS
- );
-
- DEBUG_PRINTF( "VP_canjudge = %s; ", VP_canjudge )
-
- /* When judging from CAN information or country code */
- if ( CAN_FUNC_CHEK_COUNTRY_CODE == can_judge_status )
- {
- DEBUG_PRINT( "CAN judge : C_CODE or CAN_JUDGE" )
- result = getResult_CanJudge( idx_func );
- }
- else
- {
- /* For available/unavailable */
- /* Standard travel restriction of AREA1 */
- if ( AREA1_STD_TRAF_LIMIT == idx_func )
- {
- result = FUNCTION_CHECK_RESULT_OK;
- }
- else
- {
- switch( can_judge_status )
- {
- case CAN_FUNC_CHEK_UNAVAILABLE:
- DEBUG_PRINT( "CAN judge : UNAVAILABLE" )
- result = FUNCTION_CHECK_RESULT_NG;
- break;
-
- case CAN_FUNC_CHEK_AVAILABLE:
- default: /* If the default value of canjudge_status are set correctly, the default cannot be selected */
- DEBUG_PRINT( "CAN judge : AVAILABLE" )
- result = FUNCTION_CHECK_RESULT_OK;
- break;
- }
- }
- }
- }
- }
- DEBUG_PRINTF( "RESULT = %d\n", result )
-
- return result;
-
-#endif
-}
-
-/* ====================================================================== */
-/* Internal function definitions */
-/* ====================================================================== */
-#ifdef VP_FUNCCHECK_CANRCV_CANRCV_ACTIVATE
-/* ====================================================================== */
-/**
- * @brief Get function existence in consideration of country code
- * @detials Internal-use functions - Processing when CAN information availability is "Country Code"
- * @param[in] idx_func Table index corresponding to the feature (takes as its argument the value after conversion to a table index, not the feature name)
- * @return Availability of the feature in current vehicle parameters
- */
-/* ====================================================================== */
-MT_STATIC u_int8_t getResult_CanJudge( unsigned int idx_func )
-{
- /* ====================================================================== */
- /* Internal constant definition */
- /* ====================================================================== */
- static const char MULTIPLE_COUNTRY_CODE_DESIG[] = "^[0-9]{3}(;[0-9]{3})+;{0,1}"; /**< Regular Expression String for Multiple Countries (Attributes). Make sure at least two country codes are stored / delimited */
-
- /* ====================================================================== */
- /* Internal table definitions */
- /* ====================================================================== */
- /** Feature table index conversion table (country code) */
- const TABLE_INDEX_INFO TABLE_INDEX_INFO_DESTINATION[] =
- {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- { "101" , VP_FUNC_TABLE_DEST_INDEX_A }, // Detination A
- { "102" , VP_FUNC_TABLE_DEST_INDEX_B } // Detination B
- };
-
- /** @todo The consideration. For the feature table by country code, if it can be summarized the GRADE A1/GRADE A2 and GRADE B1/GRADE B2,
- It can be also summarized the translation table.
- However, it must be able to guarantee that there are no differences in the table format in L/T. */
- /** Index Ttranslation Table for feature availability table (for grade A) */
- const TABLE_INDEX_INFO TABLE_INDEX_INFO_GRADE_A[] =
- {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- { "A1" , VP_FUNC_TABLE_GRADE_A1 }, // GRADE A1
- { "A2" , VP_FUNC_TABLE_GRADE_A2 } // GRADE A2
- };
-
- /** Index Translation Table for feature availability table (for grade B) */
- const TABLE_INDEX_INFO TABLE_INDEX_INFO_GRADE_B[] =
- {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- { "B1" , VP_FUNC_TABLE_GRADE_B1 }, // GRADE B1
- { "B2" , VP_FUNC_TABLE_GRADE_B2 }, // GRADE B2
- };
-
- /** Index Translation Table for feature availability table (brand) */
- const TABLE_INDEX_INFO TABLE_INDEX_INFO_BRAND[] =
- {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- { "A" , VP_FUNC_TABLE_BRAND_A }, // BRAND A
- { "B" , VP_FUNC_TABLE_BRAND_B } // BRAND B
- };
-
- /* ====================================================================== */
- /**
- * @brief Feature availability table for BRAND A
- * @details Array of type u_int8_t accessed by the following index
- */
- /* ====================================================================== */
- const u_int8_t VP_FUNC_CHECK_CANRCV_TABLE_A[ VP_FUNC_TABLE_DEST_INDEX_MAX ]
- [ VP_FUNC_TABLE_GRADE_A_INDEX_MAX ]
- [ VP_FUNC_TABLE_FUNCTION_INDEX_MAX ] =
- {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- /* Destination A */
- {
- // Unknown , XM Audio , _CWORD27_ , Wifi HotSpot , Travel Restriction , HD Data Wifi 5G
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK }, // GRADE A1
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_OK } // GRADE A2
- },
-
- /* Destination B */
- {
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK }, // GRADE A1
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_NG } // GRADE A2
- }
- };
-
- /* ====================================================================== */
- /**
- * @brief Feature availability table for BRAND B
- */
- /* ====================================================================== */
- const u_int8_t VP_FUNC_CHECK_CANRCV_TABLE_B[ VP_FUNC_TABLE_DEST_INDEX_MAX ]
- [ VP_FUNC_TABLE_GRADE_B_INDEX_MAX ]
- [ VP_FUNC_TABLE_FUNCTION_INDEX_MAX ] =
- {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- /* Destination A */
- {
- // Unknown , XM Audio , _CWORD27_ , Wifi HotSpot , Travel Restriction , HD Data , Wifi 5G
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK }, // GRADE B1
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_OK }, // GRADE B2
- },
-
- /* Detination B */
- {
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK }, // GRADE B1
- { FUNCTION_CHECK_RESULT_UNKNOWN, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_OK, FUNCTION_CHECK_RESULT_NG, FUNCTION_CHECK_RESULT_NG }, // GRADE B2
- }
- };
-
- /* ====================================================================== */
- /* Table Size Definitions */
- /* ====================================================================== */
- const unsigned int SIZE_TABLE_INDEX_INFO_BRAND = ( sizeof(TABLE_INDEX_INFO_BRAND ) / sizeof( TABLE_INDEX_INFO ) );
- const unsigned int SIZE_TABLE_INDEX_INFO_GRADE_A = ( sizeof(TABLE_INDEX_INFO_GRADE_A ) / sizeof( TABLE_INDEX_INFO ) );
- const unsigned int SIZE_TABLE_INDEX_INFO_GRADE_B = ( sizeof(TABLE_INDEX_INFO_GRADE_B ) / sizeof( TABLE_INDEX_INFO ) );
- const unsigned int SIZE_TABLE_INDEX_INFO_DESTINATION = ( sizeof(TABLE_INDEX_INFO_DESTINATION) / sizeof( TABLE_INDEX_INFO ) );
-
- /* ====================================================================== */
- /* Variable declarations */
- /* ====================================================================== */
- u_int8_t result = FUNCTION_CHECK_RESULT_UNKNOWN;
-
- VP_FCCR_BOOL isMultipleCountry = B_FALSE;
-
- unsigned int idx_dest = 0;
- unsigned int idx_brand = 0;
- unsigned int idx_grade = 0;
-
- char VP_destination[ VP_MAX_LENGTH ];
- char VP_brand[ VP_MAX_LENGTH ];
- char VP_grade[ VP_MAX_LENGTH ];
-
- /* ====================================================================== */
- /* Static assertion */
- /* ====================================================================== */
- /* The following are expected to be identical */
- VP_DEBUG_STATIC_ASSERT( SIZE_TABLE_INDEX_INFO_BRAND == VP_FUNC_TABLE_BRAND_INDEX_MAX )
- VP_DEBUG_STATIC_ASSERT( SIZE_TABLE_INDEX_INFO_GRADE_A == VP_FUNC_TABLE_GRADE_A_INDEX_MAX )
-
- /* Country code does not match because there are multiple countries. */
- VP_DEBUG_STATIC_ASSERT( VP_FUNC_TABLE_DEST_INDEX_MAX > SIZE_TABLE_INDEX_INFO_DESTINATION )
-
- /* ====================================================================== */
- /* Process */
- /* ====================================================================== */
-
- /* Argument check */
- if ( VP_FUNC_TABLE_FUNC_TYPE_INDEX_MAX <= idx_func )
- {
- DEBUG_PRINTF( "ERROR : tebale index overed idx_func = %d\n", idx_func )
-
- // Return unknown if the table size is exceeded. (However, this function can be called only from the API at the moment.)
- result = FUNCTION_CHECK_RESULT_UNKNOWN;
- }
- else
- {
-
- /* Get vehicle parameter */
- VP_GetEnv( VP__CWORD31__DESTINATION, &(VP_destination[0]) );
- VP_GetEnv( VEHICLEPARAMETERLIBRARY_BRAND , &(VP_brand[0]) );
- VP_GetEnv( VP_VEHICLEPARAMETERLIBRARY_GRADE , &(VP_grade[0]) );
-
- DEBUG_PRINTF( "VP_destination = %s\n", VP_destination )
-
- /* Append NULL at the end just in case. (so as not to cause any problems using the strlen or regcomp later) */
- VP_destination[ VP_MAX_LENGTH - 1 ] = '\0';
- VP_brand[ VP_MAX_LENGTH - 1 ] = '\0';
- VP_grade[ VP_MAX_LENGTH - 1 ] = '\0';
-
- /* Check if the country code is NULL */
- if ( VP_destination[0] == '\0' )
- {
- /* If NULL, set the index for the country code of the US. */
- idx_dest = VP_FUNC_TABLE_DEST_INDEX_A;
- DEBUG_PRINTF( "[debug]idx_dest = %d\n", idx_dest )
- }
- else
- {
- /* Check whether it is a member (multiple countries) */
- isMultipleCountry = hasMultipleCoutnry( &(VP_destination[0]), &(MULTIPLE_COUNTRY_CODE_DESIG[0]) );
-
- /* Get the index for a country code */
- if ( B_TRUE == isMultipleCountry )
- {
- /* If it is dependent (multiple countries), set the index for the country code of the dependent */
- DEBUG_PRINT( "isMultipleCountry = TRUE" )
-
- idx_dest = VP_FUNC_TABLE_DEST_INDEX_B;
- }
- else
- {
- /* If it is not dependent (multiple countries), it searches the translation table and sets the index. */
- DEBUG_PRINT( "isMultipleCountry = FALSE" )
-
- idx_dest = getIndexOfTable( &(VP_destination[0]), &(TABLE_INDEX_INFO_DESTINATION[0]), SIZE_TABLE_INDEX_INFO_DESTINATION, DEFAULT_TABLE_INDEX_DEST );
- }
- }
- DEBUG_PRINTF( "idx_dest = %d\n", idx_dest )
-
- /* Get brand index */
- idx_brand = getIndexOfTable( &(VP_brand[0]) , &(TABLE_INDEX_INFO_BRAND[0]) , SIZE_TABLE_INDEX_INFO_BRAND , DEFAULT_TABLE_INDEX_BRAND );
-
- /*
- * Get grade index
- * Setting Defaults for each brand
- * e.g. The default is A, so if it is not B, it is determined to be A.
- */
- if ( VP_FUNC_TABLE_BRAND_B == idx_brand )
- {
- DEBUG_PRINT( "idx_brand = B")
-
- idx_grade = getIndexOfTable( &(VP_grade[0]) , &(TABLE_INDEX_INFO_GRADE_B[0]) , SIZE_TABLE_INDEX_INFO_GRADE_B , DEFAULT_TABLE_INDEX_GRADE_B );
-
- /* Table access */
- result = VP_FUNC_CHECK_CANRCV_TABLE_B[idx_dest][idx_grade][idx_func];
-
- }
- else
- {
- DEBUG_PRINT( "idx_brand = A")
-
- idx_grade = getIndexOfTable( &(VP_grade[0]) , &(TABLE_INDEX_INFO_GRADE_A[0]) , SIZE_TABLE_INDEX_INFO_GRADE_A , DEFAULT_TABLE_INDEX_GRADE_A );
-
- /* Table access */
- result = VP_FUNC_CHECK_CANRCV_TABLE_A[idx_dest][idx_grade][idx_func];
-
- }
-
- //DEBUG_PRINTF( "RESULT = %d\n", result )
- }
-
- return result;
-}
-
-
-/* ====================================================================== */
-/**
- * @brief Feature-Table Index Translation Function
- * @detials Internal-use functions. It is translate the feature definition number to an index for the table.
- * @param[in] Feature name defined by the func define
- * @return The table index corresponding to the feature. If the given country code is invalid, return the index given by default_idx
- */
- /* ====================================================================== */
-MT_STATIC unsigned int getIndexOfFunc( u_int8_t func )
-{
- /* ====================================================================== */
- /* Internal table definitions */
- /* ====================================================================== */
- /** Index translation table for feature table (Features) */
- const VP_FUNC_TABLE_FUNC_TYPE GET_INDEX_OF_FUNC[] = {
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_UNKNOWN , //#define VP_FUNCCHECK_CANRCV_UNKNOWN ((u_int8_t)0) /* Unknown Features */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_XM_AUDIO , //#define XM_AUDIO ((u_int8_t)1) /* XM Audio */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_VP_CANRCV__CWORD27_ , //#define _CWORD27_ ((u_int8_t)3) /* _CWORD27_ */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_WIFI_HOTSPOT , //#define WIFI_HOTSPOT ((u_int8_t)4) /* WiFi HotSpot */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_RESTRICT_FUNCTION , //#define AREA1_STD_TRAF_LIMIT ((u_int8_t)5) /* Standard Travel Restriction of AREA1 */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_HD_DATA , //#define HD_DATA ((u_int8_t)6) /* HD Data (Include traffic) */
- VP_FUNC_TABLE_FUNC_TYPE_INDEX_WIFI_5G //#define WIFI_5G ((u_int8_t)7) /* WiFi 5G */
-
- };
-
-
- /* ====================================================================== */
- /* Variable declarations */
- /* ====================================================================== */
- const unsigned int index_table_size = sizeof( GET_INDEX_OF_FUNC ) / sizeof( VP_FUNC_TABLE_FUNC_TYPE );
-
- u_int8_t table_index = VP_FUNC_TABLE_FUNC_TYPE_INDEX_UNKNOWN;
-
- /* ====================================================================== */
- /* Static assertions */
- /* ====================================================================== */
- /* In the current configuration, the feature's defined value and index match, so the translation table size should also match (remove this assertion if there is no match) */
- VP_DEBUG_STATIC_ASSERT( index_table_size == VP_FUNC_TABLE_FUNCTION_INDEX_MAX )
-
- /* Translation tables or the enumeration pair (VP_FUNC_TABLE_FUNC_TYPE) must also be modified when the definition value changes.
- It may also be changed, added, or deleted following asserts as appropriate according to the defined value. */
- VP_DEBUG_STATIC_ASSERT( XM_AUDIO == VP_FUNC_TABLE_FUNC_TYPE_INDEX_XM_AUDIO )
-
- VP_DEBUG_STATIC_ASSERT( VP_CANRCV__CWORD27_ == VP_FUNC_TABLE_FUNC_TYPE_INDEX_VP_CANRCV__CWORD27_ )
- VP_DEBUG_STATIC_ASSERT( WIFI_HOTSPOT == VP_FUNC_TABLE_FUNC_TYPE_INDEX_WIFI_HOTSPOT )
- VP_DEBUG_STATIC_ASSERT( AREA1_STD_TRAF_LIMIT == VP_FUNC_TABLE_FUNC_TYPE_INDEX_RESTRICT_FUNCTION )
- VP_DEBUG_STATIC_ASSERT( HD_DATA == VP_FUNC_TABLE_FUNC_TYPE_INDEX_HD_DATA )
- VP_DEBUG_STATIC_ASSERT( WIFI_5G == VP_FUNC_TABLE_FUNC_TYPE_INDEX_WIFI_5G )
-
-
- /* ====================================================================== */
- /* Process */
- /* ====================================================================== */
-
- /* Argument check: Treat as unknown feature if it is larger than index translation table */
- if ( index_table_size <= func )
- {
- table_index = VP_FUNC_TABLE_FUNC_TYPE_INDEX_UNKNOWN;
- }
- else
- {
- table_index = (u_int8_t)(GET_INDEX_OF_FUNC[func]);
- }
-
- return table_index;
-
-}
-
-/* ====================================================================== */
-/**
- * @brief Vehicle parameter string to integer conversion function
- * @detials Internal-use function. Convert the given string (vehicle parameter) into an index for the table.
- * The value gotten using VP_GetEnv() is assumed. Thus, the maximum length is VP_MAX_LENGTH.
- * Return the value set in default_index if the conversion is failed.
- * @param[in] vp_param_str String as source of convetion to the table index
- * @param[in] table_index_info String corresponding to table index and an array of structs with table indexes set
- * @param[in] info_size Size of the table_index_info array
- * @param[in] default_index Default index. Return this value if none of table_index_info matches
- * @return The table index corresponding to the vehicle parameter string given by the argument. Return the value given by the default_index argument if the given country code is invalid.
- */
- /* ====================================================================== */
-MT_STATIC unsigned int getIndexOfTable( const char vp_param_str[], const TABLE_INDEX_INFO table_index_info[], unsigned int info_size, unsigned int default_index )
-{
- unsigned int table_index = 0;
-
- table_index = default_index; /* Set as initial value so that it can return the set default if it is unknown */
-
- //DEBUG_PRINTF("info_size = %d\n", info_size)
-
- /* NULL checking */
- if ( NULL != vp_param_str )
- {
- if ( NULL != table_index_info )
- {
- unsigned int i = 0;
-
- for ( i = 0; i < info_size; i++ )
- {
- if ( RET_STD_LIB_STRING_STR_CMP_OK == strncmp( &(vp_param_str[0]), &((table_index_info[i]).code_str[0]), VP_MAX_LENGTH ) )
- {
- table_index = (table_index_info[i]).index;
-
- break;
- }
- }
- }
- else
- {
- DEBUG_PRINT( "ERROR!! the Bad Teble overd." )
- }
- }
-
- return table_index;
-}
-
-/* ====================================================================== */
-/**
- * @brief Function to check whether country code is multiple countries or not
- * @detials Internal-use functions. Check if the country code given in the argument contains more than one country.
- * The determination whether multiple country code or not shall be true if it exactly matches the specified
- * regular expression which is a characteristic of multiple countries.
- * The exact match determination shall be the exact match if the length of the matched character matches
- * the length of the character passed in the argument.
- * @param[in] dest_str Country code string. The value gotten using VP_GetEnv() is assumed. Therefore, the maximum length is VP_MAX_LENGTH.
- * @param[in] multiple_country_code_desig String for determining multiple country codes. Regular expression strings if a regular expression library is used. Otherwise, a single-character string representing the delimiter.
- * If it gets trapped inside a function, it will have to stub the regcomp during function unit tests, which is very cumbersome and can be removed as arguments.
- * @return True if country code indicates multiple countries, otherwise false
- */
-/* ====================================================================== */
-MT_STATIC VP_FCCR_BOOL hasMultipleCoutnry( const char dest_str[], const char multiple_country_code_desig[] )
-{
- /* ====================================================================== */
- /* Variable declarations */
- /* ====================================================================== */
- VP_FCCR_BOOL isMultiple = B_FALSE;
-
- /* ====================================================================== */
- /* Processing */
- /* ====================================================================== */
-
- /* NULL checking for arguments */
- if ( ( NULL != dest_str ) && ( NULL != multiple_country_code_desig ) )
- {
- regex_t preg;
-
- if ( 0 == regcomp( &preg, multiple_country_code_desig, REG_EXTENDED ) )
- {
- regmatch_t pmatch = { 0, 0 };
-
- if ( REG_NOMATCH != regexec( &preg, &(dest_str[0]), 1, &pmatch, 0) )
- {
- /** @note Exactly match is considered if the end-of-match offset matches the string length.
- * Assumed that it should not be used as the end-of-line character so that "$" is not included in the C base character set.
- */
- if ( (strnlen( dest_str, VP_MAX_LENGTH ) == (unsigned int)(pmatch.rm_eo) ) )
- {
- isMultiple = B_TRUE;
- }
- else
- {
- isMultiple = B_FALSE;
- }
-
- DEBUG_PRINT( "FOUND" )
- }
- else
- {
- isMultiple = B_FALSE;
-
- DEBUG_PRINT( "NOT FOUND" )
- }
-
- regfree( &preg );
- }
- else
- {
- /* In the case of a library error,
- * return false so that the default value that is set by high layer works.
- */
-
- /** @todo Should output using FRAMEWORKUNIFIEDLOG for library errors? */
- isMultiple = B_FALSE;
-
- DEBUG_PRINT( "FOUND" )
- }
- }
-
- return isMultiple;
-
-}
-#endif
diff --git a/video_in_hal/otherservice/vehicle_parameter_library/library/src/VP_GetEnv.c b/video_in_hal/otherservice/vehicle_parameter_library/library/src/VP_GetEnv.c
deleted file mode 100755
index c6cd6a7..0000000
--- a/video_in_hal/otherservice/vehicle_parameter_library/library/src/VP_GetEnv.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * @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 VP_GetEnv.c
- * @brief API to get vehicle parameter environment variable
- */
-/* ====================================================================== */
-
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <limits.h>
-#include <other_service/VP_GetEnv.h>
-#include <native_service/ns_backup.h>
-#include <native_service/ns_backup_id.h>
-
-#include "VP_FuncCheck_CanRcv_private.h"
-
-// copy from vpsvc.h
-#define VPSVC_COUNTRY_MAX (0x10) // Maximal number of country codes for 1 destination
-
-// copy from VehicleSens_Vpupdate.cpp
-
-#define VP_VEHICLEPARAMETERLIBRARY_DEST_LEN_MIN 5 // At least 5 characters for 1 destination(e.g. "I:104")
-#define VP_VEHICLEPARAMETERLIBRARY_DEST_NUM_MAX (VP_MAX_LENGTH/VP_VEHICLEPARAMETERLIBRARY_DEST_LEN_MIN)
-#define DS_PACK2_LEN_MAX 2+1 // Max. digits of destination package 2(+\0)
-
-typedef struct {
- char dest_bdb[2]; // Destination symbol
- char ds_pack2[DS_PACK2_LEN_MAX]; // Destination package 2
- uint8_t coutry_num; // Number of Country Codes
- uint16_t country_no[VPSVC_COUNTRY_MAX]; // Country Code
-} VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE_t;
-
-VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE_t g_vp_vehicleparameterlibrary_dest[VP_VEHICLEPARAMETERLIBRARY_DEST_NUM_MAX]; // Destination information get from environment variables
-static uint32_t g_vp_vehicleparameterlibrary_dest_num; // Number of destination information get from environment variables
-
-static void AnalyzeVpVehicleparameterlibraryDestEnv(void) {
- char p_env_variable[VP_MAX_LENGTH] = {};
- char dest_buf[VP_MAX_LENGTH] = { 0 }; // Destination data for environment variables
- char *c_code_ascii; // Country Code(ASCII)
- char *dest_bdb_buf; // Destination symbol
- uint32_t dest_num = 0; // Number of destinations
- int country_num = 0; // Number of Country Codes per Destination
- char *token1, *saveptr1; // Destination break token
- char *token2, *saveptr2; // Delimiter tokens in each destination
- VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE_t *p_dest;
- uint16_t *p_country;
-
- g_vp_vehicleparameterlibrary_dest_num = 0;
- memset(&g_vp_vehicleparameterlibrary_dest, 0x00, sizeof(VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE_t));
-
- // Get environment variables
- VP_GetEnv(VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE, p_env_variable);
- if (0 == strncmp(p_env_variable, "", VP_MAX_LENGTH)) {
- DEBUG_PRINT("VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE is NULL");
- return;
- }
-
- DEBUG_PRINTF("VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE=[%s]\n", p_env_variable);
-
- // Begin analysis First, separate with ","
- token1 = strtok_r(p_env_variable, ",", &saveptr1);
- while (token1 != NULL) {
- snprintf(dest_buf, VP_MAX_LENGTH, "%s", token1);
- DEBUG_PRINTF("dest_buf\t[%s]", dest_buf);
- p_dest = &g_vp_vehicleparameterlibrary_dest[dest_num];
-
- // Get the country code 000-999
- country_num = 0;
- c_code_ascii = strchr(dest_buf, (int32_t)(':'));
- if (c_code_ascii != NULL) {
- c_code_ascii += 1;
- token2 = strtok_r(c_code_ascii, "/", &saveptr2);
- while (token2 != NULL) {
- p_country = &(p_dest->country_no[country_num]);
- errno = 0;
- long int val = strtol(token2, (char **)NULL, 10);
- if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
- || (errno != 0 && val == 0)) {
- DEBUG_PRINTF("country No format error [%s]", token2);
- return;
- }
- *p_country = (uint16_t)val;
-
- if (country_num >= VPSVC_COUNTRY_MAX) {
- DEBUG_PRINTF("country num over [%s]", token2);
- return;
- }
- country_num++;
- token2 = strtok_r(NULL, "/", &saveptr2);
- }
- p_dest->coutry_num = (uint8_t)(country_num);
- DEBUG_PRINTF("country_num\t[%d]", country_num);
- }
-
- // Get destination symbol (may not be available)
- dest_bdb_buf = strchr(dest_buf, (int32_t)('&'));
- if (dest_bdb_buf != NULL) {
- p_dest->dest_bdb[0] = *(dest_bdb_buf + 1);
- DEBUG_PRINTF("dest_bdb\t[%s]", p_dest->dest_bdb);
- } else {
- DEBUG_PRINT("dest_bdb is noting");
- }
-
- // Get destination packages
- token2 = strtok_r(dest_buf, "&:", &saveptr2);
- snprintf(p_dest->ds_pack2, DS_PACK2_LEN_MAX, "%s", token2);
- DEBUG_PRINTF("ds_pack2\t[%s]\n", p_dest->ds_pack2);
-
- dest_num++;
- token1 = strtok_r(NULL, ",", &saveptr1);
- }
-
- g_vp_vehicleparameterlibrary_dest_num = dest_num;
-}
-
-// based VP_DspackToCountryCode
-// dest [in] Destination codes read from the bkup_manager
-// country_code [out] Country code string, separated by ";" for multi-country codes
-static BOOL VP_DspackToCountryCode(uint8_t* dest, char *country_code) {
- BOOL ret = FALSE;
- VP_VEHICLEPARAMETERLIBRARY_DEST_C_CODE_t *p;
- typedef struct {
- char dest_bdb[2]; // Destination symbol
- char ds_pack2[DS_PACK2_LEN_MAX]; // Destination package 2
- } VEHICLE_CAN_DEST_t;
- VEHICLE_CAN_DEST_t can_dest = {};
-
- AnalyzeVpVehicleparameterlibraryDestEnv();
-
- // Setting CAN data
- can_dest.dest_bdb[0] = (int8_t)dest[0]; // Get destination symbol
-
- if (isalpha(dest[2]) != 0) { // Get destination packages
- can_dest.ds_pack2[0] = (int8_t)dest[2];
- } else {
- DEBUG_PRINTF("ds_pack2 is neither Alpha character[%c]", (int32_t)dest[2]);
- return ret;
- }
-
- // Comparison with vehicle parameter
- for (uint32_t i = 0; i < g_vp_vehicleparameterlibrary_dest_num; i++) {
- p = &g_vp_vehicleparameterlibrary_dest[i];
- // Determination of destination packages
- if (strncmp(p->ds_pack2, can_dest.ds_pack2, sizeof(can_dest.ds_pack2)) != 0) {
- continue;
- }
-
- // Determination of destination symbol
- if (p->dest_bdb[0] == 0) {
- ret = TRUE; // When the destination code judgment is not required
- break;
- }
-
- if (strncmp(p->dest_bdb, can_dest.dest_bdb, sizeof(can_dest.dest_bdb)) == 0) {
- ret = TRUE;
- break;
- }
- }
-
- // Returned as a country code string
- if (ret == TRUE) {
- snprintf(country_code, VP_MAX_LENGTH, "%03d", p->country_no[0]);
- for (uint32_t i = 1; i < p->coutry_num; i++) {
- char buf[VP_MAX_LENGTH] = {};
- snprintf(buf, VP_MAX_LENGTH, "%s;%03d", country_code, p->country_no[i]);
- strncpy(country_code, buf, VP_MAX_LENGTH);
- }
- }
- return ret;
-}
-// end of copy from VehicleSens_Vpupdate.cpp
-
-// copy from vehicle unit
-typedef struct {
- uint8_t uc_hv; /* hv */
- uint8_t uc_hv_status; /* hv status */
- uint8_t uc_2wd4wd; /* 2wd4wd */
- uint8_t uc_2wd4wd_status; /* 2wd4wd status */
- uint8_t uc_dest[3]; /* Destination */
- uint8_t uc_dest_status; /* Destination status */
- uint8_t uc_stwheel; /* STEERING_WHEEL */
- uint8_t uc_stwheel_status; /* STEERING_WHEEL status */
- uint8_t uc_reserve[6]; /* Reserve */
-} VEHICLESENS_NON_VOLATILE_DATA;
-
-/* ====================================================================== */
-/**
- * @fn
- * void VP_GetVp_CWORD31_Destination(char *pEnvBuff)
- * @breaf Get environment variables
- * @param[out] (pEnvBuff) Start address of the area to store the get environment variable value
- * @return None
- * @detail Read and analyze D_BK_ID_VEHICLE_STABLE_DATA from BackupManager.
- * The country code string is stored in the argument and returned.
- */
-/* ====================================================================== */
-static void VP_GetVp_CWORD31_Destination(char *pEnvBuff)
-{
- int32_t ret_api = BKUP_RET_NORMAL;
- VEHICLESENS_NON_VOLATILE_DATA pstback_up_data;
- memset(&pstback_up_data, 0x00, sizeof(VEHICLESENS_NON_VOLATILE_DATA));
- char env_string[VP_MAX_LENGTH];
-
- VP_GetEnv(VP__CWORD31__TELEMATICS_FUNCTION, env_string);
-
- if ('\0' == env_string[0]) {
- *pEnvBuff = '\0';
- return;
- } else {
- // read from backup
- ret_api = Backup_DataRd(D_BK_ID_VEHICLE_STABLE_DATA,
- 0,
- &pstback_up_data,
- sizeof(VEHICLESENS_NON_VOLATILE_DATA));
- if (BKUP_RET_NORMAL != ret_api) {
- *pEnvBuff = '\0';
- return;
- }
- }
-
- if (0 == strncmp(env_string, "country_ID", strlen("country_ID"))) {
- uint32_t country_code = 0;
- country_code += (pstback_up_data.uc_dest[1]); // countory_code 3rd and 2nd digit
- country_code = (country_code << 4); // shift
- country_code += (pstback_up_data.uc_dest[2] >> 4); // countory_code 1st digit
- snprintf(pEnvBuff, VP_MAX_LENGTH, "%x", country_code);
- } else if(0 == strncmp(env_string, "CAN_judge", strlen("CAN_judge"))) {
- VP_DspackToCountryCode(pstback_up_data.uc_dest, pEnvBuff);
- } else {
- *pEnvBuff = '\0';
- }
-}
-
-/* ====================================================================== */
-/**
- * @fn
- * void VP_GetEnv(char *pEnvStr, char *pEnvBuff )
- * @breaf Get Environment Variable
- * @param[in] (pEnvStr) Pointer to the string of the environment variable name to be gotten
- * @param[out] (pEnvBuff) Start address of the area to store the gotten value of the environment variable
- * @return None
- * @detail Read the value (string) of the environment variable specified by the argument and stores it in the specified address.
- */
-/* ====================================================================== */
-void VP_GetEnv(const char *pEnvStr, char *pEnvBuff )
-{
- const char *env_string;
- size_t length;
-
- if ((pEnvStr != NULL) && (pEnvBuff != NULL)) {
- if (0 == strncmp(pEnvStr, VP__CWORD31__DESTINATION, strlen(VP__CWORD31__DESTINATION))) {
- VP_GetVp_CWORD31_Destination(pEnvBuff);
- } else {
- env_string = getenv(pEnvStr);
-
- if (env_string == NULL) {
- *pEnvBuff = '\0';
- } else {
- length = strlen( env_string );
- if (length < ((size_t)VP_MAX_LENGTH)) {
- (void)strcpy(pEnvBuff, env_string);
- } else {
- (void)strncpy(pEnvBuff, env_string, (VP_MAX_LENGTH - 1));
- pEnvBuff[ VP_MAX_LENGTH - 1 ] = '\0';
- }
- }
- }
- } else {
- if(pEnvBuff != NULL) {
- *pEnvBuff = '\0';
- }
- }
-}