Re-organized sub-directory by category
[staging/basesystem.git] / service / native / framework_unified / client / include / native_service / ns_message_center_if.h
diff --git a/service/native/framework_unified/client/include/native_service/ns_message_center_if.h b/service/native/framework_unified/client/include/native_service/ns_message_center_if.h
new file mode 100755 (executable)
index 0000000..cfd350f
--- /dev/null
@@ -0,0 +1,1536 @@
+/*
+ * @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
+ * @brief \~english APIs to Open/Close and Send/Receive on message queues and shared memory.
+ *
+ */
+/** @addtogroup BaseSystem
+ *  @{
+ */
+/** @addtogroup native_service
+ *  @ingroup BaseSystem
+ *  @{
+ */
+/** @addtogroup framework_unified
+ *  @ingroup native_service
+ *  @{
+ */
+/** @addtogroup native
+ *  @ingroup framework_unified
+ *  @{
+ */
+#ifndef __NATIVESERVICES_MESSAGE_CENTER_IF_H__  // NOLINT  (build/header_guard)
+#define __NATIVESERVICES_MESSAGE_CENTER_IF_H__
+
+#include <native_service/frameworkunified_types.h>
+#include <native_service/ns_shared_mem_if.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McOpenReceiver
+/// \~english @par Brief
+///        Opens a handle to a Receiver message queue.
+/// \~english @param[in] name
+///        PCSTR - name of the message queue you want to receiver messages on
+/// \~english @retval Handle to a recevier's message queue (If INVALID_HANDLE is returned its an error)
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Size of message queue name string specified by argument(name) is larger then 20byte. [NULL]
+///       - Message queue name specified by argument(name) is NULL. [NULL]
+///       - Size of name normalised from argument(name) for message queue is larger then 15byte[16byte when starts with
+///       "/"]. [NULL]
+///       - Failed to create(malloc) buffer to storage name normalised from argument(name) for message queue. [NULL]
+///       - Failed to get(mq_open) message queue. [NULL]
+///       - Failed to create(malloc) buffer to storage management information of message queue. [NULL]
+/// \~english @par Detail
+///       Create a message queue whose name is specified by argument, and return a handle for receiving message. \n
+///       The message queue created in this API is used to receive message, but not to send message. \n
+///       You can use message queue in McOpenSender to send message.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McReceive, McClose
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McOpenReceiver(PCSTR name);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McOpenReceiverNotBlocked
+/// \~english @par Brief
+///        Opens a handle to a Receiver message queue. Operations on this queue are
+///        non-blocking if queue is empty or full.
+/// \~english @param[in] name
+///        PCSTR - name of the message queue you want to receiver messages on
+/// \~english @retval Handle to a recevier's message queue (If INVALID_HANDLE is returned its an error)
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Size of message queue name string specified by argument(name) is larger then 20byte. [NULL]
+///       - Message queue name specified by argument(name) is NULL. [NULL]
+///       - Size of name normalised from argument(name) for message queue is larger then 15byte[16byte when starts with
+///       "/"]. [NULL]
+///       - Failed to create(malloc) buffer to storage name normalised from argument(name) for message queue. [NULL]
+///       - Failed to get(mq_open) message queue. [NULL]
+///       - Failed to create(malloc) buffer to storage management information of message queue. [NULL]
+/// \~english @par Detail
+///       Create a message queue whose name is specified by argument, and return a handle for receiving message. \n
+///       The message queue created in this API is used to receive message, but not to send message. \n
+///       You can use message queue in McOpenSender to send message.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McReceive, McClose, McOpenSenderNotBlocked
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McOpenReceiverNotBlocked(PCSTR name);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McOpenSyncReceiver
+/// \~english @par Brief
+///        Opens a handle to a response Receiver message queue.
+/// \~english @param[in] name
+///        PCSTR - name of the message queue you want to receiver messages on
+/// \~english @retval Handle to a recevier's message queue (If INVALID_HANDLE is returned its an error)
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Size of message queue name string specified by argument(name) is larger then 20byte. [NULL]
+///       - Message queue name specified by argument(name) is NULL. [NULL]
+///       - Size of name normalised from argument(name) for message queue(don't start with "/") is larger then 19byte.
+///       [NULL]
+///       - Size of name normalised from argument(name) for message queue(start with "/") is larger then 20byte. [NULL]
+///       - Failed to create(malloc) buffer to storage name normalised from argument(name) for message queue. [NULL]
+///       - Failed to get(mq_open) message queue. [NULL]
+///       - Failed to create(malloc) buffer to storage management information of message queue. [NULL]
+/// \~english @par Detail
+///       Create a message queue whose name is specified by argument, and return a handle for receiving message
+///       by synchronous communication.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///        When the application used the message queue acquired by this API, note the following.
+///        - Use McCreateInvokerName to obtain the receive message queue handle to be passed to the parameter name.
+///        - It can not be used transmission because it is for reception.
+///          McOpenSender must be used for the message queue trasmission.
+///        - Cannot be used other than for waiting for response during synchronous communication.
+///          (because the maxmum number of messages in the queue is specified as 2)
+///        - When a message queue name (name) that has not been normalized is specified, transmission falis unless 18 byte are specified.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McCreateInvokerName, McInvokeSync, McClose
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McOpenSyncReceiver(PCSTR name);
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McOpenSender
+/// \~english @par Brief
+///        The opens a handle for sending messages to another message queue.
+/// \~english @param[in] name
+///        PCSTR - name of the message queue you want to send messages too
+/// \~english @retval Handle for sending messages to a queue (If INVALID_HANDLE is returned its an error)
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Size of message queue name string specified by argument(name) is larger then 20byte. [NULL]
+///       - Message queue name specified by argument(name) is NULL. [NULL]
+///       - Size of name normalised from argument(name) for message queue is larger then 15byte[16byte when starts with
+///       "/"]. [NULL]
+///       - Failed to create(malloc) buffer to storage name normalised from argument(name) for message queue. [NULL]
+///       - Failed to get(mq_open) message queue. [NULL]
+///       - Failed to create(malloc) buffer to storage management information of message queue. [NULL]
+/// \~english @par Detail
+///       Create a message queue whose name is specified by argument, and return a handle for sending message. \n
+///       The message queue created in this API is used to send message, but not to receive message. \n
+///       You can use message queue in McOpenReceiver to receive message.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenReceiver, McSend, McClose
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McOpenSender(PCSTR name);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// The opens a handle for sending messages to another 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 send messages too
+///
+/// \return HANDLE
+///         handle - for sending messages to a queue (If INVALID_HANDLE is returned its an error)
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McOpenSenderNotBlocked(PCSTR name);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McOpenSyncSender
+/// \~english @par Brief
+///        The opens a handle for sending responce to another message queue.
+/// \~english @param[in] name
+///        PCSTR - name of the message queue you want to send messages too
+/// \~english @retval Handle for sending response to a queue (If INVALID_HANDLE is returned its an error)
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Size of message queue name string specified by argument(name) is larger then 20byte. [NULL]
+///       - Message queue name specified by argument(name) is NULL. [NULL]
+///       - Size of name normalised from argument(name) for message queue(don't start with "/") is larger then 19byte.
+///       [NULL]
+///       - Size of name normalised from argument(name) for message queue(start with "/") is larger then 20byte. [NULL]
+///       - Failed to create(malloc) buffer to storage name normalised from argument(name) for message queue. [NULL]
+///       - Failed to get(mq_open) message queue. [NULL]
+///       - Failed to create(malloc) buffer to storage management information of message queue. [NULL]
+/// \~english @par Detail
+///       Create a message queue whose name is specified by argument, and return a handle for sending message. \n
+///       The message queue created in this API is used to send message, but not to receive message. \n
+///       You can use message queue in McOpenReceiver to receive message.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenReceiver, McSend, McClose
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McOpenSyncSender(PCSTR name);
+
+/////////////////////////////////////////
+#include <pthread.h>
+HANDLE McOpenSenderChild(PCSTR name, pthread_t childid);
+/////////////////////////////////////////
+
+/////////////////////////////////////////
+EFrameworkunifiedStatus McJoinChild(HANDLE hChildApp);
+/////////////////////////////////////////
+
+/////////////////////////////////////////
+EFrameworkunifiedStatus McGetChildThreadPriority(HANDLE hChildApp, PSI_32 threadPrio);
+/////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McReceive
+/// \~english @par Brief
+///        Retrieves data from a message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the recvMessage, McOpenRecevier
+/// \~english @param[out] source
+///        PSTR - app that sent this message
+/// \~english @param[out] cmd
+///        UI_32* - command message that has been received.
+/// \~english @param[in] length
+///        UI_32 - length of the data buffer provided
+/// \~english @param[out] data
+///        PVOID - pointer to the data to be received
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK Success
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - Invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - Invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldQName - Invalid message queue name
+/// \~english @retval eFrameworkunifiedStatusInvldParam - Invalid parameter
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF - Invalid File-Descriptor
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR - An interrupt is generated by the system call (signal)
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - Invalid buffer-size
+/// \~english @retval eFrameworkunifiedStatusFail - Invalid handle of message queue for receiving message
+/// \~english @par Preconditons
+///        Message queue(McOpenReceiver etc.) for receiving message is created.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Data buffer specified by argument(data) for receiving message is NULL. [eFrameworkunifiedStatusInvldBuf]
+///       - Size of data buffer specified by argument(length) for receiving message is 0. [eFrameworkunifiedStatusInvldBuf]
+///       - Buffer to storage application name specified by argument(source) for sending message is NULL.
+///       [eFrameworkunifiedStatusInvldQName]
+///       - Buffer to storage commond ID of protocol on the service specified by argument(cmd) is NULL.
+///       [eFrameworkunifiedStatusInvldParam]
+///       - Size of application name of sender getted from received message is lager then 20byte. [eFrameworkunifiedStatusInvldBuf]
+///       - Handle specified by argument(hMessage) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - HANDLE specified by argument(hMessage) is not appropriate(which is invalid). [eFrameworkunifiedStatusFail]
+///       - Message queue type of handle specified by argument(hMessage) is not receiving type. [eFrameworkunifiedStatusFail]
+///       - File descriptor for receiving message is invalid. [eFrameworkunifiedStatusErrNoEBADF]
+///       - An interrupt is generated by the system call (signal) when receiving message. [eFrameworkunifiedStatusErrNoEINTR]
+///       - Size of buffer for receiving message is invalid. [eFrameworkunifiedStatusInvldBufSize]
+/// \~english @par Detail
+///        Receives data from message queue specified by argument.
+///        Sets application of sender(source), commond ID of protocol on the service(cmd), receiving data(data), and
+///        return.
+///        It will block until getting message from message queue.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///        Since data is exchanged only in the message queue, the data size that can be received is up to 4096 bytes.
+/// \~english @par
+///        The caller must guarantee the allocation of the area for the receive data buffer
+///        and the consistency of the sizes set in the arguments.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenReceiver, McSend
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McReceive(HANDLE hMessage, PSTR source, UI_32 *cmd, UI_32 length, PVOID data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McReceiveWithSession
+/// \~english @par Brief
+///        Retrieves data from a message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the recvMessage, McOpenRecevier
+/// \~english @param[out] source
+///        PSTR - app that sent this message
+/// \~english @param[out] cmd
+///        UI_32* - command message that has been received.
+/// \~english @param[out] sessionid
+///        UI_32* - Session ID
+/// \~english @param[in] length
+///        UI_32 - length of the data buffer provided
+/// \~english @param[out] data
+///        PVOID - pointer to the data to be received
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK Success
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - Invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - Invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldQName - Invalid message queue name
+/// \~english @retval eFrameworkunifiedStatusInvldParam - Invalid parameter
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF - Invalid File-Descriptor
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR - An interrupt is generated by the system call (signal)
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - Invalid buffer-size
+/// \~english @retval eFrameworkunifiedStatusFail - Invalid handle of message queue for receiving message
+/// \~english @par Preconditons
+///        Message queue(McOpenReceiver etc.) for receiving message is created.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Buffer to storage session ID specified by argument(sessionid) is NULL. [eFrameworkunifiedStatusInvldParam]
+///       - Buffer to storage handle of message queue specified by argument(hMessage) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - Data buffer specified by argument(data) for receiving message is NULL. [eFrameworkunifiedStatusInvldBuf]
+///       - Size of data buffer specified by argument(length) for receiving message is 0. [eFrameworkunifiedStatusInvldBuf]
+///       - Buffer to storage application name specified by argument(source) for sending message is NULL.
+///       [eFrameworkunifiedStatusInvldQName]
+///       - Buffer to storage commond ID of protocol on the service specified by argument(cmd) is NULL.
+///       [eFrameworkunifiedStatusInvldParam]
+///       - Size of application name of sender getted from received message is lager then 20byte. [eFrameworkunifiedStatusInvldBuf]
+///       - Handle specified by argument(hMessage) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - HANDLE specified by argument(hMessage) is not appropriate(which is invalid). [eFrameworkunifiedStatusFail]
+///       - Message queue type of handle specified by argument(hMessage) is not receiving type. [eFrameworkunifiedStatusFail]
+///       - File descriptor for receiving message is invalid. [eFrameworkunifiedStatusErrNoEBADF]
+///       - An interrupt is generated by the system call (signal) when receiving message. [eFrameworkunifiedStatusErrNoEINTR]
+///       - Size of buffer for receiving message is invalid. [eFrameworkunifiedStatusInvldBufSize]
+/// \~english @par Detail
+///        Receives data from message queue specified by argument.Sets application of sender(source),
+///        commond ID of protocol on the service(cmd), receiving data(data), session id(sessionid), and return.
+///        It will block until getting message from message queue.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///        The caller must guarantee the allocation of the area for the receive data buffer
+///        and the consistency of the sizes set in the arguments.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenReceiver, McSendWithSession
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McReceiveWithSession(HANDLE hMessage, PSTR source, UI_32 *cmd,  UI_32 *sessionid,
+                                UI_32 length, PVOID data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetLength
+/// \~english @par Brief
+///        Get the length of data that needs to be retrieved.
+/// \~english @param[in] data
+///        PVOID - pointer to the data was received from the McReceive Call
+/// \~english @retval UI_32 indicates the number of bytes that in the message
+/// \~english @par
+///        if return is 0 or less then invalid data was passed.
+/// \~english @par Preconditons
+///        - Message is received by McReceive and so on.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///        - Data of received message(data) is NULL. [0]
+/// \~english @par Detail
+///        Return message data length specified by the header of received message. \n
+///        Use this data length as the buffer size specified by McGetDataOfSize.
+/// \~english @par
+///        This API does not distinguish between error and no data.
+/// \~english @par
+///        The parameter data of this API must be the data obtained from the message queue by McReceive, etc.
+///        (Since the data obtained from the message queue incudes header information,
+///         this API acquires necessary iformation from the header)
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McReceive, McReceiveWithSession, McGetDataOfSize
+////////////////////////////////////////////////////////////////////////////////////////////
+UI_32 McGetLength(PVOID data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetDataPointer
+/// \~english @par Brief
+///        Get header address of data from received message.
+/// \~english @param[in] data
+///        PVOID - received message data
+/// \~english @retval PVOID - data address of received message
+/// \~english @par Preconditons
+///        Message is received by McReceive and so on.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///        - Data of received message(data) is NULL. [NULL]
+/// \~english @par Detail
+///        Get header address of data from received message excepting the header and system information.
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - Since the pointer acquired by this API is part of the received message passed as an argument to this API,
+///          the pointer must not be released by specifying he address acquired by this API.
+///        - The parameter data of this API must be the data obtained from the message queue by McReceive, etc.
+///          (Since the data obtained from the message queue incudes header information,
+///           this API acquires necessary iformation from the header)
+///        - When the next message is received, the internally held data is discarded.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McReceive, McReceiveWithSession, McGetDataOfSize
+////////////////////////////////////////////////////////////////////////////////////////////
+PVOID McGetDataPointer(PVOID data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetDataOfSize
+/// \~english @par Brief
+///        Get the message data, this may be from a queue or shared memory where the maximum
+///        size of the data should not exceed the maximum size passed in.
+///        And deletes the data if it is stored in shared memory.
+/// \~english @param[in] data
+///        PVOID - pointer to the data was received from the McReceive Call
+/// \~english @param[in] to
+///        PVOID - pointer to the data to be received
+/// \~english @param[in] uiSize
+///        UI_32 - maximum size of the buffer to which the received data is copied
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK - success
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType - invalid handle type
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - invalid buffer size
+/// \~english @retval eFrameworkunifiedStatusErrOther - invalid shared memory ID specified by received message
+/// \~english @par Preconditons
+///        - Message is received by McReceive and so on.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///         - Size specified by argument(uiSize) is smaller then size of received message data(data).
+///         [eFrameworkunifiedStatusInvldBufSize]
+///         - Data of received message(data) is NULL. [eFrameworkunifiedStatusInvldBuf]
+///         - Pointer to buffer(to) which is used to storage data getted from message is NULL. [eFrameworkunifiedStatusInvldBuf]
+///         - Received message data specified by argument(data) is invalid. [eFrameworkunifiedStatusInvldHndlType]
+///         - Failed to access(shm_open/fstat/mmap) the shared memory of received message data(data).
+///         [eFrameworkunifiedStatusErrOther]
+///         - Shared memory ID specified by received message is invalid. [FrameworkunifiedStatusErrOther]
+/// \~english @par Detail
+///        Get data from received message excepting the header and system information.
+///        Delete data storaged in shared memory after getting the data successfully.
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - In the case where he received message data becomes 0byte, there is no need to call this API,
+///          and be careful not to allocate the memory for the received message data by 0byte.
+///        - Error details related to shared memory access canno be detected.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McGetLength
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McGetDataOfSize(PVOID data, PVOID to, UI_32 uiSize);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetDataOfSizeWithSMRetain
+/// \~english @par Brief
+///        Get the message data, this may be from a queue or shared memory where the maximum
+///        size of the data should not exceed the maximum size passed in.
+///        Does not delete the data if it is stored in shared memory.
+/// \~english @param[in] data
+///        PVOID - pointer to the data was received from the McReceive Call
+/// \~english @param[in] to
+///        PVOID - pointer to the data to be received
+/// \~english @param[in] uiSize
+///        UI_32 - maximum size of the buffer to which the received data is copied
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK - success
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType - invalid handle type
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - invalid buffer size
+/// \~english @retval eFrameworkunifiedStatusErrOther - invalid shared memory ID specified by received message
+/// \~english @par Preconditons
+///        - Message is received by McReceive and so on.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///         - Size specified by argument(uiSize) is smaller then size of received message data(data).
+///         [eFrameworkunifiedStatusInvldBufSize]
+///         - Data of received message(data) is NULL. [eFrameworkunifiedStatusInvldBuf]
+///         - Pointer to buffer(to) which is used to storage data getted from message is NULL. [eFrameworkunifiedStatusInvldBuf]
+///         - Received message data specified by argument(data) is invalid. [eFrameworkunifiedStatusInvldHndlType]
+///         - Failed to access(shm_open/fstat/mmap) the shared memory of received message data(data).
+///         [eFrameworkunifiedStatusErrOther]
+///         - Shared memory ID specified by received message is invalid. [FrameworkunifiedStatusErrOther]
+/// \~english @par Detail
+///        Get data from received message excepting the header and system information.
+///        Does not delete data storaged in shared memory after getting the data successfully.
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - In the case where he received message data becomes 0byte, there is no need to call this API,
+///          and be careful not to allocate the memory for the received message data by 0byte.
+///        - Error details related to shared memory access canno be detected.
+/// \~english @par Classification
+///        Public
+/// \~english @par Type
+///        Sync only
+/// \~english @see
+///        McReceive
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McGetDataOfSizeWithSMRetain(PVOID data, PVOID to, UI_32 uiSize);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetSysInfoData
+/// \~english @par Brief
+///        Gets the data from system info buffer from message header.
+/// \~english @param[in] data
+///        PVOID - pointer to the data was received from the McReceive Call
+/// \~english @param[out] to
+///        PVOID - pointer to the data to be received
+/// \~english @retval EFrameworkunifiedStatus indicates if the close was successfully
+/// \~english @retval eFrameworkunifiedStatusOK Success
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - Invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - Invalid handle
+/// \~english @par Preconditons
+///        Message is received by McReceive and so on.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Data of received message(data) is NULL. [eFrameworkunifiedStatusInvldBuf]
+///       - Pointer to buffer(to) which is used to storage system info getted from message is NULL. [eFrameworkunifiedStatusInvldBuf]
+///       - Received message data specified by argument(data) is invalid. [eFrameworkunifiedStatusInvldHndlType]
+/// \~english @par Detail
+///        Gets system info from received message, and set argument(to) with it. \n
+///        If there is no system info in received message,and set argument(to) with "\0".
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - The parameter data of this API must be the data obtained from the message queue by McReceive, etc.
+///          (Since the data obtained from the message queue incudes header information,
+///           this API acquires necessary iformation from the header)
+///        - Since the system information is 64 bytes (including the null character), the area of 64 byte must be allocated in the argument to fo this API.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McReceive, McReceiveWithSession
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McGetSysInfoData(PVOID data, PVOID to);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McClearData
+/// \~english @par Brief
+///        Clears the data that may be pending for the a message in shared memory.
+/// \~english @param[in] data
+///        PVOID - pointer to the data was received from the McReceive Call
+/// \~english @retval EFrameworkunifiedStatus indicates if the data was clear successfully
+/// \~english @retval eFrameworkunifiedStatusOK - success
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldParam - invalid parameter
+/// \~english @retval eFrameworkunifiedStatusInvldID - invalid ID
+/// \~english @retval eFrameworkunifiedStatusFail - other errors
+/// \~english @par Preconditons
+///        - Message is received by McReceive and so on.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///         - Data of received message(data) is NULL. [eFrameworkunifiedStatusInvldBuf]
+///         - Received message data specified by argument(data) is invalid. [eFrameworkunifiedStatusInvldParam]
+///         - Shared memory ID in received message is invalid. [eFrameworkunifiedStatusInvldParam]
+///         - Shared memory specified by ID in received message does not exist. [eFrameworkunifiedStatusInvldID]
+///         - Failed to delete shared memory specified by ID in received message. [eFrameworkunifiedStatusFail]
+/// \~english @par Detail
+///         Delete data from received message.
+///         And delete the received message data if it is stored in shared memory.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McReceive, McReceiveWithSession
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McClearData(PVOID data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McSend
+/// \~english @par Brief
+///        Sends data to a message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the send message queue, McOpenSender
+/// \~english @param[in] source
+///        PCSTR - app (You) the sender
+/// \~english @param[in] cmd
+///        UI_32 - command id aka the message that's being sent
+/// \~english @param[in] length
+///        UI_32 - length of the data buffer provided
+/// \~english @param[in] data
+///        PCVOID - pointer to the data to be sent
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK - Success
+/// \~english @retval eFrameworkunifiedStatusNullPointer - NULL pointer specified
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - Invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType - Invalid type of handle
+/// \~english @retval eFrameworkunifiedStatusInvldQName - Illegal Message Queue name
+/// \~english @retval eFrameworkunifiedStatusMsgQFull - Message queue is full
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF I- nvalid File-Descriptor
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR - An interrupt is generated by the system call (signal)
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - Invalid buffer-size
+/// \~english @retval eFrameworkunifiedStatusFail - Some sort of error occurred
+/// \~english @retval eFrameworkunifiedStatusErrOther - other errors(Failed to open/allocate shared memory)
+/// \~english @retval eFrameworkunifiedStatusInvldParam - Invalid parameter
+/// \~english @par Preconditons
+///        - Message queue(McOpenSender) for sending message is created.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Message queue name of HANDLE specified in the argument (hService) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - Message queue name of HANDLE specified in the argument (hService) exceeds 20byte. [eFrameworkunifiedStatusInvldHandle]
+///       - Message queue HANDLE in HANDLE specified in the argument (hService) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - HANDLE specified in the argument message queue HANDLE in (hService) is not appropriate (which is invalid).
+///       [eFrameworkunifiedStatusInvldHandle]
+///       - Application name of sender specified in the argument (source) is NULL. [eFrameworkunifiedStatusInvldQName]
+///       - Application name of sender specified in the argument (source) exceeds 20byte. [eFrameworkunifiedStatusInvldQName]
+///       - Sender data does not match sender data size(size is larger then 0, and data is NULL). [eFrameworkunifiedStatusInvldBuf]
+///       - Message queue type of handle specified by argument(hMessage) is not sending type. [eFrameworkunifiedStatusInvldHndlType]
+///       - Message queue is full. [eFrameworkunifiedStatusMsgQFull]
+///       - File descriptor for sending message is invalid. [eFrameworkunifiedStatusErrNoEBADF]
+///       - An interrupt is generated by the system call (signal) when sending message. [eFrameworkunifiedStatusErrNoEINTR]
+///       - Size of buffer for sending message is invalid. [eFrameworkunifiedStatusInvldBufSize]
+///       - Some errors occur, when sending message. [eFrameworkunifiedStatusFail]
+///       - Failed to access(shm_open/ftruncate/mmap) the shared memory for sending message data. [eFrameworkunifiedStatusErrOther]
+///       - Sending data size specified in the argument (length) is out of range. [eFrameworkunifiedStatusInvldParam]
+/// \~english @par Detail
+///       It is an asynchronous API. It provides function to send message by message queue. \n
+///       Message queue name created by McOpenSender is the sender.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///       Command ID must be within the range PROTOCOL_FRAMEWORKUNIFIED_BASE_CMD(0x10) to PROTOCOL_FRAMEWORKUNIFIED_MAX_CMD(0xFFFFFFF0).
+///       Even if a command ID out of range is specified, a message is sent by the command ID (no erro occurs).
+///       Command ID out of range are resered ID used for session connection, etc.
+/// \~english @par
+///       Please note the following points when using this API for application.
+///       - The maximum transmission data size (ength) described above is a theoretical value,
+///         and the maximum actually usable data size depends on the environment requirements.\n
+///         The maximum value is the upper limit of the type (UNIT_MAX) minus the following size.\n
+///         Message header section \n
+///       - Operation cannot be guaranteed when the size of the allocated area indicated by the address
+///         of the pointer (data) to the data buffer does not match the size specified by the size of the data buffer (length).
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McSendWithSession, McReceive
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McSend(HANDLE hMessage, PCSTR source, UI_32 cmd, UI_32 length, PCVOID data);
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McSendWithSession
+/// \~english @par Brief
+///        Sends data to a message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the send message queue, McOpenSender
+/// \~english @param[in] source
+///        PCSTR - app (You) the sender
+/// \~english @param[in] cmd
+///        UI_32 - command id aka the message that's being sent
+/// \~english @param[in] length
+///        UI_32 - length of the data buffer provided
+/// \~english @param[in] data
+///        PCVOID - pointer to the data to be sent
+/// \~english @param[in] sessionid
+///        UI_32 - session id
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK - Success
+/// \~english @retval eFrameworkunifiedStatusNullPointer - NULL pointer specified
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - Invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType - Invalid type of handle
+/// \~english @retval eFrameworkunifiedStatusInvldQName - Illegal Message Queue name
+/// \~english @retval eFrameworkunifiedStatusMsgQFull - Message queue is full
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF - Invalid File-Descriptor
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR - An interrupt is generated by the system call (signal)
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - Invalid buffer-size
+/// \~english @retval eFrameworkunifiedStatusFail - Some sort of error occurred
+/// \~english @retval eFrameworkunifiedStatusErrOther - other errors(Failed to open/allocate shared memory)
+/// \~english @retval eFrameworkunifiedStatusInvldParam - Invalid parameter
+/// \~english @par Preconditons
+///        - Message queue(McOpenSender) for sending message is created.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Message queue HANDLE in HANDLE specified in the argument (hService) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - HANDLE specified in the argument message queue HANDLE in (hService) is not appropriate (which is invalid).
+///       [eFrameworkunifiedStatusInvldHandle]
+///       - Application name of sender specified in the argument (source) is NULL. [eFrameworkunifiedStatusInvldQName]
+///       - Application name of sender specified in the argument (source) exceeds 20byte. [eFrameworkunifiedStatusInvldQName]
+///       - Sender data does not match sender data size(size is larger then 0, and data is NULL). [eFrameworkunifiedStatusInvldBuf]
+///       - Message queue type of handle specified by argument(hMessage) is not sending type. [eFrameworkunifiedStatusInvldHndlType]
+///       - Message queue is full. [eFrameworkunifiedStatusMsgQFull]
+///       - File descriptor for sending message is invalid. [eFrameworkunifiedStatusErrNoEBADF]
+///       - An interrupt is generated by the system call (signal) when sending message. [eFrameworkunifiedStatusErrNoEINTR]
+///       - Size of buffer for sending message is invalid. [eFrameworkunifiedStatusInvldBufSize]
+///       - Some errors occur, when sending message. [eFrameworkunifiedStatusFail]
+///       - Failed to access(shm_open/ftruncate/mmap) the shared memory for sending message data. [eFrameworkunifiedStatusErrOther]
+///       - Sending data size specified in the argument (length) is out of range. [eFrameworkunifiedStatusInvldParam]
+/// \~english @par Detail
+///       It is an asynchronous API. It provides function to send message by message queue. \n
+///       Message queue name created by McOpenSender is the sender.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///       Command ID must be within the range PROTOCOL_FRAMEWORKUNIFIED_BASE_CMD(0x10) to PROTOCOL_FRAMEWORKUNIFIED_MAX_CMD(0xFFFFFFF0).
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - McSend should be used if no sessionid is specified.
+///        - To communicate with an application that uses NS Framework Dispatcher, use FrameworkunifiedSendMsg, etc.
+///        - The maximum transmission data size (length) described above is a theoretical value,
+///          and the maximum actually usable data size depends on the environment requirements.\n
+///        - The maximum value is the upper limit of the type (UNIT_MAX) minus the following size.\n
+///          Message header section\n
+///        - Operation cannot be guaranteed when the size of the allocated area indicated by the address
+///          of the pointer (data) to the data buffer does not match the size specified by the size of the data buffer (length).
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McSend, McReceiveWithSession, FrameworkunifiedSendMsg
+//////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McSendWithSession(HANDLE hMessage, PCSTR source, UI_32 cmd, UI_32 length, PCVOID data, UI_32 sessionid);
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McSendWithPriority
+/// \~english @par Brief
+///        Sends data to a message queue, inserts based on priority given.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the send message queue, McOpenSender
+/// \~english @param[in] source
+///        PCSTR - app (You) the sender
+/// \~english @param[in] cmd
+///        UI_32 - command id aka the message that's being sent
+/// \~english @param[in] length
+///        UI_32 - length of the data buffer provided
+/// \~english @param[in] data
+///        PCVOID - pointer to the data to be sent
+/// \~english @param[in] sessionid
+///        UI_32 - session id
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK(success)
+/// \~english @retval eFrameworkunifiedStatusFail(anything else)
+/// \~english @par Preconditons
+///        none
+/// \~english @par Change of internal status
+///        - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+///       - Function pointer specified by the argument is NULL.
+///       - It is an incorrect value(hMessage) or hMessage is NULL.
+///       - It is an incorrect value(source) or hMessage is NULL.
+///       - It is an incorrect value(data) or hMessage is NULL.
+///       - It is an incorrect value(priority).
+///       - It is an incorrect value(sessionid).
+/// \~english @par Detail
+///       Invoke callback function with arguments to send data to message queue based on priority given.\n
+///       If callback function is null and expectedCalls is '0', using default function 'McSendWithPriority' to send
+///       data to message queue based on priority given.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///       Command ID must be within the range PROTOCOL_FRAMEWORKUNIFIED_BASE_CMD(0x10) to PROTOCOL_FRAMEWORKUNIFIED_MAX_CMD(0xFFFFFFF0).
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - McSend should be used if no sessionid is specified.
+///        - To communicate with an application that uses NS Framework Dispatcher, use FrameworkunifiedSendMsg, etc.
+///        - The maximum transmission data size (length) described above is a theoretical value,
+///          and the maximum actually usable data size depends on the environment requirements.\n
+///          The maximum value is the upper limit of the type (UNIT_MAX) minus the following size.\n
+///          Message header section\n
+///        - Operation cannot be guaranteed when the size of the allocated area indicated by the address
+///          of the pointer (data) to the data buffer does not match the size specified by the size of the data buffer (length).
+/// \~english @par
+/// \~english @par Classification
+///        Public
+/// \~english @par Type
+///        Sync only
+/// \~english @see
+//         McOpenSender, McSend, McSendWithSession, FrameworkunifiedSendMsg
+//////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McSendWithPriority(HANDLE hMessage, PCSTR source, UI_32 cmd, UI_32 length, PCVOID data,
+                              EFrameworkunifiedMessagePriorties priority, UI_32 sessionid);
+
+// EFrameworkunifiedStatus McSendWithPriorityWithSession(HANDLE hMessage, PCSTR source, UI_32 cmd, UI_32 length, PCVOID data,
+// EFrameworkunifiedMessagePriorties priority, UI_32 sessionid);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McInvokeSync
+/// \~english @par Brief
+///        Synchronous Invoke. Send data to message queue, and Receive data from message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the send message queue, McOpenSender
+/// \~english @param[in] source
+///        PCSTR - app (You) the sender
+/// \~english @param[in] cmd
+///        UI_32 - command id aka the message that's being sent
+/// \~english @param[in] msgLength
+///        UI_32 - length of the data buffer provided
+/// \~english @param[in] msgData
+///        PCVOID - pointer to the data to be sent
+/// \~english @param[in] sessionid
+///        UI_32 - session ID
+/// \~english @param[in] hRcvMessage
+///        HANDLE - handle to the receive message queue, McOpenSyncReceiver
+/// \~english @param[in] responseLength
+///        UI_32 -  length of the responnce receive buffer provided
+/// \~english @param[out] responseData
+///        PVOID -  pointer to the data to be receive
+/// \~english @param[out] receivedLength
+///        UI_32* - length of the data to be receive
+/// \~english @retval EFrameworkunifiedStatus indicates invoke response or message sent error or response receive error
+/// \~english @retval eFrameworkunifiedStatusOK - success
+/// \~english @retval eFrameworkunifiedStatusInvldParam - Invalid parameter
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - Invalid handle
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType - Invalid handle type
+/// \~english @retval eFrameworkunifiedStatusInvldQName - Invalid message queue name
+/// \~english @retval eFrameworkunifiedStatusMsgQFull - Message queue is full
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF - Invalid file descriptor
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR - An interrupt is generated by the system call (signal)
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - Invalid buffer size
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - Invalid buffer
+/// \~english @retval eFrameworkunifiedStatusBadConnection - Can't connect with Socket
+/// \~english @retval eFrameworkunifiedStatusFail - Some sort of error occurred
+/// \~english @retval eFrameworkunifiedStatusErrOther - other errors(Failed to open/allocate shared memory)
+/// \~english @par Preconditons
+///       - Message queue specified by argument hMessage and hRcvMessage is useful.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - Message queue handle specified in the argument (hMessage) for sending message is NULL.
+///       [eFrameworkunifiedStatusInvldHandle]
+///       - Message queue handle specified in the argument (hMessage) for sending message is not appropriate (which is
+///       invalid). [eFrameworkunifiedStatusInvldHandle]
+///       - Message queue handle specified in the argument (hRcvMessage) for receiving message is NULL.
+///       [eFrameworkunifiedStatusInvldHandle]
+///       - Message queue handle specified in the argument (hRcvMessage) for receiving message is not appropriate (which
+///       is invalid). [eFrameworkunifiedStatusInvldHandle]
+///       - Size of buffer(responseLength) which is used to storage received message is not 0,
+///         but the pointer to this buffer(responseData) is NULL. [eFrameworkunifiedStatusInvldHandle]
+///       - Failed to create buffer to storage the response message. [eFrameworkunifiedStatusFail]
+///       - Failed to generete random number of the sequence ID for sending message. [eFrameworkunifiedStatusFail]
+///       - Data size of sending message is not 0, but the message data(msgData) is NULL. [eFrameworkunifiedStatusInvldBuf]
+///       - Application name of sender specified in the argument (source) is NULL. [eFrameworkunifiedStatusInvldQName]
+///       - Application name of sender specified in the argument (source) exceeds 20byte. [eFrameworkunifiedStatusInvldQName]
+///       - Name of message queue handle specified in the argument (hMessage) for sending message is NULL.
+///       [eFrameworkunifiedStatusInvldHandle]
+///       - Name of message queue handle specified in the argument (hMessage) for sending message exceeds 20byte.
+///       [eFrameworkunifiedStatusInvldHandle]
+///       - Size of sending message specified in the argument is not 0,
+///         but the pointer to sending message is NULL. [eFrameworkunifiedStatusInvldBuf]
+///       - Message queue type of handle specified by argument(hMessage) is not sending type. [eFrameworkunifiedStatusInvldHndlType]
+///       - Message queue for sending message is full. [eFrameworkunifiedStatusMsgQFull]
+///       - File descriptor of message queue for sending message is invalid. [eFrameworkunifiedStatusErrNoEBADF]
+///       - An interrupt is generated by the system call (signal) when sending message. [eFrameworkunifiedStatusErrNoEINTR]
+///       - Size of buffer for sending message is invalid. [eFrameworkunifiedStatusInvldBufSize]
+///       - Some errors occur, when sending message. [eFrameworkunifiedStatusFail]
+///       - Failed to access the shared memory for sending message data. [eFrameworkunifiedStatusErrOther]
+///       - Failed to connect with the socket(socket/bind/connect) for checking the connection with application of
+///       sender. [eFrameworkunifiedStatusFail]
+///       - Failed to wait(epoll_create/epoll_ctl/epoll_wait) for receiving response message. [eFrameworkunifiedStatusFail]
+///       - Failed to reconnect with the socket(socket/bind/connect) for checking the connection with application of
+///       sender. [eFrameworkunifiedStatusBadConnection]
+///       - Application name of sender in response message exceeds 20byte.[eFrameworkunifiedStatusInvldBuf]
+///       - Message queue type of handle specified by argument(hMessage) is not receiving type.
+///       [eFrameworkunifiedStatusInvldHndlType]
+///       - File descriptor of message queue for receiving message is invalid. [eFrameworkunifiedStatusErrNoEBADF]
+///       - An interrupt is generated by the system call (signal) when receiving message. [eFrameworkunifiedStatusErrNoEINTR]
+///       - Size of buffer for receiving message is invalid. [eFrameworkunifiedStatusInvldBufSize]
+///       - Received message is storaged in shared memory, but data size of shared memory is 0. [eFrameworkunifiedStatusErrOther]
+///       - Failed to create buffer(calloc) to storage date getted from shared memory. [eFrameworkunifiedStatusFail]
+///       - Failed to access(shm_open/fstat/mmap) the shared memory for receiving message data. [eFrameworkunifiedStatusErrOther]
+///       - Data size of received message specified by argument(receivedLength) is NULL. [eFrameworkunifiedStatusInvldParam]
+///       - Sending data size specified in the argument (msgLength) is out of range. [eFrameworkunifiedStatusInvldParam]
+/// \~english @par Detail
+///        It provides synchronous communication for message queue between sender and receiver specified in the
+///        argument. \n
+///        As it is a synchronous function, after sending a message, the sender will wait until getting response form
+///        receiver.
+///        After receiving the response, set responseData with the received data and return.
+/// \~english @par
+///        This API provides the inter-process communication function by the message queue for the application
+///        which does not use the inter-process communication by NS Framework Dispatcher.
+/// \~english @par
+///        When data larger than the receive message storage buffer size (resposeLength) is received,
+///        the write size to the receive message storage buffer (responseData) does not exceed the specified size,
+///        but the receive size is set in the receive message data length (recievedLength) as is.
+/// \~english @par
+///        The caller must guarantee the allocation of the receive message storage buffer (resonseData) area
+///        and the consistency of the receive message stoage buffer sizes (resposeLength).
+/// \~english @par
+///        Please note the following points when using this API for application.
+///        - This API stores up to the storage buffer length (responseLength) and returs eFrameworkunifiedStatusOK even
+///          if the received reply message is larger than the storage buffer (responseData) size.\n
+///          Therefore, the application shoud compare the received message length (recievedLenght) and the storage buffer length (responseLength) even
+///          if this API returns eFrameworkunifiedStatusOK, and detect the above.
+///        - Specify 0 for the sessionid of argument.
+///          If a value other than 0 is specified, no error occurs and the value is used as is.
+///        - To communicate with an application that uses NS Framework Dispatcher, use FrameworkunifiedInvokeSync, etc.
+///        - The maximum data lenght (msgLength) of sent messages is a theoretical value,
+///          and the maximum value that can be actually used is environment-depedent.\n
+///          The maximum value is the upper limit of the type (UNIT_MAX) minus the following size.\n
+///          Message header section, System information department in messages\n
+///        - Operation cannot be guaranteed when the size of the allocated area indicated by the address
+///          of the pointer (msgData) to the data buffer does not match the size specified by the size of the data buffer (msgLength).
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McOpenSyncReceiver, FrameworkunifiedInvokeSync
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McInvokeSync(HANDLE hMessage, PCSTR source, UI_32 cmd, UI_32 msgLength, PCVOID msgData, UI_32 sessionid,
+                        HANDLE hRcvMessage, UI_32 responseLength, PVOID responseData, UI_32 *receivedLength);
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McSendSyncResponse
+/// \~english @par Brief
+///        Sends response to a message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the send message queue, McOpenSyncSender
+/// \~english @param[in] source
+///        PCSTR - app (You) the sender
+/// \~english @param[in] cmd
+///        UI_32 - command id aka the message that's being sent
+/// \~english @param[in] seq_id
+///        UI_32 - response sequence ID
+/// \~english @param[in] ret_val
+///        EFrameworkunifiedStatus - response status
+/// \~english @param[in] length
+///        UI_32 - length of the data buffer provided
+/// \~english @param[in] data
+///        PCVOID - pointer to the data to be sent
+/// \~english @retval eFrameworkunifiedStatusOK success
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - If handle is NULL or invalid
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType -if handle type is invalid
+/// \~english @retval eFrameworkunifiedStatusInvldQName - if MQ name is invalid
+/// \~english @retval eFrameworkunifiedStatusMsgQFull - if MQ is full
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF - if fd is invalid
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR - if system call(signal) interupt occurs
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize -if buffer size is invalid
+/// \~english @retval eFrameworkunifiedStatusInvldBuf  -if buffer is invalid
+/// \~english @retval eFrameworkunifiedStatusFail - any other error
+/// \~english @retval eFrameworkunifiedStatusErrOther -other error(memory open/allocate fail)
+/// \~english @par Preconditons
+///       - The message queue specified by argument hMessage of this API must be allocated
+///         in advance by McOpenSender and McOpenSyncSender.
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - sending MQ handle(designated by parameter)is NULL[eFrameworkunifiedStatusInvldHandle]
+///       - sending MQ handle(designated by parameter)is invalid[eFrameworkunifiedStatusInvldHandle]
+///       - the type of sending MQ handle(designated by parameter)is not sending type[eFrameworkunifiedStatusInvldHndlType]
+///       - application name(source,designated by parameter)is NULL[eFrameworkunifiedStatusInvldQName]
+///       - the length of application name(designated by parameter)is over 20byte[eFrameworkunifiedStatusInvldQName]
+///       - sending data not in accordance with the size of sending data(eg:size is not 0 but data is NULL)
+///       [eFrameworkunifiedStatusInvldBuf]
+///       - sending data MQ is full [eFrameworkunifiedStatusMsgQFull]
+///       - fd of sending data MQ is invalid [eFrameworkunifiedStatusErrNoEBADF]
+///       - system call(signal) interupt occurs during MQ receiveing process[eFrameworkunifiedStatusErrNoEINTR]
+///       - the size of receiveing MQ buffer is invalid[eFrameworkunifiedStatusInvldBufSize]
+///       - error occurs during MQ receiveing process [eFrameworkunifiedStatusFail]
+///       - failed to access shared memmory for sending message[eFrameworkunifiedStatusErrOther]
+///       - failed to allocate buffer for data retriving from shared memmory[eFrameworkunifiedStatusFail]
+/// \~english @par Detail
+///        set the response data to buffer and call this API
+///        when need to response to synchronous message get from synchronous communication(McInvokeSync)
+/// \~english @par
+///        This API applies communication function(using message queue)between processes to the application which do not
+///        use
+///        Dispatcher of NS Framework
+/// \~english @par
+///        cautions when using this API
+///        - Use FrameworkunifiedSetSyncResponseData if communacate with application which use the Dispatcher of NS Framework\n
+///        - the limit of size for sending data is according to system
+///          but the total size of SSystemMsgHeader and ResponseHeader shared memmory header is 48byte
+///          size limit should be(UINT_MAX-48byte)
+///        - operation is not guaranteed if the size which shown in data buffer pointer(data) is not in
+///          accordance with the length set in data buffer
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McOpenSyncReceiver, McInvokeSync, FrameworkunifiedSetSyncResponseData
+//////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McSendSyncResponse(HANDLE hMessage, PCSTR source, UI_32 cmd, UI_32 seq_id, EFrameworkunifiedStatus ret_val, UI_32 length,
+                              PCVOID data);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McCreateInvokerName
+/// \~english @par Brief
+///        Create synchronous invoke response MQ name.
+/// \~english @param[in] source
+///        PCSTR - source service name
+/// \~english @param[in] sessionid
+///        UI_32 - session id
+/// \~english @param[in] invokerName
+///        PSTR - create invoker name buffer
+/// \~english @param[in] size
+///        UI_32 - InvokerName buffer size
+/// \~english @retval EFrameworkunifiedStatus indicates if the close was successfully
+/// \~english @retval eFrameworkunifiedStatusOK
+/// \~english @retval eFrameworkunifiedStatusInvldParam -if parameter is invalid
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - sender application name(source,designated by parameter) is NULL[eFrameworkunifiedStatusInvldParam]
+///       - synchronous communication MQ name(invokerName,designated by parameter) is NULL[eFrameworkunifiedStatusInvldParam]
+///       - the size of synchronous communication MQ name buffer(designated by parameter)is NULL[eFrameworkunifiedStatusInvldParam]
+/// \~english @par Detail
+///        This API will add specific letters to the end of sender application name and return it as synchronous
+///        communication MQ name
+///        This name will be used when application create the MQ through McOpenSyncReceiver
+/// \~english @par
+///        cautions when using this API:
+///        - the synchronous communication MQ name(invokerName) buffer size should be larger than the length of source
+///        application
+///          name(at least 4byte larger)
+///        - source application name(designated by parameter) should be less than 15byte(according to NS framework
+///        spec,error occurs
+///          if message name length is over 20byte
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSyncReceiver
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McCreateInvokerName(PCSTR source, UI_32 sessionid, PSTR invokerName, UI_32 size);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McClose
+/// \~english @par Brief
+///        Close a connection to a Receiver message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle that will be closed
+/// \~english @retval EFrameworkunifiedStatus indicates if the close was successfully
+/// \~english @retval eFrameworkunifiedStatusOK success
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - If hMessage is NULL or invalid
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType - if hMessage  is invalid
+/// \~english @par Preconditons
+///           message queue(McOpenSender, McOpenReceiver) is created in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(hMessage,designated by parameter) is NULL[eFrameworkunifiedStatusInvldHandle]
+///       - handle(hMessage,designated by parameter) is invalid[eFrameworkunifiedStatusInvldHandle]
+///       - the type of handle(designated by parameter) is neither sending or receiveing[eFrameworkunifiedStatusInvldHndlType]
+///       - fail to close the message queue(mq_close)[eFrameworkunifiedStatusInvldHandle]
+/// \~english @par Detail
+///        close the message sending or receiveing message queue which is designated by parameter\n
+///        Application can call this API to close the message queue which is created by McOpenSender
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McOpenReceiver, McOpenSyncReceiver
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McClose(HANDLE hMessage);
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetDataUSID
+/// \~english @par Brief
+///        Get the USID is the Unique Shared Memory ID.e. from the message that was received.
+/// \~english @param[in] pData
+///        void* -  pointer to the data was received from the McReceive Call
+/// \~english @retval TMemID Type of memory buffer identifiers(unsigned int).
+/// \~english @retval NoneZero(Success)
+/// \~english @retval Zero(Failed)
+/// \~english @par Preconditons
+///        none
+/// \~english @par Change of internal status
+///        - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+///       - Function pointer specified by the argument is NULL.
+///       - It is an incorrect value(pData) or pData is NULL.
+/// \~english @par Detail
+///       Invoke callback function with arguments to get the USID from the message that was received.\n
+///       If callback function is null and expectedCalls is '0', using default function 'McGetDataUSID' to get the USID
+///       from the message that was received.\n
+/// \~english @par Classification
+///        Public
+/// \~english @par Type
+///        Sync only
+/// \~english @see
+//         FrameworkunifiedGetDataUSID, FrameworkunifiedForwardMessage
+//////////////////////////////////////////////////////////////////////////////////////////////
+TMemID McGetDataUSID(PVOID pData);
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetMsgSrc
+/// \~english @par Brief
+///        Gets the constant pointer to source message queue.
+/// \~english @param[in] data
+///        PVOID -  pointer to the data to be received
+/// \~english @retval PCSTR message queue's address
+///        CONST char* - constant pointer to source message queue
+/// \~english @retval NotNull(Success)
+/// \~english @retval Null(Failed)
+/// \~english @par Preconditons
+///        none
+/// \~english @par Change of internal status
+///        - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+///       - Function pointer specified by the argument is NULL.
+///       - It is an incorrect value(data) or data is NULL.
+/// \~english @par Detail
+///       Invoke callback function with arguments to get the constant pointer to source message queue.\n
+///       If callback function is null and expectedCalls is '0', using default function 'McGetMsgSrc' to the constant
+///       pointer to source message queue.\n
+/// \~english @par Classification
+///        Public
+/// \~english @par Type
+///        Sync only
+/// \~english @see
+//         frameworkunifiedSendSyncResponse, frameworkunifiedProcessSyncResponse
+//////////////////////////////////////////////////////////////////////////////////////////////
+PCSTR McGetMsgSrc(PVOID data);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McForward
+/// \~english @par Brief
+///        Forward a Message to indicate that there is a Shared Memory
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the send message queue, McOpenSender
+/// \~english @param[in] source
+///        PCSTR -  the sender of this forwarding message.
+/// \~english @param[in] iCmd
+///        UI_32 - Command Id message to forward
+/// \~english @param[in] USID
+///        UI_32 - Unique Shared memory Id
+/// \~english @retval EFrameworkunifiedStatus indicates if the close was successfully
+///        CONST char* - constant pointer to source message queue
+/// \~english @retval Success(eFrameworkunifiedStatusOK)
+/// \~english @retval Failed(anything else)
+/// \~english @par Preconditons
+///        none
+/// \~english @par Change of internal status
+///        - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+///       - Function pointer specified by the argument is NULL.
+///       - It is an incorrect value(hMessage) or hMessage is NULL.
+///       - It is an incorrect value(source) or source is NULL.
+///       - It is an incorrect value(iCmd).
+///       - It is an incorrect value(USID).
+/// \~english @par Detail
+///       Invoke callback function with arguments to forward a Message.\n
+///       If callback function is null and expectedCalls is '0', using default function 'McForward' to forward a
+///       Message.
+/// \~english @par Classification
+///        Public
+/// \~english @par Type
+///        Sync only
+/// \~english @see
+//         FrameworkunifiedForwardMessage
+//////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McForward(HANDLE hMessage, PCSTR source, UI_32 iCmd, TMemID USID);
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McFlushReceiver
+/// \~english @par Brief
+///        Flush's all data on HANDLE's Receiver message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the recvMessage queue that will be flushed
+/// \~english @retval void
+/// \~english @par Preconditons
+///       message queue(McOpenReceiver)is created in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(hMessage,designated by parameter) is NULL
+///       - handle(hMessage,designated by parameter) is invalid [-1]
+///       - the type of handle(designated by parameter) is neither sending or receiveing[-1]
+/// \~english @par Detail
+///         message will not be flushed if process failed
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenSender, McOpenReceiver, McOpenSyncReceiver
+////////////////////////////////////////////////////////////////////////////////////////////
+void McFlushReceiver(HANDLE hMessage);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetQueueName
+/// \~english @par Brief
+///        Gets the name of the message queue.
+/// \~english @param[in] hMessage
+///         HANDLE - handle of the message queue,
+///                  (handle created with McOpenReceiver or McOpenSender)
+/// \~english @retval PCSTR name - name of the message queue if handle is valid else NULL
+/// \~english @par Preconditons
+///        Dispatcher for application should be created and initilized(FrameworkunifiedCreateDispatcherWithoutLoop)in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(hMessage,designated by parameter) is NULL
+///       - handle(hMessage,designated by parameter) is invalid [-1]
+///       - the type of handle(designated by parameter) is neither sending or receiveing[-1]
+/// \~english @par Detail
+///       return the name of specific message queue
+///       this APL is used for application to supervize message queue
+/// \~english @par
+///        This API applies communication function(using message queue)between processes to the application which do not
+///        use
+///        Dispatcher of NS Framework
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenReceiver, McOpenSender
+////////////////////////////////////////////////////////////////////////////////////////////
+PCSTR McGetQueueName(HANDLE hMessage);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McGetQueueFD
+/// \~english @par Brief
+///        Gets the fd of the message queue.
+/// \~english @param[in] hMessage
+///        HANDLE - handle of the message queue.(handle created with McOpenReceiver or McOpenSender)
+/// \~english @retval int fd - fd of the message queue if handle is valid else -1
+/// \~english @par Preconditons
+///        - Dispatcher for application is created and initialized(FrameworkunifiedCreateDispatcherWithoutLoop) in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(hMessage,designated by parameter) is NULL
+///       - handle(hMessage,designated by parameter) is invalid [-1]
+///       - the type of handle(designated by parameter) is neither sending or receiveing[-1]
+/// \~english @par Detail
+///       return the fd of specific message queue
+///       this APL is used for application to supervize message queue
+/// \~english @par
+///        This API applies communication function(using message queue)between processes to the application which do not
+///        use
+///        Dispatcher of NS Framework
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McOpenReceiver, McOpenSender
+////////////////////////////////////////////////////////////////////////////////////////////
+int McGetQueueFD(HANDLE hMessage);
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McTranslateError
+/// \~english @par Brief
+///        Translates global error variables into FW EFrameworkunifiedStatus
+/// \~english @param[in] error
+///        int - error variable
+/// \~english @retval EFrameworkunifiedStatus indicates frameworkunified error type
+/// \~english @par
+///        EFrameworkunifiedStatus Enum
+/// \~english @code
+///           typedef enum eFrameworkunifiedStatus {
+///             eFrameworkunifiedStatusEmptyMediaList    = -10, ///< Empty media list
+///             eFrameworkunifiedStatusSessionLimitMaxedOut  = -9,  ///< Maximum session limit reached
+///             eFrameworkunifiedStatusDbRecNotFound       = -8, ///< Database record not found
+///             eFrameworkunifiedStatusDbResultError       = -7, ///< Database result error
+///             eFrameworkunifiedStatusDbExecuteFail       = -6, ///< Database execute fail
+///             eFrameworkunifiedStatusSemCloseFail        = -5, ///< Semaphore close failed
+///             eFrameworkunifiedStatusSemUnlockFail       = -4, ///< Semaphore unlock failed
+///             eFrameworkunifiedStatusSemLockFail         = -3, ///< Semaphore lock failed
+///             eFrameworkunifiedStatusFail                = -2, ///< Failed
+///             eFrameworkunifiedStatusErrOther            = -1, ///< Unknown error
+///             eFrameworkunifiedStatusOK                  = 0,  ///< Success / Pass / OK
+///             eFrameworkunifiedStatusInvldBuf            = 1,  ///< Invalid buffer
+///             eFrameworkunifiedStatusInvldHandle         = 2,  ///< Invalid handle
+///             eFrameworkunifiedStatusInvldHndlType       = 3,  ///< Invalid handle type
+///             eFrameworkunifiedStatusInvldQName        = 4,  ///< Invalid messasge queue name
+///             eFrameworkunifiedStatusMsgQFull            = 5,  ///< Message queue full
+///             eFrameworkunifiedStatusInvldNotification   = 6,///< The Notification event not present
+///             eFrameworkunifiedStatusInvldParam        = 7,  ///< Invalid parameter
+///             eFrameworkunifiedStatusInvldBufSize        = 8,  ///< Buf size too small
+///             eFrameworkunifiedStatusInvldID             = 9,  ///< Unrecognized ID
+///             eFrameworkunifiedStatusCannotRelease       = 10, ///< Cannot release resource
+///             eFrameworkunifiedStatusBadConnection       = 11, ///< Could not locate resource
+///             eFrameworkunifiedStatusExit            = 12,  ///< Normal application termination
+///             eFrameworkunifiedStatusNotImplemented      = 13,  ///< incomplete feature
+///             eFrameworkunifiedStatusThreadBusy          = 14,  ///< Joined thread is already being joined
+///             eFrameworkunifiedStatusThreadSelfJoin      = 15,  ///< Thread is joining itself
+///             eFrameworkunifiedStatusThreadInvalidVal    = 16, ///< Invalid value passed
+///             eFrameworkunifiedStatusThreadNotExist      = 17,  ///< The thread does not exist
+///             eFrameworkunifiedStatusFault               = 18,  ///< A fault occurred while attempting to make call
+///             eFrameworkunifiedStatusServNotFound        = 19,  ///< Service not present in serv dir
+///             eFrameworkunifiedStatusServerInUse         = 20,  ///< Service already processing 1 client request
+///             eFrameworkunifiedStatusDbIndexing        = 21,  ///< Database Indexing in progress
+///             eFrameworkunifiedStatusNullPointer       = 22,
+///             eFrameworkunifiedStatusMsgNotProcessed     = 23,
+///             eFrameworkunifiedStatusFileLoadSuccess     = 24, ///< File Load Success
+///             eFrameworkunifiedStatusFileLoadError       = 25, ///< File Load Error
+///             eFrameworkunifiedStatusAccessError         = 26, ///< Error when accessing resource
+///             eFrameworkunifiedStatusDuplicate           = 27, ///< Duplicate entry
+///             eFrameworkunifiedStatusMsgQEmpty             = 28, ///< Message queue empty
+///             eFrameworkunifiedStatusThreadAlreadyRunning  = 29,
+///             eFrameworkunifiedStatusErrNoEBADF            = 30,  ///< Bad file descriptor
+///             eFrameworkunifiedStatusErrNoEAGAIN           = 31,  ///< Resource unavailable, try again
+///             eFrameworkunifiedStatusErrNoEINTR            = 32,  ///< Interrupted system call
+///             eFrameworkunifiedStatusSessionErr      = 33,  ///< Error in session handling
+///             eFrameworkunifiedStatusDBCorrupt       = 34,  ///< Database corrupt
+///             eFrameworkunifiedStatusDBFileNotFound    = 35  ///< Database file not found
+///           } EFrameworkunifiedStatus, *PEFrameworkunifiedStatus;
+///            @endcode
+/// \~english @par Preconditons
+///        none
+/// \~english @par Change of internal status
+///        - The internal state is not changed.
+/// \~english @par Conditions of processing failure
+///       - Function pointer specified by the argument is NULL.
+///       - It is an incorrect value(error).
+/// \~english @par Detail
+///       Invoke callback function with arguments to translates global error variables.\n
+///       If callback function is null and expectedCalls is '0', using default function 'McTranslateError' to translates
+///       global error variables.
+/// \~english @par Classification
+///        Public
+/// \~english @par Type
+///        Sync only
+/// \~english @see
+//         none
+//////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McTranslateError(int error);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McZcSetParam
+/// \~english @par Brief
+///        set variable parameter to messeg-sending header
+/// \~english @param[in] handle
+///        HANDLE - handle to the send message queue, McZcOpenSender
+/// \~english @param[in] cmd
+///        UI_32 -cmd for sending(ID to identify protocol of service)
+/// \~english @param[in] length
+///        UI_32 -size of buffer for message-sending
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was set successfully
+/// \~english @retval eFrameworkunifiedStatusOK sucess
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - If hMessage is NULL or invalid
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - invalid buffer
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize - invalid buffer size
+/// \~english @par Preconditons
+///        message queue is created by McZcOpenSender in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(designated by parameter) is NULL[NULL]
+///       - handle(designated by parameter) is invalid [NULL]
+///       - the buffer for sending in handle(designated by parameter) is NULL[NULL]
+///       - the size of data for sending(designated by parameter)(except header) is larger than the size of
+///       sending-buffer[eFrameworkunifiedStatusInvldBufSize]
+/// \~english @par Detail
+///        set the variable sending cmd and sending data length in sending buffer of message-sending handle
+///        This API will only do the initialization of message header.detail setting of data for sending will be done\n
+///        Application can use McZcGetBuf to do data setting
+/// \~english @par
+///       CMD ID should be in (PROTOCOL_FRAMEWORKUNIFIED_BASE_CMD(0x10) to PROTOCOL_FRAMEWORKUNIFIED_MAX_CMD(0xFFFFFFF0))
+/// \~english @par
+///        cautions when using this API
+///        - detail data sending size should be in accordance with the data sending size which is set in this API
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McZcGetBuf, McZcSend
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McZcSetParam(HANDLE handle, UI_32 cmd, UI_32 length);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McZcGetBuf
+/// \~english @par Brief
+///       get the fist address of buffer for sending
+/// \~english @param[in] handle
+///        HANDLE - handle to the send message queue, McZcOpenSender
+/// \~english @retval PVOID  the first address of buffer for data-sending
+/// \~english @retval NULL NULL pointer(fail to get)
+/// \~english @par Preconditons
+///        message queue is created by McZcOpenSender in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(designated by parameter) is NULL[NULL]
+///       - handle(designated by parameter) is invalid [NULL]
+///       - the buffer for sending in handle(designated by parameter) is NULL[NULL]
+/// \~english @par Detail
+///        get the first address of data(excpet the message-header)from sending-buffer in message-sending handle
+///        application will set the address got as sending message
+/// \~english @par
+///        cautions When using the application
+///        - result will not be guaranteed if  the handle set is different from message-sending queue handle
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McZcGetBuf
+////////////////////////////////////////////////////////////////////////////////////////////
+PVOID McZcGetBuf(HANDLE handle);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McZcSend
+/// \~english @par Brief
+///       send message
+/// \~english @param[in] hMessage
+///        HANDLE - handle to the sendMessage, McZcOpenSender
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was sent successfully
+/// \~english @retval eFrameworkunifiedStatusOK success
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - If hMessage is NULL or invalid
+/// \~english @retval eFrameworkunifiedStatusInvldBuf - buffer is invalid
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType -handle type is invalid
+/// \~english @retval eFrameworkunifiedStatusMsgQFull - message queue is full
+/// \~english @retval eFrameworkunifiedStatusErrNoEBADF - file descriptor invalid
+/// \~english @retval eFrameworkunifiedStatusErrNoEINTR -system call(signal) interupt
+/// \~english @retval eFrameworkunifiedStatusInvldBufSize -invalid buffer size
+/// \~english @par Preconditons
+///        message queuqe is created by McZcOpenSender
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - handle(hMessage,designated by parameter)is NULL[eFrameworkunifiedStatusInvldHandle]
+///       - handle(hMessage,designated by parameter)is invalid[eFrameworkunifiedStatusInvldHandle]
+///       - the sending-buffer in handle(hMessage,designated by parameter)is NULL[eFrameworkunifiedStatusInvldBuf]
+///       - the type of message queue in handle(hMessage,designated by parameter)is not sending
+///       type[eFrameworkunifiedStatusInvldHndlType]
+///       - message-sending queue is full[eFrameworkunifiedStatusMsgQFull]
+///       - file descriptor of message-sending queue is invalid[eFrameworkunifiedStatusErrNoEBADF]
+///       - system call(singal) interupts during the message sending process[eFrameworkunifiedStatusErrNoEINTR]
+///       - the size of buffer for message-sending is invalid[eFrameworkunifiedStatusInvldBufSize]
+/// \~english @par Detail
+///        send message using specific message-sending handle.\n
+///        data for sending should be set to message-sending handle(hMessage)beforhead using McZcSetParam, McZcGetBuf
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Method
+/// \~english @see McZcOpenSender, McZcSetParam, McZcGetBuf
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McZcSend(HANDLE hMessage);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McZcOpenSender
+/// \~english @par Brief
+///        create message-sending queuqe
+/// \~english @param[in] source
+///        PCSTR - app (You) the sender
+/// \~english @retval Handle for sending messages to a queue (If INVALID_HANDLE is returned its an error)
+/// \~english @retval NULL NULL pointer(fail to get)
+/// \~english @par Preconditons
+///        - none
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - message queue name(designated by parameter)is NULL[NULL]
+///       - the length of message queue name(designated by parameter)(source) is over 20byte[NULL]
+///       - fail to get memmory for restoring formated message queue name [NULL]
+///       - length of formated message queue name is over 15byte or 16byte(when initial letter is'/')[NULL]
+///       - fail to get message queue(mq_open)[NULL]
+///       - fail to get memmory for message queue info managment(malloc)[NULL]
+///       - fail to get memory for sending buffer[NULL]
+/// \~english @par Detail
+///         create message queuqe and return the handle
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McZcSetParam, McZcGetBuf, McZcSend, McZcClose
+////////////////////////////////////////////////////////////////////////////////////////////
+HANDLE McZcOpenSender(PCSTR source);
+
+////////////////////////////////////////////////////////////////////////////////////////////
+/// \ingroup McZcClose
+/// \~english @par Brief
+///       close the handle to message queue
+/// \~english @param[in] handle
+///        HANDLE - handle to the send message queue, handle got through McZcOpenSender
+/// \~english @retval EFrameworkunifiedStatus indicates if the message was close successfully
+/// \~english @retval eFrameworkunifiedStatusOK
+/// \~english @retval eFrameworkunifiedStatusInvldHandle - If hMessage is NULL or invalid
+/// \~english @retval eFrameworkunifiedStatusInvldHndlType If handle type is invalid
+/// \~english @par Preconditons
+///       - message queue is created by McZcOpenSender in advance
+/// \~english @par Change of internal status
+///        - none
+/// \~english @par Conditions of processing failure
+///       - message handle(designated by parameters) is NULL[eFrameworkunifiedStatusInvldHandle]
+///       - message handle(designated by parameters) is invalid [eFrameworkunifiedStatusInvldHandle]
+///       - message handle type(designated by parameters) is not match(neither send or receive)[eFrameworkunifiedStatusInvldHndlType]
+///       - fail to close message queue(mq_close)[eFrameworkunifiedStatusInvldHandle]
+/// \~english @par Detail
+///        Close message-sending or message-receiving  handle(designated by parameters)\n
+///        application call this function to close message queue which is created by McZcOpenSender.
+/// \~english @par Classification
+///          Public
+/// \~english @par Type
+///          Sync only
+/// \~english @see McZcOpenSender
+////////////////////////////////////////////////////////////////////////////////////////////
+EFrameworkunifiedStatus McZcClose(HANDLE handle);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __NATIVESERVICES_MESSAGE_CENTER_IF_H__ */  // NOLINT  (build/header_guard)
+/** @}*/
+/** @}*/
+/** @}*/
+/** @}*/
+//@}