201017
authorhgs
Sun, 02 May 2010 21:46:11 +0300
changeset 32 51f207bebb06
parent 31 3b92f7acdc91
child 33 0b722902461e
201017
layers.sysdef.xml
localconnectivityservice/dun/atext/bwins/dunatextu.def
localconnectivityservice/dun/atext/eabi/dunatextu.def
localconnectivityservice/dun/atext/group/dunatext.mmp
localconnectivityservice/dun/atext/inc/DunAtCmdEchoer.h
localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h
localconnectivityservice/dun/atext/inc/DunAtCmdPusher.h
localconnectivityservice/dun/atext/src/DunAtCmdEchoer.cpp
localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp
localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp
localconnectivityservice/dun/utils/inc/DunTransporter.h
localconnectivityservice/dun/utils/inc/DunUpstream.h
localconnectivityservice/dun/utils/src/DunUpstream.cpp
localconnectivityservice/group/bld.inf
localconnectivityservice/obexreceiveservices/bip/src/BIPController.cpp
localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp
localconnectivityservice/obexsendservices/group/bld.inf
localconnectivityservice/obexsendservices/group/obexservicebtsend.mmp
localconnectivityservice/obexsendservices/group/obexserviceirsend.mmp
localconnectivityservice/obexsendservices/group/sendutils.mmp
localconnectivityservice/obexsendservices/obexhighway/inc/btsendingservicedebug.h
localconnectivityservice/obexsendservices/obexhighway/inc/btsendserviceinterface.h
localconnectivityservice/obexsendservices/obexhighway/inc/btsendserviceprovider.h
localconnectivityservice/obexsendservices/obexhighway/inc/btsssendlisthandler.h
localconnectivityservice/obexsendservices/obexhighway/obexhighway.pro
localconnectivityservice/obexsendservices/obexhighway/rom/obexhighway.iby
localconnectivityservice/obexsendservices/obexhighway/src/btsendserviceinterface.cpp
localconnectivityservice/obexsendservices/obexhighway/src/btsendserviceprovider.cpp
localconnectivityservice/obexsendservices/obexhighway/src/btsssendlisthandler.cpp
localconnectivityservice/obexsendservices/obexhighway/src/main.cpp
localconnectivityservice/obexsendservices/obexhighway/xml/obexhighway_conf.xml
localconnectivityservice/obexsendservices/obexservicesendutils/inc/BTServiceStarter.h
localconnectivityservice/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp
localconnectivityservice/obexsendservices/rom/obexservicebtsend.iby
localconnectivityservice/obexsendservices/rom/obexserviceirsend.iby
sysdef_1_4_0.dtd
sysdef_1_5_1.dtd
--- 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 @@
 <?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
   <!ENTITY layer_real_source_path "sf/mw/shortlinkconn" >
 ]>
 
-<SystemDefinition name="shortlinkconn" schema="1.4.0">
+<SystemDefinition name="shortlinkconn" schema="1.5.1">
   <systemModel>
     <layer name="mw_layer">
       <module name="shortlinkconn">
         <unit unitID="lcdo.shortlinkconn" mrp="" bldFile="&layer_real_source_path;/group" name="shortlinkconn" />
       </module>
+      <module name="obexthighway">
+        <unit unitID="lcdo.shortlinkconn.obexhighway" mrp="" bldFile="&layer_real_source_path;/localconnectivityservice/obexsendservices/obexhighway" name="shortlinkconn_obexhighway" proFile="obexhighway.pro" qmakeArgs="" />
+      </module>
     </layer>
   </systemModel>
 </SystemDefinition>
--- 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 *)
 
--- 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
 
--- 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
--- /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
--- 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 <atextcommon.h>
 #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;  // <CR>+<LF>+"OK"+<CR>+<LF>
 const TInt KDunErrorBufLength  = 1+1+5+1+1;  // <CR>+<LF>+"ERROR"+<CR>+<LF>
 const TInt KDunInputBufLength  = (512 + 1);  // 512 chars for command + <CR>
+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<KDunInputBufLength> iLastBuffer;
 
     /**
+     * Buffer for <ESC> command
+     */
+    TBuf8<KDunEscBufLength> 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.
      */
--- 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
--- /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") ));
+    }
--- 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; i<count; i++ )
+        {
+        TChar character = (*iCommand)[i];
+        if ( !(IsEndOfCommand(character)||IsDelimiterCharacter(character)) )
+            {
+            foundIndex = i;
+            break;
+            }
+        }
+    FTRACE(FPrint( _L("CDunAtCmdHandler::FindStartOfNextCommand() complete") ));
+    return foundIndex;
+    }
+
+// ---------------------------------------------------------------------------
 // Manages end of AT command handling
 // ---------------------------------------------------------------------------
 //
@@ -814,23 +866,7 @@
         FTRACE(FPrint( _L("CDunAtCmdHandler::ManageEndOfCmdHandling() (no external) complete") ));
         return;
         }
