javauis/amms_akn/src_tuner/native/src/cammstunercontrol.cpp
branchRCL_3
changeset 83 26b2b12093af
parent 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/amms_akn/src_tuner/native/src/cammstunercontrol.cpp	Wed Oct 13 14:23:59 2010 +0300
@@ -0,0 +1,504 @@
+/*
+* Copyright (c) 2005-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:  This class is used to control tuner
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CAMMSTunerControl.h"
+#include    "CAMMSTunerPlayer.h"
+#include    "CAMMSTunerPresetsHandler.h"
+#include    "TAMMSTunerPreset.h"
+#include    "AMMSTunerFactory.h"
+
+#include    <tuner.h>
+#include    <jdebug.h>
+
+
+// CONSTANTS
+_LIT(KControlImplName, "com.nokia.amms.control.tuner.TunerControlImpl");
+_LIT(KControlPublicName, "javax.microedition.amms.control.tuner.TunerControl");
+
+const TInt KStereoModeMono   = 1;
+const TInt KStereoModeStereo = 2;
+const TInt KStereoModeAuto   = 3;
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::CAMMSTunerControl
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CAMMSTunerControl::CAMMSTunerControl()
+{
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CAMMSTunerControl* CAMMSTunerControl::NewL()
+{
+    CAMMSTunerControl* self = new(ELeave) CAMMSTunerControl;
+
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CAMMSTunerControl::ConstructL()
+{
+    DEBUG("CAMMSTunerControl::ConstructL +");
+
+    iTunerUtility = CMMTunerUtility::NewL(*this,
+                                          CMMTunerUtility::ETunerBandFm,
+                                          1,
+                                          CMMTunerUtility::ETunerAccessPriorityNormal);
+
+    iActiveSchedulerWait = new(ELeave) CActiveSchedulerWait();
+
+    iPresetsHandler = CAMMSTunerPresetsHandler::NewL();
+
+    iMinFreq = MinFreqL();
+    iMaxFreq = MaxFreqL();
+
+    DEBUG("CAMMSTunerControl::ConstructL -");
+}
+
+
+// Destructor
+CAMMSTunerControl::~CAMMSTunerControl()
+{
+    DEBUG("CAMMSTunerControl::~CAMMSTunerControl +");
+    delete iTunerUtility;
+    delete iActiveSchedulerWait;
+    delete iPresetsHandler;
+    DEBUG("CAMMSTunerControl::~CAMMSTunerControl -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::TunerUtility()
+// -----------------------------------------------------------------------------
+CMMTunerUtility* CAMMSTunerControl::TunerUtility()
+{
+    DEBUG("CAMMSTunerControl::TunerUtility");
+    return iTunerUtility;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MinFreq()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::MinFreqL()
+{
+    DEBUG("CAMMSTunerControl::MinFreqL +");
+    TFrequency minFreq;
+    TFrequency maxFreq;
+    User::LeaveIfError(iTunerUtility->GetFrequencyBandRange(minFreq,
+                       maxFreq));
+    DEBUG_INT("CAMMSTunerControl::MinFreqL = %d", minFreq.iFrequency);
+    return minFreq.iFrequency;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MaxFreq()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::MaxFreqL()
+{
+    DEBUG("CAMMSTunerControl::MaxFreqL +");
+    TFrequency minFreq;
+    TFrequency maxFreq;
+    User::LeaveIfError(iTunerUtility->GetFrequencyBandRange(minFreq,
+                       maxFreq));
+    DEBUG_INT("CAMMSTunerControl::MaxFreqL = %d", maxFreq.iFrequency);
+    return maxFreq.iFrequency;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SetFrequency()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::SetFrequencyL(TInt aFreq)
+{
+    DEBUG("CAMMSTunerControl::SetFrequency +");
+    if (aFreq < iMinFreq || aFreq > iMaxFreq)
+    {
+        User::Leave(KErrArgument);
+    }
+
+    TFrequency freq = TFrequency(aFreq);
+
+    TUint32 state = 0;
+    iTunerUtility->GetState(state);
+    DEBUG_INT("CAMMSTunerControl::SetFrequency, state = %d", state);
+
+    DEBUG_INT("CAMMSTunerControl::SetFrequency = %d", freq.iFrequency);
+
+    iTunerUtility->Tune(freq);
+    if (!iActiveSchedulerWait->IsStarted())
+    {
+        iActiveSchedulerWait->Start();  // CSI: 10 Active object state already checked. #
+    }
+    DEBUG("CAMMSTunerControl::SetFrequency -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::Frequency()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::FrequencyL()
+{
+    DEBUG("CAMMSTunerControl::Frequency +");
+    TFrequency freq;
+
+    User::LeaveIfError(iTunerUtility->GetFrequency(freq));
+    TInt frequency = freq.iFrequency;
+    DEBUG_INT("CAMMSTunerControl::Frequency frequency = %d", frequency);
+    return frequency;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SeekL()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::SeekL(TInt aStartFreq, TBool aUpwards)
+{
+    DEBUG("CAMMSTunerControl::SeekL +");
+    if (aStartFreq < iMinFreq || aStartFreq > iMaxFreq)
+    {
+        User::Leave(KErrArgument);
+    }
+
+    if (aUpwards)
+    {
+        iTunerUtility->StationSeek(CMMTunerUtility::ESearchDirectionUp);
+        if (!iActiveSchedulerWait->IsStarted())
+        {
+            iActiveSchedulerWait->Start();  // CSI: 10 Active object state already checked. #
+        }
+    }
+    else
+    {
+        iTunerUtility->StationSeek(CMMTunerUtility::ESearchDirectionDown);
+        if (!iActiveSchedulerWait->IsStarted())
+        {
+            iActiveSchedulerWait->Start();  // CSI: 10 Active object state already checked. #
+        }
+    }
+
+    return FrequencyL();
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SquelchL()
+// -----------------------------------------------------------------------------
+TBool CAMMSTunerControl::SquelchL()
+{
+    DEBUG("CAMMSTunerControl::SquelchL +");
+    TBool enabled = EFalse;
+    User::LeaveIfError(iTunerUtility->GetSquelch(enabled));
+    return enabled;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SetSquelchL()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::SetSquelchL(TBool aSquelch)
+{
+    DEBUG("CAMMSTunerControl::SetSquelchL +");
+    User::LeaveIfError(iTunerUtility->SetSquelch(aSquelch));
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SignalStrengthL()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::SignalStrengthL()
+{
+    DEBUG("CAMMSTunerControl::SignalStrengthL +");
+    TInt maxSignalStrength = 0;
+    TInt signalStrength = 0;
+
+    User::LeaveIfError(iTunerUtility->GetMaxSignalStrength(maxSignalStrength));
+    DEBUG_INT("CAMMSTunerControl::SignalStrengthL, maxSignalStrength = %d", maxSignalStrength);
+    User::LeaveIfError(iTunerUtility->GetSignalStrength(signalStrength));
+    DEBUG_INT("CAMMSTunerControl::SignalStrengthL, signalStrength = %d", signalStrength);
+    if (maxSignalStrength > 0)
+    {
+        return signalStrength / maxSignalStrength * 100; // CSI: 47 signal strength must be between 0 and 100 #
+    }
+    return KErrNotSupported;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::StereoModeL()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::StereoModeL()
+{
+    DEBUG("CAMMSTunerControl::StereoModeL +");
+    TBool mono = EFalse;
+    TBool stereo = EFalse;
+
+    User::LeaveIfError(iTunerUtility->GetForcedMonoReception(mono));
+    if (mono)
+    {
+        return KStereoModeMono;
+    }
+
+    //User::LeaveIfError( iTunerUtility->IsStereoSignal( stereo ) );
+    TInt err = iTunerUtility->IsStereoSignal(stereo);
+    //this is for emulator testing, FIX IT
+    if (err == KErrNotReady)
+    {
+        return KStereoModeAuto;
+    }
+    else if (err != KErrNone)
+    {
+        User::LeaveIfError(err);
+    }
+
+    if (stereo)
+    {
+        return KStereoModeStereo;
+    }
+
+    return KStereoModeAuto;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SetStereoMode()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::SetStereoModeL(TInt aMode)
+{
+    DEBUG("CAMMSTunerControl::SetStereoModeL +");
+    if (aMode == KStereoModeMono)
+    {
+        User::LeaveIfError(iTunerUtility->ForceMonoReception(ETrue));
+    }
+
+    if (aMode == KStereoModeStereo)
+    {
+        User::LeaveIfError(iTunerUtility->ForceMonoReception(EFalse));
+        TBool stereo = EFalse;
+        User::LeaveIfError(iTunerUtility->IsStereoSignal(stereo));
+        if (!stereo)
+        {
+            User::Leave(KErrNotSupported);
+        }
+    }
+
+    if (aMode == KStereoModeAuto)
+    {
+        User::LeaveIfError(iTunerUtility->ForceMonoReception(EFalse));
+    }
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::UsePresetL()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::UsePresetL(TInt aPreset)
+{
+    DEBUG("CAMMSTunerControl::UsePresetL +");
+    TAMMSTunerPreset tunerPreset;
+
+    //get presets
+    iPresetsHandler->GetPresetL(aPreset, tunerPreset);
+
+    //set presets to tunerutility
+    SetFrequencyL(tunerPreset.PresetFrequency());
+    SetStereoModeL(tunerPreset.PresetStereoMode());
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SetPresetL()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::SetPresetL(TInt aPreset)
+{
+    DEBUG("CAMMSTunerControl::SetPresetL1 +");
+    TAMMSTunerPreset tunerPreset;
+
+    //get current frequency
+    tunerPreset.SetPresetFrequency(FrequencyL());
+    //get current stereo mode
+    tunerPreset.SetPresetStereoMode(StereoModeL());
+
+    iPresetsHandler->SavePresetL(aPreset, tunerPreset);
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SetPresetL()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::SetPresetL(TInt aPreset,
+                                   TInt aFrequency,
+                                   TInt aStereoMode)
+{
+    DEBUG("CAMMSTunerControl::SetPresetL2 +");
+    TAMMSTunerPreset tunerPreset;
+
+    tunerPreset.SetPresetFrequency(aFrequency);
+    tunerPreset.SetPresetStereoMode(aStereoMode);
+
+    iPresetsHandler->SavePresetL(aPreset, tunerPreset);
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::PresetFrequencyL()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::PresetFrequencyL(TInt aPreset)
+{
+    DEBUG("CAMMSTunerControl::PresetFrequencyL +");
+    TAMMSTunerPreset tunerPreset;
+
+    iPresetsHandler->GetPresetL(aPreset, tunerPreset);
+
+    return tunerPreset.PresetFrequency();
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::PresetStereoModeL()
+// -----------------------------------------------------------------------------
+TInt CAMMSTunerControl::PresetStereoModeL(TInt aPreset)
+{
+    DEBUG("CAMMSTunerControl::PresetStereoModeL +");
+    TAMMSTunerPreset tunerPreset;
+
+    iPresetsHandler->GetPresetL(aPreset, tunerPreset);
+
+    return tunerPreset.PresetStereoMode();
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::SetPresetNameL()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::SetPresetNameL(TInt aPreset, const TDesC* aPresetName)
+{
+    DEBUG("CAMMSTunerControl::SetPresetNameL +");
+    TAMMSTunerPreset tunerPreset;
+
+    iPresetsHandler->GetPresetL(aPreset, tunerPreset);
+
+    tunerPreset.SetPresetName(aPresetName);
+
+    iPresetsHandler->SavePresetL(aPreset, tunerPreset);
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::GetPresetNameL()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::GetPresetNameL(TInt aPreset, TPtrC* aPresetName)
+{
+    DEBUG("CAMMSTunerControl::GetPresetNameL +");
+    TAMMSTunerPreset tunerPreset;
+
+    iPresetsHandler->GetPresetL(aPreset, tunerPreset);
+
+    aPresetName->Set(tunerPreset.PresetName());
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::ClassName()
+// -----------------------------------------------------------------------------
+const TDesC& CAMMSTunerControl::ClassName() const
+{
+    return KControlImplName;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::PublicClassName()
+// -----------------------------------------------------------------------------
+const TDesC& CAMMSTunerControl::PublicClassName() const
+{
+    return KControlPublicName;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MToTuneComplete()
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MToTuneComplete(TInt aError)
+{
+    if (iActiveSchedulerWait->IsStarted())
+    {
+        DEBUG("CAMMSTunerControl::MToTuneComplete AsyncStop");
+        iActiveSchedulerWait->AsyncStop();
+    }
+    DEBUG_INT("CAMMSTunerControl::MToTuneComplete ERROR = %d", aError);
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MTcoFrequencyChanged
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MTcoFrequencyChanged(const TFrequency& /*aOldFrequency*/,
+        const TFrequency& /*aNewFrequency*/)
+{
+    DEBUG("CAMMSTunerControl::MTcoFrequencyChanged");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MTcoStateChanged
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MTcoStateChanged(const TUint32& /*aOldState*/,
+        const TUint32& /*aNewState*/)
+{
+    DEBUG("CAMMSTunerControl::MTcoStateChanged");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MTcoAntennaDetached
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MTcoAntennaDetached()
+{
+    DEBUG("CAMMSTunerControl::MTcoAntennaDetached");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MTcoAntennaAttached
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MTcoAntennaAttached()
+{
+    DEBUG("CAMMSTunerControl::MTcoAntennaAttached");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::FlightModeChanged
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::FlightModeChanged(TBool /*aFlightMode*/)
+{
+    DEBUG("CAMMSTunerControl::FlightModeChanged");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MTsoStereoReceptionChanged
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MTsoStereoReceptionChanged(TBool /*aStereo*/)
+{
+    DEBUG("CAMMSTunerControl::MTsoStereoReceptionChanged");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSTunerControl::MTsoForcedMonoChanged
+// -----------------------------------------------------------------------------
+void CAMMSTunerControl::MTsoForcedMonoChanged(TBool /*aForcedMono*/)
+{
+    DEBUG("CAMMSTunerControl::MTsoForcedMonoChanged");
+}
+
+//  End of File