testexecmgmt/ucc/Source/DynamicsCommandWrapper/CDynamicsCommand.h
changeset 0 3da2a79470a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecmgmt/ucc/Source/DynamicsCommandWrapper/CDynamicsCommand.h	Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,242 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* CDynamicsCommand
+*
+*/
+
+
+
+#ifndef __CDYNAMICSCOMMAND_H__
+#define __CDYNAMICSCOMMAND_H__
+
+
+/****************************************************************************************
+ * 
+ * System Includes
+ * 
+ ***************************************************************************************/
+#include <string>
+using namespace std;
+
+
+/****************************************************************************************
+ * 
+ * Constants
+ * 
+ ***************************************************************************************/
+#define MAXIMUMERRORSTRINGLENGTH	128
+#define MAXCOMMANDLINE			256
+#define MAXINTERFACENAME                64
+#define MAXNAILEN                       128
+#define MAXINFOLEN                      128
+#define MAXERRORSTRING                  256
+
+
+/****************************************************************************************
+ * 
+ * Types - General
+ * 
+ ***************************************************************************************/
+typedef enum {
+	DC_SUCCESS,
+	DC_COMMAND_TOOL_NOT_FOUND,
+	DC_INVALID_ARGUMENTS,
+	DC_CSH_FAILED,
+	DC_CALL_FAILED,
+	DC_EXECUTE_FAILED,
+	DC_UNEXPECTED_OUTPUT,
+} TDynamicsCallResult;
+
+typedef enum {
+  DCF_UNKNOWN,
+  DCF_FUNCTION_NOT_PERMITTED,
+  DCF_AGENT_UNREACHABLE
+} TDynamicsCallFailedReason;
+
+typedef struct {
+	TDynamicsCallResult iResult;
+	int iErrorCode;
+	int iErrorDetail;
+	char iDynamicsErrorString[MAXIMUMERRORSTRINGLENGTH];
+} TDynamicsCallInfo;
+
+
+/****************************************************************************************
+ * 
+ * Types - For Foreign Agent Calls
+ * 
+ ***************************************************************************************/
+typedef struct {
+  int iTunnelCount;
+  int iPendingRegistrationRequests;
+  int iRequestsRejected;
+  int iRequestsAccepted;
+  int iReplysAccepted;
+  int iReplysRejected;
+  int iDiscardedUnknownExtension;
+  int iDiscardedMalformed;
+  int iDiscardedVendor;
+  int iAdvertisementsSent;
+} TForeignAgentStatusInfo;
+
+typedef struct {
+  unsigned int iMobileNodeAddress;
+  unsigned int iHomeAgentAddress;
+  int iTunnelID;
+} TTunnelID;
+
+typedef struct {
+  unsigned int iMobileNodeAddress;
+  unsigned int iCareofAddress;
+  unsigned int iHomeAgentAddress;
+  int iPrivateHomeAgentID;
+  int iCreationTime;
+  int iExpirationTime;
+  int iRefreshTime;
+  int iLastTimestamp;
+  int iSPI;
+  int iTimeout;
+} TForeignAgentTunnelInfo;
+
+
+/****************************************************************************************
+ * 
+ * Types - For Home Agent Calls
+ * 
+ ***************************************************************************************/
+typedef struct {
+  int iTunnelCount;
+  int iRequestsRejected;
+  int iRequestsAccepted;
+  int iDiscardedUnknownExtension;
+  int iDiscardedMalformed;
+  int iDiscardedVendor;
+  int iAdvertisementsSent;
+} THomeAgentStatusInfo;
+
+typedef struct {
+  unsigned int iMobileNodeAddress;
+  unsigned int iCareofAddress;
+  unsigned int iHomeAgentAddress;
+  int iCreationTime;
+  int iExpirationTime;
+  int iRefreshTime;
+  int iLastTimestamp;
+  int iSPI;
+  int iTimeout;
+} THomeAgentTunnelInfo;
+
+
+/****************************************************************************************
+ * 
+ * Types - For Mobile Node Agent Calls
+ * 
+ ***************************************************************************************/
+typedef struct {
+  int iConnected;
+  int iTunnelUp;
+  unsigned int iLocalAddress;
+  unsigned int iColocatedAddress;
+  unsigned int iForeignAgentAddress;
+  unsigned int iHomeAgentAddress;
+  unsigned int iHomeAddress;
+  int iLifetimeRemaining;
+  int iTunnelMode;
+  int iSecondsSinceLastRequest;
+  int iSecondsSinceLastReply;
+  int iReplyCode;
+  char iInfoText[MAXINFOLEN];
+  char iLastErrorString[MAXERRORSTRING];
+} TMobileNodeAgentStatusInfo;
+
+typedef struct {
+  unsigned int iForeignAgentAddress;
+  char iInterfaceName[MAXINTERFACENAME];
+  int iPriority;
+  int iInUse;
+  int iInterfaceIndex;
+  int iLastAdvertisement;
+  char iNAI[MAXNAILEN];
+} TMobileNodeForeignAgentInfo;
+
+
+/****************************************************************************************
+ * 
+ * CDynamicsCommand Class Definition
+ * 
+ ***************************************************************************************/
+class CDynamicsCommand 
+{
+public:
+	// General
+	CDynamicsCommand();
+	~CDynamicsCommand();
+	void SetPipePath( string aPipePath );
+	void SetTimeout( int aTimeoutInMilliseconds );
+
+	// Foreign Agent Calls
+	TDynamicsCallInfo ForeignAgentGetStatus( TForeignAgentStatusInfo *aForeignAgentInfo );
+	TDynamicsCallInfo ForeignAgentDestroyTunnel( unsigned int aMobileNodeAddress );
+	TDynamicsCallInfo ForeignAgentGetTunnels( int *aTunnelCount, TTunnelID *aTunnelIDArray );
+	TDynamicsCallInfo ForeignAgentGetTunnelInfo( unsigned int aMobileNodeAddress, TForeignAgentTunnelInfo *aTunnelInfo );
+
+	// Home Agent Calls
+	TDynamicsCallInfo HomeAgentGetStatus( THomeAgentStatusInfo *aHomeAgentInfo );
+	TDynamicsCallInfo HomeAgentDestroyTunnel( unsigned int aMobileNodeAddress , unsigned int aHomeAgentAddress = 0, int aTunnelID = 0);
+	TDynamicsCallInfo HomeAgentGetTunnels( int *aTunnelCount, unsigned int *aMobileNodeAddresses );
+	TDynamicsCallInfo HomeAgentGetTunnelInfo( unsigned int aMobileNodeAddress, THomeAgentTunnelInfo *aTunnelInfo );
+
+	// Mobile Node Calls
+	TDynamicsCallInfo MobileNodeAgentGetCareofAddress( struct in_addr *aCareofAddress );
+	TDynamicsCallInfo MobileNodeAgentGetStatus( TMobileNodeAgentStatusInfo *aMobileNodeAgentInfo );
+	TDynamicsCallInfo MobileNodeAgentConnect();
+	TDynamicsCallInfo MobileNodeAgentDisconnect();
+	TDynamicsCallInfo MobileNodeAgentConfirm();
+	TDynamicsCallInfo MobileNodeAgentRescan();
+	TDynamicsCallInfo MobileNodeAgentSetPolicy( int aPolicyVector );
+	TDynamicsCallInfo MobileNodeAgentGetPolicy( int *aPolicyVector );
+	TDynamicsCallInfo MobileNodeAgentGetForeignAgentList( int *aListCount, TMobileNodeForeignAgentInfo *aForeignAgentInfoList );
+	TDynamicsCallInfo MobileNodeAgentGetForeignAgentInfo( unsigned int aFAAddress, TMobileNodeForeignAgentInfo *aForeignAgentInfo );
+
+private:
+	// Helper functions
+	TDynamicsCallInfo DynamicsCall( char *aExecutable, char *aCommand, char *aParams, string *aStandardOutput, 
+					string *aStandardError );
+
+	int GetIntegerEntry( const char *aOutput, const char *aLabel, int *aValue );
+	int GetDateEntry( const char *aOutput, const char *aLabel, int *aValue );
+	int GetAddressEntry( const char *aOutput, const char *aLabel, unsigned int *aValue );
+	int GetPolicyEntry( const char *aOutput, const char *aLabel, int *aValue );
+	int GetStringEntry( const char *aOutput, const char *aLabel, char *aValue, int aBufferSize  );
+
+	TDynamicsCallFailedReason GetCallFailedReason( const char *aOutput );
+
+	TDynamicsCallInfo ParseForeignAgentListOutput( string aOutput, int aListSize, TTunnelID *aTunnelIDArray, int *aListCount );
+	TDynamicsCallInfo ParseHomeAgentListOutput( string aOutput, int aListSize, unsigned int *aTunnelList, int *aListCount );
+	TDynamicsCallInfo ParseMobileNodeAgentListOutput( string aOutput, int aListSize, TMobileNodeForeignAgentInfo *aForeignAgentList, 
+							  int *aListCount );
+
+	int ConvertTunnelStringToInteger( char *aTunnelMode, int *aValue );
+	int CheckMatchAsBoolean( char *aInput, char *aTrue, int *aValue );
+	int strstrbeforedelim( const char *aSearchSpace, const char *aToken, char aDelim );
+
+	// Members
+	int iTimeout;
+	string iPipePath;
+	char iCommandLine[MAXCOMMANDLINE];
+};
+
+
+#endif //__CDYNAMICSCOMMAND_H__