-    // 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; i<count; i++ )
-        {
-        TChar character = (*iCommand)[i];
-        if ( !(IsEndOfCommand(character)||IsDelimiterCharacter(character)) )
-            {
-            foundIndex = i;
-            break;
-            }
-        }
+    TInt foundIndex = FindStartOfNextCommand();
     iUpstream->NotifyAtCmdHandlingEnd( 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 <ESC> 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
 // ---------------------------------------------------------------------------
--- 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;
--- 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
--- 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
 
     /**
--- 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" )));
+    }
--- 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"
 
--- 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    <Obexutils.rsg>
 #include    <sysutil.h>
 #include    <bautils.h>
-#include    <pathinfo.h>                   // provides interface for quering system paths 
+#include    <driveinfo.h>                   
 #include    <AknWaitDialog.h>
 #include    <btengdomaincrkeys.h> 
 #include    <e32math.h> 
@@ -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);
     
--- 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    <sysutil.h>
 #include    <btengdomaincrkeys.h> 
 #include    <msvids.h>
-#include    <pathinfo.h>          // provides interface for quering system paths 
+#include    <DriveInfo.h> 
 #include    <es_sock.h>
 #include    <bt_sock.h>
 
@@ -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;
--- 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
 
--- 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 <platform_paths.hrh>
-#include "../obexservicebtsend/inc/BTSendingServiceUIDS.hrh"
-
-#include <data_caging_paths.hrh>
-
-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
-
-
--- 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 <platform_paths.hrh>
-#include "../obexserviceirsend/inc/IrSendingServiceUIDS.hrh"
-
-#include <data_caging_paths.hrh>
-
-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
--- 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
 
 
--- /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 <e32std.h>
+#include <f32file.h>
+#include <flogger.h>
+
+_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<const TDesC> aFmt, ...)
+    {
+    VA_LIST list;
+    VA_START(list,aFmt);
+    RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
+    }
+
+// ===========================================================================
+#else               // RDebug logging for target HW
+// ===========================================================================
+#include <e32svr.h>
+
+#define FLOG(a)   { RDebug::Print(a); }
+#define FTRACE(a) { a; }
+
+// Declare the FPrint function
+//
+inline void FPrint(const TRefByValue<const TDesC> 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
--- /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 <xqserviceprovider.h>
+
+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
--- /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 <e32base.h>
+#include <QList.h>
+#include <QVariant.h>
+
+class CBTServiceAPI;
+class CBTSSSendListHandler;
+
+
+class CBtSendServiceProvider: public CBase
+    {
+public:
+    /**
+     * constructor
+     */
+    static CBtSendServiceProvider* NewL();
+    
+    /**
+     * Destructor.
+     */
+    ~CBtSendServiceProvider();
+    
+    
+    int send(const QList<QVariant> &arguments);
+private:
+    CBtSendServiceProvider();    
+    void ConstructL();
+    
+public:
+    CBTSSSendListHandler*    iConverter;
+    CBTServiceAPI*  iBTSendingService;
+     };
+
+#endif /* BTSENDSERVICEPROVIDER_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 <e32base.h>
+#include <AiwVariantType.hrh>
+#include <AiwVariant.h>
+#include <AiwGenericParam.h>
+#include <QVariant.h>
+#include <QList.h>
+#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<QVariant> *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<QVariant> *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
--- /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 <platform_paths.hrh>" \
+  "./rom/obexhighway.iby CORE_MW_LAYER_IBY_EXPORT_PATH(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
--- /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<QVariant> 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;
+    }
--- /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 <btserviceapi.h>
+#include "BTSSSendListHandler.h"
+#include "btsendserviceprovider.h"
+#include <btfeaturescfg.h>  // For Enterprise security settings
+#include <btnotif.h>    // 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(&notifier);
+        
+        //@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<QVariant> &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;
+    }
--- /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 <AiwGenericParam.h>
+
+#include "BTSSSendListHandler.h"
+#include "btserviceparameterlist.h"
+
+#include <xqconversions.h>
+
+
+
+// ======== 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<QVariant> *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"));           
+    }
--- /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 <hbapplication.h>
+#include "btsendserviceinterface.h"
+
+int main(int argc, char **argv)
+    {
+    QCoreApplication app(argc, argv);
+    BTSendServiceInterface btSendSI;
+    return app.exec();
+    }
+
--- /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 @@
+<?xml version="1.0" encoding="utf-8" ?>  
+<service>
+  <name>com.nokia.services.btsendservice</name>
+  <filepath>No path</filepath>
+  <description>BT Send Service</description>
+  <interface>
+     <name>imessage.send</name>
+     <version>1.0</version>
+     <description>Send interface</description>
+     <customproperty key="txt_aiw_action_text">Via Bluetooth</customproperty>
+  </interface>
+</service>
\ No newline at end of file
--- 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 <btengsettings.h>
 #include <obexutilsdialog.h>
 #include <msvapi.h>
+#include <hb/hbwidgets/hbdeviceprogressdialogsymbian.h>
 
 // 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
--- 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 <obexutilsmessagehandler.h>
 #include <btnotif.h>
 #include <featmgr.h>
+#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*/)
+    {
+    }
--- 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  
--- 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  
--- 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 @@
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset name CDATA #REQUIRED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED>  
--- /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 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  proFile CDATA #IMPLIED
+  qmakeArgs CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>