From 8e0e00d21146a84c18f9cf9409e187b4fb0248aa Mon Sep 17 00:00:00 2001 From: Riku Nomoto Date: Thu, 19 Nov 2020 12:45:32 +0900 Subject: Init basesystem source codes. Signed-off-by: Riku Nomoto Change-Id: I55aa2f1406ce7f751ae14140b613b53b68995528 --- .../client/NS_MessageQueue/include/ns_msg_queue.h | 295 +++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100755 video_in_hal/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h (limited to 'video_in_hal/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h') diff --git a/video_in_hal/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h b/video_in_hal/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h new file mode 100755 index 0000000..111b5be --- /dev/null +++ b/video_in_hal/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h @@ -0,0 +1,295 @@ +/* + * @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 ns_msg_queue.h + * @brief \~english TestFramework provides interface for implementing functional test classes. + * + */ +/** @addtogroup BaseSystem + * @{ + */ +/** @addtogroup native_service + * @ingroup BaseSystem + * @{ + */ +/** @addtogroup framework_unified + * @ingroup native_service + * @{ + */ +#ifndef FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MSG_QUEUE_H_ +#define FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MSG_QUEUE_H_ + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +/// \brief Enum that defines the value Q Types +typedef enum eQType { + eQTypeReveiver, + eQTypeSender, + eQTypeInvld +} EQType; + +// PASA CCR IPC Framework API + +//////////////////////////////////////////////////////////////////////////////////////////// +/// OpenReceiver +/// The opens a handle to a Receiver message queue. +/// +/// \param [in] name +/// PCSTR - name of the message queue you want to receiver messages on +/// +/// \return HANDLE +/// handle - to a recevier's message queue +/// INVALID_HANDLE - Either message name is NULL or length is >= MAX_QUEUE_NAME_SIZE +/// INVALID_HANDLE - or an error occurred while opening a queue +//////////////////////////////////////////////////////////////////////////////////////////// +HANDLE OpenReceiver(PCSTR name); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// OpenReceiverNotBlocked +/// The opens a handle to a Receiver message queue. Operations on this queue +/// are non-blocking if queue is empty or full. +/// +/// \param [in] name +/// PCSTR - name of the message queue you want to receiver messages on +/// +/// \return HANDLE +/// handle - to a recevier's message queue +/// INVALID_HANDLE - Either message name is NULL or length is >= MAX_QUEUE_NAME_SIZE +/// INVALID_HANDLE - or an error occurred while opening a queue +//////////////////////////////////////////////////////////////////////////////////////////// +HANDLE OpenReceiverNotBlocked(PCSTR name); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// OpenSyncReceiver +/// The opens a handle to a response Receiver message queue. +/// +/// \param [in] name +/// PCSTR - name of the message queue you want to receiver messages on +/// +/// \return HANDLE +/// handle - to a recevier's message queue +/// INVALID_HANDLE - Either message name is NULL or length is >= MAX_QUEUE_NAME_SIZE +/// INVALID_HANDLE - or an error occurred while opening a queue +//////////////////////////////////////////////////////////////////////////////////////////// +HANDLE openSyncReceiver(PCSTR name); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// OpenSender +/// The opens a handle for sending messages to another message queue. +/// +/// \param [in] name +/// PCSTR - name of the message queue you want to send messages too +/// +/// \return HANDLE +/// handle - senders message queue handle +/// INVALID_HANDLE - Either message name is NULL or length is >= MAX_QUEUE_NAME_SIZE +/// INVALID_HANDLE - or an error occurred while opening a queue +//////////////////////////////////////////////////////////////////////////////////////////// +HANDLE OpenSender(PCSTR name); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// openSyncSender +/// The opens a handle for sending response to another message queue. +/// +/// \param [in] name +/// PCSTR - name of the message queue you want to send messages too +/// +/// \return HANDLE +/// handle - senders message queue handle +/// INVALID_HANDLE - Either message name is NULL or length is >= MAX_QUEUE_NAME_SIZE +/// INVALID_HANDLE - or an error occurred while opening a queue +//////////////////////////////////////////////////////////////////////////////////////////// +HANDLE openSyncSender(PCSTR name); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// openSenderZc +/// The opens a handle for sending response to another message queue. +/// +/// \param [in] name +/// PCSTR - name of the message queue you want to send messages too +/// +/// \return HANDLE +/// handle - senders message queue handle +/// INVALID_HANDLE - Either message name is NULL or length is >= MAX_QUEUE_NAME_SIZE +/// INVALID_HANDLE - or an error occurred while opening a queue +//////////////////////////////////////////////////////////////////////////////////////////// +HANDLE openSenderZc(PCSTR name); + +///////////////////////////////////////// +#include +HANDLE OpenSenderChild(PCSTR name, pthread_t threadid); +///////////////////////////////////////// + +///////////////////////////////////////// +EFrameworkunifiedStatus JoinChild(HANDLE hChildApp); +///////////////////////////////////////// + +///////////////////////////////////////// +EFrameworkunifiedStatus GetChildThreadPriority(HANDLE hChildApp, PSI_32 threadPrio); +///////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////////////////////////// +/// SendMessage +/// The function sends a message to a queue. +/// +/// \param [in] hMessage +/// Handle - handle to the sendMessage, OpenSender +/// \param [in] length +/// UI_32 - length of the data to be sent +/// \param [in] data +/// const void* - pointer to the data that needs to be transmitted +/// +/// \return EFrameworkunifiedaStatus +/// status - status of the message(error) +//////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus SendMessage(HANDLE hMessage, UI_32 length, PVOID data); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// SendMessageWithPriority +/// The function sends a message to a queue. +/// +/// \param [in] hMessage +/// Handle - handle to the sendMessage, OpenSender +/// \param [in] length +/// UI_32 - length of the data to be sent +/// \param [in] data +/// const void* - pointer to the data that needs to be transmitted +/// \param [in] priority +/// EFrameworkunifiedMessagePriorties - priority at which the message should be sent at! +/// +/// \return EFrameworkunifiedaStatus +/// status - status of the message(error) +//////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus SendMessageWithPriority(HANDLE hMessage, UI_32 length, PVOID data, EFrameworkunifiedMessagePriorties priority); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// ReceiveMessage +/// The function blocks on a message queue waiting for data to be received. +/// +/// \param [in] hMessage +/// HANDLE - handle to the recvMessage, OpenReceiver +/// \param [in] length +/// UI_32 - length of the data buffer provided +/// \param [in] data +/// void* - pointer to the data to be received +/// +/// \return SI_32 +/// length read - indicates the number of bytes that were read from the queue (eFrameworkunifiedStatusErrOther) error +//////////////////////////////////////////////////////////////////////////////////////////// +SI_32 ReceiveMessage(HANDLE hMessage, UI_32 length, PVOID data); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// CloseReceiver +/// The closes a connection to a Receiver message queue. +/// +/// \param [in] hMessage +/// HANDLE - handle to the recvMessage that will be closed +/// +/// \return EFrameworkunifiedaStatus +/// status - indicates if the close was successfully (eFrameworkunifiedStatusOK) or not (anything else) +//////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus CloseReceiver(HANDLE handle); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// CloseReceiver +/// The closes a connection to a Receiver message queue. +/// +/// \param [in] hMessage +/// HANDLE - handle to the recvMessage that will be closed +/// +/// \return EFrameworkunifiedaStatus +/// status - indicates if the close was successfully (eFrameworkunifiedStatusOK) or not (anything else) +//////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus CloseSender(HANDLE handle); + + +//////////////////////////////////////////////////////////////////////////////////////////// +/// Flush +/// Flush all data on HANDLE's Receiver message queue. +/// +/// \param [in] hMessage +/// HANDLE - handle to the recvMessage queue that will be flushed +/// +/// \return void +//////////////////////////////////////////////////////////////////////////////////////////// +void Flush(HANDLE hMessage); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// GetQueueType +/// Get the handle's queue type. +/// +/// \param [in] hMessage +/// HANDLE - handle to the Message queue +/// +/// \return EQType +/// EQType - queue type of handle +//////////////////////////////////////////////////////////////////////////////////////////// +EQType GetQueueType(HANDLE hMessage); + +//////////////////////////////////////////////////////////////////////////////////////////// +// Function : TranslateError +// Translates global error variables into FW EFrameworkunifiedStatus +/// +/// \param [in] error +/// int - error variable +/// +/// \return EFrameworkunifiedStatus +/// EFrameworkunifiedStatus - frameworkunified error type +//////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus TranslateError(int error); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// GetQueueName +/// This gets the name of the message queue +/// +/// \param [in] hMessage +/// HANDLE - handle of the message queue +/// (handle created with McOpenReceiver or McOpenSender) +/// +/// \return PCSTR +/// name - name of the message queue if handle is valid else NULL +//////////////////////////////////////////////////////////////////////////////////////////// +PCSTR GetQueueName(HANDLE hMessage); + +//////////////////////////////////////////////////////////////////////////////////////////// +/// GetQueueFD +/// This gets the fd of the message queue +/// +/// \param [in] hMessage +/// HANDLE - handle of the message queue +/// (handle created with McOpenReceiver or McOpenSender) +/// +/// \return int +/// fd - fd of the message queue if handle is valid else -1 +//////////////////////////////////////////////////////////////////////////////////////////// +int GetQueueFD(HANDLE hMessage); + +#ifdef __cplusplus +} +#endif + +#endif // FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MSG_QUEUE_H_ + +/** @}*/ +/** @}*/ +/** @}*/ -- cgit 1.2.3-korg