--- a/localconnectivityservice/dun/atext/group/dunatext.mmp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/atext/group/dunatext.mmp Mon May 03 13:21:36 2010 +0300
@@ -33,6 +33,7 @@
SOURCE DunAtModeListen.cpp
SOURCE DunAtEcomListen.cpp
SOURCE DunAtNvramListen.cpp
+SOURCE DunAtSpecialCmdHandler.cpp
USERINCLUDE ../inc ../../utils/inc
@@ -48,4 +49,5 @@
LIBRARY atextclient.lib
LIBRARY atextcommon.lib
LIBRARY euser.lib
+LIBRARY bafl.lib
DEBUGLIBRARY flogger.lib
--- a/localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h Mon May 03 13:21:36 2010 +0300
@@ -26,6 +26,7 @@
#include "DunAtEcomListen.h"
#include "DunAtModeListen.h"
#include "DunAtNvramListen.h"
+#include "DunAtSpecialCmdHandler.h"
const TInt KDunChSetMaxCharLen = 1; // Only ASCII supported for now
const TInt KDunOkBufLength = 1+1+2+1+1; // <CR>+<LF>+"OK"+<CR>+<LF>
@@ -839,6 +840,10 @@
*/
RATExtCommon iAtCmdExtCommon;
+ /**
+ * Special AT command handler for handling commands like AT&FE0Q0V1&C1&D2+IFC=3,1.
+ */
+ CDunAtSpecialCmdHandler* iAtSpecialCmdHandler;
};
#endif // C_CDUNATCMDHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/dun/atext/inc/DunAtSpecialCmdHandler.h Mon May 03 13:21:36 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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: Special AT command handler
+*
+*/
+
+#ifndef C_CDUNATSPECIALCMDHANDLER_H
+#define C_CDUNATSPECIALCMDHANDLER_H
+
+#include <e32base.h>
+#include <badesca.h>
+
+const TInt KInputBufLength = (512 + 1); // 512 chars for command + <CR>
+
+/**
+ * Class for special AT command handler
+ *
+ * @lib dunatext.lib
+ * @since S60 v5.0
+ */
+NONSHARABLE_CLASS( CDunAtSpecialCmdHandler ) : public CBase
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param None
+ * @return Instance of self
+ */
+ static CDunAtSpecialCmdHandler* NewL();
+
+ /**
+ * Destructor.
+ */
+ ~CDunAtSpecialCmdHandler();
+
+public:
+
+ TBool IsCompleteSubCommand(TChar aCharacter);
+ TBool IsCompleteSubCommand(TDesC8& aDes, TInt aStartIndex, TInt& aEndIndex);
+
+private:
+
+ CDunAtSpecialCmdHandler();
+
+ void ConstructL();
+
+ TBool IsDataReadyForComparison(TInt aLength);
+ TInt MinimumLength();
+
+
+private: // data
+ /**
+ * Buffer for temporary AT command input
+ */
+ TBuf8<KInputBufLength> iBuffer;
+
+ /**
+ * Special commands for parsing
+ */
+ CDesC8Array *iSpecialCmds;
+ };
+
+#endif // C_CDUNATSPECIALCMDHANDLER_H
--- a/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp Mon May 03 13:21:36 2010 +0300
@@ -85,6 +85,8 @@
iModeListen = NULL;
delete iEcomListen;
iEcomListen = NULL;
+ delete iAtSpecialCmdHandler;
+ iAtSpecialCmdHandler = NULL;
if ( iAtCmdExtCommon.Handle() )
{
iAtCmdExtCommon.SynchronousClose();
@@ -331,6 +333,8 @@
iEcomListen = ecomListen;
iModeListen = modeListen;
iNvramListen = nvramListen;
+
+ iAtSpecialCmdHandler = CDunAtSpecialCmdHandler::NewL();
FTRACE(FPrint( _L("CDunAtCmdHandler::ConstructL() complete") ));
}
@@ -860,7 +864,10 @@
TInt endIndex = KErrNotFound;
if ( extendedCmd )
{
- extendedEnd = CheckExtendedCommand( startIndex, endIndex );
+ if( iAtSpecialCmdHandler->IsCompleteSubCommand(iInputBuffer, startIndex, endIndex) == EFalse )
+ {
+ extendedEnd = CheckExtendedCommand( startIndex, endIndex );
+ }
}
else
{
@@ -1007,7 +1014,7 @@
FTRACE(FPrint( _L("CDunAtCmdHandler::IsDelimiterCharacter()") ));
if ( aCharacter.IsSpace() || aCharacter==';' || aCharacter==0x00 )
{
- FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedCharacter() complete") ));
+ FTRACE(FPrint( _L("CDunAtCmdHandler::IsDelimiterCharacter() complete") ));
return ETrue;
}
FTRACE(FPrint( _L("CDunAtCmdHandler::IsDelimiterCharacter() (not delimiter) complete") ));
@@ -1071,6 +1078,16 @@
endFound = ETrue;
break;
}
+ if( IsExtendedCharacter(character) && (aEndIndex != aStartIndex) && iDecodeInfo.iPrevExists )
+ {
+ if( iDecodeInfo.iPrevChar.IsAlphaDigit() )
+ {
+ aEndIndex--;
+ // End found but return EFalse in order to calling function can proceed correct way,
+ // no extended end.
+ return EFalse;
+ }
+ }
iDecodeInfo.iPrevExists = ETrue;
iDecodeInfo.iPrevChar = character;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/dun/atext/src/DunAtSpecialCmdHandler.cpp Mon May 03 13:21:36 2010 +0300
@@ -0,0 +1,181 @@
+/*
+* 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: Special AT command handler
+*
+*/
+
+#include "DunAtSpecialCmdHandler.h"
+#include "DunDebug.h"
+
+// AT command(s) below is part of the AT&FE0Q0V1&C1&D2+IFC=3,1. command which
+// is sent by MAC
+_LIT8(KSpecialATCmd1, "AT&F");
+// Number of special commands
+const TInt KDefaultGranularity = 1;
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CDunAtSpecialCmdHandler* CDunAtSpecialCmdHandler::NewL()
+ {
+ CDunAtSpecialCmdHandler* self = new (ELeave) CDunAtSpecialCmdHandler();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CDunAtSpecialCmdHandler::CDunAtSpecialCmdHandler
+// ---------------------------------------------------------------------------
+//
+CDunAtSpecialCmdHandler::CDunAtSpecialCmdHandler()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CDunAtSpecialCmdHandler::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CDunAtSpecialCmdHandler::ConstructL()
+ {
+ iSpecialCmds = new (ELeave) CDesC8ArrayFlat(KDefaultGranularity);
+ // Add here all special commands which need to be handled
+ iSpecialCmds->AppendL(KSpecialATCmd1);
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CDunAtSpecialCmdHandler::~CDunAtSpecialCmdHandler()
+ {
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::~CDunAtSpecialCmdHandler()") ));
+ delete iSpecialCmds;
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::~CDunAtSpecialCmdHandler() complete") ));
+ }
+
+// ---------------------------------------------------------------------------
+// Checks if the command has to be treated special way
+// For example in case of MAC, it sends command AT&FE0Q0V1&C1&D2+IFC=3,1.
+// meaning there is no delimiters in the command.
+// In case of MAC we try to search AT&F (sub command) string from the beginning
+// of the command.
+// Search is done character by character basis.
+// ---------------------------------------------------------------------------
+//
+TBool CDunAtSpecialCmdHandler::IsCompleteSubCommand (TChar aCharacter)
+ {
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand()") ));
+ iBuffer.Append(aCharacter);
+ TBool completeSubCmd = EFalse;
+
+ if( !IsDataReadyForComparison( iBuffer.Length()) )
+ {
+ // No need to do comparison because we don't have correct amount of data
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), no need to compare") ));
+ return completeSubCmd;
+ }
+
+ TInt count = iSpecialCmds->Count();
+ for( TInt i = 0 ; i < count ; i++ )
+ {
+ if( iSpecialCmds->MdcaPoint(i).Compare(iBuffer) == 0 )
+ {
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), match found, cmd index %d"), i ));
+ // Reset internal buffer for next comparison.
+ iBuffer.FillZ();
+ iBuffer.Zero();
+ completeSubCmd = ETrue;
+ break;
+ }
+ }
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand() complete") ));
+ return completeSubCmd;
+ }
+
+// ---------------------------------------------------------------------------
+// Checks if the command has to be treated special way
+// For example in case of MAC, it sends command AT&FE0Q0V1&C1&D2+IFC=3,1.
+// meaning there is no delimiters in the command.
+// In case of MAC we try to search AT&F (sub command) string from the beginning
+// of the command.
+// Search is done string basis.
+// ---------------------------------------------------------------------------
+//
+TBool CDunAtSpecialCmdHandler::IsCompleteSubCommand(TDesC8& aDes, TInt aStartIndex, TInt& aEndIndex)
+ {
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand()") ));
+ TBool completeSubCmd = EFalse;
+ if( aDes.Length() < MinimumLength() || aStartIndex != 0 )
+ {
+ // No need to do comparison because we don't have correct amount of data or
+ // we are not at the beginning of the input buffer (non decoded buffer)
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), no need to compare") ));
+ return completeSubCmd;
+ }
+
+ TInt count = iSpecialCmds->Count();
+ for( TInt i = 0 ; i < count ; i++ )
+ {
+ TInt length = iSpecialCmds->MdcaPoint(i).Length();
+ TPtrC8 cmd = aDes.Mid(0, length);
+ if( iSpecialCmds->MdcaPoint(i).Compare(cmd) == 0 )
+ {
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), match found, cmd index %d"), i ));
+ aEndIndex = length - 1;
+ completeSubCmd = ETrue;
+ break;
+ }
+ }
+ FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand() complete") ));
+ return completeSubCmd;
+ }
+
+// ---------------------------------------------------------------------------
+// Defines when comparison is excecuted, checks if the data lengths are equal.
+// ---------------------------------------------------------------------------
+//
+TBool CDunAtSpecialCmdHandler::IsDataReadyForComparison(TInt aLength)
+ {
+ TInt count = iSpecialCmds->Count();
+ for( TInt i = 0 ; i < count ; i++ )
+ {
+ if( iSpecialCmds->MdcaPoint(i).Length() == aLength )
+ {
+ return ETrue;
+ }
+ }
+ return EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// Defines minimum length of the special commands.
+// ---------------------------------------------------------------------------
+//
+TInt CDunAtSpecialCmdHandler::MinimumLength()
+ {
+ TInt length = iSpecialCmds->MdcaPoint(0).Length();
+ TInt count = iSpecialCmds->Count();
+ for( TInt i = 1 ; i < count ; i++ )
+ {
+ if( iSpecialCmds->MdcaPoint(i).Length() < length )
+ {
+ length = iSpecialCmds->MdcaPoint(i).Length();
+ break;
+ }
+ }
+ return length;
+ }
--- a/localconnectivityservice/dun/plugins/src/bt/DunBtListen.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/plugins/src/bt/DunBtListen.cpp Mon May 03 13:21:36 2010 +0300
@@ -28,6 +28,9 @@
const TInt KListenQueSize = 1;
const TInt KDunFixedChannel = 22; // Hack/kludge for Apple Bug ID 6527598
+//Service Class Bits supported by DUN
+static const TUint16 KCoDDunServiceClass = EMajorServiceTelephony | EMajorServiceNetworking;
+
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
@@ -340,6 +343,11 @@
return KErrInUse;
}
aChannelNum = aListenSocket.LocalPort();
+
+ // We try to set the Telephony and Networking bits in our service class. If this fails we
+ // ignore it, as it's better to carry on without it than to fail to start listening.
+ (void)aListenSocket.SetOpt(KBTRegisterCodService, KSolBtRFCOMM, KCoDDunServiceClass);
+
retTemp = aListenSocket.Listen( KListenQueSize );
if ( retTemp != KErrNone )
{
--- a/localconnectivityservice/dun/utils/inc/DunDataPusher.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/inc/DunDataPusher.h Mon May 03 13:21:36 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"
@@ -78,8 +78,7 @@
* @lib dunutils.lib
* @since S60 v3.2
*/
-NONSHARABLE_CLASS( CDunDataPusher ) : public CActive,
- public MDunEndpointReady
+NONSHARABLE_CLASS( CDunDataPusher ) : public CActive
{
public:
@@ -238,24 +237,6 @@
*/
void DoCancel();
-// from base class MDunEndpointReady
-
- /**
- * Gets called when endpoint is ready
- *
- * @since S60 5.0
- * @return None
- */
- void NotifyEndpointReady();
-
- /**
- * Gets called when endpoint is not ready
- *
- * @since S60 5.0
- * @return None
- */
- void NotifyEndpointNotReady();
-
private: // data
/**
@@ -285,11 +266,6 @@
TInt iEventIndex;
/**
- * Flag to be set when endpoint is ready or not
- */
- TBool iEPReady;
-
- /**
* RSocket object of local media side
* If this is set then iComm is not used
* Not own.
--- a/localconnectivityservice/dun/utils/inc/DunDownstream.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/inc/DunDownstream.h Mon May 03 13:21:36 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"
@@ -156,14 +156,6 @@
TInt AddToQueueAndSend( const TDesC8 *aPushedData,
MDunCompletionReporter* aCallback );
- /**
- * Gets the endpoint readiness handler
- *
- * @since S60 5.0
- * @return Endpoint readiness handler
- */
- MDunEndpointReady* EndpointReadyHandler();
-
private:
CDunDownstream( MDunTransporterUtilityAux* aUtility );
--- a/localconnectivityservice/dun/utils/inc/DunSignalCopy.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/inc/DunSignalCopy.h Mon May 03 13:21:36 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-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"
@@ -64,16 +64,6 @@
TInt AddCallback( MDunConnMon* aCallback );
/**
- * Adds callback for endpoint readiness
- * The callback will be called when the endpoint is ready or not ready
- *
- * @since S60 5.0
- * @param aEPCallback Callback to call when writes can/can't be done
- * @return Symbian error code on error, KErrNone otherwise
- */
- TInt AddEndpointReadyCallback( MDunEndpointReady* aEPCallback );
-
- /**
* Sets media to use for this endpoint monitor
*
* @since S60 3.2
@@ -160,15 +150,6 @@
*/
void ChangeDownstreamSignal( TUint aSetMask, TUint aClearMask );
- /**
- * Reports endpoint ready or not ready
- *
- * @since S60 5.0
- * @param aReady ETrue if endpoint ready, EFalse otherwise
- * @return None
- */
- void ReportEndpointReady( TBool aReady );
-
// from base class CActive
/*
@@ -198,12 +179,6 @@
RPointerArray<MDunConnMon> iCallbacks;
/**
- * Callback(s) to call when notification(s) via MDunEndpointReady to be made
- * Normally contains only one callback for upstream
- */
- RPointerArray<MDunEndpointReady> iERCallbacks;
-
- /**
* Callback(s) to call when command mode starts or ends
* Usually two needed: one for upstream and second for downstream
*/
--- a/localconnectivityservice/dun/utils/inc/DunSignalNotify.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/inc/DunSignalNotify.h Mon May 03 13:21:36 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-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"
@@ -65,16 +65,6 @@
TInt AddCallback( MDunConnMon* aCallback );
/**
- * Adds callback for endpoint readiness
- * The callback will be called when the endpoint is ready or not ready
- *
- * @since S60 5.0
- * @param aERCallback Callback to call when writes can/can't be done
- * @return Symbian error code on error, KErrNone otherwise
- */
- TInt AddEndpointReadyCallback( MDunEndpointReady* aERCallback );
-
- /**
* Sets media to use for this endpoint monitor (network side)
*
* @since S60 3.2
@@ -131,15 +121,6 @@
*/
void ReportSignalChange( TUint aSetMask, TUint aClearMask );
- /**
- * Reports endpoint ready or not ready
- *
- * @since S60 5.0
- * @param aReady ETrue if endpoint ready, EFalse otherwise
- * @return None
- */
- void ReportEndpointReady( TBool aReady );
-
// from base class CActive
/*
@@ -169,12 +150,6 @@
RPointerArray<MDunConnMon> iCallbacks;
/**
- * Callback(s) to call when notification(s) via MDunEndpointReady to be made
- * Normally contains only one callback for upstream
- */
- RPointerArray<MDunEndpointReady> iERCallbacks;
-
- /**
* Pointer to common utility class
* Not own.
*/
--- a/localconnectivityservice/dun/utils/inc/DunTransporter.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/inc/DunTransporter.h Mon May 03 13:21:36 2010 +0300
@@ -188,35 +188,6 @@
};
/**
- * Notification interface class to report endpoint readiness
- *
- * @lib dunutils.lib
- * @since S60 v5.0
- */
-NONSHARABLE_CLASS( MDunEndpointReady )
- {
-
-public:
-
- /**
- * Gets called when endpoint is ready
- *
- * @since S60 5.0
- * @return None
- */
- virtual void NotifyEndpointReady() = 0;
-
- /**
- * Gets called when endpoint is not ready
- *
- * @since S60 5.0
- * @return None
- */
- virtual void NotifyEndpointNotReady() = 0;
-
- };
-
-/**
* Notification interface class to report service advertisement status changes
*
* @lib dunutils.lib
--- a/localconnectivityservice/dun/utils/src/DunDataPusher.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/src/DunDataPusher.cpp Mon May 03 13:21:36 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"
@@ -312,7 +312,6 @@
// Don't initialize iStreamCallback here (it is set through NewL)
iPushState = EDunStateIdle;
iEventIndex = 0;
- iEPReady = EFalse;
iSocket = NULL;
iComm = NULL;
}
@@ -336,13 +335,6 @@
return KErrGeneral;
}
iStatus = KRequestPending;
- if ( !iEPReady )
- {
- SetActive();
- TRequestStatus* requestStatus = &iStatus;
- User::RequestComplete( requestStatus, KErrNone );
- return KErrNone;
- }
const TDesC8 *pushedData = iEventQueue[iEventIndex].iPushedData;
if ( iComm )
{
@@ -455,27 +447,3 @@
}
FTRACE(FPrint( _L("CDunDataPusher::DoCancel() complete" )));
}
-
-// ---------------------------------------------------------------------------
-// From class MDunEndpointReady.
-// Gets called when endpoint is ready
-// ---------------------------------------------------------------------------
-//
-void CDunDataPusher::NotifyEndpointReady()
- {
- FTRACE(FPrint( _L("CDunDataPusher::NotifyEndpointReady()" )));
- iEPReady = ETrue;
- FTRACE(FPrint( _L("CDunDataPusher::NotifyEndpointReady() complete" )));
- }
-
-// ---------------------------------------------------------------------------
-// From class MDunEndpointReady.
-// Gets called when endpoint is not ready
-// ---------------------------------------------------------------------------
-//
-void CDunDataPusher::NotifyEndpointNotReady()
- {
- FTRACE(FPrint( _L("CDunDataPusher::NotifyEndpointNotReady()" )));
- iEPReady = EFalse;
- FTRACE(FPrint( _L("CDunDataPusher::NotifyEndpointNotReady() complete" )));
- }
--- a/localconnectivityservice/dun/utils/src/DunDownstream.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/src/DunDownstream.cpp Mon May 03 13:21:36 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"
@@ -143,17 +143,6 @@
}
// ---------------------------------------------------------------------------
-// Gets the endpoint readiness handler
-// ---------------------------------------------------------------------------
-//
-MDunEndpointReady* CDunDownstream::EndpointReadyHandler()
- {
- FTRACE(FPrint( _L("CDunDownstream::EndpointReadyHandler()" ) ));
- FTRACE(FPrint( _L("CDunDownstream::EndpointReadyHandler() complete" ) ));
- return iPushData.iDataPusher;
- }
-
-// ---------------------------------------------------------------------------
// Starts downstream by issuing read request
// ---------------------------------------------------------------------------
//
--- a/localconnectivityservice/dun/utils/src/DunSignalCopy.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/src/DunSignalCopy.cpp Mon May 03 13:21:36 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"
@@ -65,8 +65,6 @@
Stop();
// AddCallback()
iCallbacks.Close();
- // AddWriteReadyCallback()
- iERCallbacks.Close();
// Internal
Initialize();
FTRACE(FPrint( _L("CDunSignalCopy::ResetData() complete") ));
@@ -102,35 +100,6 @@
}
// ---------------------------------------------------------------------------
-// Adds callback for endpoint readiness
-// The callback will be called when the endpoint is ready or not ready
-// ---------------------------------------------------------------------------
-//
-TInt CDunSignalCopy::AddEndpointReadyCallback( MDunEndpointReady* aERCallback )
- {
- FTRACE(FPrint( _L("CDunSignalCopy::AddEndpointReadyCallback()" ) ));
- if ( !aERCallback )
- {
- FTRACE(FPrint( _L("CDunSignalCopy::AddEndpointReadyCallback() (aERCallback) not initialized!" ) ));
- return KErrGeneral;
- }
- TInt retTemp = iERCallbacks.Find( aERCallback );
- if ( retTemp != KErrNotFound )
- {
- FTRACE(FPrint( _L("CDunSignalCopy::AddEndpointReadyCallback() (already exists) complete" ) ));
- return KErrAlreadyExists;
- }
- retTemp = iERCallbacks.Append( aERCallback );
- if ( retTemp != KErrNone )
- {
- FTRACE(FPrint( _L("CDunSignalCopy::AddEndpointReadyCallback() (append failed!) complete" ) ));
- return retTemp;
- }
- FTRACE(FPrint( _L("CDunSignalCopy::AddEndpointReadyCallback() complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
// Sets media to use for this endpoint monitor
// ---------------------------------------------------------------------------
//
@@ -336,13 +305,11 @@
FTRACE(FPrint( _L("CDunSignalCopy::ManageSignalChangeUpstream() checking RTS..." ) ));
if ( iSignals & KSignalRTS ) // RTS changed to high
{
- ReportEndpointReady( ETrue );
ChangeUpstreamSignal( KSignalRTS, 0 );
FTRACE(FPrint( _L("CDunSignalCopy::ManageSignalChangeUpstream() RTS changed high" ) ));
}
else // RTS changed to low
{
- ReportEndpointReady( EFalse );
ChangeUpstreamSignal( 0, KSignalRTS );
FTRACE(FPrint( _L("CDunSignalCopy::ManageSignalChangeUpstream() RTS changed low" ) ));
}
@@ -465,28 +432,6 @@
}
// ---------------------------------------------------------------------------
-// Reports endpoint ready or not ready
-// ---------------------------------------------------------------------------
-//
-void CDunSignalCopy::ReportEndpointReady( TBool aReady )
- {
- FTRACE(FPrint( _L("CDunSignalCopy::ReportEndpointReady()" ) ));
- TInt count = iERCallbacks.Count();
- for ( TInt i=0; i<count; i++ )
- {
- if ( aReady )
- {
- iERCallbacks[i]->NotifyEndpointReady();
- }
- else // not ready
- {
- iERCallbacks[i]->NotifyEndpointNotReady();
- }
- }
- FTRACE(FPrint( _L("CDunSignalCopy::ReportEndpointReady() complete" ) ));
- }
-
-// ---------------------------------------------------------------------------
// From class CActive.
// Gets called when line status changes
// ---------------------------------------------------------------------------
--- a/localconnectivityservice/dun/utils/src/DunSignalNotify.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/src/DunSignalNotify.cpp Mon May 03 13:21:36 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-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"
@@ -65,8 +65,6 @@
Stop();
// AddCallback()
iCallbacks.Close();
- // AddEndpointReadyCallback()
- iERCallbacks.Close();
// Internal
Initialize();
FTRACE(FPrint( _L("CDunSignalNotify::ResetData() complete") ));
@@ -103,37 +101,6 @@
}
// ---------------------------------------------------------------------------
-// Adds callback for endpoint readiness
-// The callback will be called when the endpoint is ready or not ready
-// ---------------------------------------------------------------------------
-//
-TInt CDunSignalNotify::AddEndpointReadyCallback(
- MDunEndpointReady* aERCallback )
- {
- FTRACE(FPrint( _L("CDunSignalNotify::AddEndpointReadyCallback()" ) ));
- if ( !aERCallback )
- {
- FTRACE(FPrint( _L("CDunSignalNotify::AddEndpointReadyCallback() (aERCallback) not initialized!" ) ));
- return KErrGeneral;
- }
- TInt retTemp = iERCallbacks.Find( aERCallback );
- if ( retTemp != KErrNotFound )
- {
- FTRACE(FPrint( _L("CDunSignalNotify::AddEndpointReadyCallback() (already exists) complete" ) ));
- return KErrAlreadyExists;
- }
- retTemp = iERCallbacks.Append( aERCallback );
- if ( retTemp != KErrNone )
- {
- FTRACE(FPrint( _L("CDunSignalNotify::AddEndpointReadyCallback() (append failed!) complete" ) ));
- return retTemp;
- }
- ReportEndpointReady( ETrue ); // report immediately as this is a hack
- FTRACE(FPrint( _L("CDunSignalNotify::AddEndpointReadyCallback() complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
// Sets media to use for this endpoint monitor
// ---------------------------------------------------------------------------
//
@@ -375,28 +342,6 @@
}
// ---------------------------------------------------------------------------
-// Reports endpoint ready or not ready
-// ---------------------------------------------------------------------------
-//
-void CDunSignalNotify::ReportEndpointReady( TBool aReady )
- {
- FTRACE(FPrint( _L("CDunSignalNotify::ReportEndpointReady()" ) ));
- TInt count = iERCallbacks.Count();
- for ( TInt i=0; i<count; i++ )
- {
- if ( aReady )
- {
- iERCallbacks[i]->NotifyEndpointReady();
- }
- else // not ready
- {
- iERCallbacks[i]->NotifyEndpointNotReady();
- }
- }
- FTRACE(FPrint( _L("CDunSignalNotify::ReportEndpointReady() complete" ) ));
- }
-
-// ---------------------------------------------------------------------------
// From class CActive.
// Gets called when line status changes
// ---------------------------------------------------------------------------
--- a/localconnectivityservice/dun/utils/src/DunTransUtils.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/dun/utils/src/DunTransUtils.cpp Mon May 03 13:21:36 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-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"
@@ -651,7 +651,6 @@
CDunUpstream* upstream = channelData.iUpstreamRW;
CDunDownstream* downstream = channelData.iDownstreamRW;
- // Set command notify endpoint readiness callbacks
if ( aDirection == EDunReaderUpstream )
{
// Initialize stream for AT parsing (ignore errors)
@@ -676,9 +675,6 @@
{
// Add callback (ignore errors)
channelData.iUpstreamSignalCopy->AddCallback( aCallback );
- // Add endpoint readiness callback (ignore errors )
- MDunEndpointReady* erHandler = downstream->EndpointReadyHandler();
- channelData.iUpstreamSignalCopy->AddEndpointReadyCallback( erHandler );
}
}
else if ( streamType == EDunStreamTypeDownstream )
@@ -688,8 +684,6 @@
{
// Add callback (ignore errors)
channelData.iDownstreamSignalCopy->AddCallback( aCallback );
- // Note: Nokia's adaptation doesn't support full signals so don't
- // add the endpoint readiness callback here
}
}
else
@@ -709,9 +703,6 @@
}
// Add callback (ignore errors)
channelData.iSignalNotify->AddCallback( aCallback );
- // Add endpoint readiness callback (ignore errors )
- MDunEndpointReady* erHandler = downstream->EndpointReadyHandler();
- channelData.iSignalNotify->AddEndpointReadyCallback( erHandler );
}
// Add callback (ignore errors)
--- a/localconnectivityservice/obexreceiveservices/mtmuibluetooth/src/btmtmuidata.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexreceiveservices/mtmuibluetooth/src/btmtmuidata.cpp Mon May 03 13:21:36 2010 +0300
@@ -31,6 +31,8 @@
#include <obexutilsmessagehandler.h>
+const TInt KBtMtmUiNfcContext = 2;
+
// ================= MEMBER FUNCTIONS =======================
// Two-phased constructor.
@@ -129,7 +131,16 @@
const CBaseMtmUiData::CBitmapArray& CBtMtmUiData::ContextIcon( const TMsvEntry& aContext,
TInt /*aStateFlags*/) const
{
- TInt icon = TObexUtilsUiLayer::ContextIcon( aContext, EBluetooth );
+ // Check if NFC context
+ TInt icon = 0;
+ if ( aContext.MtmData1() == KBtMtmUiNfcContext )
+ {
+ icon = TObexUtilsUiLayer::ContextIcon( aContext, ENfc );
+ }
+ else
+ {
+ icon = TObexUtilsUiLayer::ContextIcon( aContext, EBluetooth );
+ }
return *iIconArrays->At( icon/2 );
}
--- a/localconnectivityservice/obexserviceman/group/obexserviceman.mmp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexserviceman/group/obexserviceman.mmp Mon May 03 13:21:36 2010 +0300
@@ -28,7 +28,7 @@
CAPABILITY CAP_SERVER CommDD NetworkControl LocalServices
VENDORID VID_DEFAULT
-EPOCHEAPSIZE 0x500 0x400000
+EPOCHEAPSIZE 0x500 0x800000
EPOCSTACKSIZE 0x4000
--- a/localconnectivityservice/obexserviceman/utils/inc/obexutilsuilayer.h Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexserviceman/utils/inc/obexutilsuilayer.h Mon May 03 13:21:36 2010 +0300
@@ -52,7 +52,8 @@
enum TContextMedia
{
EBluetooth,
- EInfrared
+ EInfrared,
+ ENfc
};
/**
--- a/localconnectivityservice/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp Mon May 03 13:21:36 2010 +0300
@@ -28,7 +28,7 @@
#include <avkon.mbg>
#include <avkon.rsg>
#include <bautils.h>
-#include <BtuiViewResources.rsg> // Compiled resource ids
+//#include <BtuiViewResources.rsg> // Compiled resource ids
#include <e32math.h>
#include <StringLoader.h> // Localisation stringloader
--- a/localconnectivityservice/obexserviceman/utils/src/obexutilslaunchwaiter.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexserviceman/utils/src/obexutilslaunchwaiter.cpp Mon May 03 13:21:36 2010 +0300
@@ -90,7 +90,7 @@
TDataType dataType = attachInfo->MimeType();
TFileName filePath;
filePath = attachInfo->FilePath();
-
+
TInt error = KErrNone;
TBool isCompleteSelf = EFalse;
CEikonEnv* eikEnv = CEikonEnv::Static();
@@ -123,18 +123,35 @@
paramList->AppendL( paramSave );
if ( eikEnv )
- {
-
+ {
iDocumentHandler = CDocumentHandler::NewL( eikEnv->Process() );
iDocumentHandler->SetExitObserver( this );
- RFile64 shareableFile;
- TRAP( error, iDocumentHandler->OpenTempFileL(filePath,shareableFile));
- if ( error == KErrNone)
+ RFs rfs;
+ User::LeaveIfError( rfs.Connect() );
+ if ( BaflUtils::FileExists( rfs, filePath ) )
{
- TRAP( error, iDocumentHandler->OpenFileEmbeddedL( shareableFile, dataType, *paramList));
- }
- shareableFile.Close();
- if ( error == KErrNotFound )
+ RFile64 shareableFile;
+ TRAP( error, iDocumentHandler->OpenTempFileL(filePath,shareableFile));
+ if ( error == KErrNone)
+ {
+ TRAP( error, iDocumentHandler->OpenFileEmbeddedL( shareableFile, dataType, *paramList));
+ }
+ shareableFile.Close();
+
+ if ( error == KErrNotSupported )
+ {
+ delete iDocumentHandler;
+ iDocumentHandler = NULL;
+
+ const TInt sortMethod = 2; // 0 = 'By name', 1 = 'By type',
+ // 2 = 'Most recent first' and 3 = 'Largest first'
+ TRAP (error, TObexUtilsUiLayer::LaunchFileManagerL( filePath,
+ sortMethod,
+ ETrue )); // ETrue -> launch file manager in embedded mode.
+ isCompleteSelf = ETrue;
+ } // KErrNotSupported
+ }
+ else
{
error = KErrNone;
TFileName fileName;
@@ -152,25 +169,14 @@
}
}
isCompleteSelf = ETrue;
- } // KErrNotFound
+ }
+
+ rfs.Close();
} // eikEnv
-
- else if ( error == KErrNotSupported )
- {
- delete iDocumentHandler;
- iDocumentHandler = NULL;
-
- const TInt sortMethod = 2; // 0 = 'By name', 1 = 'By type',
- // 2 = 'Most recent first' and 3 = 'Largest first'
- TRAP (error, TObexUtilsUiLayer::LaunchFileManagerL( filePath,
- sortMethod,
- ETrue )); // ETrue -> launch file manager in embedded mode.
- isCompleteSelf = ETrue;
- } // KErrNotSupported
-
+
CleanupStack::PopAndDestroy(); // paramList
} // EMsvLinkedFile
-
+
// Set message to READ
TMsvEntry entry = aMessage->Entry();
@@ -178,9 +184,7 @@
aMessage->ChangeL( entry );
User::LeaveIfError ( error );
- CleanupStack::PopAndDestroy(3); // attachInfo, store, attachEntry
-
-
+ CleanupStack::PopAndDestroy(3); // attachInfo, store, attachEntry
iObserverRequestStatus = KRequestPending; // CMsvOperation (observer)
iStatus = KRequestPending; // CMsvOperation
--- a/localconnectivityservice/obexserviceman/utils/src/obexutilsmessagehandler.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsmessagehandler.cpp Mon May 03 13:21:36 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"
@@ -137,40 +137,51 @@
{
FLOG(_L("[OBEXUTILS]\t StoreAsRichTextL()"));
- // Read the file into buffer
-
- CBufFlat* buffer = CBufFlat::NewL( 16 );
- CleanupStack::PushL(buffer); // 1st push
-
TInt fileLength = 0;
User::LeaveIfError( aFile.Size( fileLength ) );
-
- buffer->ResizeL( fileLength );
- TPtr8 bufferPtr = buffer->Ptr(0);
-
- User::LeaveIfError( aFile.Read( bufferPtr ) );
+
+ // Calculate the number of blocks to read
+ const TInt blockSize = 128 * 1024;
+ TInt fullBlockCnt = fileLength / blockSize;
+ if (fileLength % blockSize > 0)
+ {
+ fullBlockCnt++;
+ }
+
+ CRichText* richText = ConstructRichTextLC(); // 1st, 2nd, 3rd push
+
+ RBuf8 buffer8;
+ CleanupClosePushL(buffer8); // 4th push
+ buffer8.CreateL( blockSize );
+ RBuf buffer16;
+ CleanupClosePushL(buffer16); // 5th push
+ buffer16.CreateL(blockSize);
- // In order for Bio to understand 8-bit binary data,
- // it needs to be stored in wide rich text object
- // in the low byte of each word with the upper byte as 0.
- // Do not use UTF8, just convert 8-bit to 16-bit.
-
- CRichText* richText = ConstructRichTextLC(); // 2nd, 3rd, 4th push
- HBufC* convert8BitTo16Bit = HBufC::NewLC(fileLength); // 5th push
- convert8BitTo16Bit->Des().Copy( bufferPtr );
- buffer->Reset(); // free unused memory before InsertL()
+ // Read the file into buffer in small chunks
+ TInt readBytes = 0;
+ for (TInt i = 0; i < fullBlockCnt; ++i)
+ {
+ User::LeaveIfError( aFile.Read( buffer8 ) );
- richText->InsertL(0, *convert8BitTo16Bit);
- CleanupStack::PopAndDestroy(convert8BitTo16Bit);
- // -1 pop: free unused memory before StoreBodyTextL()
+ // In order for Bio to understand 8-bit binary data,
+ // it needs to be stored in wide rich text object
+ // in the low byte of each word with the upper byte as 0.
+ // Do not use UTF8, just convert 8-bit to 16-bit.
+ buffer16.Copy( buffer8 );
+
+ richText->InsertL(readBytes, buffer16);
+ readBytes += buffer8.Length();
+ }
+ CleanupStack::PopAndDestroy(2, &buffer8);
+ // -2 pop: free unused memory before StoreBodyTextL()
CMsvStore* parentStore = aParentEntry->EditStoreL();
- CleanupStack::PushL(parentStore); // 5th push
+ CleanupStack::PushL(parentStore); // 4th push
parentStore->StoreBodyTextL(*richText);
parentStore->CommitL();
- CleanupStack::PopAndDestroy(5); // parentStore, richText, richParaFormatLayer,
- // richCharFormatLayer, buffer
+ CleanupStack::PopAndDestroy(4); // parentStore, richText, richParaFormatLayer,
+ // richCharFormatLayer
FLOG(_L("[OBEXUTILS]\t StoreAsRichTextL() completed"));
}
@@ -327,10 +338,10 @@
TPtrC mimeType16(buf16->Des());
CleanupStack::PopAndDestroy(); // buf16
- CUpdateMusicCollection* updateMusiccollection =CUpdateMusicCollection::NewL() ;
- if (updateMusiccollection->isSupported(mimeType16))
+ CUpdateMusicCollection* updateMusicCollection = CUpdateMusicCollection::NewL() ;
+ if (updateMusicCollection->isSupported(mimeType16))
{
- updateMusiccollection->addToCollectionL(aFileName);
+ updateMusicCollection->addToCollectionL(aFileName);
}
aAttachInfo->SetMimeTypeL( mimeType );
--- a/localconnectivityservice/obexserviceman/utils/src/obexutilsuilayer.cpp Fri Apr 16 15:55:04 2010 +0300
+++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsuilayer.cpp Mon May 03 13:21:36 2010 +0300
@@ -59,6 +59,9 @@
const TInt KFileManagerUID3 = 0x101F84EB; /// File Manager application UID3
const TInt KUiNumberOfZoomStates = 2; // second for the mask
const TInt KSortNumMax = 2;
+const TInt KNfcUnreadIconIndex = 10;
+const TInt KNfcReadIconIndex = 8;
+
// ============================ MEMBER FUNCTIONS ===============================
@@ -389,6 +392,17 @@
icon = EMbmMuiuQgn_prop_mce_ir_read - EMbmMuiuQgn_prop_mce_ir_unread;
}
}
+ else if( aMedia == ENfc )
+ {
+ if( aContext.Unread() )
+ {
+ icon = KNfcUnreadIconIndex;
+ }
+ else
+ {
+ icon = KNfcReadIconIndex;
+ }
+ }
FLOG(_L("[OBEXUTILS]\t TObexUtilsUiLayer::ContextIcon() completed"));
@@ -505,6 +519,14 @@
KAknsIIDQgnPropMceBtRead,
EMbmMuiuQgn_prop_mce_bt_read,
aIconArrays);
+ CreateAndAppendBitmapL(
+ KAknsIIDQgnPropMceNfcRead,
+ 0,
+ aIconArrays);
+ CreateAndAppendBitmapL(
+ KAknsIIDQgnPropMceNfcUnread,
+ 0,
+ aIconArrays);
}
else //Infrared
{
--- a/shortlinkconn_plat/dun_secondary_display_notification_api/group/bld.inf Fri Apr 16 15:55:04 2010 +0300
+++ b/shortlinkconn_plat/dun_secondary_display_notification_api/group/bld.inf Mon May 03 13:21:36 2010 +0300
@@ -23,4 +23,4 @@
DEFAULT
PRJ_EXPORTS
-../inc/secondarydisplay/dunsecondarydisplayapi.h MW_LAYER_PLATFORM_EXPORT_PATH(secondarydisplay/dunsecondarydisplayapi.h)
+../inc/secondarydisplay/dunsecondarydisplayapi.h MW_LAYER_PLATFORM_EXPORT_PATH(SecondaryDisplay/dunsecondarydisplayapi.h)
--- a/shortlinkconn_plat/obex_secondary_display_notification_api/group/bld.inf Fri Apr 16 15:55:04 2010 +0300
+++ b/shortlinkconn_plat/obex_secondary_display_notification_api/group/bld.inf Mon May 03 13:21:36 2010 +0300
@@ -24,4 +24,4 @@
PRJ_EXPORTS
-../inc/secondarydisplay/obexutilssecondarydisplayapi.h MW_LAYER_PLATFORM_EXPORT_PATH(secondarydisplay/obexutilssecondarydisplayapi.h)
+../inc/secondarydisplay/obexutilssecondarydisplayapi.h MW_LAYER_PLATFORM_EXPORT_PATH(SecondaryDisplay/obexutilssecondarydisplayapi.h)