--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btsap/src/BTSapState.cpp Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2004-2006 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 class is a base state class for all BTSap states
+*
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32property.h>
+#include <startupdomainpskeys.h>
+#include "BTSapDomainPSKeys.h"
+
+#include <btnotif.h>
+#include "BTSapServerState.h"
+#include "debug.h"
+
+CBTSapServerState::TState::TState(CBTSapServerState& aServerState)
+: iSimStatus(0),
+ iServerState(aServerState),
+ iResponseMessage(aServerState.BTSapResponseMessage()),
+ iStatus(NULL)
+ {
+ }
+
+TInt CBTSapServerState::TState::AcceptSapConnection()
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] TState: AcceptSapConnection: Not Ready#")));
+ return KErrNotReady;
+ }
+
+TInt CBTSapServerState::TState::RejectSapConnection(TBTSapRejectReason /*aReason*/)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] TState: RejectSapConnection: Not Ready#")));
+ return KErrNotReady;
+ }
+
+TInt CBTSapServerState::TState::DisconnectSapConnection(TBTSapDisconnectType /*aType*/)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] TState: DisconnectSapConnection: Not Ready#")));
+ return KErrNotReady;
+ }
+
+void CBTSapServerState::TState::SimCardStatusChanged(TCardStatus /*aCardStatus*/)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] TState: SimCardStatusChanged: Not Ready#")));
+ }
+
+TInt CBTSapServerState::TState::ChangeState(TBTSapServerState& aNextState)
+ {
+ TInt retVal = KErrNone;
+
+ if (aNextState != EStatePowerOff &&
+ aNextState != EStateReset &&
+ aNextState != EStateDisconnect)
+ {
+ aNextState = EStateIdle;
+ retVal = KErrNotSupported;
+ }
+
+ return retVal;
+ }
+
+void CBTSapServerState::TState::NotifySapState(TSapConnectionState aState)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_FUNCTIONS, BTSapPrintTrace(_L("[BTSap] NotifySapState: %d"), aState));
+
+ TBool simPresent = IsSimPresent();
+
+ switch(aState)
+ {
+ case ESapNotConnected:
+ {
+ // If the next state is ESapNotConnected, we need to verify the previous state
+ TInt previousState;
+ RProperty::Get(KPSUidBluetoothSapConnectionState, KBTSapConnectionState, previousState);
+
+ // Only show NotConnected if the previous state was connecting (ie. connection failed)
+ if(previousState == ESapConnecting)
+ {
+ if( simPresent )
+ {
+ StartBTNotifier(EBTSapFailed);
+ }
+ else
+ {
+ // Notify the user of the specific reason that connection
+ // could not be completed: there is no SIM present
+ StartBTNotifier(EBTSapNoSim);
+ }
+ }
+ break;
+ }
+
+ case ESapConnecting:
+ {
+ if( simPresent )
+ {
+ // Don't show the note if no SIM is present
+ StartBTNotifier(EBTEnterSap);
+ }
+ break;
+ }
+ case ESapConnected:
+ StartBTNotifier(EBTSapOk);
+ break;
+
+ default:
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] Invalid state!!! %d"), aState));
+ break;
+ }
+
+ RProperty::Set(KPSUidBluetoothSapConnectionState, KBTSapConnectionState, aState);
+ }
+
+void CBTSapServerState::TState::StartBTNotifier(TInt note)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_FUNCTIONS, BTSapPrintTrace(_L("[BTSap] StartBTNotifier: %d"), note));
+
+ RNotifier notifier;
+ TInt err = notifier.Connect();
+ if(err != KErrNone)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] NotifySapState: Couldn't connect to notifier: %d"), err));
+ }
+ else
+ {
+ TBTGenericInfoNotiferParamsPckg type;
+ type().iMessageType = (TBTGenericInfoNoteType) note;
+
+ err = notifier.StartNotifier(KBTGenericInfoNotifierUid, type);
+
+ if (err != KErrNone)
+ {
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_ERROR, BTSapPrintTrace(_L("[BTSap] NotifySapState: Couldn't start notifier: err = %d"), err));
+ }
+
+ notifier.Close();
+ }
+ }
+
+TBool CBTSapServerState::TState::IsSimPresent()
+ {
+#ifdef __WINS__
+
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_FUNCTIONS, BTSapPrintTrace(_L("[BTSap] CBTSapServerState::TStateConnect::IsSimPresent ON THE WINS SIDE")));
+ return ETrue;
+
+#else //__WINS__
+
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_FUNCTIONS, BTSapPrintTrace(_L("[BTSap] CBTSapServerState::TStateConnect::IsSimPresent, SimStatus: %d"), iSimStatus));
+
+ TInt err = KErrNone;
+ if( iSimStatus == 0 )
+ {
+ err = RProperty::Get(KPSUidStartup, KPSSimStatus, iSimStatus);
+ }
+ TBool retVal = !(err || iSimStatus == ESimNotPresent || iSimStatus == ESimNotSupported);
+
+ BTSAP_TRACE_OPT(KBTSAP_TRACE_INFO, BTSapPrintTrace(_L("[BTSap] TStateConnect::IsSimPresent: err = %d, retVal = %d"), err, retVal));
+ return retVal;
+
+#endif //__WINS__
+ }
+// End of File