/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
File: OCTVC1_IRSC_API.h
Copyright (c) 2018 Octasic Inc. All rights reserved.
Description: Contains the definition of the IRSC API.
 		OCTVC1 Internal Resources
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see .
Release: OCTSDR Software Development Kit OCTSDR_GSM-02.11.00-B1927 (2018/04/27)
$Revision: $
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
#ifndef __OCTVC1_IRSC_API_H__
#define __OCTVC1_IRSC_API_H__
/*****************************  INCLUDE FILES  *******************************/
#include "../../octdev_types.h"
#include "../../octdev_devices.h"
#include "../octvc1_msg.h"
#include "../octvc1_handle.h"
#include "../octvc1_fifo.h"
#include "../octvc1_buffer.h"
#include "../octvc1_eth.h"
#include "../octvc1_mac.h"
#include "../octvc1_cursor.h"
#include "../octvc1_list.h"
#include "../octvc1_log.h"
#include "../octvc1_process.h"
#include "../octvc1_radio.h"
#include "../octvc1_api.h"
#include "../octvc1_module.h"
#include "../octvc1_user_id.h"
#include "../octvc1_stream.h"
#include "../octvc1_tap.h"
#include "octvc1_irsc_id.h"
#include "octvc1_irsc_rc.h"
/************************  COMMON DEFINITIONS  *******************************/
/*-------------------------------------------------------------------------------------
 	IPC related definitions.
-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------
 	IPC port type.
-------------------------------------------------------------------------------------*/
#define tOCTVC1_IRSC_IPC_PORT_TYPE_ENUM						tOCT_UINT32
#define cOCTVC1_IRSC_IPC_PORT_TYPE_ENUM_INVALID				0		
#define cOCTVC1_IRSC_IPC_PORT_TYPE_ENUM_UNIDIR_RECV			1		
#define cOCTVC1_IRSC_IPC_PORT_TYPE_ENUM_UNIDIR_SEND			2		
#define cOCTVC1_IRSC_IPC_PORT_TYPE_ENUM_BIDIR				3		
#define cOCTVC1_IRSC_IPC_PORT_TYPE_ENUM_LOCAL				4		
/*-------------------------------------------------------------------------------------
 	IPC port type.
-------------------------------------------------------------------------------------*/
#define tOCTVC1_IRSC_IPC_PORT_STATE_ENUM					tOCT_UINT32
#define cOCTVC1_IRSC_IPC_PORT_STATE_ENUM_INVALID			0		
#define cOCTVC1_IRSC_IPC_PORT_STATE_ENUM_ERROR				1		
#define cOCTVC1_IRSC_IPC_PORT_STATE_ENUM_CONFIG				2		
#define cOCTVC1_IRSC_IPC_PORT_STATE_ENUM_WAIT_REMOTE		3		
#define cOCTVC1_IRSC_IPC_PORT_STATE_ENUM_READY				4		
/*-------------------------------------------------------------------------------------
 	IPC port clone state.
-------------------------------------------------------------------------------------*/
#define tOCTVC1_IRSC_IPC_PORT_CLONE_STATE_ENUM				tOCT_UINT32
#define cOCTVC1_IRSC_IPC_PORT_CLONE_STATE_ENUM_INVALID		0		 	/* Ipc port not part of IPC clone */
#define cOCTVC1_IRSC_IPC_PORT_CLONE_STATE_ENUM_CLONE		1		 	/* Ipc port clone of other port */
#define cOCTVC1_IRSC_IPC_PORT_CLONE_STATE_ENUM_ORIGINAL		2		 	/* Original Ipc port cloned */
#define cOCTVC1_IRSC_IPC_PORT_CLONE_STATE_ENUM_REMOTE		3		 	/* Remote Ipc port connected to a clone port */
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_IPC_PORT_CLONE
 		Ipc port clone context
 Members:
	ulCloneState
 		Port Clone State.
	hProcess
 		When ulCloneState set to CLONE: Process handle of the original port
 		When ulCloneState set to ORIGINAL: Process handle of the clone port
 		When ulCloneState set to REMOTE: Process handle of the original port
	ulPortId
 		When ulCloneState set to CLONE: IPC port identifier of the original port
 		When ulCloneState set to ORIGINAL: IPC port identifier of the clone port
 		When ulCloneState set to REMOTE: IPC port identifier of the original port
	ulUserPortId
 		When ulCloneState set to CLONE: IPC port user id of the original port
 		When ulCloneState set to ORIGINAL: IPC port user id of the clone port
 		When ulCloneState set to REMOTE: IPC port user id of the original port
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_IRSC_IPC_PORT_CLONE_STATE_ENUM	ulCloneState;
	tOCTVC1_HANDLE_OBJECT					hProcess;
	tOCTVC1_SUB_OBJECT_ID					ulPortId;
	tOCT_UINT32								ulUserPortId;
} tOCTVC1_IRSC_IPC_PORT_CLONE;
/*-------------------------------------------------------------------------------------
 	API related definitions
-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_API_STATS
 		API stats
 Members:
	ulMaxProcessingTimeUs
 		Max time spent processing the command in micro second.
	ulMinProcessingTimeUs
 		Min time spent processing the command in micro second.
	ulTotalProcessingTimeUs
 		Total time spent processing the command in micro second.
	ulCmdCnt
 		How many time the command is called
	ulL1CacheMissCnt
 		Number of cache miss in L1 memory
	ulTlbCacheMissCnt
 		Number of cache miss in TLB memory
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulMaxProcessingTimeUs;
	tOCT_UINT32	ulMinProcessingTimeUs;
	tOCT_UINT32	ulTotalProcessingTimeUs;
	tOCT_UINT32	ulCmdCnt;
	tOCT_UINT32	ulL1CacheMissCnt;
	tOCT_UINT32	ulTlbCacheMissCnt;
} tOCTVC1_IRSC_API_STATS;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_SESSION_STATS
 		API SESSION stats
 Members:
	ulLastCmdTimestamp
 		Timestamp of the last command received
	ulExpTransactionId
 		Next Expected transaction id
	ulAcceptedCmdCnt
 		Total of accepted commands
	ulRejectedCmdCnt
 		Total of rejected commands
	ulRetryCmdCnt
 		Total of retry commands
	ulResyncCnt
 		Total of transaction id resynchronization
	ulSessionCnt
 		Total of time this session index have been used with a different client session
	ulEvtSentCnt
 		Next Expected transaction id
	ulEvtSentErrCnt
 		Next Expected transaction id
	ulLastEvtTimestamp
 		Timestamp of the last event sent
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulLastCmdTimestamp;
	tOCT_UINT32	ulExpTransactionId;
	tOCT_UINT32	ulAcceptedCmdCnt;
	tOCT_UINT32	ulRejectedCmdCnt;
	tOCT_UINT32	ulRetryCmdCnt;
	tOCT_UINT32	ulResyncCnt;
	tOCT_UINT32	ulSessionCnt;
	tOCT_UINT32	ulEvtSentCnt;
	tOCT_UINT32	ulEvtSentErrCnt;
	tOCT_UINT32	ulLastEvtTimestamp;
} tOCTVC1_IRSC_SESSION_STATS;
/*-------------------------------------------------------------------------------------
 	Application related definitions.
-------------------------------------------------------------------------------------*/
#define cOCTVC1_IRSC_APPLICATION_TAP_MAX_DESCRIPTION_BYTE_SIZE	255		 	/* Tap description buffer size, in bytes. */
#define cOCTVC1_IRSC_APPLICATION_TRANSPORT_MAX_DATA_SIZE	0xFFFFFFFF	 	/* Max transport size. Allow adapt tap packet size base the transport. */
/*-------------------------------------------------------------------------------------
 	Tap state.
-------------------------------------------------------------------------------------*/
#define tOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM				tOCT_UINT32
#define cOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM_DISABLE		0		
#define cOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM_STOP		1		
#define cOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM_START		2		
#define cOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM_PAUSE		3		
/*-------------------------------------------------------------------------------------
 	Tap state.
-------------------------------------------------------------------------------------*/
#define tOCTVC1_IRSC_APPLICATION_TAP_MODE_ENUM				tOCT_UINT32
#define cOCTVC1_IRSC_APPLICATION_TAP_MODE_ENUM_STREAM		0		
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_APPLICATION_TAP_INFO
 		Application Module information
 Members:
	ulModuleId
 		Module Id.
	hProcess
 		Process handle where Tap is instantiate
	ulProcessUserId
 		Process user identifier, connect on this interface
	ulDirection
	ulDataSubType
 		Data sub type cOCTVOCNET_PKT_SUBTYPE_UNSPECIFIED,
 		cOCTVOCNET_PKT_SUBTYPE_MODULE_DATA
	szName
 		Tap Name.
	szDescription
 		Process file name.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32						ulModuleId;
	tOCTVC1_HANDLE_OBJECT			hProcess;
	tOCTVC1_USER_ID_PROCESS_ENUM	ulProcessUserId;
	tOCTVC1_TAP_DIRECTION_ENUM		ulDirection;
	tOCT_UINT32						ulDataSubType;
	tOCT_INT8						szName[(cOCTVC1_HANDLE_OBJECT32_NAME_MAX_LENGTH+1)];/* NOSWAPMAC */
	tOCT_INT8						szDescription[(cOCTVC1_IRSC_APPLICATION_TAP_MAX_DESCRIPTION_BYTE_SIZE+1)];/* NOSWAPMAC */
} tOCTVC1_IRSC_APPLICATION_TAP_INFO;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_APPLICATION_TAP_STATS
 		TAP Command stats
 Members:
	ulState
		Default:	cOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM_DISABLE
	ulFilterIndex
	ulUserId
	Stream
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_IRSC_APPLICATION_TAP_STATE_ENUM	ulState;
	tOCTVC1_INDEX							ulFilterIndex;
	tOCT_UINT32								ulUserId;
	tOCTVC1_STREAM_STATS					Stream;
} tOCTVC1_IRSC_APPLICATION_TAP_STATS;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_APPLICATION_TAP_START
 		Activate an application tap
 Members:
	ulMode
		Default:	cOCTVC1_IRSC_APPLICATION_TAP_MODE_ENUM_STREAM
 		Tap handle identifier.
	ulMaxTransportDataSize
		Range:		[128..]
		Default:	cOCTVC1_IRSC_APPLICATION_TRANSPORT_MAX_DATA_SIZE
 		Maximum data byte size supported by transport.
	ulFilterIndex
		Default:	cOCTVC1_INDEX_INVALID
	ulUserId
		Default:	0
	ulRetryEnableFlag
		Default:	cOCT_FALSE
 		If true, Retry events will be sent when blocks are missing.
 		Blocks will be dropped to ensure they are not kept out of sequence.
	ulPauseOnStartFlag
 		May specify to pause the TAP on start.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_IRSC_APPLICATION_TAP_MODE_ENUM	ulMode;
	tOCT_UINT32								ulMaxTransportDataSize;
	tOCTVC1_INDEX							ulFilterIndex;
	tOCT_UINT32								ulUserId;
	tOCT_BOOL32								ulRetryEnableFlag;
	tOCT_BOOL32								ulPauseOnStartFlag;
} tOCTVC1_IRSC_APPLICATION_TAP_START;
/*-------------------------------------------------------------------------------------
 	IRSC Module Tap Id
-------------------------------------------------------------------------------------*/
#define cOCTVC1_IRSC_TAP_TX_LOG								((0x0000)|(cOCTVC1_TAP_DIRECTION_ENUM_TX< process)
	ulInterfaceTotalRecvPktCnt
 		Total packet receive from Interface (process -> router )
	ulInterfaceTotalErrSentPktCnt
 		Total error when trying to packet (router-> process)
	ulInterfaceTotalErrRecvPktCnt
 		Total error when trying to receive packet (process -> router )
	ulTotalSentPktCnt
 		Total packet sent to external
	ulTotalRecvPktCnt
 		Total packet receive from external
	ulSentEvtPktCnt
 		Number of event sent by router
	ulModuleDataTotalRecvPktCnt
 		Total module_data packet receive from external
	ulModuleDataTotalSentPktCnt
 		Total module_data packet sent to external
	ulInterfaceNum
 		Number of interface between router and process
	aInterfaceStats
 		Session event Info
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32							ulInterfaceTotalSentPktCnt;
	tOCT_UINT32							ulInterfaceTotalRecvPktCnt;
	tOCT_UINT32							ulInterfaceTotalErrSentPktCnt;
	tOCT_UINT32							ulInterfaceTotalErrRecvPktCnt;
	tOCT_UINT32							ulTotalSentPktCnt;
	tOCT_UINT32							ulTotalRecvPktCnt;
	tOCT_UINT32							ulSentEvtPktCnt;
	tOCT_UINT32							ulModuleDataTotalRecvPktCnt;
	tOCT_UINT32							ulModuleDataTotalSentPktCnt;
	tOCT_UINT32							ulInterfaceNum;
	tOCTVC1_IRSC_ROUTER_INTERFACE_STATS	aInterfaceStats[cOCTVC1_IRSC_ROUTER_MAX_INTERFACE];
} tOCTVC1_IRSC_ROUTER_STATS;
/*-------------------------------------------------------------------------------------
 	Process related definitions.
-------------------------------------------------------------------------------------*/
#define cOCTVC1_IRSC_PROCESS_MEMORY_CACHE_STATS_RECENT_MISSES_NUM	8		 	/* L1 cache misses history number. */
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_PROCESS_MEMORY_CACHE_STATS
 		Process cache memory stats
 Members:
	ulL1MaxSize
 		Maximum L1 memory size for cache fetching
	ulL1UserLockedSize
 		L1 memory currently locked by user
	ulL1CodeSize
 		Code cache size in bytes
	ulL1DataSize
 		Data cache size in bytes
	ulL1MissCnt
 		Not in L1 memory
	ulTlbMissCnt
 		In L1 memory but not in TLB
	ulL1CodeFetchCnt
 		Code cache line fetch
	ulL1DataReadCnt
 		Data cache line fetch
	ulL1DataWriteCnt
 		Data cache line fetch
	aulRecentMisses
 		The most recent L1 misses
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulL1MaxSize;
	tOCT_UINT32	ulL1UserLockedSize;
	tOCT_UINT32	ulL1CodeSize;
	tOCT_UINT32	ulL1DataSize;
	tOCT_UINT32	ulL1MissCnt;
	tOCT_UINT32	ulTlbMissCnt;
	tOCT_UINT32	ulL1CodeFetchCnt;
	tOCT_UINT32	ulL1DataReadCnt;
	tOCT_UINT32	ulL1DataWriteCnt;
	tOCT_UINT32	aulRecentMisses[cOCTVC1_IRSC_PROCESS_MEMORY_CACHE_STATS_RECENT_MISSES_NUM];
} tOCTVC1_IRSC_PROCESS_MEMORY_CACHE_STATS;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_PROCESS_MEMORY_HEAP_STATS
 		Process heap memory stats
 Members:
	ulUsedSize
 		Used heap memory size in bytes
	ulFreeSize
 		Free heap memory size in bytes
	ulFreeLargestSize
 		Free largest heap memory block size
	ulUsedBlocNum
 		Used heap memory block number
	ulFreeBlocNum
 		Free heap memory block number
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulUsedSize;
	tOCT_UINT32	ulFreeSize;
	tOCT_UINT32	ulFreeLargestSize;
	tOCT_UINT32	ulUsedBlocNum;
	tOCT_UINT32	ulFreeBlocNum;
} tOCTVC1_IRSC_PROCESS_MEMORY_HEAP_STATS;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_PROCESS_MEMORY_STACK_STATS
 		Process heap memory stats
 Members:
	ulFreeSize
 		Current Free size
	ulUnusedSize
 		Stack size allocation that was never used.
 		Available when called with ulStackScanFlag to true
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulFreeSize;
	tOCT_UINT32	ulUnusedSize;
} tOCTVC1_IRSC_PROCESS_MEMORY_STACK_STATS;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_PROCESS_MEMORY_SCRATCH_PAD_STATS
 		Process heap memory stats
 Members:
	ulTotalSize
 		Total scratch pad size in bytes. Allocate in local memory
	ulMaxUsedSize
 		Max Used scratch pad size in bytes
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulTotalSize;
	tOCT_UINT32	ulMaxUsedSize;
} tOCTVC1_IRSC_PROCESS_MEMORY_SCRATCH_PAD_STATS;
/*****************************  METHODS  *************************************/
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_INFO_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
		Default:	cOCTVC1_HANDLE_INVALID
 		Process handle identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
} tOCTVC1_IRSC_MSG_PROCESS_INFO_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_INFO_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
	ulUserId
 		Process user identifier
	szName
 		Process Name.
	szProcessImageName
 		Process file name.
	ulModuleId
 		Module Id.
	ulRouterIfEnableFlag
 		Router Interface enable flag
 		if cOCT_TRUE, an router internal is enable between this process and router
 		Router interface allow this core send directly API event, send/receive
 		MODULE_DATA
	ulIpcPortMax
 		Maximum number of ipc port
	ulIpcFifoMax
 		Maximum number of ipc fifo
	ulTaskMax
 		Maximum number of task
	ulUserIpcPortMax
 		Maximum number of user ipc port
	ulUserIpcFifoMax
 		Maximum number of user ipc fifo
	ulUserTaskMax
 		Maximum number of user task
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER				Header;
	tOCTVC1_HANDLE_OBJECT			hProcess;
	tOCTVC1_USER_ID_PROCESS_ENUM	ulUserId;
	tOCT_INT8						szName[(cOCTVC1_HANDLE_OBJECT32_NAME_MAX_LENGTH+1)];/* NOSWAPMAC */
	tOCT_INT8						szProcessImageName[(cOCTVC1_PROCESS_IMAGE_NAME_MAX_LENGTH+1)];/* NOSWAPMAC */
	tOCT_UINT32						ulModuleId;
	tOCT_BOOL32						ulRouterIfEnableFlag;
	tOCT_UINT32						ulIpcPortMax;
	tOCT_UINT32						ulIpcFifoMax;
	tOCT_UINT32						ulTaskMax;
	tOCT_UINT32						ulUserIpcPortMax;
	tOCT_UINT32						ulUserIpcFifoMax;
	tOCT_UINT32						ulUserTaskMax;
} tOCTVC1_IRSC_MSG_PROCESS_INFO_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
		Default:	cOCTVC1_HANDLE_INVALID
 		Process handle identifier.
	ulResetProcessStatsFlag
 		Statistics counters will be reset to zero after the current values are returned.
	ulResetIpcStatsFlag
 		Statistics counters for all IPC ports will be reset to zero after the current
 		values are returned.
	ulResetTaskStatsFlag
 		Statistics counters for all tasks will be reset to zero after the current
 		values are returned.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCT_BOOL32				ulResetProcessStatsFlag;
	tOCT_BOOL32				ulResetIpcStatsFlag;
	tOCT_BOOL32				ulResetTaskStatsFlag;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
	State
 		Current process state.
	ulTotalCacheMissCnt
	ulTaskScratchPadLeakCnt
 		Number of tasks with scratchpad leak flag trigged
	Error
 		Process Error
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_HANDLE_OBJECT		hProcess;
	tOCTVC1_PROCESS_STATE_ENUM	State;
	tOCT_UINT32					ulTotalCacheMissCnt;
	tOCT_UINT32					ulTaskScratchPadLeakCnt;
	tOCTVC1_PROCESS_ERROR		Error;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
	ObjectNameList
 		Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
	tOCTVC1_LIST_NAME_OBJECT32_GET		ObjectNameList;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_INFO_IPC_PORT_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulPortId
 		IPC port identifier
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulPortId;
} tOCTVC1_IRSC_MSG_PROCESS_INFO_IPC_PORT_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_INFO_IPC_PORT_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulPortId
 		IPC port identifier
	ulUserId
 		IPC port user identifier
	ulModuleId
 		Module Id.
	hRemoteProcess
 		Remote Process identifier
	ulRemotePortId
 		Remote IPC port identifier
	ulRemoteUserId
 		Remote IPC port user id
	szName
 		IPC Port Name.
	ulPortIdx
 		Process Local Port Idx
	ulType
 		Process Local Port Idx
	ulSystemFlag
 		System Flag
	Clone
 		Ipc Port Clone information.
	ulRecvMsgNum
 		Reception array message number.
	ulRecvMsgSize
 		Reception message size in bytes.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER				Header;
	tOCTVC1_HANDLE_OBJECT			hProcess;
	tOCTVC1_SUB_OBJECT_ID			ulPortId;
	tOCT_UINT32						ulUserId;
	tOCT_UINT32						ulModuleId;
	tOCTVC1_HANDLE_OBJECT			hRemoteProcess;
	tOCTVC1_SUB_OBJECT_ID			ulRemotePortId;
	tOCT_UINT32						ulRemoteUserId;
	tOCT_INT8						szName[(cOCTVC1_HANDLE_OBJECT32_NAME_MAX_LENGTH+1)];/* NOSWAPMAC */
	tOCT_UINT32						ulPortIdx;
	tOCTVC1_IRSC_IPC_PORT_TYPE_ENUM	ulType;
	tOCT_BOOL32						ulSystemFlag;
	tOCTVC1_IRSC_IPC_PORT_CLONE		Clone;
	tOCT_UINT32						ulRecvMsgNum;
	tOCT_UINT32						ulRecvMsgSize;
} tOCTVC1_IRSC_MSG_PROCESS_INFO_IPC_PORT_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_IPC_PORT_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulPortId
 		IPC port identifier
	ulResetStatsFlag
 		Statistics counters will be reset to zero after the current values are returned.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulPortId;
	tOCT_BOOL32				ulResetStatsFlag;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_IPC_PORT_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_IPC_PORT_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulPortId
 		IPC port identifier
	ulState
 		IPC port state
	ulSendMsgCnt
 		Count of message send
	ulRecvMsgCnt
 		Count of message received.
	ulRecvMsgMissCnt
 		Number of missing message
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_HANDLE_OBJECT				hProcess;
	tOCTVC1_SUB_OBJECT_ID				ulPortId;
	tOCTVC1_IRSC_IPC_PORT_STATE_ENUM	ulState;
	tOCT_UINT32							ulSendMsgCnt;
	tOCT_UINT32							ulRecvMsgCnt;
	tOCT_UINT32							ulRecvMsgMissCnt;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_IPC_PORT_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_IPC_PORT_CMD
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER								Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID	SubObjectIdGet;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_IPC_PORT_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_IPC_PORT_RSP
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
	ObjectNameList
 		Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER									Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID		SubObjectIdGet;
	tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID_NAME	ObjectNameList;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_IPC_PORT_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_INFO_TASK_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulTaskIndex
 		Task identifier
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulTaskIndex;
} tOCTVC1_IRSC_MSG_PROCESS_INFO_TASK_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_INFO_TASK_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulTaskIndex
 		Task identifier
	ulModuleId
 		Module Id.
	szName
 		Name given to the task
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulTaskIndex;
	tOCT_UINT32				ulModuleId;
	tOCT_INT8				szName[(cOCTVC1_HANDLE_OBJECT32_NAME_MAX_LENGTH+1)];
} tOCTVC1_IRSC_MSG_PROCESS_INFO_TASK_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_TASK_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulTaskIndex
 		Task identifier
	ulResetStatsFlag
 		Statistics counters will be reset to zero after the current values are returned.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulTaskIndex;
	tOCT_BOOL32				ulResetStatsFlag;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_TASK_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_TASK_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulTaskIndex
 		Task identifier
	Stats
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_HANDLE_OBJECT		hProcess;
	tOCTVC1_SUB_OBJECT_ID		ulTaskIndex;
	tOCTVC1_PROCESS_TASK_STATS	Stats;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_TASK_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_TASK_CMD
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER								Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID	SubObjectIdGet;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_TASK_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_TASK_RSP
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
	ObjectNameList
 		Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER									Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID		SubObjectIdGet;
	tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID_NAME	ObjectNameList;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_TASK_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_OBJMGR_INFO_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulObjType
		Default:	cOCTVC1_HANDLE_INVALID
 		Process handle identifier. Typically retrieved using the
 		cOCTVC1_MAIN_MSG_DEVICE_INFO_CID command.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulObjType;
} tOCTVC1_IRSC_MSG_OBJMGR_INFO_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_OBJMGR_INFO_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulObjType
 		Type of object contained by the manager, represented as a number
	ulMaxNumObj
 		Max number of objects the manager can hold
	ulObjByteSize
 		Size in bytes of each object
	szName
 		Name given to the object manager
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulObjType;
	tOCT_UINT32			ulMaxNumObj;
	tOCT_UINT32			ulObjByteSize;
	tOCT_INT8			szName[(cOCTVC1_HANDLE_OBJECT32_NAME_MAX_LENGTH+1)];
} tOCTVC1_IRSC_MSG_OBJMGR_INFO_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_OBJMGR_STATS_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulObjType
 		Type of object contained by the manager, represented as a number
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulObjType;
} tOCTVC1_IRSC_MSG_OBJMGR_STATS_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_OBJMGR_STATS_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulObjType
 		Type of object contained by the manager, represented as a number
	ulMaxNumObj
 		Max number of objects the manager can hold
	ulNumObj
 		Current number of objects in the manager
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulObjType;
	tOCT_UINT32			ulMaxNumObj;
	tOCT_UINT32			ulNumObj;
} tOCTVC1_IRSC_MSG_OBJMGR_STATS_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_OBJMGR_LIST_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
} tOCTVC1_IRSC_MSG_OBJMGR_LIST_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_OBJMGR_LIST_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
	ObjectNameList
 		>Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
	tOCTVC1_LIST_NAME_OBJECT32_GET		ObjectNameList;
} tOCTVC1_IRSC_MSG_OBJMGR_LIST_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_START_MONITORING_CMD
 		Start the Api command timing
 Members:
	Header
 		OCTVC1 Message Header
	ulResetStatsFlag
		Default:	cOCT_TRUE
 		If set to cOCT_TRUE, all statistics counters will be reset to zero.
 		If set to cOCT_FALSE, counters will not be reset.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_BOOL32			ulResetStatsFlag;
} tOCTVC1_IRSC_MSG_API_SYSTEM_START_MONITORING_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_START_MONITORING_RSP
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_API_SYSTEM_START_MONITORING_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STOP_MONITORING_CMD
 		Stop the Api command timing
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STOP_MONITORING_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STOP_MONITORING_RSP
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STOP_MONITORING_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_COMMAND_CMD
 		List the command since the monitoring is enabled.
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
} tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_COMMAND_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_COMMAND_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
	ObjectList
 		Object List structure.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
	tOCTVC1_LIST_HANDLE_OBJECT_GET		ObjectList;
} tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_COMMAND_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_COMMAND_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hCmdId
	ulResetStatsFlag
		Default:	cOCT_FALSE
 		Statistics counters will be reset to zero after the current values are returned.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hCmdId;
	tOCT_BOOL32				ulResetStatsFlag;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_COMMAND_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_COMMAND_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hCmdId
	CommandStats
 		Monitoring entry asked
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hCmdId;
	tOCTVC1_IRSC_API_STATS	CommandStats;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_COMMAND_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_SESSION_CMD
 		List the cmd that are monitored
 Members:
	Header
 		OCTVC1 Message Header
	IndexGet
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_CURSOR_INDEX_GET	IndexGet;
} tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_SESSION_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_SESSION_RSP
 Members:
	Header
 		OCTVC1 Message Header
	IndexGet
 		Object cursor
	IndexList
 		Object name list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_CURSOR_INDEX_GET	IndexGet;
	tOCTVC1_LIST_INDEX_GET		IndexList;
} tOCTVC1_IRSC_MSG_API_SYSTEM_LIST_SESSION_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
		Default:	cOCTVC1_API_SESSION_INDEX_CURRENT_TRANSPORT
 		Session index
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCTVC1_INDEX		ulSessionIndex;
} tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
 		Session index
	SessionInfo
 		Session Info
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_INDEX				ulSessionIndex;
	tOCTVC1_API_SESSION_INFO	SessionInfo;
} tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
		Default:	cOCTVC1_API_SESSION_INDEX_CURRENT_TRANSPORT
 		Session index
	ulResetStatsFlag
		Default:	cOCT_FALSE
 		Statistics counters will be reset to zero after the current values are returned.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCTVC1_INDEX		ulSessionIndex;
	tOCT_BOOL32			ulResetStatsFlag;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
 		Session index
	SessionStats
 		Sessiont statistic asked
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_INDEX				ulSessionIndex;
	tOCTVC1_IRSC_SESSION_STATS	SessionStats;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_EVT_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
		Default:	cOCTVC1_API_SESSION_INDEX_CURRENT_TRANSPORT
 		Session index
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCTVC1_INDEX		ulSessionIndex;
} tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_EVT_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_EVT_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
 		Session index
	EvtInfo
 		Session event Info
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER				Header;
	tOCTVC1_INDEX					ulSessionIndex;
	tOCTVC1_API_SESSION_EVT_INFO	EvtInfo;
} tOCTVC1_IRSC_MSG_API_SYSTEM_INFO_SESSION_EVT_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_EVT_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
		Default:	cOCTVC1_API_SESSION_INDEX_CURRENT_TRANSPORT
 		Session index
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCTVC1_INDEX		ulSessionIndex;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_EVT_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_EVT_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulSessionIndex
 		Session index
	Stats
 		Session event stats
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_INDEX			ulSessionIndex;
	tOCTVC1_IRSC_API_STATS	Stats;
} tOCTVC1_IRSC_MSG_API_SYSTEM_STATS_SESSION_EVT_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_LIST_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
} tOCTVC1_IRSC_MSG_APPLICATION_LIST_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_LIST_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ObjectCursor
 		Object cursor
	ObjectNameList
 		Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET	ObjectCursor;
	tOCTVC1_LIST_NAME_OBJECT32_GET		ObjectNameList;
} tOCTVC1_IRSC_MSG_APPLICATION_LIST_TAP_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_INFO_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
		Default:	cOCTVC1_HANDLE_INVALID
 		Tap identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_INFO_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_INFO_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
	Info
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCT_UINT32							hTapId;
	tOCTVC1_IRSC_APPLICATION_TAP_INFO	Info;
} tOCTVC1_IRSC_MSG_APPLICATION_INFO_TAP_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_STATS_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
		Default:	cOCTVC1_HANDLE_INVALID
 		Tap handle identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_STATS_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_STATS_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
	Stats
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCT_UINT32							hTapId;
	tOCTVC1_IRSC_APPLICATION_TAP_STATS	Stats;
} tOCTVC1_IRSC_MSG_APPLICATION_STATS_TAP_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_START_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
		Default:	cOCTVC1_HANDLE_INVALID
 		Tap handle identifier.
	Start
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER					Header;
	tOCT_UINT32							hTapId;
	tOCTVC1_IRSC_APPLICATION_TAP_START	Start;
} tOCTVC1_IRSC_MSG_APPLICATION_START_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_START_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
	hLogicalObj
 		Contains an Object Handle for the Tap that has been started
 		This handle will also be placed in
 		DataHeader.VocNetHeader.hLogicalObj.aulHandle[0]
 		of the tOCTVOCNET_PKT_DATA_FRAGMENT_HEADER at the header of each data packet
 		sent.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCT_UINT32				hTapId;
	tOCTVC1_HANDLE_OBJECT	hLogicalObj;
} tOCTVC1_IRSC_MSG_APPLICATION_START_TAP_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_STOP_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
		Default:	cOCTVC1_HANDLE_INVALID
 		Tap handle identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_STOP_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_STOP_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_STOP_TAP_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_INFO_CMD
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_ROUTER_INFO_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_INFO_RSP
 Members:
	Header
 		OCTVC1 Message Header
	Info
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_IRSC_ROUTER_INFO	Info;
} tOCTVC1_IRSC_MSG_ROUTER_INFO_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_STATS_CMD
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_ROUTER_STATS_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_STATS_RSP
 Members:
	Header
 		OCTVC1 Message Header
	Stats
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER			Header;
	tOCTVC1_IRSC_ROUTER_STATS	Stats;
} tOCTVC1_IRSC_MSG_ROUTER_STATS_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_INFO_STREAMER_CMD
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_ROUTER_INFO_STREAMER_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_INFO_STREAMER_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulLimitBandwidthMbps
 		Maximal limit that target application will stream out data
	ulToHostStreamSequenceIdInterval
 		For stream target to host, define the interval that host by send data packet
 		acknowledgement.
 		Presently, only apply on file stream transfer
	ulToHostStreamInitialPktCnt
 		For stream target to host, define initial number of packet the stream will send
 		to host before waiting acknowledgement.
 		Most be egal or greater that ulToHostStreamSequenceIdInterval .
 		Presently, only apply on file stream transfer
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulLimitBandwidthMbps;
	tOCT_UINT32			ulToHostStreamSequenceIdInterval;
	tOCT_UINT32			ulToHostStreamInitialPktCnt;
} tOCTVC1_IRSC_MSG_ROUTER_INFO_STREAMER_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_STATS_SYSTEM_CMD
 		This command retrieves the system global statistics.
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_APPLICATION_STATS_SYSTEM_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_STATS_SYSTEM_RSP
 Members:
	Header
 		OCTVC1 Message Header
	ulExtMemSizeKb
 		Total Size of External Memory (Kbytes).
	ulExtMemTotalAllocFreeSizeKb
 		Total Free Size Left of External Memory available for allocation (Kbytes).
	ulExtMemLargestFreeBlocSizeKb
 		Largest free bloc of memory available (Kbytes).
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulExtMemSizeKb;
	tOCT_UINT32			ulExtMemTotalAllocFreeSizeKb;
	tOCT_UINT32			ulExtMemLargestFreeBlocSizeKb;
} tOCTVC1_IRSC_MSG_APPLICATION_STATS_SYSTEM_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_MODIFY_STREAMER_CMD
 Members:
	Header
 		OCTVC1 Message Header
	ulLimitBandwidthMbps
		Range:		[50..1000],cOCTVC1_IRSC_ROUTER_STREAMER_LIMIT_BANDWIDTH_DISABLE
		Default:	cOCTVC1_DO_NOT_MODIFY
 		Maximal limit that target application will stream out data
 		Set to cOCTVC1_IRSC_ROUTER_STREAMER_LIMIT_BANDWIDTH_DISABLE to disable
 		Bandwidth limitation
	ulToHostStreamSequenceIdInterval
		Range:		[10..500]
		Default:	cOCTVC1_DO_NOT_MODIFY
 		For stream target to host, define the interval that host by send data packet
 		acknowledgement.
 		Presently, only apply on file stream transfer
	ulToHostStreamInitialPktCnt
		Range:		[10..500]
		Default:	cOCTVC1_DO_NOT_MODIFY
 		For stream target to host, initial number of packet the stream will send to
 		host before waiting acknowledgement.
 		Most be egal or greater that ulToHostStreamSequenceIdInterval .
 		Attention, host application must have appropriated ethernet configuration.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			ulLimitBandwidthMbps;
	tOCT_UINT32			ulToHostStreamSequenceIdInterval;
	tOCT_UINT32			ulToHostStreamInitialPktCnt;
} tOCTVC1_IRSC_MSG_ROUTER_MODIFY_STREAMER_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_MODIFY_STREAMER_RSP
 Members:
	Header
 		OCTVC1 Message Header
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
} tOCTVC1_IRSC_MSG_ROUTER_MODIFY_STREAMER_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_MEMORY_CMD
 		Retreive the memory statistics
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
	ulStackScanFlag
		Default:	cOCT_FALSE
 		If true, the stack will be scan to find the maximum amount of stack used in
 		this process.
 		Attention, the stack scan can take more than 1ms of execution in the process.
	ulScratchPadResetFlag
		Default:	cOCT_FALSE
 		If true, the max used size will be reset.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCT_BOOL32				ulStackScanFlag;
	tOCT_BOOL32				ulScratchPadResetFlag;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_MEMORY_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_MEMORY_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
	Stack
 		Stack stats
	Heap
 		Heap stats
	ScratchPad
 		ScratchPad stats
	Cache
 		Cache system stats
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER								Header;
	tOCTVC1_HANDLE_OBJECT							hProcess;
	tOCTVC1_IRSC_PROCESS_MEMORY_STACK_STATS			Stack;
	tOCTVC1_IRSC_PROCESS_MEMORY_HEAP_STATS			Heap;
	tOCTVC1_IRSC_PROCESS_MEMORY_SCRATCH_PAD_STATS	ScratchPad;
	tOCTVC1_IRSC_PROCESS_MEMORY_CACHE_STATS			Cache;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_MEMORY_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_SYSTEM_CMD
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER								Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID	SubObjectIdGet;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_SYSTEM_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_SYSTEM_RSP
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
	ObjectNameList
 		Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER									Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID		SubObjectIdGet;
	tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID_NAME	ObjectNameList;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_SYSTEM_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_SYSTEM_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulIndex
 		Resource index
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulIndex;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_SYSTEM_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_SYSTEM_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulIndex
 		Resource index
	Resource
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulIndex;
	tOCTVC1_RESOURCE		Resource;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_SYSTEM_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_USER_CMD
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER								Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID	SubObjectIdGet;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_USER_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_USER_RSP
 Members:
	Header
 		OCTVC1 Message Header
	SubObjectIdGet
 		Object cursor
	ObjectNameList
 		Object32 named list.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER									Header;
	tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID		SubObjectIdGet;
	tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID_NAME	ObjectNameList;
} tOCTVC1_IRSC_MSG_PROCESS_LIST_RESOURCE_USER_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_USER_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulIndex
 		Resource index
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulIndex;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_USER_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_USER_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hProcess
 		Process identifier
	ulIndex
 		Resource index
	Resource
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER		Header;
	tOCTVC1_HANDLE_OBJECT	hProcess;
	tOCTVC1_SUB_OBJECT_ID	ulIndex;
	tOCTVC1_RESOURCE		Resource;
} tOCTVC1_IRSC_MSG_PROCESS_STATS_RESOURCE_USER_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_PAUSE_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
		Default:	cOCTVC1_HANDLE_INVALID
 		Tap handle identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_PAUSE_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_PAUSE_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_PAUSE_TAP_RSP;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_RESUME_TAP_CMD
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
		Default:	cOCTVC1_HANDLE_INVALID
 		Tap handle identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_RESUME_TAP_CMD;
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_APPLICATION_RESUME_TAP_RSP
 Members:
	Header
 		OCTVC1 Message Header
	hTapId
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MSG_HEADER	Header;
	tOCT_UINT32			hTapId;
} tOCTVC1_IRSC_MSG_APPLICATION_RESUME_TAP_RSP;
/*****************************  MODULE_DATA  *************************************/
/*-------------------------------------------------------------------------------------
	tOCTVC1_IRSC_MSG_ROUTER_DATA_REQUEST_STREAMER_MDA
 Members:
	ModuleData
 		OCTVC1 Module Data
	hStream
 		Contains an Object Handle of stream
 		This handle will also be placed in DataHeader.VocNetHeader.hLogicalObj
 		of the tOCTVOCNET_PKT_DATA_FRAGMENT_HEADER at the header of each data packet
 		sent.
	hOwner
 		Contains an Object Handle of the object responsable for the stream object
 		(hLogicalObj)
	ulDataSize
	ulSequenceId
 		In the case of a retry, request data starting from this Sequence ID
	ulRetryFlag
 		Indicates if this event is a retry request
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_MODULE_DATA		ModuleData;
	tOCTVC1_HANDLE_OBJECT	hStream;
	tOCTVC1_HANDLE_OBJECT	hOwner;
	tOCT_UINT32				ulDataSize;
	tOCT_UINT32				ulSequenceId;
	tOCT_BOOL32				ulRetryFlag;
} tOCTVC1_IRSC_MSG_ROUTER_DATA_REQUEST_STREAMER_MDA;
/***************  INCLUDE FILES WITH DEPENDENCIES ON THIS FILE  **************/
#include "octvc1_irsc_evt.h"
#endif /* __OCTVC1_IRSC_API_H__ */