#ifndef TRI_COMMUNICATION_SA
#define TRI_COMMUNICATION_SA

#include "TriStructs.h"
#include "TriStatus.h"

typedef TriStatus (*FTriSAReset) (void);
	
typedef TriStatus (*FTriExecuteTestCase) (const TriTestCaseId * testCaseId,
	const TriPortIdList * tsiPortList);
	
typedef TriStatus (*FTriMap) (const TriPortId * comPortId,
	const TriPortId * tsiPortId);

typedef TriStatus (*FTriUnmap) (const TriPortId * comPortId,
	const TriPortId * tsiPortId);

typedef TriStatus (*FTriEndTestCase) (void);

typedef TriStatus (*FTriSend) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddress * sutAddress,
	const TriMessage * sendMessage);

typedef TriStatus (*FTriSendBC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriMessage * sendMessage);

typedef TriStatus (*FTriSendMC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddressList * sutAddresses,
	const TriMessage * sendMessage);

typedef TriStatus (*FTriCall) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddress * sutAddress,
	const TriSignatureId * signatureId, const TriParameterList * parameterList);

typedef TriStatus (*FTriCallBC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriSignatureId * signatureId,
	const TriParameterList * parameterList);

typedef TriStatus (*FTriCallMC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddressList * sutAddresses,
	const TriSignatureId * signatureId, const TriParameterList * parameterList);

typedef TriStatus (*FTriReply) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddress * sutAddress,
	const TriSignatureId * signatureId,	const TriParameterList * parameterList,
	const TriParameter * returnValue);

typedef TriStatus (*FTriReplyBC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriSignatureId * signatureId,
	const TriParameterList * parameterList, const TriParameter * returnValue);

typedef TriStatus (*FTriReplyMC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddressList * sutAddresses,
	const TriSignatureId * signatureId, const TriParameterList * parameterList,
	const TriParameter * returnValue);

typedef TriStatus (*FTriRaise) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddress * sutAddress,
	const TriSignatureId * signatureId, const TriException * exception);

typedef TriStatus (*FTriRaiseBC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriSignatureId * signatureId,
	const TriException * exception);

typedef TriStatus (*FTriRaiseMC) (const TriComponentId * componentId,
	const TriPortId * tsiPortId, const TriAddressList * sutAddresses,
	const TriSignatureId * signatureId, const TriException * exception);

typedef TriStatus (*FTriSUTActionInformal) (const char * description);


#endif
