tactilefeedback/tactilefeedbackresolver/src/tactilefeedbacksrv.cpp
changeset 0 d54f32e146dd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tactilefeedback/tactilefeedbackresolver/src/tactilefeedbacksrv.cpp	Thu Dec 17 08:53:38 2009 +0200
@@ -0,0 +1,223 @@
+/*
+* Copyright (c) 2008 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:  Tactile feedback server implementation.
+* Part of:      Tactile Feedback.
+*
+*/
+
+#include <e32debug.h>
+#include <touchlogicalfeedback.h>
+
+#include "tactilefeedbacksrv.h"
+#include "tactilefeedbacksession.h"
+
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::NewLC
+// 2-phased constructor.
+// --------------------------------------------------------------------------
+//
+CTactileFeedbackSrv* CTactileFeedbackSrv::NewL()
+    {
+    CTactileFeedbackSrv* self = new (ELeave) CTactileFeedbackSrv();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::CTactileFeedbackSrv()
+// C++ constructor.
+// --------------------------------------------------------------------------
+//
+CTactileFeedbackSrv::CTactileFeedbackSrv() 
+    : CPolicyServer( EPriorityNormal, 
+                     KTactileFeedbackPolicy, 
+                     ESharableSessions ),
+      iSessionCount(0)
+    {
+    // Vibra and audio feedbacks are enabled by default.
+    iDeviceFeedbackEnabled |= ETouchFeedbackAudio;
+    iDeviceFeedbackEnabled |= ETouchFeedbackVibra;
+    }
+
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::ConstructL
+// 2nd phase constructor.
+// --------------------------------------------------------------------------
+//
+void CTactileFeedbackSrv::ConstructL()
+    {
+    StartL( KTactileFeedbackServer );
+    iResolver = CTactileFeedbackResolver::NewL();
+    }
+
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::~CTactileFeedbackSrv()
+// C++ destructor.
+// --------------------------------------------------------------------------
+//
+CTactileFeedbackSrv::~CTactileFeedbackSrv()
+    {
+    delete iResolver;
+    }
+
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::NewSessionL
+// from CServer2, creates a new session.
+// --------------------------------------------------------------------------
+//
+CSession2* CTactileFeedbackSrv::NewSessionL( const TVersion& aVersion, 
+                                             const RMessage2& /*aMsg*/ ) const
+    {
+    TBool supported = User::QueryVersionSupported( TVersion( 
+                                                KTactileFeedbackServerMajor,
+                                                KTactileFeedbackServerMinor,
+                                                KTactileFeedbackServerBuild ),
+                                                aVersion ); 
+    if ( !supported )
+        {
+        User::Leave( KErrNotSupported );
+        }
+        
+    return new (ELeave) CTactileFeedbackSession();  
+    }   
+    
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::AddSession
+// --------------------------------------------------------------------------
+//  
+void CTactileFeedbackSrv::AddSession()  
+    {
+    iSessionCount++;
+    }
+  
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::RemoveSession
+// --------------------------------------------------------------------------
+//    
+void CTactileFeedbackSrv::RemoveSession()
+    {
+    iSessionCount--;
+    if ( !iSessionCount )
+        {
+        CActiveScheduler::Stop();
+        }
+    }    
+    
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::PlayFeedback
+// --------------------------------------------------------------------------
+//    
+void CTactileFeedbackSrv::PlayFeedback( TTouchLogicalFeedback aFeedback,
+                                        TBool aPlayHaptics,
+                                        TBool aPlayAudio )
+    {
+    TBool playHaptics(EFalse);
+    TBool playAudio(EFalse);    
+    
+    if ( (iDeviceFeedbackEnabled & ETouchFeedbackVibra) && aPlayHaptics )
+        {
+        playHaptics = ETrue;
+        }    
+    if ( (iDeviceFeedbackEnabled & ETouchFeedbackAudio) && aPlayAudio )
+        {
+        playAudio = ETrue;
+        }
+
+    if ( playHaptics || playAudio )
+        {
+        iResolver->PlayFeedback( aFeedback, playHaptics, playAudio );
+        }        
+    }        
+
+// --------------------------------------------------------------------------
+// CTactileFeedbackSrv::StartFeedback
+// --------------------------------------------------------------------------
+//    
+void CTactileFeedbackSrv::StartFeedback( TTouchContinuousFeedback aType,
+                                         TInt aIntensity )
+    {
+    iResolver->StartFeedback( aType, aIntensity );    
+    }
+        
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::ModifyFeedback.
+// ---------------------------------------------------------------------------
+//                        
+void CTactileFeedbackSrv::ModifyFeedback( TInt aIntensity )
+    {
+    iResolver->ModifyFeedback( aIntensity );    
+    }
+    
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::StopFeedback.
+// ---------------------------------------------------------------------------
+//    
+void CTactileFeedbackSrv::StopFeedback()
+    {
+    iResolver->StopFeedback();   
+    }
+
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::EnableFeedbackForDevice
+// ---------------------------------------------------------------------------
+//    
+void CTactileFeedbackSrv::EnableFeedbackForDevice( TTouchFeedbackType aFeedbackType )
+    {
+    iDeviceFeedbackEnabled = aFeedbackType;
+    }
+
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::FeedbackEnabledForDeviceL
+// ---------------------------------------------------------------------------
+//
+TTouchFeedbackType CTactileFeedbackSrv::FeedbackEnabledForDevice()
+    {
+    return static_cast<TTouchFeedbackType>( iDeviceFeedbackEnabled );
+    }
+
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::PlayPreviewFeedbackL
+// ---------------------------------------------------------------------------
+//
+void CTactileFeedbackSrv::PlayPreviewFeedback( TInt aLevel,
+                                              TTouchLogicalFeedback aFeedback,
+                                              TTouchFeedbackType aType )
+    {
+    iResolver->PlayPreviewFeedback( aLevel, aFeedback, aType );
+    }
+
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::StartPreviewFeedbackL
+// ---------------------------------------------------------------------------
+//
+void CTactileFeedbackSrv::StartPreviewFeedback( TInt aLevel,
+                                          TTouchContinuousFeedback aFeedback,
+                                          TInt aIntensity,
+                                          TTouchFeedbackType aType )
+    {
+    iResolver->StartPreviewFeedback( aLevel, aFeedback, aIntensity, aType );
+    }
+
+// ---------------------------------------------------------------------------
+// CTactileFeedbackSrv::StopPreviewFeedbackL
+// ---------------------------------------------------------------------------
+//
+void CTactileFeedbackSrv::StopPreviewFeedback()
+    {
+    iResolver->StopPreviewFeedback();
+    }
+
+// End of file