diff -r 000000000000 -r 3da2a79470a7 testexecmgmt/ucc/Source/UCCSDeviceControl/CUCCSDeviceControl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecmgmt/ucc/Source/UCCSDeviceControl/CUCCSDeviceControl.cpp Mon Mar 08 15:04:18 2010 +0800 @@ -0,0 +1,380 @@ +/* +* 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: +* System Includes +* +*/ + + + +#include +#include +#include + + +/********************************************************************************** + * + * Local Includes + * + *********************************************************************************/ +#include "assert.h" +#include "CUCCSDeviceControl.h" + +// Error Codes +#include "CProtocolTypes.h" +#include "UCCS_ErrorCodes.h" + + +/********************************************************************************** + * + * Dll Entry point + * + *********************************************************************************/ +/********************************************************************************** + * + * Construction / Destruction + * + *********************************************************************************/ +EXPORT_C CUCCSDeviceControl* CUCCSDeviceControl::New() +{ + CUCCSDeviceControl* self = new CUCCSDeviceControl(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; +} + + +CUCCSDeviceControl::CUCCSDeviceControl() +{ +} + + +void CUCCSDeviceControl::ConstructL() +{ + iProtocol = new (ELeave) CUCCSDeviceProtocol(); + assert( iProtocol != NULL ); +} + + +EXPORT_C CUCCSDeviceControl::~CUCCSDeviceControl() +{ + int ret; + ret = iProtocol->disconnect(); + assert (ret == TDC_SUCCESS); + assert( iProtocol != NULL ); + delete iProtocol; + iProtocol = NULL; +} + + +EXPORT_C TUint CUCCSDeviceControl::connectL( TDesC *aRemoteHost, TDPTransport aTransportType ) +{ + int ret = iProtocol->initialise(*aRemoteHost,aTransportType); + if (ret != TDP_SUCCESS) + return TDC_ERRINTIALISING; + return TDC_SUCCESS; +} + + +/********************************************************************************** + * + * startUseCase + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::startUseCase ( TUint aData, int *aErrorCode ) +{ + int ret, datalen; + TStartUsecaseRequest req; + TStartUsecaseReply rep; + TPCommand cmdID; + + // Send the request + cmdID = CMD_REQ_STARTUSECASEID; + req.iUsecaseID = aData; + datalen = sizeof(req); + + ret = iProtocol->sendMessage( cmdID, datalen, &req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + datalen = sizeof(rep); + ret = iProtocol->receiveMessage ( &cmdID, &datalen, &rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check that the reply cmdID is what we expect it to be + if ( cmdID != CMD_REP_STARTUSECASEID ) + return TDC_INVALIDREPLY; + + // Then return the result + return rep.iResult; +} + +/********************************************************************************** + * + * signal + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::signal( TUint aData, int *aErrorCode ) +{ + int ret, datalen; + TSignalRequest req; + TSignalReply rep; + TPCommand cmdID; + + // Send the request + cmdID = CMD_REQ_SIGNALID; + req.iUsecaseID = aData; + datalen = sizeof(req); + + ret = iProtocol->sendMessage( cmdID, datalen, &req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + datalen = sizeof(rep); + ret = iProtocol->receiveMessage ( &cmdID, &datalen, &rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check that the reply cmdID is what we expect it to be + if ( cmdID != CMD_REP_SIGNALID ) + return TDC_INVALIDREPLY; + + // Then return the result + return rep.iResult; +} + +/********************************************************************************** + * + * waitfor + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::waitfor( TUint aData, int *aErrorCode ) +{ + int ret, datalen; + TWaitRequest req; + TWaitReply rep; + TPCommand cmdID; + + // Send the request + cmdID = CMD_REQ_WAITID; + req.iUsecaseID = aData; + datalen = sizeof(req); + + ret = iProtocol->sendMessage( cmdID, datalen, &req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + datalen = sizeof(rep); + ret = iProtocol->receiveMessage ( &cmdID, &datalen, &rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check that the reply cmdID is what we expect it to be + if ( cmdID != CMD_REP_WAITID ) + return TDC_INVALIDREPLY; + + // Then return the result + return rep.iResult; +} + +/********************************************************************************** + * + * rendezvous + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::rendezvous( TUint aData, int *aErrorCode ) +{ + int ret, datalen; + TRendezvousRequest req; + TRendezvousReply rep; + TPCommand cmdID; + + // Send the request + cmdID = CMD_REQ_RENDEZVOUSID; + req.iUsecaseID = aData; + datalen = sizeof(req); + + ret = iProtocol->sendMessage( cmdID, datalen, &req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + datalen = sizeof(rep); + ret = iProtocol->receiveMessage ( &cmdID, &datalen, &rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check that the reply cmdID is what we expect it to be + if ( cmdID != CMD_REP_RENDEZVOUSID ) + return TDC_INVALIDREPLY; + + // Then return the result + return rep.iResult; +} + +/********************************************************************************** + * + * endUseCase + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::endUseCase (TUint aUseCaseID, TUint aResult, int *aErrorCode ) +{ + int ret, datalen; + TEndUsecaseRequest req; + TEndUsecaseReply rep; + TPCommand cmdID; + + // Send the request + cmdID = CMD_REQ_ENDUSECASEID; + req.iUsecaseID = aUseCaseID; + req.iResult = aResult; + datalen = sizeof(req); + + ret = iProtocol->sendMessage( cmdID, datalen, &req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + datalen = sizeof(rep); + ret = iProtocol->receiveMessage ( &cmdID, &datalen, &rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check that the reply cmdID is what we expect it to be + if ( cmdID != CMD_REP_ENDUSECASEID ) + return TDC_INVALIDREPLY; + + // Then return the result + return rep.iCommandResult; +} + +/********************************************************************************** + * + * getVariableName + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::getVariableName( char* aVariableName, char* aOutputBuffer, int aOutputBufferSize, int *aErrorCode ) +{ + int ret, len, recDatalen; + TGetVariableNameRequest var_req; + TGetVariableNameReply var_rep; + TPCommand cmd; + + // Check params + assert ( aVariableName != NULL ); + assert ( aOutputBuffer != NULL ); + assert ( aOutputBufferSize >= 0); + + // Check if aVariableName can be copied into our structure + len = strlen(aVariableName) + 1; + if ( len > MAXVARNAMELEN ) + return TDC_VARNAMETOOLONG; + + // Then copy into our buffer + memcpy ( var_req.iVariableName, aVariableName, len); + + // Send the request + cmd = CMD_REQ_GETVARIABLENAMEID; + ret = iProtocol->sendMessage( cmd, sizeof(var_req), &var_req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + recDatalen = sizeof(var_rep); + ret = iProtocol->receiveMessage( &cmd, &recDatalen, &var_rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check whether we successfully retrieved the value we want + if ( cmd != CMD_REP_GETVARIABLENAMEID) + return TDC_INVALIDREPLY; // Not what we are expecting + + // Only copy the data if everything went ok at the UCCS end - UCCS_OK + if ( var_rep.iResult == UCCS_OK ) + { + // Return the data + // Check that the data received will fit into the return buffer + len = strlen (var_rep.iVariableValue) + 1; + if ( len > aOutputBufferSize ) + return TDC_VARVALTOOLONG; + + // Else copy the data into the return buffer + memcpy ( aOutputBuffer, var_rep.iVariableValue, len); + } + + return var_rep.iResult; +} + +/********************************************************************************** + * + * runCommand + * + *********************************************************************************/ +EXPORT_C TUint CUCCSDeviceControl::runCommandL( char* aCommandLine, int *aErrorCode ) +{ + int ret, len, recDatalen; + TRunCommandRequest* run_req = new (ELeave) (TRunCommandRequest); + TRunCommandReply run_rep; + TPCommand cmd; + + // Check params + assert ( aCommandLine != NULL ); + + // Check if aCommandLine can be copied into our structure + len = strlen( aCommandLine )+1; + if ( len > MAXCOMMANDLINELEN ) + return TDC_COMMANDLINETOOLONG; + + // Then copy into our buffer + memset( run_req->iCommandLine, 0x00, sizeof(run_req->iCommandLine) ); + memcpy( run_req->iCommandLine, aCommandLine, len); + + // Send the request + cmd = CMD_REQ_RUNCOMMAND; + ret = iProtocol->sendMessage( cmd, sizeof(*run_req), run_req); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRSENDING; + + // Get the reply + recDatalen = sizeof(run_rep); + ret = iProtocol->receiveMessage( &cmd, &recDatalen, &run_rep); + *aErrorCode = ret; + if ( ret != TDP_SUCCESS ) + return TDC_ERRRECV; + + // Check whether we successfully retrieved the value we want + if ( cmd != CMD_REP_RUNCOMMAND) + return TDC_INVALIDREPLY; // Not what we are expecting + + return run_rep.iResult; +} +