--- /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__