radioengine/engine/src/cradiordsreceiverbase.cpp
changeset 24 6df133bd92e1
child 28 075425b8d9a4
equal deleted inserted replaced
23:a2b50a479edf 24:6df133bd92e1
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 // User includes
       
    19 #include "cradiopubsub.h"
       
    20 #include "cradiordsreceiverbase.h"
       
    21 #include "cradioenginelogger.h"
       
    22 
       
    23 // ======== MEMBER FUNCTIONS ========
       
    24 
       
    25 // ---------------------------------------------------------------------------
       
    26 //
       
    27 // ---------------------------------------------------------------------------
       
    28 //
       
    29 CRadioRdsReceiverBase::CRadioRdsReceiverBase( MRadioEngineSettings& aSettings )
       
    30     : iSettings( aSettings )
       
    31     {
       
    32     }
       
    33 
       
    34 // ---------------------------------------------------------------------------
       
    35 //
       
    36 // ---------------------------------------------------------------------------
       
    37 //
       
    38 void CRadioRdsReceiverBase::BaseConstructL()
       
    39     {
       
    40     iPsName = HBufC::NewL( TRdsPSName().MaxLength() );
       
    41     }
       
    42 
       
    43 // ---------------------------------------------------------------------------
       
    44 //
       
    45 // ---------------------------------------------------------------------------
       
    46 //
       
    47 CRadioRdsReceiverBase::~CRadioRdsReceiverBase()
       
    48     {
       
    49     iObservers.Close();
       
    50     delete iPsName;
       
    51     iRadioText.Close();
       
    52     }
       
    53 
       
    54 // ---------------------------------------------------------------------------
       
    55 //
       
    56 // ---------------------------------------------------------------------------
       
    57 //
       
    58 void CRadioRdsReceiverBase::AddObserverL( MRadioRdsDataObserver* aObserver )
       
    59     {
       
    60     TInt index = iObservers.FindInAddressOrder( aObserver );
       
    61     if ( index == KErrNotFound )
       
    62         {
       
    63         iObservers.InsertInAddressOrderL( aObserver );
       
    64         }
       
    65     }
       
    66 
       
    67 // ---------------------------------------------------------------------------
       
    68 //
       
    69 // ---------------------------------------------------------------------------
       
    70 //
       
    71 void CRadioRdsReceiverBase::RemoveObserver( MRadioRdsDataObserver* aObserver )
       
    72     {
       
    73     TInt index = iObservers.FindInAddressOrder( aObserver );
       
    74 
       
    75     if ( index >= 0 )
       
    76         {
       
    77         iObservers.Remove( index );
       
    78         }
       
    79     }
       
    80 
       
    81 // ---------------------------------------------------------------------------
       
    82 //
       
    83 // ---------------------------------------------------------------------------
       
    84 //
       
    85 TBool CRadioRdsReceiverBase::AutomaticSwitchingEnabled() const
       
    86     {
       
    87     return iAfEnabled;
       
    88     }
       
    89 
       
    90 // ---------------------------------------------------------------------------
       
    91 //
       
    92 // ---------------------------------------------------------------------------
       
    93 //
       
    94 const TDesC& CRadioRdsReceiverBase::ProgrammeService() const
       
    95     {
       
    96     return *iPsName;
       
    97     }
       
    98 
       
    99 // ---------------------------------------------------------------------------
       
   100 //
       
   101 // ---------------------------------------------------------------------------
       
   102 //
       
   103 const TDesC& CRadioRdsReceiverBase::RadioText() const
       
   104     {
       
   105     return iRadioText;
       
   106     }
       
   107 
       
   108 // ---------------------------------------------------------------------------
       
   109 //
       
   110 // ---------------------------------------------------------------------------
       
   111 //
       
   112 TBool CRadioRdsReceiverBase::SignalAvailable() const
       
   113     {
       
   114     return iSignalAvailable;
       
   115     }
       
   116 
       
   117 // ---------------------------------------------------------------------------
       
   118 //
       
   119 // ---------------------------------------------------------------------------
       
   120 //
       
   121 void CRadioRdsReceiverBase::SetAutomaticSwitchingL( TBool aEnable )
       
   122     {
       
   123     iAfEnabled = aEnable;
       
   124     for ( TInt i = 0 ; i < iObservers.Count(); i++ )
       
   125         {
       
   126         iObservers[i]->RdsAfSearchStateChange( iAfEnabled );
       
   127         }
       
   128     }
       
   129 
       
   130 // ---------------------------------------------------------------------------
       
   131 //
       
   132 // ---------------------------------------------------------------------------
       
   133 //
       
   134 void CRadioRdsReceiverBase::ClearRdsInformation()
       
   135     {
       
   136     iPsName->Des().Zero();
       
   137     iRadioText.Close();
       
   138 
       
   139     if ( iPubSub )
       
   140         {
       
   141         iPubSub->PublishRdsProgramService( *iPsName );
       
   142         }
       
   143 
       
   144     MrroRdsEventSignalChange( EFalse );
       
   145     }
       
   146 
       
   147 // ---------------------------------------------------------------------------
       
   148 //
       
   149 // ---------------------------------------------------------------------------
       
   150 //
       
   151 void CRadioRdsReceiverBase::MrroStationSeekByPTYComplete( TInt DEBUGVAR( aError ),
       
   152                                                           TInt DEBUGVAR( aFrequency ) )
       
   153     {
       
   154     LOG_FORMAT( "CRadioRdsReceiverBase::MrroStationSeekByPTYComplete: err: %d, frequency: %d ", aError, aFrequency );
       
   155     }
       
   156 
       
   157 // ---------------------------------------------------------------------------
       
   158 //
       
   159 // ---------------------------------------------------------------------------
       
   160 //
       
   161 void CRadioRdsReceiverBase::MrroStationSeekByTAComplete( TInt DEBUGVAR( aError ),
       
   162                                                          TInt DEBUGVAR( aFrequency ) )
       
   163     {
       
   164     LOG_FORMAT( "CRadioRdsReceiverBase::MrroStationSeekByTAComplete: err: %d, frequency: %d ", aError, aFrequency );
       
   165     }
       
   166 
       
   167 // ---------------------------------------------------------------------------
       
   168 //
       
   169 // ---------------------------------------------------------------------------
       
   170 //
       
   171 void CRadioRdsReceiverBase::MrroStationSeekByTPComplete( TInt DEBUGVAR( aError ),
       
   172                                                          TInt DEBUGVAR( aFrequency ) )
       
   173     {
       
   174     LOG_FORMAT( "CRadioRdsReceiverBase::MrroStationSeekByTPComplete: err: %d, frequency: %d ", aError, aFrequency );
       
   175     }
       
   176 
       
   177 // ---------------------------------------------------------------------------
       
   178 //
       
   179 // ---------------------------------------------------------------------------
       
   180 //
       
   181 void CRadioRdsReceiverBase::MrroGetFreqByPTYComplete( TInt DEBUGVAR( aError ),
       
   182                                                       RArray<TInt>& /*aFreqList*/ )
       
   183     {
       
   184     LOG_FORMAT( "CRadioRdsReceiverBase::MrroGetFreqByPTYComplete: err: %d", aError );
       
   185     }
       
   186 
       
   187 // ---------------------------------------------------------------------------
       
   188 //
       
   189 // ---------------------------------------------------------------------------
       
   190 //
       
   191 void CRadioRdsReceiverBase::MrroGetFreqByTAComplete( TInt DEBUGVAR( aError ),
       
   192                                                      RArray<TInt>& /*aFreqList*/ )
       
   193     {
       
   194     LOG_FORMAT( "CRadioRdsReceiverBase::MrroGetFreqByTAComplete: err: %d", aError );
       
   195     }
       
   196 
       
   197 // ---------------------------------------------------------------------------
       
   198 //
       
   199 // ---------------------------------------------------------------------------
       
   200 //
       
   201 void CRadioRdsReceiverBase::MrroGetPSByPTYComplete( TInt DEBUGVAR( aError ),
       
   202                                                     RArray<TRdsPSName>& /*aPsList*/ )
       
   203     {
       
   204     LOG_FORMAT( "CRadioRdsReceiverBase::MrroGetPSByPTYComplete: err: %d", aError );
       
   205     }
       
   206 
       
   207 // ---------------------------------------------------------------------------
       
   208 //
       
   209 // ---------------------------------------------------------------------------
       
   210 //
       
   211 void CRadioRdsReceiverBase::MrroGetPSByTAComplete( TInt DEBUGVAR( aError ),
       
   212                                                    RArray<TRdsPSName>& /*aPsList*/ )
       
   213     {
       
   214     LOG_FORMAT( "CRadioRdsReceiverBase::MrroGetPSByTAComplete: err: %d", aError );
       
   215     }
       
   216 
       
   217 // ---------------------------------------------------------------------------
       
   218 //
       
   219 // ---------------------------------------------------------------------------
       
   220 //
       
   221 void CRadioRdsReceiverBase::MrroRdsDataPI( TInt aPi )
       
   222     {
       
   223     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsDataPI: PI: %d", aPi );
       
   224     const TInt observerCount = iObservers.Count();
       
   225     const TUint32 frequency = iSettings.TunedFrequency();
       
   226     for ( TInt i = 0; i < observerCount; ++i )
       
   227         {
       
   228         iObservers[i]->RdsDataPiCode( frequency, aPi );
       
   229         }
       
   230     }
       
   231 
       
   232 // ---------------------------------------------------------------------------
       
   233 //
       
   234 // ---------------------------------------------------------------------------
       
   235 //
       
   236 void CRadioRdsReceiverBase::MrroRdsDataPTY( TRdsProgrammeType aPty )
       
   237     {
       
   238     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsDataPTY: PTY: %d", aPty );
       
   239     const TInt observerCount = iObservers.Count();
       
   240     const TUint32 frequency = iSettings.TunedFrequency();
       
   241     for ( TInt i = 0; i < observerCount; ++i )
       
   242         {
       
   243         iObservers[i]->RdsDataGenre( frequency, aPty );
       
   244         }
       
   245     }
       
   246 
       
   247 // ---------------------------------------------------------------------------
       
   248 // Notifies of the New Programme Service data
       
   249 // ---------------------------------------------------------------------------
       
   250 //
       
   251 void CRadioRdsReceiverBase::MrroRdsDataPS( TRdsPSName& aPs )
       
   252     {
       
   253     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsDataPS: PS: %S", &aPs );
       
   254     const TUint32 frequency = iSettings.TunedFrequency();
       
   255     if ( iPubSub )
       
   256         {
       
   257         iPubSub->PublishRdsProgramService( aPs );
       
   258         }
       
   259 
       
   260     iPsName->Des().Copy( aPs );
       
   261     const TInt observerCount = iObservers.Count();
       
   262     for ( TInt i = 0; i < observerCount; ++i )
       
   263         {
       
   264         iObservers[i]->RdsDataProgrammeService( frequency, *iPsName );
       
   265         }
       
   266     }
       
   267 
       
   268 // ---------------------------------------------------------------------------
       
   269 //
       
   270 // ---------------------------------------------------------------------------
       
   271 //
       
   272 void CRadioRdsReceiverBase::MrroRdsDataRT( TRdsRadioText& aRt )
       
   273     {
       
   274     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsDataRT: RT: %S", &aRt );
       
   275     iRadioText.Close();
       
   276     iRadioText.Create( aRt );
       
   277 
       
   278     const TUint32 frequency = iSettings.TunedFrequency();
       
   279     if ( iPubSub )
       
   280         {
       
   281         iPubSub->PublishRdsRadioText( iRadioText );
       
   282         }
       
   283 
       
   284     const TInt observerCount = iObservers.Count();
       
   285     for ( TInt i = 0; i < observerCount; ++i )
       
   286         {
       
   287         iObservers[i]->RdsDataRadioText( frequency, iRadioText );
       
   288         }
       
   289     }
       
   290 
       
   291 // ---------------------------------------------------------------------------
       
   292 //
       
   293 // ---------------------------------------------------------------------------
       
   294 //
       
   295 void CRadioRdsReceiverBase::MrroRdsDataCT( TDateTime& /*aCt*/ )
       
   296     {
       
   297     LOG( "CRadioRdsReceiverBase::MrroRdsDataCT" );
       
   298     }
       
   299 
       
   300 // ---------------------------------------------------------------------------
       
   301 //
       
   302 // ---------------------------------------------------------------------------
       
   303 //
       
   304 void CRadioRdsReceiverBase::MrroRdsDataTA( TBool DEBUGVAR( aTaOn ) )
       
   305     {
       
   306     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsDataTA: aTaOn: %d", aTaOn );
       
   307     }
       
   308 
       
   309 // ---------------------------------------------------------------------------
       
   310 //
       
   311 // ---------------------------------------------------------------------------
       
   312 //
       
   313 void CRadioRdsReceiverBase::MrroRdsDataRTplus( TRdsRTplusClass aRtPlusClass,
       
   314                                                TRdsRadioText& aRtPlusData )
       
   315     {
       
   316     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsDataRTplus: Class: %d, data: %S", aRtPlusClass, &aRtPlusData );
       
   317     const TUint32 frequency = iSettings.TunedFrequency();
       
   318     const TInt observerCount = iObservers.Count();
       
   319     for ( TInt i = 0; i < observerCount; ++i )
       
   320         {
       
   321         iObservers[i]->RdsDataRadioTextPlus( frequency, aRtPlusClass, aRtPlusData );
       
   322         }
       
   323     }
       
   324 
       
   325 // ---------------------------------------------------------------------------
       
   326 // Notifies of the start of Alternate Frequency search
       
   327 // ---------------------------------------------------------------------------
       
   328 //
       
   329 void CRadioRdsReceiverBase::MrroRdsSearchBeginAF()
       
   330     {
       
   331     LOG( "CRadioRdsReceiverBase::MrroRdsSearchBeginAF" );
       
   332     const TInt observerCount = iObservers.Count();
       
   333     for ( TInt i = 0; i < observerCount; ++i )
       
   334         {
       
   335         iObservers[i]->RdsAfSearchBegin();
       
   336         }
       
   337     }
       
   338 
       
   339 // ---------------------------------------------------------------------------
       
   340 // Notifies of the end of Alternate Frequency search
       
   341 // ---------------------------------------------------------------------------
       
   342 //
       
   343 void CRadioRdsReceiverBase::MrroRdsSearchEndAF( TInt aError, TInt aFrequency )
       
   344     {
       
   345     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsSearchEndAF: err: %d, Frequency: %d", aError, aFrequency );
       
   346     const TInt observerCount = iObservers.Count();
       
   347     for ( TInt i = 0; i < observerCount; ++i )
       
   348         {
       
   349         // Radio utility uses Hz, UI uses kHz. It's ok to divide with 1000, possible lost fractions are useless.
       
   350         iObservers[i]->RdsAfSearchEnd( aFrequency, aError );
       
   351         }
       
   352     }
       
   353 
       
   354 // ---------------------------------------------------------------------------
       
   355 //
       
   356 // ---------------------------------------------------------------------------
       
   357 //
       
   358 void CRadioRdsReceiverBase::MrroRdsStationChangeTA( TInt DEBUGVAR( aFrequency ) )
       
   359     {
       
   360     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsStationChangeTA: Frequency: %d", aFrequency );
       
   361     }
       
   362 
       
   363 // ---------------------------------------------------------------------------
       
   364 //
       
   365 // ---------------------------------------------------------------------------
       
   366 //
       
   367 void CRadioRdsReceiverBase::MrroRdsEventAutomaticSwitchingChange( TBool DEBUGVAR( aAuto ) )
       
   368     {
       
   369     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsEventAutomaticSwitchingChange: aAuto: %d", aAuto );
       
   370     }
       
   371 
       
   372 // ---------------------------------------------------------------------------
       
   373 //
       
   374 // ---------------------------------------------------------------------------
       
   375 //
       
   376 void CRadioRdsReceiverBase::MrroRdsEventAutomaticTrafficAnnouncement( TBool DEBUGVAR( aAuto ) )
       
   377     {
       
   378     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsEventAutomaticTrafficAnnouncement: aAuto: %d", aAuto );
       
   379     }
       
   380 
       
   381 // ---------------------------------------------------------------------------
       
   382 //
       
   383 // ---------------------------------------------------------------------------
       
   384 //
       
   385 void CRadioRdsReceiverBase::MrroRdsEventSignalChange( TBool aSignal )
       
   386     {
       
   387     LOG_FORMAT( "CRadioRdsReceiverBase::MrroRdsEventSignalChange: aSignal: %d", aSignal );
       
   388     iSignalAvailable = aSignal;
       
   389     const TUint32 frequency = iSettings.TunedFrequency();
       
   390     const TInt observerCount = iObservers.Count();
       
   391     for ( TInt i = 0; i < observerCount; ++i )
       
   392         {
       
   393         iObservers[i]->RdsAvailable( frequency, iSignalAvailable );
       
   394         }
       
   395     }