diff options
author | 2020-11-19 12:45:32 +0900 | |
---|---|---|
committer | 2020-11-19 12:45:32 +0900 | |
commit | 8e0e00d21146a84c18f9cf9409e187b4fb0248aa (patch) | |
tree | ef791689dad216ac61091a1d1bd3b928d563aba6 /nsframework/framework_unified/client/NS_MessageQueue/include | |
parent | 18df6e21c6743a137e2760c52ca89d0789e90417 (diff) |
Init basesystem source codes.
Signed-off-by: Riku Nomoto <riku_nomoto@mail.toyota.co.jp>
Change-Id: I55aa2f1406ce7f751ae14140b613b53b68995528
Diffstat (limited to 'nsframework/framework_unified/client/NS_MessageQueue/include')
3 files changed, 388 insertions, 0 deletions
diff --git a/nsframework/framework_unified/client/NS_MessageQueue/include/ns_mq_anomaly.h b/nsframework/framework_unified/client/NS_MessageQueue/include/ns_mq_anomaly.h new file mode 100755 index 0000000..5b02e2b --- /dev/null +++ b/nsframework/framework_unified/client/NS_MessageQueue/include/ns_mq_anomaly.h @@ -0,0 +1,35 @@ +/* + * @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 FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MQ_ANOMALY_H_ +#define FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MQ_ANOMALY_H_ + +#include <native_service/frameworkunified_types.h> + +typedef struct { + CHAR name[18]; + UI_32 maxMsg; +} mq_anomaly_t; + +mq_anomaly_t mq_anomaly_list[] = { + { "/NS_NPPService", 256 }, + { "/NS_NPPWriteWkr", 256 }, + { "/NS_NPPReadWkr", 256 }, + { "/NS_NPPIPWkr", 256 }, + { "/audio_app", 256 }, +}; + +#endif // FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MQ_ANOMALY_H_ diff --git a/nsframework/framework_unified/client/NS_MessageQueue/include/ns_mq_internal.h b/nsframework/framework_unified/client/NS_MessageQueue/include/ns_mq_internal.h new file mode 100755 index 0000000..ca02218 --- /dev/null +++ b/nsframework/framework_unified/client/NS_MessageQueue/include/ns_mq_internal.h @@ -0,0 +1,58 @@ +/* + * @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. + */ + +/////////////////////////////////////////////////////////////////////////////// +/// \ingroup tag_NSMessageQueue +/// \brief API Header for Logger. +/// +/// Declares the external APIs to Logger. +/// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MQ_INTERNAL_H_ +#define FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MQ_INTERNAL_H_ + +///////////////////////////////////////// +#include <pthread.h> +///////////////////////////////////////// + + +/// \brief Struct that defines internal handle object +typedef struct tQHandle { + UI_32 check_code; + SI_32 fd; + PSTR q_name; + EQType q_type; + void *sendbuf; + + ///////////////////////////////////////// + pthread_t threadid; // thread id of child thread (may be NULL) + ///////////////////////////////////////// +} SQhandle; + +#define MQ_CHECK_CODE (0xC0D1F1ED) + +static inline BOOL mqCheckValidHandle(HANDLE hMessage) { + if (INVALID_HANDLE != hMessage) { + SQhandle *sndHndl = (SQhandle *)hMessage; // NOLINT (readability/nolint) + if (sndHndl->check_code == MQ_CHECK_CODE) { + return TRUE; + } + } + return FALSE; +} + +#endif // FRAMEWORK_UNIFIED_CLIENT_NS_MESSAGEQUEUE_INCLUDE_NS_MQ_INTERNAL_H_ diff --git a/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h b/nsframework/framework_unified/client/NS_MessageQueue/include/ns_msg_queue.h new file mode 100755 index 0000000..111b5be --- /dev/null +++ b/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 <native_service/frameworkunified_types.h> + + +#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 <pthread.h> +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_ + +/** @}*/ +/** @}*/ +/** @}*/ |