# HG changeset patch # User hgs # Date 1272825971 -10800 # Node ID 51f207bebb0625bfde9275a01bf612281f99853a # Parent 3b92f7acdc913c7e61ddcd1e515d3ebe1ba5e61d 201017 diff -r 3b92f7acdc91 -r 51f207bebb06 layers.sysdef.xml --- a/layers.sysdef.xml Sat Apr 24 00:43:26 2010 +0300 +++ b/layers.sysdef.xml Sun May 02 21:46:11 2010 +0300 @@ -1,14 +1,17 @@ - ]> - + + + + diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/bwins/dunatextu.def --- a/localconnectivityservice/dun/atext/bwins/dunatextu.def Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/bwins/dunatextu.def Sun May 02 21:46:11 2010 +0300 @@ -8,4 +8,5 @@ ?ParseCommand@CDunAtCmdHandler@@QAEHAAVTDesC8@@AAH@Z @ 7 NONAME ; int CDunAtCmdHandler::ParseCommand(class TDesC8 &, int &) ?StartUrc@CDunAtCmdHandler@@QAEHXZ @ 8 NONAME ; int CDunAtCmdHandler::StartUrc(void) ?ManageAbortRequest@CDunAtCmdHandler@@QAEHXZ @ 9 NONAME ; int CDunAtCmdHandler::ManageAbortRequest(void) + ?SendEchoCharacter@CDunAtCmdHandler@@QAEHPBVTDesC8@@PAVMDunAtCmdEchoer@@@Z @ 10 NONAME ; int CDunAtCmdHandler::SendEchoCharacter(class TDesC8 const *, class MDunAtCmdEchoer *) diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/eabi/dunatextu.def --- a/localconnectivityservice/dun/atext/eabi/dunatextu.def Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/eabi/dunatextu.def Sun May 02 21:46:11 2010 +0300 @@ -8,4 +8,5 @@ _ZN16CDunAtCmdHandler8StartUrcEv @ 7 NONAME _ZN16CDunAtCmdHandler9ResetDataEv @ 8 NONAME _ZN16CDunAtCmdHandler18ManageAbortRequestEv @ 9 NONAME + _ZN16CDunAtCmdHandler17SendEchoCharacterEPK6TDesC8P15MDunAtCmdEchoer @ 10 NONAME diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/group/dunatext.mmp --- a/localconnectivityservice/dun/atext/group/dunatext.mmp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/group/dunatext.mmp Sun May 02 21:46:11 2010 +0300 @@ -27,6 +27,7 @@ VENDORID VID_DEFAULT SOURCEPATH ../src +SOURCE DunAtCmdEchoer.cpp SOURCE DunAtCmdHandler.cpp SOURCE DunAtCmdPusher.cpp SOURCE DunAtUrcHandler.cpp diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/inc/DunAtCmdEchoer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/dun/atext/inc/DunAtCmdEchoer.h Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,135 @@ +/* +* Copyright (c) 2010 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: Echoer for AT commands +* +*/ + +#ifndef C_CDUNATCMDECHOER_H +#define C_CDUNATCMDECHOER_H + +#include "DunDataPusher.h" + +class MDunStreamManipulator; + +/** + * Notification interface class for text mode + * + * @lib dunatext.lib + * @since TB9.2 + */ +NONSHARABLE_CLASS( MDunAtCmdEchoer ) + { + +public: + + /** + * Notifies about completed echo in text mode + * + * @since TB9.2 + * @return None + */ + virtual void NotifyEchoComplete() = 0; + + }; + +/** + * Class for AT command echoer + * + * @lib dunatext.lib + * @since TB9.2 + */ +NONSHARABLE_CLASS( CDunAtCmdEchoer ) : public CBase, + public MDunCompletionReporter + { + +public: + + /** + * Two-phased constructor. + * @param aStreamCallback Callback to stream + * @return Instance of self + */ + static CDunAtCmdEchoer* NewL( MDunStreamManipulator* aStreamCallback ); + + /** + * Destructor. + */ + virtual ~CDunAtCmdEchoer(); + + /** + * Resets data to initial values + * + * @since TB9.2 + * @return None + */ + void ResetData(); + + /** + * Sends a character to be echoed + * + * @since TB9.2 + * @param aInput Input to echo + * @param aCallback Callback to echo request completions + * @return Symbian error code on error, KErrNone otherwise + */ + TInt SendEchoCharacter( const TDesC8* aInput, MDunAtCmdEchoer* aCallback ); + +private: + + CDunAtCmdEchoer( MDunStreamManipulator* aStreamCallback ); + + void ConstructL(); + + /** + * Initializes this class + * + * @since TB9.2 + * @return None + */ + void Initialize(); + +// from base class MDunCompletionReporter + + /** + * From MDunCompletionReporter. + * Gets called when data push is complete + * + * @since S60 5.0 + * @param aAllPushed ETrue if all in the queue were pushed, EFalse otherwise + * @return None + */ + void NotifyDataPushComplete( TBool aAllPushed ); + +private: // data + + /** + * Notification interface class for echo request completions + * Not own. + */ + MDunAtCmdEchoer* iCallback; + + /** + * Callback to call when data to push + * Not own. + */ + MDunStreamManipulator* iStreamCallback; + + /** + * Current state of echoing: active or inactive + */ + TDunState iAtEchoState; + + }; + +#endif // C_CDUNATCMDECHOER_H diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h --- a/localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h Sun May 02 21:46:11 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -23,6 +23,7 @@ #include #include "DunDataPusher.h" #include "DunAtCmdPusher.h" +#include "DunAtCmdEchoer.h" #include "DunAtEcomListen.h" #include "DunAtModeListen.h" #include "DunAtNvramListen.h" @@ -32,6 +33,7 @@ const TInt KDunOkBufLength = 1+1+2+1+1; // ++"OK"++ const TInt KDunErrorBufLength = 1+1+5+1+1; // ++"ERROR"++ const TInt KDunInputBufLength = (512 + 1); // 512 chars for command + +const TInt KDunEscBufLength = 1; // Escape (0x1B) character class CDunAtUrcHandler; class MDunConnMon; @@ -101,6 +103,30 @@ }; /** + * Class used for AT command editor mode related functionality + * + * @lib dunatext.lib + * @since TB9.2 + */ +NONSHARABLE_CLASS( TDunEditorModeInfo ) + { + +public: + + /** + * Flag to indicate if content found (not used if iContentFindStarted is EFalse) + */ + TBool iContentFound; + + /** + * AT command decoding related information for peeked data + * (not to be used if HandleNextDecodedCommand() returns EFalse) + */ + TDunDecodeInfo iPeekInfo; + + }; + +/** * Notification interface class for command mode start/end * * @lib dunutils.lib @@ -157,6 +183,15 @@ */ virtual void NotifyAtCmdHandlingEnd( TInt aStartIndex ) = 0; + /** + * Notifies about editor mode reply + * + * @since TB9.2 + * @param aStart ETrue if start of editor mode, EFalse otherwise + * @return None + */ + virtual void NotifyEditorModeReply( TBool aStart ) = 0; + }; /** @@ -237,6 +272,17 @@ IMPORT_C void SetEndOfCmdLine( TBool aClearInput ); /** + * Sends a character to be echoed + * + * @since TB9.2 + * @param aInput Input to echo + * @param aCallback Callback to echo request completions + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt SendEchoCharacter( const TDesC8* aInput, + MDunAtCmdEchoer* aCallback ); + + /** * Stops sending of AT command from decode buffer * * @since S60 3.2 @@ -408,6 +454,14 @@ TBool HandleNextDecodedCommand(); /** + * Finds the start of the next command + * + * @since TB9.2 + * @return Index to the next command or Symbian error code on error + */ + TInt FindStartOfNextCommand(); + + /** * Manages end of AT command handling * * @since S60 5.0 @@ -622,6 +676,24 @@ */ void ManageCharacterChange( TUint aMode ); + /** + * Manages editor mode reply + * + * @since TB9.2 + * @param aStart ETrue if start of editor mode, EFalse otherwise + * @return Symbian error code on error, KErrNone otherwise + */ + TInt ManageEditorModeReply( TBool aStart ); + + /** + * Finds the next content from the input buffer + * + * @since TB9.2 + * @param aStart ETrue if start of editor mode, EFalse otherwise + * @return ETrue if next content found, EFalse otherwise + */ + TBool FindNextContent( TBool aStart ); + // from base class MDunAtCmdPusher /** @@ -631,6 +703,7 @@ * downstream. * * @since S60 5.0 + * @param aError Error code of command processing completion * @return None */ TInt NotifyEndOfProcessing( TInt aError ); @@ -652,6 +725,24 @@ */ TBool NotifyNextCommandPeekRequest(); + /** + * Notifies about editor mode reply + * + * @since TB9.2 + * @return Symbian error code on error, KErrNone otherwise + */ + TInt NotifyEditorModeReply(); + +// from base class MDunAtCmdEchoer + + /** + * Notifies about completed echo in text mode + * + * @since TB9.2 + * @return None + */ + void NotifyEchoComplete(); + // from base class MDunAtEcomListen /** @@ -766,6 +857,11 @@ TBuf8 iLastBuffer; /** + * Buffer for command + */ + TBuf8 iEscapeBuffer; + + /** * AT command decoding related information */ TDunDecodeInfo iDecodeInfo; @@ -776,12 +872,23 @@ TDunParseInfo iParseInfo; /** + * Information for editor mode + */ + TDunEditorModeInfo iEditorModeInfo; + + /** * AT command reply pusher * Own. */ CDunAtCmdPusher* iCmdPusher; /** + * AT command reply echoer + * Own. + */ + CDunAtCmdEchoer* iCmdEchoer; + + /** * URC message handlers * Own. */ diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/inc/DunAtCmdPusher.h --- a/localconnectivityservice/dun/atext/inc/DunAtCmdPusher.h Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/inc/DunAtCmdPusher.h Sun May 02 21:46:11 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -63,6 +63,14 @@ */ virtual TBool NotifyNextCommandPeekRequest() = 0; + /** + * Notifies about editor mode reply + * + * @since TB9.2 + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyEditorModeReply() = 0; + }; /** @@ -120,10 +128,11 @@ * Starts AT command handling * * @since S60 5.0 - * @param aCommand AT command to handle + * @param aCommand AT command or editor mode input to handle + * @param aNormalMode ETrue if request issue for normal mode * @return Symbian error code on error, KErrNone otherwise */ - TInt IssueRequest( TDesC8& aCommand ); + TInt IssueRequest( TDesC8& aCommand, TBool aNormalMode=ETrue ); /** * Stops AT command handling @@ -151,6 +160,14 @@ */ void SetEndOfCmdLine(); + /** + * Gets the editor mode status + * + * @since TB9.2 + * @return ETrue if in editor mode, EFalse otherwise + */ + TBool EditorMode(); + private: CDunAtCmdPusher( RATExt* aAtCmdExt, @@ -197,6 +214,38 @@ void SendReplyData( TBool aRecvBuffer=ETrue ); /** + * Manages change in reply type to EReplyTypeOther + * + * @since TB9.2 + * @return None + */ + void ManageReplyTypeChangeToOther(); + + /** + * Manages change in reply type to EReplyTypeOk + * + * @since TB9.2 + * @return None + */ + void ManageReplyTypeChangeToOk(); + + /** + * Manages change in reply type to EReplyTypeError + * + * @since TB9.2 + * @return None + */ + void ManageReplyTypeChangeToError(); + + /** + * Manages change in reply type to EReplyTypeEditor + * + * @since TB9.2 + * @return None + */ + void ManageReplyTypeChangeToEditor(); + + /** * Manages change in reply type * * @since S60 5.0 @@ -313,6 +362,11 @@ */ TBool iStop; + /** + * Flag indicating if in editor mode + */ + TBool iEditorMode; + }; #endif // C_CDUNATCMDPUSHER_H diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/src/DunAtCmdEchoer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/dun/atext/src/DunAtCmdEchoer.cpp Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2010 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: Echoer for AT commands +* +*/ + +#include "DunAtCmdEchoer.h" +#include "DunDownstream.h" +#include "DunDebug.h" + +// --------------------------------------------------------------------------- +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CDunAtCmdEchoer* CDunAtCmdEchoer::NewL( + MDunStreamManipulator* aStreamCallback ) + { + CDunAtCmdEchoer* self = new (ELeave) CDunAtCmdEchoer( aStreamCallback ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CDunAtCmdEchoer::~CDunAtCmdEchoer() + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::~CDunAtCmdEchoer()") )); + ResetData(); + FTRACE(FPrint( _L("CDunAtCmdEchoer::~CDunAtCmdEchoer() complete") )); + } + +// --------------------------------------------------------------------------- +// Resets data to initial values +// --------------------------------------------------------------------------- +// +void CDunAtCmdEchoer::ResetData() + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::ResetData()") )); + // Internal + Initialize(); + FTRACE(FPrint( _L("CDunAtCmdEchoer::ResetData() complete") )); + } + +// --------------------------------------------------------------------------- +// Sends a character to be echoed +// --------------------------------------------------------------------------- +// +TInt CDunAtCmdEchoer::SendEchoCharacter( + const TDesC8* aInput, + MDunAtCmdEchoer* aCallback ) + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::SendEchoCharacter()") )); + if ( iAtEchoState!=EDunStateIdle || iCallback ) + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::SendEchoCharacter() (not ready) complete") )); + return KErrNotReady; + } + iStreamCallback->NotifyDataPushRequest( aInput, this ); + iCallback = aCallback; + iAtEchoState = EDunStateAtCmdEchoing; + FTRACE(FPrint( _L("CDunDownstream::SendEchoCharacter() complete" ) )); + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CDunAtCmdEchoer::CDunAtCmdEchoer +// --------------------------------------------------------------------------- +// +CDunAtCmdEchoer::CDunAtCmdEchoer( MDunStreamManipulator* aStreamCallback ) : + iStreamCallback( aStreamCallback ) + { + Initialize(); + } + +// --------------------------------------------------------------------------- +// CDunAtCmdEchoer::ConstructL +// --------------------------------------------------------------------------- +// +void CDunAtCmdEchoer::ConstructL() + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::ConstructL()") )); + if ( !iStreamCallback ) + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::ConstructL() complete") )); + User::Leave( KErrGeneral ); + } + FTRACE(FPrint( _L("CDunAtCmdEchoer::ConstructL() complete") )); + } + +// --------------------------------------------------------------------------- +// Initializes this class +// --------------------------------------------------------------------------- +// +void CDunAtCmdEchoer::Initialize() + { + // Don't initialize iStreamCallback here (it is set through NewL) + iCallback = NULL; + iAtEchoState = EDunStateIdle; + } + +// --------------------------------------------------------------------------- +// From MDunCompletionReporter. +// Gets called when data push is complete +// --------------------------------------------------------------------------- +// +void CDunAtCmdEchoer::NotifyDataPushComplete( TBool /*aAllPushed*/ ) + { + FTRACE(FPrint( _L("CDunAtCmdEchoer::NotifyDataPushComplete()") )); + MDunAtCmdEchoer* callback = iCallback; + iCallback = NULL; + iAtEchoState = EDunStateIdle; + callback->NotifyEchoComplete(); + FTRACE(FPrint( _L("CDunAtCmdEchoer::NotifyDataPushComplete() complete") )); + } diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp --- a/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp Sun May 02 21:46:11 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -35,7 +35,8 @@ #include "DunDownstream.h" #include "DunDebug.h" -const TInt8 KDunCancel = 24; +const TInt8 KDunCancel = 24; // Used for line editing, cancel character +const TInt8 KDunEscape = 27; // Used for editor ending, escape character // --------------------------------------------------------------------------- // Two-phased constructor. @@ -79,6 +80,8 @@ Stop(); // NewL() DeletePluginHandlers(); + delete iCmdEchoer; + iCmdEchoer = NULL; delete iNvramListen; iNvramListen = NULL; delete iModeListen; @@ -145,7 +148,16 @@ FTRACE(FPrint( _L("CDunAtCmdHandler::ParseCommand()") )); FTRACE(FPrint( _L("CDunAtCmdHandler::ParseCommand() received:") )); FTRACE(FPrintRaw(aCommand) ); - iCommand = &aCommand; + TBool editorMode = iCmdPusher->EditorMode(); + if ( editorMode ) + { + // Note: return here with "no partial input" and some error to fool + // CDunUpstream into not reissuing the read request. + iCmdPusher->IssueRequest( aCommand, EFalse ); + aPartialInput = EFalse; + return KErrGeneral; + } + iCommand = &aCommand; // iCommand only for normal mode // Manage partial AT command TBool needsCarriage = ETrue; TBool okToExit = ManagePartialCommand( aCommand, needsCarriage ); @@ -180,7 +192,7 @@ iDecodeInfo.iFirstDecode = ETrue; iDecodeInfo.iDecodeIndex = 0; HandleNextDecodedCommand(); - FTRACE(FPrint( _L("CDunAtCmdHandler::ParseCommand() (not supported) complete") )); + FTRACE(FPrint( _L("CDunAtCmdHandler::ParseCommand() complete") )); aPartialInput = EFalse; return KErrNone; } @@ -210,6 +222,19 @@ } // --------------------------------------------------------------------------- +// Sends a character to be echoed +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CDunAtCmdHandler::SendEchoCharacter( const TDesC8* aInput, + MDunAtCmdEchoer* aCallback ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::SendEchoCharacter()") )); + TInt retVal = iCmdEchoer->SendEchoCharacter( aInput, aCallback ); + FTRACE(FPrint( _L("CDunAtCmdHandler::SendEchoCharacter() complete") )); + return retVal; + } + +// --------------------------------------------------------------------------- // Stops sending of AT command from parse buffer // --------------------------------------------------------------------------- // @@ -223,7 +248,12 @@ return KErrNotReady; } iCmdPusher->Stop(); - iHandleState = EDunStateIdle; + // The line below is used in the case when this function is called by + // CDunUpstream as a result of "data mode ON" change notification. + // In this case it is possible that HandleNextDecodedCommand() returns + // without resetting the iInputBuffer because of the way it checks the + // iHandleState. + ManageEndOfCmdHandling( EFalse, ETrue, ETrue ); FTRACE(FPrint( _L("CDunAtCmdHandler::Stop() complete") )); return KErrNone; } @@ -313,28 +343,21 @@ CreateSpecialCommandsL(); // Create the plugin handlers CreatePluginHandlersL(); + // Create the echo handler + iCmdEchoer = CDunAtCmdEchoer::NewL( iDownstream ); // Create the listeners - CDunAtEcomListen* ecomListen = CDunAtEcomListen::NewLC( &iAtCmdExt, this ); - CDunAtModeListen* modeListen = CDunAtModeListen::NewLC( &iAtCmdExtCommon, - this ); - CDunAtNvramListen* nvramListen = CDunAtNvramListen::NewLC( &iAtCmdExt, - &iAtCmdExtCommon ); + iEcomListen = CDunAtEcomListen::NewL( &iAtCmdExt, this ); + iModeListen = CDunAtModeListen::NewL( &iAtCmdExtCommon, this ); + iNvramListen = CDunAtNvramListen::NewL( &iAtCmdExt, &iAtCmdExtCommon ); + iAtSpecialCmdHandler = CDunAtSpecialCmdHandler::NewL(); // Set the default modes (+report) and characters GetAndSetDefaultSettingsL(); // Start listening - ecomListen->IssueRequest(); - modeListen->IssueRequest(); - nvramListen->IssueRequest(); - CleanupStack::Pop( nvramListen ); - CleanupStack::Pop( modeListen ); - CleanupStack::Pop( ecomListen ); + iEcomListen->IssueRequest(); + iModeListen->IssueRequest(); + iNvramListen->IssueRequest(); CleanupStack::Pop( &iAtCmdExtCommon ); CleanupStack::Pop( &iAtCmdExt ); - iEcomListen = ecomListen; - iModeListen = modeListen; - iNvramListen = nvramListen; - - iAtSpecialCmdHandler = CDunAtSpecialCmdHandler::NewL(); FTRACE(FPrint( _L("CDunAtCmdHandler::ConstructL() complete") )); } @@ -356,6 +379,7 @@ iDecodeInfo.iDecodeIndex = KErrNotFound; iDecodeInfo.iPrevChar = 0; iDecodeInfo.iPrevExists = EFalse; + iEditorModeInfo.iContentFound = EFalse; iCmdPusher = NULL; iEcomListen = NULL; iModeListen = NULL; @@ -791,6 +815,34 @@ } // --------------------------------------------------------------------------- +// Finds the start of the next command +// --------------------------------------------------------------------------- +// +TInt CDunAtCmdHandler::FindStartOfNextCommand() + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindStartOfNextCommand()") )); + // Note: here we need to avoid internal recursion when parsing the + // multiple IsEndOfCommand() and IsDelimiterCharacter() markers inside the + // same upstream block. + // Skip all the extra markers except the one we already know to exist. + TInt i; + TInt startVal = iEndIndex + 1; + TInt foundIndex = KErrNotFound; + TInt count = iCommand->Length(); + for ( i=startVal; iLength(); - for ( i=startVal; iNotifyAtCmdHandlingEnd( foundIndex ); FTRACE(FPrint( _L("CDunAtCmdHandler::ManageEndOfCmdHandling() complete") )); } @@ -923,6 +959,7 @@ FTRACE(FPrint( _L("CDunAtCmdHandler::RestoreOldDecodeInfo()") )); if ( aPeek ) { + iEditorModeInfo.iPeekInfo = iDecodeInfo; iDecodeInfo = aOldInfo; } FTRACE(FPrint( _L("CDunAtCmdHandler::RestoreOldDecodeInfo() complete") )); @@ -1529,6 +1566,65 @@ } // --------------------------------------------------------------------------- +// Manages editor mode reply +// --------------------------------------------------------------------------- +// +TInt CDunAtCmdHandler::ManageEditorModeReply( TBool aStart ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::ManageEditorModeReply()" ) )); + // Two modes possible here: + // 1) Sending data directly from DTE to DCE, i.e. no subsequent data in + // the input buffer -> Reissue read request from DTE. + // 2) Sending data from input buffer to DCE -> Do not reissue read request + // from DTE: send the data in a loop + // In summary: send data byte-by-byte in editor mode until end of input. + // When end of input notify CDunUpstream to reissue the read request. + TBool nextContentFound = FindNextContent( aStart ); + if ( !nextContentFound ) + { + iUpstream->NotifyEditorModeReply( aStart ); + FTRACE(FPrint( _L("CDunAtCmdHandler::NotifyEditorModeReply() complete") )); + return KErrNone; + } + // In block mode end the block mode by sending and hope it works. + iEscapeBuffer.Zero(); + iEscapeBuffer.Append( KDunEscape ); + iCmdPusher->IssueRequest( iEscapeBuffer, EFalse ); + FTRACE(FPrint( _L("CDunAtCmdHandler::ManageEditorModeReply() complete" ) )); + return KErrNone; + } + +// --------------------------------------------------------------------------- +// Finds the next content from the input data +// --------------------------------------------------------------------------- +// +TBool CDunAtCmdHandler::FindNextContent( TBool aStart ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindNextContent()" ) )); + if ( !aStart ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindNextContent() (skip) complete" ) )); + return iEditorModeInfo.iContentFound; + } + iEditorModeInfo.iContentFound = EFalse; + TInt foundCmdIndex = KErrNotFound; + TBool nextContentFound = ExtractNextDecodedCommand( ETrue ); // peek + if ( !nextContentFound ) + { + // Check the next subblock + foundCmdIndex = FindStartOfNextCommand(); + } + if ( !nextContentFound && foundCmdIndex<0 ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindNextContent() (not found) complete") )); + return EFalse; + } + iEditorModeInfo.iContentFound = ETrue; + FTRACE(FPrint( _L("CDunAtCmdHandler::FindNextContent() complete" ) )); + return ETrue; + } + +// --------------------------------------------------------------------------- // From class MDunAtCmdPusher. // Notifies about end of AT command processing. This is after all reply data // for an AT command is multiplexed to the downstream. @@ -1537,6 +1633,13 @@ TInt CDunAtCmdHandler::NotifyEndOfProcessing( TInt /*aError*/ ) { FTRACE(FPrint( _L("CDunAtCmdHandler::NotifyEndOfProcessing()" ) )); + TBool editorMode = iCmdPusher->EditorMode(); + if ( editorMode ) + { + ManageEditorModeReply( ETrue ); + FTRACE(FPrint( _L("CDunAtCmdHandler::NotifyEndOfProcessing() (editor) complete" ) )); + return KErrNone; + } HandleNextDecodedCommand(); FTRACE(FPrint( _L("CDunAtCmdHandler::NotifyEndOfProcessing() complete" ) )); return KErrNone; @@ -1571,6 +1674,19 @@ } // --------------------------------------------------------------------------- +// From class MDunAtCmdPusher. +// Notifies about editor mode reply +// --------------------------------------------------------------------------- +// +TInt CDunAtCmdHandler::NotifyEditorModeReply() + { + FTRACE(FPrint( _L("CDunAtCmdHandler::NotifyEditorModeReply()") )); + TInt retVal = ManageEditorModeReply( EFalse ); + FTRACE(FPrint( _L("CDunAtCmdHandler::NotifyEditorModeReply() complete") )); + return retVal; + } + +// --------------------------------------------------------------------------- // From class MDunAtEcomListen. // Notifies about new plugin installation // --------------------------------------------------------------------------- diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp --- a/localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp Sun May 02 21:46:11 2010 +0300 @@ -103,12 +103,12 @@ // Starts AT command handling // --------------------------------------------------------------------------- // -TInt CDunAtCmdPusher::IssueRequest( TDesC8& aCommand ) +TInt CDunAtCmdPusher::IssueRequest( TDesC8& aCommand, TBool aNormalMode ) { FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest()") )); FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest() send ATEXT:") )); FTRACE(FPrintRaw(aCommand) ); - if ( iAtPushState != EDunStateIdle ) + if ( iAtPushState!=EDunStateIdle && aNormalMode ) { FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest() (not ready) complete") )); return KErrNotReady; @@ -186,10 +186,22 @@ iLastOkPush = EFalse; iCmdAbort = EFalse; iStop = EFalse; + iEditorMode = EFalse; FTRACE(FPrint( _L("CDunAtCmdPusher::SetEndOfCmdLine() complete") )); } // --------------------------------------------------------------------------- +// Gets the editor mode status +// --------------------------------------------------------------------------- +// +TBool CDunAtCmdPusher::EditorMode() + { + FTRACE(FPrint( _L("CDunAtCmdPusher::EditorMode()") )); + FTRACE(FPrint( _L("CDunAtCmdPusher::EditorMode() complete") )); + return iEditorMode; + } + +// --------------------------------------------------------------------------- // CDunAtCmdPusher::CDunAtCmdPusher // --------------------------------------------------------------------------- // @@ -303,6 +315,79 @@ } // --------------------------------------------------------------------------- +// Manages change in reply type to EReplyTypeOther +// --------------------------------------------------------------------------- +// +void CDunAtCmdPusher::ManageReplyTypeChangeToOther() + { + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToOther()") )); + iNoErrorReceived = ETrue; + SendReplyData(); + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToOther() complete") )); + } + +// --------------------------------------------------------------------------- +// Manages change in reply type to EReplyTypeOk +// --------------------------------------------------------------------------- +// +void CDunAtCmdPusher::ManageReplyTypeChangeToOk() + { + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToOk()") )); + // Skip the "OK" replies if not last. Only push the "OK" reply at the end. + // iStop changes it so that the we have to send the "OK" immediately and + // only stop with NotifyDataPushComplete() + TBool found = iCallback->NotifyNextCommandPeekRequest(); + if ( !found || iStop ) + { + SendReplyData(); + } + else + { + iNoErrorReceived = ETrue; + SetToIdleAndNotifyEnd( KErrNone ); + } + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToOk() complete") )); + } + +// --------------------------------------------------------------------------- +// Manages change in reply type to EReplyTypeError +// --------------------------------------------------------------------------- +// +void CDunAtCmdPusher::ManageReplyTypeChangeToError() + { + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToError()") )); + if ( iNoErrorReceived ) + { + iAtCmdExt->ReportExternalHandleCommandError(); + } + SendReplyData(); + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToError() complete") )); + } + +// --------------------------------------------------------------------------- +// Manages change in reply type to EReplyTypeEditor +// --------------------------------------------------------------------------- +// +void CDunAtCmdPusher::ManageReplyTypeChangeToEditor() + { + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToEditor()") )); + if ( !iEditorMode ) + { + // First change to editor mode: manage it as EReplyTypeOther (prompt) + iEditorMode = ETrue; + ManageReplyTypeChangeToOther(); + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToEditor() (editor) complete") )); + return; + } + // The same reply to editor mode as before: no reply, only notification for + // echo/forwarding purposes + iCallback->NotifyEditorModeReply(); + // Do nothing after notifying. The next ForwardEditorModeInput() triggers + // the next call of this function. + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChangeToEditor() complete") )); + } + +// --------------------------------------------------------------------------- // Manages change in reply type // --------------------------------------------------------------------------- // @@ -314,41 +399,32 @@ case EReplyTypeOther: { FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChange() EReplyTypeOther") )); - iNoErrorReceived = ETrue; - SendReplyData(); + iEditorMode = EFalse; + ManageReplyTypeChangeToOther(); } break; case EReplyTypeOk: { FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChange() EReplyTypeOk") )); - // Skip the "OK" replies if not last. Only push the "OK" reply at the end. - // iStop changes it so that the we have to send the "OK" immediately and - // only stop with NotifyDataPushComplete() - TBool found = iCallback->NotifyNextCommandPeekRequest(); - if ( !found || iStop ) - { - SendReplyData(); - } - else - { - iNoErrorReceived = ETrue; - SetToIdleAndNotifyEnd( KErrNone ); - } + iEditorMode = EFalse; + ManageReplyTypeChangeToOk(); } break; case EReplyTypeError: { FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChange() EReplyTypeError") )); - if ( iNoErrorReceived ) - { - iAtCmdExt->ReportExternalHandleCommandError(); - } - SendReplyData(); + iEditorMode = EFalse; + ManageReplyTypeChangeToError(); } break; + case EReplyTypeEditor: + FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChange() EReplyTypeEditor") )); + ManageReplyTypeChangeToEditor(); + break; default: { FTRACE(FPrint( _L("CDunAtCmdPusher::ManageReplyTypeChange() EReplyTypeUndefined") )); + iEditorMode = EFalse; SetToIdleAndNotifyEnd( KErrNone ); } break; diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/utils/inc/DunTransporter.h --- a/localconnectivityservice/dun/utils/inc/DunTransporter.h Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/utils/inc/DunTransporter.h Sun May 02 21:46:11 2010 +0300 @@ -83,6 +83,7 @@ EDunStateCallListen, // Transporter state for call state listening EDunStateAtCmdHandling, // ATEXT state for AT command handling EDunStateAtCmdPushing, // ATEXT state for AT command reply pushing + EDunStateAtCmdEchoing, // ATEXT state for AT command character echoing (text mode) EDunStateAtUrcHandling, // ATEXT state for URC handling EDunStateModeListening, // ATEXT state for mode change listening EDunStateEcomListening, // ATEXT state for ECOM change listening diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/utils/inc/DunUpstream.h --- a/localconnectivityservice/dun/utils/inc/DunUpstream.h Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/utils/inc/DunUpstream.h Sun May 02 21:46:11 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2010 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" @@ -22,6 +22,7 @@ #include "DunTransUtils.h" #include "DunStream.h" #include "DunAtCmdHandler.h" +#include "DunAtCmdEchoer.h" #include "DunDataPusher.h" class MDunCmdModeMonitor; @@ -132,7 +133,8 @@ NONSHARABLE_CLASS( CDunUpstream ) : public CDunStream, public MDunAtCmdHandler, public MDunCmdModeMonitor, - public MDunAtCmdStatusReporter + public MDunAtCmdStatusReporter, + public MDunAtCmdEchoer { public: @@ -284,6 +286,15 @@ */ void NotifyAtCmdHandlingEnd( TInt aStartIndex ); + /** + * Notifies about editor mode reply + * + * @since TB9.2 + * @param aStart ETrue if start of editor mode, EFalse otherwise + * @return Symbian error code on error, KErrNone otherwise + */ + void NotifyEditorModeReply( TBool aStart ); + // from base class MDunAtCmdHandler /** @@ -322,6 +333,16 @@ */ void NotifyCommandModeEnd(); +// from base class MDunAtCmdEchoer + + /** + * Notifies about completed echo in text mode + * + * @since TB9.2 + * @return None + */ + void NotifyEchoComplete(); + private: // data /** diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/dun/utils/src/DunUpstream.cpp --- a/localconnectivityservice/dun/utils/src/DunUpstream.cpp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/dun/utils/src/DunUpstream.cpp Sun May 02 21:46:11 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -499,6 +499,31 @@ } // --------------------------------------------------------------------------- +// From class MDunAtCmdStatusReporter +// Notifies about editor mode reply +// --------------------------------------------------------------------------- +// +void CDunUpstream::NotifyEditorModeReply( TBool aStart ) + { + FTRACE(FPrint( _L("CDunUpstream::NotifyEditorModeReply()" ))); + if ( iParseData.iDataMode ) + { + FTRACE(FPrint( _L("CDunUpstream::NotifyEditorModeReply() (not ready) complete" ))); + return; + } + // If start of editor mode then just reissue the read request + // If continuation then echo and reissue the read request + if ( aStart ) + { + IssueRequest(); + FTRACE(FPrint( _L("CDunUpstream::NotifyEditorModeReply() (start) complete" ))); + return; + } + iParseData.iAtCmdHandler->SendEchoCharacter( iBufferPtr, this ); + FTRACE(FPrint( _L("CDunUpstream::NotifyEditorModeReply() complete" ))); + } + +// --------------------------------------------------------------------------- // From class MDunAtCmdHandler // Starts URC message handling // --------------------------------------------------------------------------- @@ -581,3 +606,15 @@ IssueRequest(); FTRACE(FPrint( _L("CDunUpstream::NotifyCommandModeEnd() complete" ))); } + +// --------------------------------------------------------------------------- +// From class MDunAtCmdEchoer. +// Notifies about command mode end +// --------------------------------------------------------------------------- +// +void CDunUpstream::NotifyEchoComplete() + { + FTRACE(FPrint( _L("CDunUpstream::NotifyEchoComplete()" ))); + IssueRequest(); + FTRACE(FPrint( _L("CDunUpstream::NotifyEchoComplete() complete" ))); + } diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/group/bld.inf --- a/localconnectivityservice/group/bld.inf Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/group/bld.inf Sun May 02 21:46:11 2010 +0300 @@ -24,7 +24,6 @@ #include "../obexsendservices/group/bld.inf" #include "../obexreceiveservices/group/bld.inf" #include "../dun/group/bld.inf" -#include "../lcstylustap/group/bld.inf" #include "../generichid/group/bld.inf" #include "../headset/group/bld.inf" diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexreceiveservices/bip/src/BIPController.cpp --- a/localconnectivityservice/obexreceiveservices/bip/src/BIPController.cpp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/obexreceiveservices/bip/src/BIPController.cpp Sun May 02 21:46:11 2010 +0300 @@ -32,7 +32,7 @@ #include #include #include -#include // provides interface for quering system paths +#include #include #include #include @@ -635,21 +635,14 @@ iDrive = EDriveZ; // Intialize iDrive to Z TInt filesize = iBTObject->Length(); - TFileName mmcRoot = PathInfo::MemoryCardRootPath(); // e.g. "E:\\" - TInt mmcDrive = KDefaultDrive; // External memory card TInt imsDrive = KDefaultDrive; // Internal mass storage - if ( mmcRoot == _L("E:\\")) - { - mmcDrive = EDriveE; - imsDrive = EDriveF; - } - else if ( mmcRoot == _L("F:\\") ) - { - mmcDrive = EDriveF; - imsDrive = EDriveE; - } + User::LeaveIfError(DriveInfo::GetDefaultDrive(DriveInfo::EDefaultMassStorage, imsDrive)); + User::LeaveIfError(DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRemovableMassStorage, mmcDrive)); + + TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL imsDrive=%d; mmcDrive=%d\t" ),imsDrive, mmcDrive ) ); + TVolumeInfo volumeInfo; TInt err = iFs.Volume(volumeInfo, imsDrive); diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp --- a/localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp Sun May 02 21:46:11 2010 +0300 @@ -31,7 +31,7 @@ #include #include #include -#include // provides interface for quering system paths +#include #include #include @@ -570,23 +570,15 @@ RFs rfs ; User::LeaveIfError(rfs.Connect()); - - TFileName mmcRoot = PathInfo::MemoryCardRootPath(); // e.g. "E:\\" - + TInt mmcDrive = KDefaultDrive; // External memroy card - TInt imsDrive = KDefaultDrive; // Internal mass storage + TInt imsDrive = KDefaultDrive; // Internal mass storage + + User::LeaveIfError(DriveInfo::GetDefaultDrive(DriveInfo::EDefaultMassStorage, imsDrive)); + User::LeaveIfError(DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRemovableMassStorage, mmcDrive)); - if ( mmcRoot == _L("E:\\")) - { - mmcDrive = EDriveE; - imsDrive = EDriveF; - } - else if ( mmcRoot == _L("F:\\") ) - { - mmcDrive = EDriveF; - imsDrive = EDriveE; - } - + TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL imsDrive=%d; mmcDrive=%d\t" ),imsDrive, mmcDrive ) ); + TVolumeInfo volumeInfo; TInt err = rfs.Volume(volumeInfo, imsDrive); @@ -595,7 +587,7 @@ if ( !err ) { // Check capacity on Internal mass storage - TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Internal mass storage E\t" )) ); + TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Internal mass storage\t" )) ); if ( !SysUtil::DiskSpaceBelowCriticalLevelL( &rfs, filesize, imsDrive ) ) { iDrive = imsDrive; @@ -607,7 +599,7 @@ if ( !err ) { // Check capacity on Internal mass storage - TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Checking memory card F\t" )) ); + TRACE_INFO( (_L( "[oppreceiveservice] CheckCapacityL Checking memory card\t" )) ); if ( !SysUtil::DiskSpaceBelowCriticalLevelL( &rfs, filesize, mmcDrive ) ) { iDrive = mmcDrive; diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/group/bld.inf --- a/localconnectivityservice/obexsendservices/group/bld.inf Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/obexsendservices/group/bld.inf Sun May 02 21:46:11 2010 +0300 @@ -25,14 +25,10 @@ PRJ_EXPORTS ../obexservicesendutils/inc/BTServiceAPI.h |../../inc/btserviceapi.h ../obexservicesendutils/inc/BTServiceParameterList.h |../../inc/BTServiceParameterList.h -../rom/obexservicebtsend.iby CORE_MW_LAYER_IBY_EXPORT_PATH(obexservicebtsend.iby) -../rom/obexserviceirsend.iby CORE_MW_LAYER_IBY_EXPORT_PATH(obexserviceirsend.iby) ../rom/obexservicesendutils.iby CORE_MW_LAYER_IBY_EXPORT_PATH(obexservicesendutils.iby) PRJ_MMPFILES ../group/sendutils.mmp -../group/obexservicebtsend.mmp -../group/obexserviceirsend.mmp PRJ_TESTMMPFILES diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/group/obexservicebtsend.mmp --- a/localconnectivityservice/obexsendservices/group/obexservicebtsend.mmp Sat Apr 24 00:43:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description -* -*/ - -#include -#include "../obexservicebtsend/inc/BTSendingServiceUIDS.hrh" - -#include - -TARGET obexservicebtsend.dll -TARGETTYPE PLUGIN -UID 0x10009D8D KBTSendingServiceDllUid - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - - -SOURCEPATH ../obexservicebtsend/src -SOURCE BTSendingService.cpp -SOURCE BTSSProvider.cpp -SOURCE btsssendlisthandler.cpp -// Plugin resources are placed in z:/system/libs/plugins -// -SOURCEPATH ../obexservicebtsend/data -START RESOURCE 101F86A2.rss -TARGET obexservicebtsend.rsc -END - -SOURCEPATH ../obexservicebtsend/data -START RESOURCE BtSSMenu.rss -TARGETPATH RESOURCE_FILES_DIR -HEADER -LANGUAGE_IDS -END - -USERINCLUDE ../obexservicebtsend/inc -SYSTEMINCLUDE ../../inc ../../../inc /epoc32/include/ecom -MW_LAYER_SYSTEMINCLUDE - -LIBRARY euser.lib // Base library -LIBRARY servicehandler.lib // Application InterWorking -LIBRARY obexservicesendutils.lib // Tools for bt sending -LIBRARY btfeatures.lib - -DEBUGLIBRARY flogger.lib // File logging services - -// End of File - - diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/group/obexserviceirsend.mmp --- a/localconnectivityservice/obexsendservices/group/obexserviceirsend.mmp Sat Apr 24 00:43:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description -* -*/ - -#include -#include "../obexserviceirsend/inc/IrSendingServiceUIDS.hrh" - -#include - -TARGET obexserviceirsend.dll -TARGETTYPE PLUGIN -UID 0x10009d8d KIRSendingServiceDllUid - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - - -SOURCEPATH ../obexserviceirsend/src -SOURCE IRClient.cpp -SOURCE IRSendingService.cpp -SOURCE IRSSProvider.cpp - -// Plugin resources are placed in z:/system/libs/plugins -// -SOURCEPATH ../obexserviceirsend/data -START RESOURCE 001F86A2.rss -#ifdef SYMBIAN_SECURE_ECOM -TARGET obexserviceirsend.rsc -#endif -END - -SOURCEPATH ../obexserviceirsend/data -START RESOURCE irssmenu.rss -TARGETPATH RESOURCE_FILES_DIR -HEADER -LANGUAGE_IDS -END - - -USERINCLUDE ../obexserviceirsend/inc -SYSTEMINCLUDE ../../inc ../../../inc /epoc32/include/ecom -MW_LAYER_SYSTEMINCLUDE - -LIBRARY euser.lib // Base library -LIBRARY servicehandler.lib // Application InterWorking -LIBRARY obexutils.lib // Tools for bt sending -LIBRARY irobex.lib -LIBRARY irda.lib -LIBRARY efsrv.lib -LIBRARY featmgr.lib -DEBUGLIBRARY flogger.lib // File logging services - -// End of File diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/group/sendutils.mmp --- a/localconnectivityservice/obexsendservices/group/sendutils.mmp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/obexsendservices/group/sendutils.mmp Sun May 02 21:46:11 2010 +0300 @@ -49,6 +49,8 @@ USERINCLUDE ../obexservicesendutils/inc SYSTEMINCLUDE ../../inc ../../../inc /epoc32/include/libc +SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore +SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets MW_LAYER_SYSTEMINCLUDE LIBRARY apgrfx.lib // App Arch Session @@ -72,6 +74,8 @@ LIBRARY caf.lib // DRM common LIBRARY xmlframework.lib // XML Framework LIBRARY featmgr.lib // Inquire supported static feature +LIBRARY HbCore.lib +LIBRARY HbWidgets.lib DEBUGLIBRARY flogger.lib // File logging services diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/inc/btsendingservicedebug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/inc/btsendingservicedebug.h Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,81 @@ +/* +* Copyright (c) 2002 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: This file defines logging macros for BTSS. +* +*/ + + +#ifndef BT_SENDING_SERVICE_DEBUG_H +#define BT_SENDING_SERVICE_DEBUG_H + + +#ifdef _DEBUG +// =========================================================================== +#ifdef __WINS__ // File logging for WINS +// =========================================================================== +#include +#include +#include + +_LIT(KLogFile,"btss.log"); +_LIT(KLogDirFullName,"c:\\logs\\"); +_LIT(KLogDir,"btss"); + +#define FLOG(a) { FPrint(a); } +#define FTRACE(a) { a; } + +// Declare the FPrint function +// +inline void FPrint(const TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list); + } + +// =========================================================================== +#else // RDebug logging for target HW +// =========================================================================== +#include + +#define FLOG(a) { RDebug::Print(a); } +#define FTRACE(a) { a; } + +// Declare the FPrint function +// +inline void FPrint(const TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list,aFmt); + TInt tmpInt = VA_ARG(list, TInt); + TInt tmpInt2 = VA_ARG(list, TInt); + TInt tmpInt3 = VA_ARG(list, TInt); + VA_END(list); + RDebug::Print(aFmt, tmpInt, tmpInt2, tmpInt3); + } + +#endif //__WINS__ + +// =========================================================================== +#else // // No loggings --> Reduced binary size +// =========================================================================== +#define FLOG(a) +#define FTRACE(a) + +#endif // _DEBUG + + +#endif // BT_SENDING_SERVICE_DEBUG_H + +// End of File diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/inc/btsendserviceinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/inc/btsendserviceinterface.h Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2010 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: ?Description +* +*/ + + +#ifndef BTSENDSERVICEINTERFACE_H +#define BTSENDSERVICEINTERFACE_H + +#include + +class BtSendManager; + +class BTSendServiceInterface : public XQServiceProvider +{ + Q_OBJECT + +public: + BTSendServiceInterface( QObject *parent = 0); + inline ~BTSendServiceInterface(); + +public slots: + void send(QVariant data); + + +}; + +inline BTSendServiceInterface::~BTSendServiceInterface() + { + } + +#endif // BTSENDSERVICEINTERFACE_H diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/inc/btsendserviceprovider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/inc/btsendserviceprovider.h Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 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: + * class to manage differnt messaging views. + * + */ + +#ifndef BTSENDSERVICEPROVIDER_H +#define BTSENDSERVICEPROVIDER_H + +#include +#include +#include + +class CBTServiceAPI; +class CBTSSSendListHandler; + + +class CBtSendServiceProvider: public CBase + { +public: + /** + * constructor + */ + static CBtSendServiceProvider* NewL(); + + /** + * Destructor. + */ + ~CBtSendServiceProvider(); + + + int send(const QList &arguments); +private: + CBtSendServiceProvider(); + void ConstructL(); + +public: + CBTSSSendListHandler* iConverter; + CBTServiceAPI* iBTSendingService; + }; + +#endif /* BTSENDSERVICEPROVIDER_H */ diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/inc/btsssendlisthandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/inc/btsssendlisthandler.h Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,146 @@ +/* +* Copyright (c) 2007 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: Converter class for converting AIW paramerer list to +* bt send parameter list +* +*/ + + +#ifndef BTSSSENDLISTHANDLER_H +#define BTSSSENDLISTHANDLER_H + +#include +#include +#include +#include +#include +#include +#include "BTSendingServiceDebug.h" + + +class CBTServiceParameterList; + +/** + * BTSSend list handler + * Converts AIW list to bt sending object list + * + * @since S60 v3.2 + */ +class CBTSSSendListHandler : public CActive + { + +public: + + static CBTSSSendListHandler* NewL(); + static CBTSSSendListHandler* NewLC(); + + /** + * Destructor. + */ + virtual ~CBTSSSendListHandler(); + + /** + * ConvertList + * + * @since S60 v3.2 + * @param aOutParamList AIW parameter list + * @param aList bt sending parameter list + * @return error code + */ + TInt ConvertList(const QList *arguments,CBTServiceParameterList* aList ); + + + +// from base class CActive + + /** + * From CActive. + * RunL + * + * @since S60 v3.2 + */ + void RunL(); + + /** + * From CActive. + * DoCancel + * + * @since S60 v3.2 + */ + inline void DoCancel(); + + +private: + CBTSSSendListHandler(); + + void ConstructL(); + + /** + * Add object + * + * @since S60 v3.2 + */ + void AddObject(); + + /** + * Add object + * + * @since S60 v3.2 + */ + void DoAddObjectL(); + +private: // data + + /** + * BT sending parameter list + * Not own. + */ + CBTServiceParameterList* iList; + + /** + * AIW parameter list + * Not own. + */ +// const CAiwGenericParamList* iOutParamList; + + const QList *mArguments; + + /** + * List index + */ + TInt iListIndex; + + /** + * Sync waiter object + */ + CActiveSchedulerWait iSyncWaiter; + }; + + +// --------------------------------------------------------------------------- +// From class CActive. +// DoCancel() +// --------------------------------------------------------------------------- +// +inline void CBTSSSendListHandler::DoCancel() + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoCancel()")); + if ( iSyncWaiter.IsStarted() ) + { + iSyncWaiter.AsyncStop(); + } + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoCancel() done")); + } + +#endif // BTSSSENDLISTHANDLER_H diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/obexhighway.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/obexhighway.pro Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,55 @@ +# +# Copyright (c) 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: +# +TEMPLATE = app +TARGET = obexhighway +CONFIG += hb \ + service + +MOC_DIR = moc +OBJECTS_DIR = obj + +HEADERS += inc/btsendserviceinterface.h \ + inc/btsssendlisthandler.h \ + inc/btsendingservicedebug.h \ + inc/btsendserviceprovider.h + +SOURCES += src/main.cpp \ + src/btsendserviceinterface.cpp \ + src/btsssendlisthandler.cpp \ + src/btsendserviceprovider.cpp + + +INCLUDEPATH += . ../../inc + +SERVICE.FILE = xml/obexhighway_conf.xml +SERVICE.OPTIONS = embeddable \ + hidden + +LIBS += -lhbcore \ + -lxqservice \ + -lxqserviceutil \ + -lobexservicesendutils \ + -lbtfeatures \ + -lflogger \ + -lxqutils + +symbian { + TARGET.UID3 = 0x2002EA5A + TARGET.CAPABILITY = All -TCB + } +BLD_INF_RULES.prj_exports += \ + "$${LITERAL_HASH}include " \ + "./rom/obexhighway.iby CORE_MW_LAYER_IBY_EXPORT_PATH(obexhighway.iby)" diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/rom/obexhighway.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/rom/obexhighway.iby Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,23 @@ +/* +* Copyright (c) 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: +* +*/ +#ifndef __OBEXHIGHWAY_IBY__ +#define __OBEXHIGHWAY_IBY__ + +file=ABI_DIR\UREL\obexhighway.exe SHARED_LIB_DIR\obexhighway.exe +data=DATAZ_\resource\apps\obexhighway.rsc resource\apps\obexhighway.rsc +data=DATAZ_\private\10003a3f\import\apps\obexhighway_reg.rsc private\10003a3f\import\apps\obexhighway_reg.rsc +#endif \ No newline at end of file diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/src/btsendserviceinterface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/src/btsendserviceinterface.cpp Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2010 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: ?Description +* +*/ + + +#include "btsendserviceinterface.h" +#include "btsendserviceprovider.h" + +BTSendServiceInterface::BTSendServiceInterface(QObject* parent) +: XQServiceProvider("com.nokia.services.btsendservice.imessage.send",parent) + { + publishAll(); + } + + +void BTSendServiceInterface::send(QVariant data) + { + QList arguments; + + if(data.type()==QVariant::String) + { + arguments.append(data); + } + else + { + arguments.append(data.toList()); + } + CBtSendServiceProvider *btSendServiceProvider = NULL; + TRAPD(err,btSendServiceProvider = CBtSendServiceProvider::NewL()); + if(err) + return; + btSendServiceProvider->send(arguments); + delete btSendServiceProvider; + } diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/src/btsendserviceprovider.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/src/btsendserviceprovider.cpp Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 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: + * + */ + + + +#include +#include "BTSSSendListHandler.h" +#include "btsendserviceprovider.h" +#include // For Enterprise security settings +#include // For Enterprise security notifier + + +CBtSendServiceProvider* CBtSendServiceProvider::NewL() + { + CBtSendServiceProvider* self = new( ELeave ) CBtSendServiceProvider(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +void CBtSendServiceProvider::ConstructL() + { + if(BluetoothFeatures::EnterpriseEnablementL() != BluetoothFeatures::EEnabled) + { + RNotifier notifier; + User::LeaveIfError(notifier.Connect()); + CleanupClosePushL(notifier); + User::LeaveIfError(notifier.StartNotifier(KBTEnterpriseItSecurityInfoNotifierUid, KNullDesC8)); + CleanupStack::PopAndDestroy(¬ifier); + + //@TODO in old code we don't continue further what needs to be done here + } + iBTSendingService = CBTServiceAPI::NewL(); + iConverter = CBTSSSendListHandler::NewL(); + } + +CBtSendServiceProvider::CBtSendServiceProvider() + { + + } + + +CBtSendServiceProvider::~CBtSendServiceProvider() + { + if(iConverter) + { + delete iConverter; + iConverter= NULL; + } + if(iBTSendingService) + { + delete iBTSendingService; + iBTSendingService = NULL; + } + } + + +int CBtSendServiceProvider::send(const QList &arguments) + { + TInt error = KErrNone; + + CBTServiceParameterList* parameterList = NULL; + TRAP(error,parameterList= CBTServiceParameterList::NewL()); + if (error) + return error; + iConverter->ConvertList( &arguments, parameterList); + + delete iConverter; + iConverter = NULL; + + TRAP(error,iBTSendingService->StartSynchronousServiceL( EBTSendingService, parameterList )); + if(error) + return error; + return error; + } diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/src/btsssendlisthandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/src/btsssendlisthandler.cpp Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,195 @@ +/* +* Copyright (c) 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: Converter class implementation for converting AIW paramerer +* list to bt send parameter list +* +*/ + + +#include + +#include "BTSSSendListHandler.h" +#include "btserviceparameterlist.h" + +#include + + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CBTSSSendListHandler() +// --------------------------------------------------------------------------- +// +CBTSSSendListHandler::CBTSSSendListHandler(): CActive( EPriorityNormal ) + { + CActiveScheduler::Add(this); + } + +// --------------------------------------------------------------------------- +// ConstructL() +// --------------------------------------------------------------------------- +// +void CBTSSSendListHandler::ConstructL() + { + } + + +// --------------------------------------------------------------------------- +// NewL() +// --------------------------------------------------------------------------- +// +CBTSSSendListHandler* CBTSSSendListHandler::NewL() + { + CBTSSSendListHandler* self = CBTSSSendListHandler::NewLC(); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// NewLC() +// --------------------------------------------------------------------------- +// +CBTSSSendListHandler* CBTSSSendListHandler::NewLC() + { + CBTSSSendListHandler* self = new( ELeave ) CBTSSSendListHandler(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// --------------------------------------------------------------------------- +// CBTSSSendListHandler +// --------------------------------------------------------------------------- +// +CBTSSSendListHandler::~CBTSSSendListHandler() + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::Destructor")); + Cancel(); + } + +// --------------------------------------------------------------------------- +// ConvertList() +// --------------------------------------------------------------------------- +// +TInt CBTSSSendListHandler::ConvertList( const QList *arguments, + CBTServiceParameterList* aList) + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::ConvertList")); + iListIndex = 0; + mArguments = arguments; + iList = aList; + iStatus = KRequestPending; + AddObject(); + SetActive(); + + iSyncWaiter.Start(); + FLOG(_L("[BTSS]\t CBTSSSendListHandler::ConvertList done")); + return iStatus.Int(); + } + +// --------------------------------------------------------------------------- +// AddObject() +// --------------------------------------------------------------------------- +// +void CBTSSSendListHandler::AddObject() + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::AddObjectL()")); + TRAPD(error, DoAddObjectL()); + if (error != KErrNone ) + { + //Complete request + TRequestStatus* status = &iStatus; + User::RequestComplete(status, error); + } + FLOG(_L("[BTSS]\t CBTSSSendListHandler::AddObjectL() Done")); + } + +// --------------------------------------------------------------------------- +// From class CActive. +// RunL() +// --------------------------------------------------------------------------- +// +void CBTSSSendListHandler::DoAddObjectL() + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL()")); + + // const TAiwGenericParam* param=&(*iOutParamList)[iListIndex]; + + QString string = mArguments->at(iListIndex).toString(); + + /* if ( param->SemanticId() != EGenericParamFile ) + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL() wrong semantic Id: Leave")); + } + // Try to add file as an image + // + if( param->Value().TypeId()== EVariantTypeFileHandle) + { + TRAPD( retVal, iList->AddImageL( param->Value().AsFileHandle() )); + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL AddImage")); + if( retVal != KErrNone ) + { + // File was not an image. We can not use BIP + // so add rest of the files as objects + // + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL AddImage filed try object")); + iList->AddObjectL( param->Value().AsFileHandle() ); + } + } + else */ + // { + // TRAPD( retVal, iList->AddImageL( param->Value().AsDes() ) ); + HBufC* path = XQConversions::qStringToS60Desc(string); + TRAPD( retVal, iList->AddImageL(*path)); + if( retVal != KErrNone ) + { + // File was not an image. We can not use BIP + // so add rest of the files as objects + // + iList->AddObjectL( *path ); + } + // } + //Complete request + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrNone); + + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL() completed")); + } +// --------------------------------------------------------------------------- +// From class CActive. +// RunL() +// --------------------------------------------------------------------------- +// +void CBTSSSendListHandler::RunL() + { + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL()")); + iListIndex++; + if ( mArguments->count() > iListIndex && iStatus.Int() == KErrNone ) + { + iStatus = KRequestPending; + AddObject(); + SetActive(); + } + else + { + if ( iSyncWaiter.IsStarted() ) + { + iSyncWaiter.AsyncStop(); + } + } + FLOG(_L("[BTSS]\t CBTSSSendListHandler::DoAddObjectL() Done")); + } diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/src/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/src/main.cpp Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,28 @@ +/* +* Copyright (c) 2010 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: ?Description +* +*/ + + +#include +#include "btsendserviceinterface.h" + +int main(int argc, char **argv) + { + QCoreApplication app(argc, argv); + BTSendServiceInterface btSendSI; + return app.exec(); + } + diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexhighway/xml/obexhighway_conf.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexsendservices/obexhighway/xml/obexhighway_conf.xml Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,12 @@ + + + com.nokia.services.btsendservice + No path + BT Send Service + + imessage.send + 1.0 + Send interface + Via Bluetooth + + \ No newline at end of file diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexservicesendutils/inc/BTServiceStarter.h --- a/localconnectivityservice/obexsendservices/obexservicesendutils/inc/BTServiceStarter.h Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/obexsendservices/obexservicesendutils/inc/BTServiceStarter.h Sun May 02 21:46:11 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -29,6 +29,7 @@ #include #include #include +#include // DATA TYPES @@ -105,7 +106,8 @@ public MObexUtilsDialogObserver, public MObexUtilsProgressObserver, public MBTEngSdpResultReceiver, - public MBTEngSettingsObserver + public MBTEngSettingsObserver, + public MHbDeviceProgressDialogObserver { public: // Constructors and destructor @@ -157,6 +159,18 @@ * @return None. */ void DialogDismissed( TInt aButtonId ); + + /** + * From MHbDeviceProgressDialogObserver + * + */ + void ProgressDialogCancelled(const CHbDeviceProgressDialogSymbian * aDialog); + + /** + * From MHbDeviceProgressDialogObserver + * + */ + void ProgressDialogClosed(const CHbDeviceProgressDialogSymbian * aDialog ) ; /** * From MObexUtilsProgressObserver request for number of bytes sent @@ -413,7 +427,7 @@ CBTDevice* iDevice; CBTEngDiscovery* iBTEngDiscovery; CBTServiceParameterList* iList; - CObexUtilsDialog* iDialog; + // CObexUtilsDialog* iDialog; CBTSController* iController; TBTServiceType iService; @@ -438,6 +452,7 @@ TBool iFeatureManagerInitialized; TBool iTriedBIP; TBool iTriedOPP; + CHbDeviceProgressDialogSymbian *iProgressDialog; }; #endif // BT_SERVICE_CONTROLLER_H diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp --- a/localconnectivityservice/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp Sat Apr 24 00:43:26 2010 +0300 +++ b/localconnectivityservice/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp Sun May 02 21:46:11 2010 +0300 @@ -29,6 +29,7 @@ #include #include #include +#include "hbdevicemessageboxsymbian.h" // CONSTANTS @@ -37,7 +38,6 @@ const TUint KBTServiceDirectPrinting = 0x1118; const TUint KBTServiceImagingResponder = 0x111B; -const TUint KBTProgressInterval = 1000000; // ============================ MEMBER FUNCTIONS =============================== @@ -72,7 +72,7 @@ { FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL()")); iDevice = CBTDevice::NewL(); - iDialog = CObexUtilsDialog::NewL( this ); +// iDialog = CObexUtilsDialog::NewL( this ); FeatureManager::InitializeLibL(); iFeatureManagerInitialized = ETrue; FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL() completed")); @@ -108,7 +108,8 @@ delete iController; delete iBTEngDiscovery; - delete iDialog; + // delete iDialog; + delete iProgressDialog; if(iWaiter && iWaiter->IsStarted() ) { @@ -166,7 +167,8 @@ TBool offline = EFalse; if( !power ) { - offline = CheckOfflineModeL(); + //offline = CheckOfflineModeL(); + offline = EFalse; } if( !offline ) { @@ -424,11 +426,16 @@ FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchWaitNoteL()")); if ( iService == EBTPrintingService ) { - iDialog->LaunchWaitDialogL( R_BT_PRINTING_WAIT_NOTE ); + // iDialog->LaunchWaitDialogL( R_BT_PRINTING_WAIT_NOTE ); } else { - iDialog->LaunchWaitDialogL( R_BT_CONNECTING_WAIT_NOTE ); + // iDialog->LaunchWaitDialogL( R_BT_CONNECTING_WAIT_NOTE ); + _LIT(KConnectText, "Connecting..."); + iProgressDialog = CHbDeviceProgressDialogSymbian::NewL(CHbDeviceProgressDialogSymbian::EWaitDialog,this); + iProgressDialog->SetTextL(KConnectText); + iProgressDialog->ShowL(); + } FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchWaitNoteL() completed")); } @@ -441,10 +448,15 @@ { FLOG(_L("[BTSU]\t CBTServiceStarter::CancelWaitNote()")); - if ( iDialog ) - { - TRAP_IGNORE( iDialog->CancelWaitDialogL() ); - } + // if ( iDialog ) + // { + // TRAP_IGNORE( iDialog->CancelWaitDialogL() ); + if(iProgressDialog) + { + //This has to be tested + iProgressDialog->Close(); + } + // } FLOG(_L("[BTSU]\t CBTServiceStarter::CancelWaitNote() completed")); } @@ -458,7 +470,8 @@ TInt aTotalSize ) { FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchProgressNoteL()")); - + (void) aTotalSize; + if ( iService != EBTPrintingService ) { iProgressGetter = aGetter; @@ -468,8 +481,8 @@ { iMessageServerIndex = TObexUtilsMessageHandler::CreateOutboxEntryL( KUidMsgTypeBt, R_BT_SEND_OUTBOX_SENDING ); - iDialog->LaunchProgressDialogL( this, aTotalSize, - R_BT_SENDING_DATA, KBTProgressInterval ); + // iDialog->LaunchProgressDialogL( this, aTotalSize, + // R_BT_SENDING_DATA, KBTProgressInterval ); } iProgressDialogActive=ETrue; } @@ -485,9 +498,9 @@ { FLOG(_L("[BTSU]\t CBTServiceStarter::CancelProgressNote()")); - if ( iDialog ) + // if ( iDialog ) { - TRAP_IGNORE( iDialog->CancelProgressDialogL() ); + // TRAP_IGNORE( iDialog->CancelProgressDialogL() ); } } @@ -529,7 +542,8 @@ { FLOG(_L("[BTSU]\t CBTServiceStarter::ShowNote()")); - TInt resource = 0; +// TInt resource = 0; + TBuf<255> buf; switch ( aReason ) { @@ -537,17 +551,24 @@ { if ( iService == EBTPrintingService ) { - resource = R_BT_DATA_SENT2; + // resource = R_BT_DATA_SENT2; + + _LIT(KText, "Data Sent"); + buf.Copy(KText); } else { - resource = R_BT_DATA_SENT; + //resource = R_BT_DATA_SENT; + _LIT(KText, "Data Sent"); + buf.Copy(KText); } break; } case EBTSConnectingFailed: { - resource = R_BT_DEV_NOT_AVAIL; + //resource = R_BT_DEV_NOT_AVAIL; + _LIT(KText, "Cannot establish Bluetooth connection"); + buf.Copy(KText); break; } case EBTSGettingFailed: @@ -555,11 +576,15 @@ { if ( iService == EBTPrintingService ) { - resource = R_BT_FAILED_TO_SEND2; + _LIT(KText, "Sending failed"); + //resource = R_BT_FAILED_TO_SEND2; + buf.Copy(KText); } else { - resource = R_BT_FAILED_TO_SEND; + _LIT(KText, "Failed to send Data"); + //resource = R_BT_FAILED_TO_SEND; + buf.Copy(KText); } break; } @@ -567,37 +592,50 @@ { if ( iService == EBTPrintingService ) { - resource = R_BT_PRINTING_NOT_SUPPORTED; + _LIT(KText, "Printer not supported"); + buf.Copy(KText); + // resource = R_BT_PRINTING_NOT_SUPPORTED; } else { - resource = R_BT_FAILED_TO_SEND; + _LIT(KText, "Failed to send Data"); + buf.Copy(KText); + // resource = R_BT_FAILED_TO_SEND; } break; } case EBTSBIPSomeSend: { - resource = R_BT_FAILED_TO_SEND; + _LIT(KText, "Failed to send Data"); + buf.Copy(KText); + //resource = R_BT_FAILED_TO_SEND; break; } case EBTSBIPOneNotSend: { - resource = R_BT_NOT_RECEIVE_ONE; + _LIT(KText, "Receiving device does not support this image format."); + buf.Copy(KText); + //resource = R_BT_NOT_RECEIVE_ONE; break; } case EBTSBIPNoneSend: { - resource = R_BT_NOT_RECEIVE_ANY; + _LIT(KText, "Receiving device does not support the needed image formats."); + buf.Copy(KText); + //resource = R_BT_NOT_RECEIVE_ANY; break; } default: { - resource = R_BT_DEV_NOT_AVAIL; + // resource = R_BT_DEV_NOT_AVAIL; + _LIT(KText, "Cannot establish Bluetooth connection"); + buf.Copy(KText); break; } } - TRAP_IGNORE(TObexUtilsUiLayer::ShowInformationNoteL( resource ) ); +// TRAP_IGNORE(TObexUtilsUiLayer::ShowInformationNoteL( resource ) ); + CHbDeviceMessageBoxSymbian::InformationL(buf); FLOG(_L("[BTSU]\t CBTServiceStarter::ShowNote() completed")); } @@ -605,10 +643,10 @@ // CBTServiceStarter::LaunchConfirmationQuery // ----------------------------------------------------------------------------- // -TInt CBTServiceStarter::LaunchConfirmationQuery(TInt aResourceId) +TInt CBTServiceStarter::LaunchConfirmationQuery(TInt /*aResourceId*/) { TInt keypress=0; - TRAP_IGNORE( keypress = iDialog->LaunchQueryDialogL( aResourceId )); +// TRAP_IGNORE( keypress = iDialog->LaunchQueryDialogL( aResourceId )); if ( !keypress ) { FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchConfirmationQuery(), cancelled by user")); @@ -624,6 +662,7 @@ // void CBTServiceStarter::StopTransfer(TInt aError) { + FLOG(_L("[BTSU]\t CBTServiceStarter::StopTransfer()")); Cancel(); if( !iUserCancel ) @@ -905,7 +944,7 @@ void CBTServiceStarter::TurnBTPowerOnL( const TBTPowerStateValue aState ) { FLOG( _L("[BTSU]\t CBTServiceStarter::TurnBTPowerOnL()") ); - if (iName() != EFalse) +// if (iName() != EFalse) { if( !iBTEngSettings ) { @@ -927,7 +966,7 @@ StartDiscoveryL(); } } - else + /* else { if ( !iNotifier.Handle() ) { @@ -940,7 +979,7 @@ iNotifier.StartNotifierAndGetResponse( iStatus, KBTGenericQueryNotifierUid, pckg, iName ); SetActive(); - } + }*/ FLOG(_L("[BTSU]\t CBTServiceStarter::TurnBTPowerOnL() - completed")); } @@ -988,6 +1027,7 @@ if( err ) { + err = ( err == KErrNotSupported ? KErrCancel : err ); if ( iWaiter && err != KErrInUse && err != KErrCancel ) { @@ -1012,4 +1052,25 @@ FLOG(_L("[BTSU]\t CBTServiceStarter::RunError() - completed")); return KErrNone; } -// End of File + + + + +void CBTServiceStarter::ProgressDialogCancelled(const CHbDeviceProgressDialogSymbian*/* aDialog*/) + { + FLOG(_L("[BTSU]\t CBTServiceStarter::ProgressDialogCancelled(), cancelled by user")); + iUserCancel=ETrue; + if ( iController ) + { + iController->Abort(); + } + else + { + StopTransfer(KErrCancel); + } + } + + +void CBTServiceStarter::ProgressDialogClosed(const CHbDeviceProgressDialogSymbian* /* aDialog*/) + { + } diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/rom/obexservicebtsend.iby --- a/localconnectivityservice/obexsendservices/rom/obexservicebtsend.iby Sat Apr 24 00:43:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2004 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: IBY file for btsendingservice -* -*/ - - -#ifndef BTSENDINGSERVICE_IBY -#define BTSENDINGSERVICE_IBY - -#ifdef __BT -ECOM_PLUGIN(obexservicebtsend.dll,101F86A2.rsc) -#endif - -#endif // BTSENDINGSERVICE_IBY - -// End of File diff -r 3b92f7acdc91 -r 51f207bebb06 localconnectivityservice/obexsendservices/rom/obexserviceirsend.iby --- a/localconnectivityservice/obexsendservices/rom/obexserviceirsend.iby Sat Apr 24 00:43:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2004 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: IBY file for btsendingservice -* -*/ - - -#ifndef IRSENDINGSERVICE_IBY -#define IRSENDINGSERVICE_IBY - -#ifdef __IRDA -ECOM_PLUGIN(obexserviceirsend.dll,001F86A2.rsc) -#endif - -#endif // IRSENDINGSERVICE_IBY - -// End of File diff -r 3b92f7acdc91 -r 51f207bebb06 sysdef_1_4_0.dtd --- a/sysdef_1_4_0.dtd Sat Apr 24 00:43:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 3b92f7acdc91 -r 51f207bebb06 sysdef_1_5_1.dtd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysdef_1_5_1.dtd Sun May 02 21:46:11 2010 +0300 @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +